X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/76a5e5d21ee1a6230d777ce0209b2df4c6075f0f..ca4532668cad0441baf03cfe509d3acb84a15edd:/src/mac/bitmap.cpp diff --git a/src/mac/bitmap.cpp b/src/mac/bitmap.cpp index ec5d91854e..ddabfe2384 100644 --- a/src/mac/bitmap.cpp +++ b/src/mac/bitmap.cpp @@ -59,9 +59,9 @@ void wxMacDestroyColorTable( CTabHandle colors ) void wxMacSetColorTableEntry( CTabHandle newColors , int index , int red , int green , int blue ) { (**newColors).ctTable[index].value = index; - (**newColors).ctTable[index].rgb.red = 0 ;// someRedValue; - (**newColors).ctTable[index].rgb.green = 0 ; // someGreenValue; - (**newColors).ctTable[index].rgb.blue = 0 ; // someBlueValue; + (**newColors).ctTable[index].rgb.red = red ; // someRedValue; + (**newColors).ctTable[index].rgb.green = green ; // someGreenValue; + (**newColors).ctTable[index].rgb.blue = blue ; // someBlueValue; } GWorldPtr wxMacCreateGWorld( int width , int height , int depth ) @@ -289,14 +289,65 @@ PicHandle wxMacCreatePict(GWorldPtr wp, GWorldPtr mask) return pict; } +void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bitmap ) +{ + memset( info , 0 , sizeof(ControlButtonContentInfo) ) ; + if ( bitmap.Ok() ) + { + wxBitmapRefData * bmap = (wxBitmapRefData*) ( bitmap.GetRefData()) ; + if ( bmap == NULL ) + return ; + + if ( bmap->m_bitmapType == kMacBitmapTypePict ) + { + info->contentType = kControlContentPictHandle ; + info->u.picture = MAC_WXHMETAFILE(bmap->m_hPict) ; + } + else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) + { + if ( (bmap->m_width == bmap->m_height) && (bmap->m_width & 0x3 == 0) ) + { + info->contentType = kControlContentCIconHandle ; + if ( bitmap.GetMask() ) + { + info->u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP(bmap->m_hBitmap) , MAC_WXHBITMAP(bitmap.GetMask()->GetMaskBitmap()) , + 8 , bmap->m_width ) ; + } + else + { + info->u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP(bmap->m_hBitmap) , NULL , + 8 , bmap->m_width ) ; + } + } + else + { + info->contentType = kControlContentPictHandle ; + if ( bitmap.GetMask() ) + { + info->u.picture = wxMacCreatePict( MAC_WXHBITMAP(bmap->m_hBitmap) , MAC_WXHBITMAP(bitmap.GetMask()->GetMaskBitmap() ) ) ; + } + else + { + info->u.picture = wxMacCreatePict( MAC_WXHBITMAP(bmap->m_hBitmap) , NULL ) ; + } + } + } + else if ( bmap->m_bitmapType == kMacBitmapTypeIcon ) + { + info->contentType = kControlContentCIconHandle ; + info->u.cIconHandle = MAC_WXHICON(bmap->m_hIcon) ; + } + } +} + wxBitmapRefData::wxBitmapRefData() + : m_width(0) + , m_height(0) + , m_depth(0) + , m_ok(FALSE) + , m_numColors(0) + , m_quality(0) { - m_ok = FALSE; - m_width = 0; - m_height = 0; - m_depth = 0; - m_quality = 0; - m_numColors = 0; m_bitmapMask = NULL; m_hBitmap = NULL ; m_hPict = NULL ; @@ -304,7 +355,7 @@ wxBitmapRefData::wxBitmapRefData() m_bitmapType = kMacBitmapTypeUnknownType ; } -// TODO move this do a public function of Bitmap Ref +// TODO move this to a public function of Bitmap Ref static void DisposeBitmapRefData(wxBitmapRefData *data) { switch (data->m_bitmapType) @@ -648,8 +699,6 @@ wxBitmap::wxBitmap(const wxImage& image, int depth) SetGWorld( (GWorldPtr) GetHBITMAP() , NULL ) ; // Render image - RGBColor colorRGB ; - register unsigned char* data = image.GetData(); char* destinationBase = GetPixBaseAddr( pixMap ); register unsigned char* destination = (unsigned char*) destinationBase ; @@ -999,30 +1048,30 @@ WXHMETAFILE wxBitmap::GetPict() const */ wxMask::wxMask() + : m_maskBitmap(NULL) { - m_maskBitmap = 0; } // Construct a mask from a bitmap and a colour indicating // the transparent area wxMask::wxMask(const wxBitmap& bitmap, const wxColour& colour) + : m_maskBitmap(NULL) { - m_maskBitmap = 0; Create(bitmap, colour); } // Construct a mask from a bitmap and a palette index indicating // the transparent area wxMask::wxMask(const wxBitmap& bitmap, int paletteIndex) + : m_maskBitmap(NULL) { - m_maskBitmap = 0; Create(bitmap, paletteIndex); } // Construct a mask from a mono bitmap (copies the bitmap). wxMask::wxMask(const wxBitmap& bitmap) + : m_maskBitmap(NULL) { - m_maskBitmap = 0; Create(bitmap); } @@ -1070,8 +1119,8 @@ bool wxMask::Create(const wxBitmap& bitmap) // the transparent area bool wxMask::Create(const wxBitmap& bitmap, int paletteIndex) { -// TODO - wxCHECK_MSG( 0, false, wxT("Not implemented")); + // TODO + wxCHECK_MSG( 0, false, wxT("wxMask::Create not yet implemented")); return FALSE; } @@ -1154,6 +1203,10 @@ bool wxMask::PointMasked(int x, int y) * wxBitmapHandler */ +wxBitmapHandler::~wxBitmapHandler() +{ +} + bool wxBitmapHandler::Create(wxBitmap *bitmap, void *data, long type, int width, int height, int depth) { return FALSE;