]> git.saurik.com Git - wxWidgets.git/blob - src/common/imaggif.cpp
Small bugfix
[wxWidgets.git] / src / common / imaggif.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: imaggif.cpp
3 // Purpose: wxGIFHandler
4 // Author: Vaclav Slavik & Guillermo Rodriguez Garcia
5 // RCS-ID: $Id$
6 // Copyright: (c) 1999 Vaclav Slavik & Guillermo Rodriguez Garcia
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9
10 /*
11 We don't put pragma implement in this file because it is already present in
12 src/common/image.cpp
13 */
14
15 // For compilers that support precompilation, includes "wx.h".
16 #include "wx/wxprec.h"
17
18 #ifdef __BORLANDC__
19 # pragma hdrstop
20 #endif
21
22 #ifndef WX_PRECOMP
23 # include "wx/defs.h"
24 #endif
25
26 #if wxUSE_GIF
27
28 #include "wx/image.h"
29 #include "wx/gifdecod.h"
30 #include "wx/wfstream.h"
31 #include "wx/log.h"
32 #include "wx/intl.h"
33
34 IMPLEMENT_DYNAMIC_CLASS(wxGIFHandler,wxImageHandler)
35
36 //-----------------------------------------------------------------------------
37 // wxGIFHandler
38 //-----------------------------------------------------------------------------
39
40 #if wxUSE_STREAMS
41
42 bool wxGIFHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose, int WXUNUSED(index) )
43 {
44 wxGIFDecoder *decod;
45 int error;
46 bool ok;
47
48 decod = new wxGIFDecoder(&stream, TRUE);
49
50 if ((error = decod->ReadGIF()) != wxGIF_OK)
51 {
52 if (verbose)
53 {
54 switch (error)
55 {
56 case wxGIF_INVFORMAT: wxLogError(_("wxGIFHandler: error in GIF image format")); break;
57 case wxGIF_MEMERR: wxLogError(_("wxGIFHandler: couldn't allocate enough memory")); break;
58 default: wxLogError(_("wxGIFHandler: unknown error !!!"));
59 }
60 }
61 delete decod;
62 return FALSE;
63 }
64
65 image->Destroy();
66 ok = decod->ConvertToImage(image);
67
68 delete decod;
69 return ok;
70 }
71
72 bool wxGIFHandler::SaveFile( wxImage * WXUNUSED(image),
73 wxOutputStream& WXUNUSED(stream), bool verbose )
74 {
75 if (verbose)
76 wxLogDebug(wxT("wxGIFHandler is read-only!!"));
77
78 return FALSE;
79 }
80
81 bool wxGIFHandler::DoCanRead( wxInputStream& stream )
82 {
83 wxGIFDecoder *decod;
84 bool ok;
85
86 decod = new wxGIFDecoder(&stream);
87 ok = decod->CanRead();
88
89 delete decod;
90 return ok;
91 }
92
93 #endif // wxUSE_STREAMS
94
95 #endif // wxUSE_GIF