// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-/*
- We don't put pragma implement in this file because it is already present in
- src/common/image.cpp
-*/
+#ifdef __GNUG__
+#pragma implementation "imagpnm.h"
+#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
# include "wx/setup.h"
#endif
-#if wxUSE_PNM
+#if wxUSE_IMAGE && wxUSE_PNM
-#include "wx/image.h"
+#include "wx/imagpnm.h"
#include "wx/log.h"
+#include "wx/intl.h"
#include "wx/txtstrm.h"
//-----------------------------------------------------------------------------
// wxBMPHandler
//-----------------------------------------------------------------------------
-#if !USE_SHARED_LIBRARIES
IMPLEMENT_DYNAMIC_CLASS(wxPNMHandler,wxImageHandler)
-#endif
#if wxUSE_STREAMS
void Skip_Comment(wxInputStream &stream)
{
- wxString line;
- wxTextInputStream text_stream(stream);
+ wxTextInputStream text_stream(stream);
- if (stream.Peek()==wxT('#'))
+ if (stream.Peek()==wxT('#'))
{
- text_stream >> line;
- Skip_Comment(stream);
+ text_stream.ReadLine();
+ Skip_Comment(stream);
}
}
-bool wxPNMHandler::LoadFile( wxImage *image, wxInputStream& stream, bool WXUNUSED(verbose) )
+bool wxPNMHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose, int WXUNUSED(index) )
{
wxUint32 width, height;
wxUint16 maxval;
- wxString line;
char c(0);
image->Destroy();
if (buf_stream.GetC()==wxT('P')) c=buf_stream.GetC();
switch (c)
- {
- case wxT('2'):
- wxLogError(wxT("Loading Grey Ascii PNM image is not yet implemented."));
- return FALSE;
- case wxT('5'):
- wxLogError(wxT("Loading Grey Raw PNM image is not yet implemented."));
- return FALSE;
- case wxT('3'): case wxT('6'): break;
- default :
- wxLogError(wxT("Loading PNM image : file not recognized."));
- return FALSE;
- }
+ {
+ case wxT('2'):
+ if (verbose) wxLogError(_("Loading Grey Ascii PNM image is not yet implemented."));
+ return FALSE;
+ case wxT('5'):
+ if (verbose) wxLogError(_("Loading Grey Raw PNM image is not yet implemented."));
+ return FALSE;
+ case wxT('3'):
+ case wxT('6'): break;
+ default:
+ if (verbose) wxLogError(_("PNM: File format is not recognized."));
+ return FALSE;
+ }
- text_stream >> line; // for the \n
+ text_stream.ReadLine(); // for the \n
Skip_Comment(buf_stream);
text_stream >> width >> height ;
Skip_Comment(buf_stream);
unsigned char *ptr = image->GetData();
if (!ptr)
{
- wxLogError( wxT("Cannot allocate RAM for RGB data in PNM file.") );
+ if (verbose)
+ wxLogError( _("PNM: Couldn't allocate memory.") );
return FALSE;
}
value=text_stream.Read32();
*ptr++=(unsigned char)value;
- if (buf_stream.LastError()!=wxSTREAM_NOERROR)
+ if ( !buf_stream )
{
- wxLogError(wxT("Loading PNM image : file seems truncated."));
+ if (verbose) wxLogError(_("PNM: File seems truncated."));
return FALSE;
}
}
image->SetMask( FALSE );
- return (buf_stream.LastError()==wxStream_NOERROR || buf_stream.LastError()==wxStream_EOF);
+ const wxStreamError err = buf_stream.GetLastError();
+ return err == wxSTREAM_NO_ERROR || err == wxSTREAM_EOF;
}
bool wxPNMHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool WXUNUSED(verbose) )
//text_stream << "P6" << endl
//<< image->GetWidth() << " " << image->GetHeight() << endl
//<< "255" << endl;
- text_stream << "P6\n" << image->GetWidth() << " " << image->GetHeight() << "\n255\n";
+ text_stream << wxT("P6\n") << image->GetWidth() << wxT(" ") << image->GetHeight() << wxT("\n255\n");
stream.Write(image->GetData(),3*image->GetWidth()*image->GetHeight());
- return (stream.LastError()==wxStream_NOERROR);
+ return stream.IsOk();
}
bool wxPNMHandler::DoCanRead( wxInputStream& stream )
{
- off_t pos = stream.TellI();
-
Skip_Comment(stream);
if ( stream.GetC() == 'P' )
{
case '3':
case '6':
- stream.SeekI(pos);
return TRUE;
}
}
- stream.SeekI(pos);
return FALSE;
}