transparent xpm bitmaps added, thread support finished
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8085 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -752,13 +752,14 @@ IMPLEMENT_DYNAMIC_CLASS(wxXPMDataHandler, wxBitmapHandler)
|
|||||||
|
|
||||||
bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth)
|
bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth)
|
||||||
{
|
{
|
||||||
XImage * ximage;
|
XImage * ximage = NULL ;
|
||||||
|
XImage * xshapeimage = NULL ;
|
||||||
int ErrorStatus;
|
int ErrorStatus;
|
||||||
XpmAttributes xpmAttr;
|
XpmAttributes xpmAttr;
|
||||||
|
|
||||||
xpmAttr.valuemask = XpmReturnInfos; // get infos back
|
xpmAttr.valuemask = XpmReturnInfos; // get infos back
|
||||||
ErrorStatus = XpmCreateImageFromData( GetMainDevice() , (char **)data,
|
ErrorStatus = XpmCreateImageFromData( GetMainDevice() , (char **)data,
|
||||||
&ximage, (XImage **) NULL, &xpmAttr);
|
&ximage, &xshapeimage, &xpmAttr);
|
||||||
|
|
||||||
if (ErrorStatus == XpmSuccess)
|
if (ErrorStatus == XpmSuccess)
|
||||||
{
|
{
|
||||||
@@ -776,7 +777,12 @@ bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *data, long flags, int widt
|
|||||||
XImageFree(ximage); // releases the malloc, but does not detroy
|
XImageFree(ximage); // releases the malloc, but does not detroy
|
||||||
// the bitmap
|
// the bitmap
|
||||||
M_BITMAPHANDLERDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
|
M_BITMAPHANDLERDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
|
||||||
|
if ( xshapeimage != NULL )
|
||||||
|
{
|
||||||
|
wxMask* m = new wxMask() ;
|
||||||
|
m->SetMaskBitmap( xshapeimage->gworldptr ) ;
|
||||||
|
M_BITMAPHANDLERDATA->m_bitmapMask = m ;
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@@ -752,13 +752,14 @@ IMPLEMENT_DYNAMIC_CLASS(wxXPMDataHandler, wxBitmapHandler)
|
|||||||
|
|
||||||
bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth)
|
bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth)
|
||||||
{
|
{
|
||||||
XImage * ximage;
|
XImage * ximage = NULL ;
|
||||||
|
XImage * xshapeimage = NULL ;
|
||||||
int ErrorStatus;
|
int ErrorStatus;
|
||||||
XpmAttributes xpmAttr;
|
XpmAttributes xpmAttr;
|
||||||
|
|
||||||
xpmAttr.valuemask = XpmReturnInfos; // get infos back
|
xpmAttr.valuemask = XpmReturnInfos; // get infos back
|
||||||
ErrorStatus = XpmCreateImageFromData( GetMainDevice() , (char **)data,
|
ErrorStatus = XpmCreateImageFromData( GetMainDevice() , (char **)data,
|
||||||
&ximage, (XImage **) NULL, &xpmAttr);
|
&ximage, &xshapeimage, &xpmAttr);
|
||||||
|
|
||||||
if (ErrorStatus == XpmSuccess)
|
if (ErrorStatus == XpmSuccess)
|
||||||
{
|
{
|
||||||
@@ -776,7 +777,12 @@ bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *data, long flags, int widt
|
|||||||
XImageFree(ximage); // releases the malloc, but does not detroy
|
XImageFree(ximage); // releases the malloc, but does not detroy
|
||||||
// the bitmap
|
// the bitmap
|
||||||
M_BITMAPHANDLERDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
|
M_BITMAPHANDLERDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
|
||||||
|
if ( xshapeimage != NULL )
|
||||||
|
{
|
||||||
|
wxMask* m = new wxMask() ;
|
||||||
|
m->SetMaskBitmap( xshapeimage->gworldptr ) ;
|
||||||
|
M_BITMAPHANDLERDATA->m_bitmapMask = m ;
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@@ -24,7 +24,7 @@ struct wxMacNotificationEvents
|
|||||||
typedef struct wxMacNotificationEvents wxMacNotificationEvents ;
|
typedef struct wxMacNotificationEvents wxMacNotificationEvents ;
|
||||||
wxMacNotificationEvents gMacNotificationEvents ;
|
wxMacNotificationEvents gMacNotificationEvents ;
|
||||||
|
|
||||||
ProcessSerialNumber gSocketProcess ;
|
ProcessSerialNumber gAppProcess ;
|
||||||
|
|
||||||
void wxMacWakeUp()
|
void wxMacWakeUp()
|
||||||
{
|
{
|
||||||
@@ -32,20 +32,20 @@ void wxMacWakeUp()
|
|||||||
Boolean isSame ;
|
Boolean isSame ;
|
||||||
psn.highLongOfPSN = 0 ;
|
psn.highLongOfPSN = 0 ;
|
||||||
psn.lowLongOfPSN = kCurrentProcess ;
|
psn.lowLongOfPSN = kCurrentProcess ;
|
||||||
SameProcess( &gSocketProcess , &psn , &isSame ) ;
|
SameProcess( &gAppProcess , &psn , &isSame ) ;
|
||||||
if ( isSame )
|
if ( isSame )
|
||||||
{
|
{
|
||||||
PostEvent( nullEvent , 0 ) ;
|
PostEvent( nullEvent , 0 ) ;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WakeUpProcess( &gSocketProcess ) ;
|
WakeUpProcess( &gAppProcess ) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxMacCreateNotifierTable()
|
void wxMacCreateNotifierTable()
|
||||||
{
|
{
|
||||||
GetCurrentProcess(&gSocketProcess);
|
GetCurrentProcess(&gAppProcess);
|
||||||
gMacNotificationEvents.top = 0 ;
|
gMacNotificationEvents.top = 0 ;
|
||||||
gMacNotificationEvents.bottom = 0 ;
|
gMacNotificationEvents.bottom = 0 ;
|
||||||
for ( int i = 0 ; i < kMaxEvents ; ++i )
|
for ( int i = 0 ; i < kMaxEvents ; ++i )
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -24,7 +24,7 @@ struct wxMacNotificationEvents
|
|||||||
typedef struct wxMacNotificationEvents wxMacNotificationEvents ;
|
typedef struct wxMacNotificationEvents wxMacNotificationEvents ;
|
||||||
wxMacNotificationEvents gMacNotificationEvents ;
|
wxMacNotificationEvents gMacNotificationEvents ;
|
||||||
|
|
||||||
ProcessSerialNumber gSocketProcess ;
|
ProcessSerialNumber gAppProcess ;
|
||||||
|
|
||||||
void wxMacWakeUp()
|
void wxMacWakeUp()
|
||||||
{
|
{
|
||||||
@@ -32,20 +32,20 @@ void wxMacWakeUp()
|
|||||||
Boolean isSame ;
|
Boolean isSame ;
|
||||||
psn.highLongOfPSN = 0 ;
|
psn.highLongOfPSN = 0 ;
|
||||||
psn.lowLongOfPSN = kCurrentProcess ;
|
psn.lowLongOfPSN = kCurrentProcess ;
|
||||||
SameProcess( &gSocketProcess , &psn , &isSame ) ;
|
SameProcess( &gAppProcess , &psn , &isSame ) ;
|
||||||
if ( isSame )
|
if ( isSame )
|
||||||
{
|
{
|
||||||
PostEvent( nullEvent , 0 ) ;
|
PostEvent( nullEvent , 0 ) ;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WakeUpProcess( &gSocketProcess ) ;
|
WakeUpProcess( &gAppProcess ) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxMacCreateNotifierTable()
|
void wxMacCreateNotifierTable()
|
||||||
{
|
{
|
||||||
GetCurrentProcess(&gSocketProcess);
|
GetCurrentProcess(&gAppProcess);
|
||||||
gMacNotificationEvents.top = 0 ;
|
gMacNotificationEvents.top = 0 ;
|
||||||
gMacNotificationEvents.bottom = 0 ;
|
gMacNotificationEvents.bottom = 0 ;
|
||||||
for ( int i = 0 ; i < kMaxEvents ; ++i )
|
for ( int i = 0 ; i < kMaxEvents ; ++i )
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -1067,12 +1067,12 @@ ParseAndPutPixels(
|
|||||||
}
|
}
|
||||||
#elif macintosh
|
#elif macintosh
|
||||||
SetCPixel( x, y, &image_pixels[colidx[c] - 1]);
|
SetCPixel( x, y, &image_pixels[colidx[c] - 1]);
|
||||||
/*
|
if (shapeimage)
|
||||||
if (shapedc)
|
|
||||||
{
|
{
|
||||||
SetPixel(shapedc, x, y, shape_pixels[colidx[c] - 1]);
|
SetGWorld( shapeimage->gworldptr , NULL ) ;
|
||||||
|
SetCPixel( x, y, &shape_pixels[colidx[c] - 1]);
|
||||||
|
SetGWorld( image->gworldptr , NULL ) ;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user