]> git.saurik.com Git - wxWidgets.git/commitdiff
add wxImage::SetType() and use it in animation decoders (#9639)
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 2 Aug 2008 20:13:41 +0000 (20:13 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 2 Aug 2008 20:13:41 +0000 (20:13 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54932 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/image.h
interface/wx/image.h
src/common/anidecod.cpp
src/common/gifdecod.cpp
src/common/image.cpp

index b2edab0779438dfc9929bf50418b2882f2c3ccf6..3a6b0fdee15d20dd6878cb033356c91574f9482a 100644 (file)
@@ -361,6 +361,11 @@ public:
     // Gets the type of image found by LoadFile or specified with SaveFile
     wxBitmapType GetType() const;
 
+    // Set the image type, this is normally only called if the image is being
+    // created from data in the given format but not using LoadFile() (e.g.
+    // wxGIFDecoder uses this)
+    void SetType(wxBitmapType type);
+
     // these functions provide fastest access to wxImage data but should be
     // used carefully as no checks are done
     unsigned char *GetData() const;
index 9982ee2044e94af25147e755183e3ced5882ddea..1c1b2d308822cab5e1af3985440e289d75cbf8f6 100644 (file)
@@ -1027,6 +1027,25 @@ public:
                 unsigned char green,
                 unsigned char blue);
 
+    /**
+        Set the type of image returned by GetType().
+
+        This method is mostly used internally by the library but can also be
+        called from the user code if the image was created from data in the
+        given bitmap format without using LoadFile() (which would set the type
+        correctly automatically).
+
+        Notice that the image must be created before this function is called.
+
+        @since 2.9.0
+
+        @param type
+            One of bitmap type constants, @c wxBITMAP_TYPE_INVALID is a valid
+            value for it and can be used to reset the bitmap type to default
+            but @c wxBITMAP_TYPE_MAX is not allowed here.
+    */
+    void SetType(wxBitmapType type);
+
     /**
         Returns a resized version of this image without scaling it by adding either a
         border
index ee6f88ab0a43db7f714586b4db1355419f77c6e9..7c8dd53a99ebe1d81c792748585f4f4dfff0642e 100644 (file)
@@ -304,6 +304,7 @@ bool wxANIDecoder::Load( wxInputStream& stream )
             if (!sm_handler.DoLoadFile(&image, stream, false /* verbose */, -1))
                 return false;
 
+            image.SetType(wxBITMAP_TYPE_ANI);
             m_images.Add(image);
         }
         else
index fda902a8f693c30259d7f0d70053ed51609681ce..569b3e77ae653b6663bc6f92b43ea98c14bf0685 100644 (file)
@@ -122,6 +122,7 @@ bool wxGIFDecoder::ConvertToImage(unsigned int frame, wxImage *image) const
     // create the image
     wxSize sz = GetFrameSize(frame);
     image->Create(sz.GetWidth(), sz.GetHeight());
+    image->SetType(wxBITMAP_TYPE_GIF);
 
     if (!image->Ok())
         return false;
index b41fee58f655546f95f6a5d70e59b1cda7c3ab2c..c950cd67478caaca727ee45763b484b050eda164 100644 (file)
@@ -1468,6 +1468,16 @@ wxBitmapType wxImage::GetType() const
     return M_IMGDATA->m_type;
 }
 
+void wxImage::SetType(wxBitmapType type)
+{
+    wxCHECK_RET( IsOk(), "must create the image before setting its type");
+
+    // type can be wxBITMAP_TYPE_INVALID to reset the image type to default
+    wxASSERT_MSG( type != wxBITMAP_TYPE_MAX, "invalid bitmap type" );
+
+    M_IMGDATA->m_type = type;
+}
+
 long wxImage::XYToIndex(int x, int y) const
 {
     if ( Ok() &&