X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a31507415d5eb92b6cc3a2032569e1f963a598c6..12523ae45c933e72acc621faffeef33d0e094356:/wxPython/src/_image.i diff --git a/wxPython/src/_image.i b/wxPython/src/_image.i index 700cfdc938..bcd1deb33d 100644 --- a/wxPython/src/_image.i +++ b/wxPython/src/_image.i @@ -89,12 +89,13 @@ public: return new wxImage(width, height, clear); else return new wxImage; - } - + } + + MustHaveApp(wxImage(const wxBitmap &bitmap)); %name(ImageFromBitmap) wxImage(const wxBitmap &bitmap) { return new wxImage(bitmap.ConvertToImage()); } - + %name(ImageFromData) wxImage(int width, int height, unsigned char* data) { // Copy the source data so the wxImage can clean it up later unsigned char* copy = (unsigned char*)malloc(width*height*3); @@ -106,7 +107,7 @@ public: return new wxImage(width, height, copy, False); } } - + void Create( int width, int height ); void Destroy(); @@ -133,7 +134,19 @@ public: values than startR, startG, startB. Returns a tuple consisting of a success flag and rgb values.", ""); + + DocDeclStr( + bool , ConvertAlphaToMask(byte threshold = 128), + "If the image has alpha channel, this method converts it to mask. All pixels +with alpha value less than ``threshold`` are replaced with mask colour and the +alpha channel is removed. Mask colour is chosen automatically using +`FindFirstUnusedColour`. + +If the image image doesn't have alpha channel, ConvertAlphaToMask does +nothing.", ""); + + // Set image's mask to the area of 'mask' that has colour bool SetMaskFromImage(const wxImage & mask, byte mr, byte mg, byte mb); @@ -312,9 +325,12 @@ success flag and rgb values.", ""); static wxString GetImageExtWildcard(); +MustHaveApp(ConvertToBitmap); +MustHaveApp(ConvertToMonoBitmap); + %extend { - wxBitmap ConvertToBitmap() { - wxBitmap bitmap(*self); + wxBitmap ConvertToBitmap(int depth=-1) { + wxBitmap bitmap(*self, depth); return bitmap; } @@ -357,7 +373,7 @@ MAKE_CONST_WXSTRING(IMAGE_OPTION_BMP_FORMAT); MAKE_CONST_WXSTRING(IMAGE_OPTION_CUR_HOTSPOT_X); MAKE_CONST_WXSTRING(IMAGE_OPTION_CUR_HOTSPOT_Y); MAKE_CONST_WXSTRING(IMAGE_OPTION_RESOLUTION); -MAKE_CONST_WXSTRING(IMAGE_OPTION_RESOLUTIONUNIT); +MAKE_CONST_WXSTRING(IMAGE_OPTION_RESOLUTIONUNIT); enum { @@ -451,4 +467,45 @@ public: }; #endif +//--------------------------------------------------------------------------- + +%{ +#include +%} + +enum { + wxQUANTIZE_INCLUDE_WINDOWS_COLOURS, +// wxQUANTIZE_RETURN_8BIT_DATA, + wxQUANTIZE_FILL_DESTINATION_IMAGE +}; + + +DocStr(wxQuantize, + "Performs quantization, or colour reduction, on a wxImage.", ""); + +class wxQuantize /*: public wxObject */ +{ +public: + + %extend { + DocStr( + Quantize, + "Reduce the colours in the source image and put the result into the +destination image, setting the palette in the destination if +needed. Both images may be the same, to overwrite the source image.", " +:todo: Create a version that returns the wx.Palette used."); + + static bool Quantize(const wxImage& src, wxImage& dest, int desiredNoColours = 236, + int flags = wxQUANTIZE_INCLUDE_WINDOWS_COLOURS|wxQUANTIZE_FILL_DESTINATION_IMAGE) + { + return wxQuantize::Quantize(src, dest, + //NULL, // palette + desiredNoColours, + NULL, // eightBitData + flags); + } + } +}; + + //---------------------------------------------------------------------------