X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ee437b7e1d7111514b40b3588ad8f2a8d8b45f78..eea4d01c65f9b29baa1193db762b4c6b8144af24:/src/mgl/bitmap.cpp diff --git a/src/mgl/bitmap.cpp b/src/mgl/bitmap.cpp index ad2e0199a1..bae5a0c596 100644 --- a/src/mgl/bitmap.cpp +++ b/src/mgl/bitmap.cpp @@ -58,12 +58,13 @@ static pixel_format_t gs_pixel_format_wxImage = {0xFF,0x00,0, 0xFF,0x08,0, 0xFF,0x10,0, 0x00,0x00,0}; // RGB 24bpp for wxImage //----------------------------------------------------------------------------- -// wxBitmap +// wxBitmapRefData //----------------------------------------------------------------------------- class wxBitmapRefData: public wxGDIRefData { public: + wxBitmapRefData(); wxBitmapRefData(int width, int height, int bpp); wxBitmapRefData(const wxBitmapRefData& data); virtual ~wxBitmapRefData(); @@ -78,11 +79,15 @@ public: bitmap_t *m_bitmap; private: - void DoCreateBitmap(); + void DoCreateBitmap(int width, int height, int depth); }; -void wxBitmapRefData::DoCreateBitmap() +void wxBitmapRefData::DoCreateBitmap(int width, int height, int depth) { + m_width = width; + m_height = height; + m_bpp = depth; + pixel_format_t pf_dummy; pixel_format_t *pf; int mglDepth = depth; @@ -122,28 +127,32 @@ void wxBitmapRefData::DoCreateBitmap() m_bitmap = MyMGL_createBitmap(width, height, mglDepth, pf); } -wxBitmapRefData::wxBitmapRefData(int width, int height, int bpp) +wxBitmapRefData::wxBitmapRefData() { - m_width = width; - m_height = height; - m_bpp = bpp; + m_width = + m_height = + m_bpp = 0; m_palette = NULL; m_mask = NULL; - DoCreateBitmap(); + m_bitmap = NULL; +} + +wxBitmapRefData::wxBitmapRefData(int width, int height, int bpp) +{ + DoCreateBitmap(width, height, bpp); + + m_palette = NULL; + m_mask = NULL; } wxBitmapRefData::wxBitmapRefData(const wxBitmapRefData& data) { - m_width = data.m_width; - m_height = data.m_height; - m_bpp = data.m_bpp; + DoCreateBitmap(data.m_width, data.m_height, data.m_bpp); m_palette = NULL; // FIXME: should copy m_mask = NULL; // FIXME: should copy - - DoCreateBitmap(); } wxBitmapRefData::~wxBitmapRefData() @@ -154,18 +163,15 @@ wxBitmapRefData::~wxBitmapRefData() delete m_palette; } + +//----------------------------------------------------------------------------- +// wxBitmap //----------------------------------------------------------------------------- #define M_BMPDATA ((wxBitmapRefData *)m_refData) IMPLEMENT_DYNAMIC_CLASS(wxBitmap,wxBitmapBase) -wxBitmap::wxBitmap(int width, int height, int depth) -{ - Create(width, height, depth); -} - - wxGDIRefData *wxBitmap::CreateGDIRefData() const { return new wxBitmapRefData; @@ -173,7 +179,7 @@ wxGDIRefData *wxBitmap::CreateGDIRefData() const wxGDIRefData *wxBitmap::CloneGDIRefData(const wxGDIRefData *data) const { - return new wxBitmapRefData(*wx_static_cast(const wxBitmapRefData *, data)); + return new wxBitmapRefData(*static_cast(data)); } bool wxBitmap::Create(int width, int height, int depth) @@ -192,14 +198,14 @@ bool wxBitmap::Create(int width, int height, int depth) SetMonoPalette(wxColour(255, 255, 255), wxColour(0, 0, 0)); } - return Ok(); + return IsOk(); } wxBitmap::wxBitmap(const wxImage& image, int depth) { long width, height; - wxCHECK_RET( image.Ok(), wxT("invalid image") ); + wxCHECK_RET( image.IsOk(), wxT("invalid image") ); width = image.GetWidth(); height = image.GetHeight(); @@ -231,14 +237,14 @@ wxBitmap::wxBitmap(const wxImage& image, int depth) wxImage wxBitmap::ConvertToImage() const { - wxCHECK_MSG( Ok(), wxImage(), wxT("invalid bitmap") ); + wxCHECK_MSG( IsOk(), wxImage(), wxT("invalid bitmap") ); int width, height; width = GetWidth(); height = GetHeight(); wxImage image(width, height); - wxASSERT_MSG( image.Ok(), wxT("cannot create image") ); + wxASSERT_MSG( image.IsOk(), wxT("cannot create image") ); MGLMemoryDC idc(width, height, 24, &gs_pixel_format_wxImage, width * 3, (void*)image.GetData(), NULL); @@ -293,35 +299,35 @@ wxBitmap::wxBitmap(const char bits[], int width, int height, int depth) int wxBitmap::GetHeight() const { - wxCHECK_MSG( Ok(), -1, wxT("invalid bitmap") ); + wxCHECK_MSG( IsOk(), -1, wxT("invalid bitmap") ); return M_BMPDATA->m_height; } int wxBitmap::GetWidth() const { - wxCHECK_MSG( Ok(), -1, wxT("invalid bitmap") ); + wxCHECK_MSG( IsOk(), -1, wxT("invalid bitmap") ); return M_BMPDATA->m_width; } int wxBitmap::GetDepth() const { - wxCHECK_MSG( Ok(), -1, wxT("invalid bitmap") ); + wxCHECK_MSG( IsOk(), -1, wxT("invalid bitmap") ); return M_BMPDATA->m_bpp; } wxMask *wxBitmap::GetMask() const { - wxCHECK_MSG( Ok(), (wxMask *) NULL, wxT("invalid bitmap") ); + wxCHECK_MSG( IsOk(), NULL, wxT("invalid bitmap") ); return M_BMPDATA->m_mask; } void wxBitmap::SetMask(wxMask *mask) { - wxCHECK_RET( Ok(), wxT("invalid bitmap") ); + wxCHECK_RET( IsOk(), wxT("invalid bitmap") ); AllocExclusive(); delete M_BMPDATA->m_mask; @@ -337,13 +343,13 @@ bool wxBitmap::CopyFromIcon(const wxIcon& icon) wxBitmap wxBitmap::GetSubBitmap(const wxRect& rect) const { - wxCHECK_MSG( Ok() && + wxCHECK_MSG( IsOk() && (rect.x >= 0) && (rect.y >= 0) && (rect.x+rect.width <= M_BMPDATA->m_width) && (rect.y+rect.height <= M_BMPDATA->m_height), wxNullBitmap, wxT("invalid bitmap or bitmap region") ); wxBitmap ret( rect.width, rect.height, M_BMPDATA->m_bpp ); - wxASSERT_MSG( ret.Ok(), wxT("GetSubBitmap error") ); + wxASSERT_MSG( ret.IsOk(), wxT("GetSubBitmap error") ); if ( GetPalette() ) ret.SetPalette(*GetPalette()); @@ -365,7 +371,7 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect& rect) const void wxBitmap::SetMonoPalette(const wxColour& fg, const wxColour& bg) { - wxCHECK_RET( Ok(), wxT("invalid bitmap") ); + wxCHECK_RET( IsOk(), wxT("invalid bitmap") ); AllocExclusive(); palette_t *mono = M_BMPDATA->m_bitmap->pal; @@ -388,7 +394,7 @@ void wxBitmap::SetMonoPalette(const wxColour& fg, const wxColour& bg) MGLDevCtx *wxBitmap::CreateTmpDC() const { - wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") ); + wxCHECK_MSG( IsOk(), NULL, wxT("invalid bitmap") ); MGLDevCtx *tdc = new MGLMemoryDC(GetWidth(), GetHeight(), M_BMPDATA->m_bitmap->bitsPerPixel, @@ -440,7 +446,7 @@ bool wxBitmap::LoadFile(const wxString &name, wxBitmapType type) if ( handler == NULL ) { wxImage image; - if ( !image.LoadFile(name, type) || !image.Ok() ) + if ( !image.LoadFile(name, type) || !image.IsOk() ) { wxLogError("no bitmap handler for type %d defined.", type); return false; @@ -457,7 +463,7 @@ bool wxBitmap::LoadFile(const wxString &name, wxBitmapType type) bool wxBitmap::SaveFile(const wxString& filename, wxBitmapType type, const wxPalette *palette) const { - wxCHECK_MSG( Ok(), false, wxT("invalid bitmap") ); + wxCHECK_MSG( IsOk(), false, wxT("invalid bitmap") ); wxBitmapHandler *handler = FindHandler(type); @@ -467,7 +473,7 @@ bool wxBitmap::SaveFile(const wxString& filename, wxBitmapType type, const wxPal if ( palette ) image.SetPalette(*palette); - if ( image.Ok() ) + if ( image.IsOk() ) return image.SaveFile(filename, type); else { @@ -481,21 +487,20 @@ bool wxBitmap::SaveFile(const wxString& filename, wxBitmapType type, const wxPal wxPalette *wxBitmap::GetPalette() const { - wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") ); + wxCHECK_MSG( IsOk(), NULL, wxT("invalid bitmap") ); return M_BMPDATA->m_palette; } void wxBitmap::SetPalette(const wxPalette& palette) { - wxCHECK_RET( Ok(), wxT("invalid bitmap") ); + wxCHECK_RET( IsOk(), wxT("invalid bitmap") ); wxCHECK_RET( GetDepth() > 1 && GetDepth() <= 8, wxT("cannot set palette for bitmap of this depth") ); AllocExclusive(); - delete M_BMPDATA->m_palette; - M_BMPDATA->m_palette = NULL; + wxDELETE(M_BMPDATA->m_palette); - if ( !palette.Ok() ) return; + if ( !palette.IsOk() ) return; M_BMPDATA->m_palette = new wxPalette(palette); @@ -609,7 +614,7 @@ bool wxMGLBitmapHandler::LoadFile(wxBitmap *bitmap, const wxString& name, if ( !MGL_getBitmapSize(fullname.mb_str(), &width, &height, &bpp, &pf) ) return false; bitmap->Create(width, height, -1); - if ( !bitmap->Ok() ) return false; + if ( !bitmap->IsOk() ) return false; dc.SelectObject(*bitmap); if ( !dc.GetMGLDC()->loadBitmapIntoDC(fullname.mb_str(), 0, 0, TRUE) ) return false; @@ -620,7 +625,7 @@ bool wxMGLBitmapHandler::LoadFile(wxBitmap *bitmap, const wxString& name, if ( !MGL_getJPEGSize(fullname.mb_str(), &width, &height, &bpp, &pf) ) return false; bitmap->Create(width, height, -1); - if ( !bitmap->Ok() ) return false; + if ( !bitmap->IsOk() ) return false; dc.SelectObject(*bitmap); if ( !dc.GetMGLDC()->loadJPEGIntoDC(fullname.mb_str(), 0, 0, TRUE) ) return false; @@ -631,7 +636,7 @@ bool wxMGLBitmapHandler::LoadFile(wxBitmap *bitmap, const wxString& name, if ( !MGL_getPNGSize(fullname.mb_str(), &width, &height, &bpp, &pf) ) return false; bitmap->Create(width, height, -1); - if ( !bitmap->Ok() ) return false; + if ( !bitmap->IsOk() ) return false; dc.SelectObject(*bitmap); if ( !dc.GetMGLDC()->loadPNGIntoDC(fullname.mb_str(), 0, 0, TRUE) ) return false; @@ -642,7 +647,7 @@ bool wxMGLBitmapHandler::LoadFile(wxBitmap *bitmap, const wxString& name, if ( !MGL_getPCXSize(fullname.mb_str(), &width, &height, &bpp) ) return false; bitmap->Create(width, height, -1); - if ( !bitmap->Ok() ) return false; + if ( !bitmap->IsOk() ) return false; dc.SelectObject(*bitmap); if ( !dc.GetMGLDC()->loadPCXIntoDC(fullname.mb_str(), 0, 0, TRUE) ) return false; @@ -727,7 +732,7 @@ bool wxPNGBitmapHandler::LoadFile(wxBitmap *bitmap, const wxString& name, if ( bmp == NULL ) return false; bitmap->Create(bmp->width, bmp->height, -1); - if ( !bitmap->Ok() ) return false; + if ( !bitmap->IsOk() ) return false; // convert bmp to display's depth and write it to *bitmap: wxMemoryDC dc;