blind fix for wxMotif compilation with wxHAVE_LIB_XPM == 0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20342 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -93,13 +93,13 @@ bool wxMask::Create( const wxBitmap& bitmap,
|
|||||||
|
|
||||||
wxImage image = bitmap.ConvertToImage();
|
wxImage image = bitmap.ConvertToImage();
|
||||||
if (!image.Ok()) return FALSE;
|
if (!image.Ok()) return FALSE;
|
||||||
|
|
||||||
m_display = bitmap.GetDisplay();
|
m_display = bitmap.GetDisplay();
|
||||||
|
|
||||||
Display *xdisplay = (Display*) m_display;
|
Display *xdisplay = (Display*) m_display;
|
||||||
int xscreen = DefaultScreen( xdisplay );
|
int xscreen = DefaultScreen( xdisplay );
|
||||||
Window xroot = RootWindow( xdisplay, xscreen );
|
Window xroot = RootWindow( xdisplay, xscreen );
|
||||||
|
|
||||||
m_bitmap = (WXPixmap) XCreatePixmap( xdisplay, xroot, image.GetWidth(), image.GetHeight(), 1 );
|
m_bitmap = (WXPixmap) XCreatePixmap( xdisplay, xroot, image.GetWidth(), image.GetHeight(), 1 );
|
||||||
GC gc = XCreateGC( xdisplay, (Pixmap) m_bitmap, 0, NULL );
|
GC gc = XCreateGC( xdisplay, (Pixmap) m_bitmap, 0, NULL );
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ bool wxMask::Create( const wxBitmap& bitmap,
|
|||||||
unsigned char blue = colour.Blue();
|
unsigned char blue = colour.Blue();
|
||||||
|
|
||||||
int bpp = wxTheApp->GetVisualInfo(m_display)->m_visualDepth;
|
int bpp = wxTheApp->GetVisualInfo(m_display)->m_visualDepth;
|
||||||
|
|
||||||
if (bpp == 15)
|
if (bpp == 15)
|
||||||
{
|
{
|
||||||
red = red & 0xf8;
|
red = red & 0xf8;
|
||||||
@@ -165,7 +165,7 @@ bool wxMask::Create( const wxBitmap& bitmap,
|
|||||||
if (start_x != -1)
|
if (start_x != -1)
|
||||||
XDrawLine( xdisplay, (Pixmap) m_bitmap, gc, start_x, j, i, j );
|
XDrawLine( xdisplay, (Pixmap) m_bitmap, gc, start_x, j, i, j );
|
||||||
}
|
}
|
||||||
|
|
||||||
XFreeGC( xdisplay, gc );
|
XFreeGC( xdisplay, gc );
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -199,21 +199,21 @@ bool wxMask::Create( const wxBitmap& bitmap )
|
|||||||
if (!bitmap.Ok()) return FALSE;
|
if (!bitmap.Ok()) return FALSE;
|
||||||
|
|
||||||
wxCHECK_MSG( bitmap.GetBitmap(), FALSE, wxT("Cannot create mask from colour bitmap") );
|
wxCHECK_MSG( bitmap.GetBitmap(), FALSE, wxT("Cannot create mask from colour bitmap") );
|
||||||
|
|
||||||
m_display = bitmap.GetDisplay();
|
m_display = bitmap.GetDisplay();
|
||||||
|
|
||||||
int xscreen = DefaultScreen( (Display*) m_display );
|
int xscreen = DefaultScreen( (Display*) m_display );
|
||||||
Window xroot = RootWindow( (Display*) m_display, xscreen );
|
Window xroot = RootWindow( (Display*) m_display, xscreen );
|
||||||
|
|
||||||
m_bitmap = (WXPixmap) XCreatePixmap( (Display*) m_display, xroot, bitmap.GetWidth(), bitmap.GetHeight(), 1 );
|
m_bitmap = (WXPixmap) XCreatePixmap( (Display*) m_display, xroot, bitmap.GetWidth(), bitmap.GetHeight(), 1 );
|
||||||
|
|
||||||
if (!m_bitmap) return FALSE;
|
if (!m_bitmap) return FALSE;
|
||||||
|
|
||||||
GC gc = XCreateGC( (Display*) m_display, (Pixmap) m_bitmap, 0, NULL );
|
GC gc = XCreateGC( (Display*) m_display, (Pixmap) m_bitmap, 0, NULL );
|
||||||
|
|
||||||
XCopyPlane( (Display*) m_display, (Pixmap) bitmap.GetBitmap(), (Pixmap) m_bitmap,
|
XCopyPlane( (Display*) m_display, (Pixmap) bitmap.GetBitmap(), (Pixmap) m_bitmap,
|
||||||
gc, 0, 0, bitmap.GetWidth(), bitmap.GetHeight(), 0, 0, 1 );
|
gc, 0, 0, bitmap.GetWidth(), bitmap.GetHeight(), 0, 0, 1 );
|
||||||
|
|
||||||
XFreeGC( (Display*) m_display, gc );
|
XFreeGC( (Display*) m_display, gc );
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -279,7 +279,7 @@ static WXPixmap wxGetSubPixmap( WXDisplay* xdisplay, WXPixmap xpixmap,
|
|||||||
ZPixmap, 0, 0, width, height, 32, 0 );
|
ZPixmap, 0, 0, width, height, 32, 0 );
|
||||||
ximage->data = (char*)malloc( ximage->bytes_per_line * ximage->height );
|
ximage->data = (char*)malloc( ximage->bytes_per_line * ximage->height );
|
||||||
ximage = XGetSubImage( (Display*)xdisplay, (Pixmap)xpixmap,
|
ximage = XGetSubImage( (Display*)xdisplay, (Pixmap)xpixmap,
|
||||||
x, y, width, height,
|
x, y, width, height,
|
||||||
AllPlanes, ZPixmap, ximage, 0, 0 );
|
AllPlanes, ZPixmap, ximage, 0, 0 );
|
||||||
|
|
||||||
GC gc = XCreateGC( (Display*)xdisplay, (Pixmap)xpixmap, 0, NULL );
|
GC gc = XCreateGC( (Display*)xdisplay, (Pixmap)xpixmap, 0, NULL );
|
||||||
@@ -314,14 +314,14 @@ bool wxBitmap::Create( int width, int height, int depth )
|
|||||||
wxCHECK_MSG( (width > 0) && (height > 0), FALSE, wxT("invalid bitmap size") )
|
wxCHECK_MSG( (width > 0) && (height > 0), FALSE, wxT("invalid bitmap size") )
|
||||||
|
|
||||||
m_refData = new wxBitmapRefData();
|
m_refData = new wxBitmapRefData();
|
||||||
|
|
||||||
M_BMPDATA->m_display = wxGlobalDisplay();
|
M_BMPDATA->m_display = wxGlobalDisplay();
|
||||||
|
|
||||||
wxASSERT_MSG( M_BMPDATA->m_display, wxT("No display") );
|
wxASSERT_MSG( M_BMPDATA->m_display, wxT("No display") );
|
||||||
|
|
||||||
int xscreen = DefaultScreen( (Display*) M_BMPDATA->m_display );
|
int xscreen = DefaultScreen( (Display*) M_BMPDATA->m_display );
|
||||||
Window xroot = RootWindow( (Display*) M_BMPDATA->m_display, xscreen );
|
Window xroot = RootWindow( (Display*) M_BMPDATA->m_display, xscreen );
|
||||||
|
|
||||||
int bpp = DefaultDepth( (Display*) M_BMPDATA->m_display, xscreen );
|
int bpp = DefaultDepth( (Display*) M_BMPDATA->m_display, xscreen );
|
||||||
if (depth == -1) depth = bpp;
|
if (depth == -1) depth = bpp;
|
||||||
|
|
||||||
@@ -341,17 +341,17 @@ bool wxBitmap::Create( int width, int height, int depth )
|
|||||||
if (depth == 1)
|
if (depth == 1)
|
||||||
{
|
{
|
||||||
M_BMPDATA->m_bitmap = (WXPixmap) XCreatePixmap( (Display*) M_BMPDATA->m_display, xroot, width, height, 1 );
|
M_BMPDATA->m_bitmap = (WXPixmap) XCreatePixmap( (Display*) M_BMPDATA->m_display, xroot, width, height, 1 );
|
||||||
|
|
||||||
wxASSERT_MSG( M_BMPDATA->m_bitmap, wxT("Bitmap creation failed") );
|
wxASSERT_MSG( M_BMPDATA->m_bitmap, wxT("Bitmap creation failed") );
|
||||||
|
|
||||||
M_BMPDATA->m_bpp = 1;
|
M_BMPDATA->m_bpp = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
M_BMPDATA->m_pixmap = (WXPixmap) XCreatePixmap( (Display*) M_BMPDATA->m_display, xroot, width, height, depth );
|
M_BMPDATA->m_pixmap = (WXPixmap) XCreatePixmap( (Display*) M_BMPDATA->m_display, xroot, width, height, depth );
|
||||||
|
|
||||||
wxASSERT_MSG( M_BMPDATA->m_pixmap, wxT("Pixmap creation failed") );
|
wxASSERT_MSG( M_BMPDATA->m_pixmap, wxT("Pixmap creation failed") );
|
||||||
|
|
||||||
M_BMPDATA->m_bpp = depth;
|
M_BMPDATA->m_bpp = depth;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -390,10 +390,10 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
|
|||||||
wxASSERT_MSG(image.Ok(), "Invalid wxImage passed to wxBitmap::CreateFromImage.");
|
wxASSERT_MSG(image.Ok(), "Invalid wxImage passed to wxBitmap::CreateFromImage.");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int w = image.GetWidth();
|
int w = image.GetWidth();
|
||||||
int h = image.GetHeight();
|
int h = image.GetHeight();
|
||||||
|
|
||||||
if (!Create(w, h, depth))
|
if (!Create(w, h, depth))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@@ -409,7 +409,7 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
|
|||||||
// pixmap. See demos/nxroach.c.
|
// pixmap. See demos/nxroach.c.
|
||||||
|
|
||||||
bool hasMask = image.HasMask();
|
bool hasMask = image.HasMask();
|
||||||
|
|
||||||
GC pixmapGC = GrNewGC();
|
GC pixmapGC = GrNewGC();
|
||||||
Pixmap pixmap = (Pixmap) GetPixmap();
|
Pixmap pixmap = (Pixmap) GetPixmap();
|
||||||
|
|
||||||
@@ -425,7 +425,7 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
|
|||||||
maskR = image.GetMaskRed();
|
maskR = image.GetMaskRed();
|
||||||
maskG = image.GetMaskGreen();
|
maskG = image.GetMaskGreen();
|
||||||
maskB = image.GetMaskBlue();
|
maskB = image.GetMaskBlue();
|
||||||
|
|
||||||
maskGC = GrNewGC();
|
maskGC = GrNewGC();
|
||||||
maskPixmap = GrNewPixmap(w, h, 0);
|
maskPixmap = GrNewPixmap(w, h, 0);
|
||||||
if (!maskPixmap)
|
if (!maskPixmap)
|
||||||
@@ -440,7 +440,7 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
|
|||||||
|
|
||||||
GR_COLOR lastPixmapColour = 0;
|
GR_COLOR lastPixmapColour = 0;
|
||||||
GR_COLOR lastMaskColour = 0;
|
GR_COLOR lastMaskColour = 0;
|
||||||
|
|
||||||
int i, j;
|
int i, j;
|
||||||
for (i = 0; i < w; i++)
|
for (i = 0; i < w; i++)
|
||||||
{
|
{
|
||||||
@@ -458,9 +458,9 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
|
|||||||
GrSetGCForeground(pixmapGC, colour);
|
GrSetGCForeground(pixmapGC, colour);
|
||||||
lastPixmapColour = colour;
|
lastPixmapColour = colour;
|
||||||
}
|
}
|
||||||
|
|
||||||
GrPoint(pixmap, pixmapGC, i, j);
|
GrPoint(pixmap, pixmapGC, i, j);
|
||||||
|
|
||||||
if (hasMask)
|
if (hasMask)
|
||||||
{
|
{
|
||||||
// scan the bitmap for the transparent colour and set the corresponding
|
// scan the bitmap for the transparent colour and set the corresponding
|
||||||
@@ -486,11 +486,11 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
|
|||||||
GrDestroyGC(pixmapGC);
|
GrDestroyGC(pixmapGC);
|
||||||
if (hasMask)
|
if (hasMask)
|
||||||
GrDestroyGC(maskGC);
|
GrDestroyGC(maskGC);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
#else
|
#else
|
||||||
// !wxUSE_NANOX
|
// !wxUSE_NANOX
|
||||||
|
|
||||||
UnRef();
|
UnRef();
|
||||||
|
|
||||||
wxCHECK_MSG( image.Ok(), FALSE, wxT("invalid image") )
|
wxCHECK_MSG( image.Ok(), FALSE, wxT("invalid image") )
|
||||||
@@ -499,15 +499,15 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
|
|||||||
m_refData = new wxBitmapRefData();
|
m_refData = new wxBitmapRefData();
|
||||||
|
|
||||||
M_BMPDATA->m_display = wxGlobalDisplay();
|
M_BMPDATA->m_display = wxGlobalDisplay();
|
||||||
|
|
||||||
Display *xdisplay = (Display*) M_BMPDATA->m_display;
|
Display *xdisplay = (Display*) M_BMPDATA->m_display;
|
||||||
|
|
||||||
int xscreen = DefaultScreen( xdisplay );
|
int xscreen = DefaultScreen( xdisplay );
|
||||||
Window xroot = RootWindow( xdisplay, xscreen );
|
Window xroot = RootWindow( xdisplay, xscreen );
|
||||||
Visual* xvisual = DefaultVisual( xdisplay, xscreen );
|
Visual* xvisual = DefaultVisual( xdisplay, xscreen );
|
||||||
|
|
||||||
int bpp = wxTheApp->GetVisualInfo(M_BMPDATA->m_display)->m_visualDepth;
|
int bpp = wxTheApp->GetVisualInfo(M_BMPDATA->m_display)->m_visualDepth;
|
||||||
|
|
||||||
int width = image.GetWidth();
|
int width = image.GetWidth();
|
||||||
int height = image.GetHeight();
|
int height = image.GetHeight();
|
||||||
M_BMPDATA->m_width = width;
|
M_BMPDATA->m_width = width;
|
||||||
@@ -515,7 +515,7 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
|
|||||||
|
|
||||||
if (depth != 1) depth = bpp;
|
if (depth != 1) depth = bpp;
|
||||||
M_BMPDATA->m_bpp = depth;
|
M_BMPDATA->m_bpp = depth;
|
||||||
|
|
||||||
if (depth == 1)
|
if (depth == 1)
|
||||||
{
|
{
|
||||||
wxFAIL_MSG( "mono images later" );
|
wxFAIL_MSG( "mono images later" );
|
||||||
@@ -523,10 +523,10 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Create image
|
// Create image
|
||||||
|
|
||||||
XImage *data_image = XCreateImage( xdisplay, xvisual, bpp, ZPixmap, 0, 0, width, height, 32, 0 );
|
XImage *data_image = XCreateImage( xdisplay, xvisual, bpp, ZPixmap, 0, 0, width, height, 32, 0 );
|
||||||
data_image->data = (char*) malloc( data_image->bytes_per_line * data_image->height );
|
data_image->data = (char*) malloc( data_image->bytes_per_line * data_image->height );
|
||||||
|
|
||||||
if (data_image->data == NULL)
|
if (data_image->data == NULL)
|
||||||
{
|
{
|
||||||
wxLogError( wxT("Out of memory.") ); // TODO clean
|
wxLogError( wxT("Out of memory.") ); // TODO clean
|
||||||
@@ -539,16 +539,16 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
|
|||||||
|
|
||||||
XImage *mask_image = (XImage*) NULL;
|
XImage *mask_image = (XImage*) NULL;
|
||||||
if (image.HasMask())
|
if (image.HasMask())
|
||||||
{
|
{
|
||||||
mask_image = XCreateImage( xdisplay, xvisual, 1, ZPixmap, 0, 0, width, height, 32, 0 );
|
mask_image = XCreateImage( xdisplay, xvisual, 1, ZPixmap, 0, 0, width, height, 32, 0 );
|
||||||
mask_image->data = (char*) malloc( mask_image->bytes_per_line * mask_image->height );
|
mask_image->data = (char*) malloc( mask_image->bytes_per_line * mask_image->height );
|
||||||
|
|
||||||
if (mask_image->data == NULL)
|
if (mask_image->data == NULL)
|
||||||
{
|
{
|
||||||
wxLogError( wxT("Out of memory.") ); // TODO clean
|
wxLogError( wxT("Out of memory.") ); // TODO clean
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxMask *mask = new wxMask();
|
wxMask *mask = new wxMask();
|
||||||
mask->SetDisplay( xdisplay );
|
mask->SetDisplay( xdisplay );
|
||||||
mask->SetBitmap( (WXPixmap) XCreatePixmap( xdisplay, xroot, width, height, 1 ) );
|
mask->SetBitmap( (WXPixmap) XCreatePixmap( xdisplay, xroot, width, height, 1 ) );
|
||||||
@@ -584,7 +584,7 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
|
|||||||
|
|
||||||
unsigned char* data = image.GetData();
|
unsigned char* data = image.GetData();
|
||||||
wxASSERT_MSG( data, "No image data" );
|
wxASSERT_MSG( data, "No image data" );
|
||||||
|
|
||||||
unsigned char *colorCube =
|
unsigned char *colorCube =
|
||||||
wxTheApp->GetVisualInfo(M_BMPDATA->m_display)->m_colorCube;
|
wxTheApp->GetVisualInfo(M_BMPDATA->m_display)->m_colorCube;
|
||||||
|
|
||||||
@@ -694,7 +694,7 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
|
|||||||
XFreeGC( xdisplay, gc );
|
XFreeGC( xdisplay, gc );
|
||||||
|
|
||||||
// Blit mask
|
// Blit mask
|
||||||
|
|
||||||
if (image.HasMask())
|
if (image.HasMask())
|
||||||
{
|
{
|
||||||
GC gc = XCreateGC( xdisplay, (Pixmap) GetMask()->GetBitmap(), 0, NULL );
|
GC gc = XCreateGC( xdisplay, (Pixmap) GetMask()->GetBitmap(), 0, NULL );
|
||||||
@@ -762,7 +762,7 @@ wxImage wxBitmap::ConvertToImage() const
|
|||||||
{
|
{
|
||||||
x_image_mask = XGetImage( xdisplay, (Pixmap) GetMask()->GetBitmap(),
|
x_image_mask = XGetImage( xdisplay, (Pixmap) GetMask()->GetBitmap(),
|
||||||
0, 0,
|
0, 0,
|
||||||
GetWidth(), GetHeight(),
|
GetWidth(), GetHeight(),
|
||||||
AllPlanes, ZPixmap );
|
AllPlanes, ZPixmap );
|
||||||
|
|
||||||
image.SetMaskColour( 16, 16, 16 ); // anything unlikely and dividable
|
image.SetMaskColour( 16, 16, 16 ); // anything unlikely and dividable
|
||||||
@@ -786,11 +786,11 @@ wxImage wxBitmap::ConvertToImage() const
|
|||||||
green_shift_left = 8 - vi->m_visualGreenPrec;
|
green_shift_left = 8 - vi->m_visualGreenPrec;
|
||||||
blue_shift_right = vi->m_visualBlueShift;
|
blue_shift_right = vi->m_visualBlueShift;
|
||||||
blue_shift_left = 8 - vi->m_visualBluePrec;
|
blue_shift_left = 8 - vi->m_visualBluePrec;
|
||||||
|
|
||||||
use_shift = (vi->m_visualType == GrayScale) ||
|
use_shift = (vi->m_visualType == GrayScale) ||
|
||||||
(vi->m_visualType != PseudoColor);
|
(vi->m_visualType != PseudoColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetBitmap())
|
if (GetBitmap())
|
||||||
{
|
{
|
||||||
bpp = 1;
|
bpp = 1;
|
||||||
@@ -1002,7 +1002,7 @@ bool wxBitmap::SaveFile( const wxString &name, wxBitmapType type,
|
|||||||
|
|
||||||
// Try to save the bitmap via wxImage handlers:
|
// Try to save the bitmap via wxImage handlers:
|
||||||
if (handler == NULL)
|
if (handler == NULL)
|
||||||
{
|
{
|
||||||
wxImage image(this->ConvertToImage());
|
wxImage image(this->ConvertToImage());
|
||||||
if (image.Ok()) return image.SaveFile( name, type );
|
if (image.Ok()) return image.SaveFile( name, type );
|
||||||
|
|
||||||
@@ -1026,7 +1026,7 @@ bool wxBitmap::LoadFile( const wxString &name, wxBitmapType type )
|
|||||||
if (!image.LoadFile( name, type ))
|
if (!image.LoadFile( name, type ))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (image.Ok())
|
if (image.Ok())
|
||||||
{
|
{
|
||||||
*this = wxBitmap(image);
|
*this = wxBitmap(image);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -1047,7 +1047,7 @@ void wxBitmap::SetPalette(const wxPalette& palette)
|
|||||||
M_BMPDATA->m_palette = NULL;
|
M_BMPDATA->m_palette = NULL;
|
||||||
|
|
||||||
if (!palette.Ok()) return;
|
if (!palette.Ok()) return;
|
||||||
|
|
||||||
M_BMPDATA->m_palette = new wxPalette(palette);
|
M_BMPDATA->m_palette = new wxPalette(palette);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1134,11 +1134,11 @@ bool wxGetImageFromDrawable(GR_DRAW_ID drawable, int srcX, int srcY, int width,
|
|||||||
GrGetScreenInfo(&sinfo);
|
GrGetScreenInfo(&sinfo);
|
||||||
|
|
||||||
if (sinfo.pixtype == MWPF_PALETTE) {
|
if (sinfo.pixtype == MWPF_PALETTE) {
|
||||||
if(!(palette = (GR_PALETTE*) malloc(sizeof(GR_PALETTE)))) {
|
if(!(palette = (GR_PALETTE*) malloc(sizeof(GR_PALETTE)))) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
GrGetSystemPalette(palette);
|
GrGetSystemPalette(palette);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!(pixels = (GR_PIXELVAL*) malloc(sizeof(GR_PIXELVAL) * width * height)))
|
if(!(pixels = (GR_PIXELVAL*) malloc(sizeof(GR_PIXELVAL) * width * height)))
|
||||||
{
|
{
|
||||||
@@ -1147,55 +1147,55 @@ bool wxGetImageFromDrawable(GR_DRAW_ID drawable, int srcX, int srcY, int width,
|
|||||||
|
|
||||||
image.Create(width, height);
|
image.Create(width, height);
|
||||||
|
|
||||||
GrReadArea(drawable, srcX, srcY, width, height,
|
GrReadArea(drawable, srcX, srcY, width, height,
|
||||||
pixels);
|
pixels);
|
||||||
|
|
||||||
|
|
||||||
for(x = 0; x < sinfo.cols; x++) {
|
for(x = 0; x < sinfo.cols; x++) {
|
||||||
|
|
||||||
pp = (unsigned char *)pixels +
|
pp = (unsigned char *)pixels +
|
||||||
((x + (y * sinfo.cols)) *
|
((x + (y * sinfo.cols)) *
|
||||||
sizeof(GR_PIXELVAL));
|
sizeof(GR_PIXELVAL));
|
||||||
|
|
||||||
switch(sinfo.pixtype) {
|
switch(sinfo.pixtype) {
|
||||||
/* FIXME: These may need modifying on big endian. */
|
/* FIXME: These may need modifying on big endian. */
|
||||||
case MWPF_TRUECOLOR0888:
|
case MWPF_TRUECOLOR0888:
|
||||||
case MWPF_TRUECOLOR888:
|
case MWPF_TRUECOLOR888:
|
||||||
rgb[0] = pp[2];
|
rgb[0] = pp[2];
|
||||||
rgb[1] = pp[1];
|
rgb[1] = pp[1];
|
||||||
rgb[2] = pp[0];
|
rgb[2] = pp[0];
|
||||||
break;
|
break;
|
||||||
case MWPF_PALETTE:
|
case MWPF_PALETTE:
|
||||||
rgb[0] = palette->palette[pp[0]].r;
|
rgb[0] = palette->palette[pp[0]].r;
|
||||||
rgb[1] = palette->palette[pp[0]].g;
|
rgb[1] = palette->palette[pp[0]].g;
|
||||||
rgb[2] = palette->palette[pp[0]].b;
|
rgb[2] = palette->palette[pp[0]].b;
|
||||||
break;
|
break;
|
||||||
case MWPF_TRUECOLOR565:
|
case MWPF_TRUECOLOR565:
|
||||||
rgb[0] = pp[1] & 0xf8;
|
rgb[0] = pp[1] & 0xf8;
|
||||||
rgb[1] = ((pp[1] & 0x07) << 5) |
|
rgb[1] = ((pp[1] & 0x07) << 5) |
|
||||||
((pp[0] & 0xe0) >> 3);
|
((pp[0] & 0xe0) >> 3);
|
||||||
rgb[2] = (pp[0] & 0x1f) << 3;
|
rgb[2] = (pp[0] & 0x1f) << 3;
|
||||||
break;
|
break;
|
||||||
case MWPF_TRUECOLOR555:
|
case MWPF_TRUECOLOR555:
|
||||||
rgb[0] = (pp[1] & 0x7c) << 1;
|
rgb[0] = (pp[1] & 0x7c) << 1;
|
||||||
rgb[1] = ((pp[1] & 0x03) << 6) |
|
rgb[1] = ((pp[1] & 0x03) << 6) |
|
||||||
((pp[0] & 0xe0) >> 2);
|
((pp[0] & 0xe0) >> 2);
|
||||||
rgb[2] = (pp[0] & 0x1f) << 3;
|
rgb[2] = (pp[0] & 0x1f) << 3;
|
||||||
break;
|
break;
|
||||||
case MWPF_TRUECOLOR332:
|
case MWPF_TRUECOLOR332:
|
||||||
rgb[0] = pp[0] & 0xe0;
|
rgb[0] = pp[0] & 0xe0;
|
||||||
rgb[1] = (pp[0] & 0x1c) << 3;
|
rgb[1] = (pp[0] & 0x1c) << 3;
|
||||||
rgb[2] = (pp[0] & 0x03) << 6;
|
rgb[2] = (pp[0] & 0x03) << 6;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "Unsupported pixel "
|
fprintf(stderr, "Unsupported pixel "
|
||||||
"format\n");
|
"format\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
image.SetRGB(x, y, rgb[0], rgb[1], rgb[2]);
|
image.SetRGB(x, y, rgb[0], rgb[1], rgb[2]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free(pixels);
|
free(pixels);
|
||||||
if(palette) free(palette);
|
if(palette) free(palette);
|
||||||
@@ -1207,45 +1207,45 @@ bool wxGetImageFromDrawable(GR_DRAW_ID drawable, int srcX, int srcY, int width,
|
|||||||
int GrGetPixelColor(GR_SCREEN_INFO* sinfo, GR_PALETTE* palette, GR_PIXELVAL pixel,
|
int GrGetPixelColor(GR_SCREEN_INFO* sinfo, GR_PALETTE* palette, GR_PIXELVAL pixel,
|
||||||
unsigned char* red, unsigned char* green, unsigned char* blue)
|
unsigned char* red, unsigned char* green, unsigned char* blue)
|
||||||
{
|
{
|
||||||
unsigned char rgb[3], *pp;
|
unsigned char rgb[3], *pp;
|
||||||
|
|
||||||
pp = (unsigned char*) & pixel ;
|
pp = (unsigned char*) & pixel ;
|
||||||
|
|
||||||
switch (sinfo.pixtype)
|
switch (sinfo.pixtype)
|
||||||
{
|
{
|
||||||
/* FIXME: These may need modifying on big endian. */
|
/* FIXME: These may need modifying on big endian. */
|
||||||
case MWPF_TRUECOLOR0888:
|
case MWPF_TRUECOLOR0888:
|
||||||
case MWPF_TRUECOLOR888:
|
case MWPF_TRUECOLOR888:
|
||||||
rgb[0] = pp[2];
|
rgb[0] = pp[2];
|
||||||
rgb[1] = pp[1];
|
rgb[1] = pp[1];
|
||||||
rgb[2] = pp[0];
|
rgb[2] = pp[0];
|
||||||
break;
|
break;
|
||||||
case MWPF_PALETTE:
|
case MWPF_PALETTE:
|
||||||
rgb[0] = palette->palette[pp[0]].r;
|
rgb[0] = palette->palette[pp[0]].r;
|
||||||
rgb[1] = palette->palette[pp[0]].g;
|
rgb[1] = palette->palette[pp[0]].g;
|
||||||
rgb[2] = palette->palette[pp[0]].b;
|
rgb[2] = palette->palette[pp[0]].b;
|
||||||
break;
|
break;
|
||||||
case MWPF_TRUECOLOR565:
|
case MWPF_TRUECOLOR565:
|
||||||
rgb[0] = pp[1] & 0xf8;
|
rgb[0] = pp[1] & 0xf8;
|
||||||
rgb[1] = ((pp[1] & 0x07) << 5) |
|
rgb[1] = ((pp[1] & 0x07) << 5) |
|
||||||
((pp[0] & 0xe0) >> 3);
|
((pp[0] & 0xe0) >> 3);
|
||||||
rgb[2] = (pp[0] & 0x1f) << 3;
|
rgb[2] = (pp[0] & 0x1f) << 3;
|
||||||
break;
|
break;
|
||||||
case MWPF_TRUECOLOR555:
|
case MWPF_TRUECOLOR555:
|
||||||
rgb[0] = (pp[1] & 0x7c) << 1;
|
rgb[0] = (pp[1] & 0x7c) << 1;
|
||||||
rgb[1] = ((pp[1] & 0x03) << 6) |
|
rgb[1] = ((pp[1] & 0x03) << 6) |
|
||||||
((pp[0] & 0xe0) >> 2);
|
((pp[0] & 0xe0) >> 2);
|
||||||
rgb[2] = (pp[0] & 0x1f) << 3;
|
rgb[2] = (pp[0] & 0x1f) << 3;
|
||||||
break;
|
break;
|
||||||
case MWPF_TRUECOLOR332:
|
case MWPF_TRUECOLOR332:
|
||||||
rgb[0] = pp[0] & 0xe0;
|
rgb[0] = pp[0] & 0xe0;
|
||||||
rgb[1] = (pp[0] & 0x1c) << 3;
|
rgb[1] = (pp[0] & 0x1c) << 3;
|
||||||
rgb[2] = (pp[0] & 0x03) << 6;
|
rgb[2] = (pp[0] & 0x03) << 6;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "Unsupported pixel format\n");
|
fprintf(stderr, "Unsupported pixel format\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
*(red) = rgb[0];
|
*(red) = rgb[0];
|
||||||
@@ -1307,12 +1307,12 @@ bool wxXPMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name,
|
|||||||
bitmap->SetRefData( new wxBitmapRefData() );
|
bitmap->SetRefData( new wxBitmapRefData() );
|
||||||
|
|
||||||
M_BMPHANDLERDATA->m_display = wxGlobalDisplay();
|
M_BMPHANDLERDATA->m_display = wxGlobalDisplay();
|
||||||
|
|
||||||
Display *xdisplay = (Display*) M_BMPHANDLERDATA->m_display;
|
Display *xdisplay = (Display*) M_BMPHANDLERDATA->m_display;
|
||||||
|
|
||||||
int xscreen = DefaultScreen( xdisplay );
|
int xscreen = DefaultScreen( xdisplay );
|
||||||
Window xroot = RootWindow( xdisplay, xscreen );
|
Window xroot = RootWindow( xdisplay, xscreen );
|
||||||
|
|
||||||
int bpp = DefaultDepth( xdisplay, xscreen );
|
int bpp = DefaultDepth( xdisplay, xscreen );
|
||||||
|
|
||||||
XpmAttributes xpmAttr;
|
XpmAttributes xpmAttr;
|
||||||
@@ -1320,11 +1320,11 @@ bool wxXPMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name,
|
|||||||
|
|
||||||
Pixmap pixmap;
|
Pixmap pixmap;
|
||||||
Pixmap mask = 0;
|
Pixmap mask = 0;
|
||||||
|
|
||||||
int ErrorStatus = XpmReadFileToPixmap( xdisplay, xroot,
|
int ErrorStatus = XpmReadFileToPixmap( xdisplay, xroot,
|
||||||
(char*) name.c_str(),
|
(char*) name.c_str(),
|
||||||
&pixmap, &mask, &xpmAttr);
|
&pixmap, &mask, &xpmAttr);
|
||||||
|
|
||||||
if (ErrorStatus == XpmSuccess)
|
if (ErrorStatus == XpmSuccess)
|
||||||
{
|
{
|
||||||
M_BMPHANDLERDATA->m_width = xpmAttr.width;
|
M_BMPHANDLERDATA->m_width = xpmAttr.width;
|
||||||
@@ -1335,7 +1335,7 @@ bool wxXPMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name,
|
|||||||
XpmFreeAttributes(&xpmAttr);
|
XpmFreeAttributes(&xpmAttr);
|
||||||
|
|
||||||
M_BMPHANDLERDATA->m_bitmap = (WXPixmap) pixmap;
|
M_BMPHANDLERDATA->m_bitmap = (WXPixmap) pixmap;
|
||||||
|
|
||||||
if (mask)
|
if (mask)
|
||||||
{
|
{
|
||||||
M_BMPHANDLERDATA->m_mask = new wxMask;
|
M_BMPHANDLERDATA->m_mask = new wxMask;
|
||||||
@@ -1346,7 +1346,7 @@ bool wxXPMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
UnRef();
|
UnRef();
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1357,13 +1357,10 @@ bool wxXPMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name,
|
|||||||
if (stream.Ok())
|
if (stream.Ok())
|
||||||
{
|
{
|
||||||
wxImage image(decoder.ReadFile(stream));
|
wxImage image(decoder.ReadFile(stream));
|
||||||
if (image.Ok())
|
return image.Ok() && bitmap->CreateFromImage(image);
|
||||||
return CreateFromImage(image);
|
|
||||||
else
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
else
|
#else // !wxHAVE_LIB_XPM && !wxUSE_STREAMS
|
||||||
return FALSE;
|
return FALSE;
|
||||||
#endif // wxHAVE_LIB_XPM / wxUSE_STREAMS
|
#endif // wxHAVE_LIB_XPM / wxUSE_STREAMS
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1419,12 +1416,12 @@ bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *bits,
|
|||||||
bitmap->SetRefData( new wxBitmapRefData() );
|
bitmap->SetRefData( new wxBitmapRefData() );
|
||||||
|
|
||||||
M_BMPHANDLERDATA->m_display = wxGlobalDisplay();
|
M_BMPHANDLERDATA->m_display = wxGlobalDisplay();
|
||||||
|
|
||||||
Display *xdisplay = (Display*) M_BMPHANDLERDATA->m_display;
|
Display *xdisplay = (Display*) M_BMPHANDLERDATA->m_display;
|
||||||
|
|
||||||
int xscreen = DefaultScreen( xdisplay );
|
int xscreen = DefaultScreen( xdisplay );
|
||||||
Window xroot = RootWindow( xdisplay, xscreen );
|
Window xroot = RootWindow( xdisplay, xscreen );
|
||||||
|
|
||||||
int bpp = DefaultDepth( xdisplay, xscreen );
|
int bpp = DefaultDepth( xdisplay, xscreen );
|
||||||
|
|
||||||
XpmAttributes xpmAttr;
|
XpmAttributes xpmAttr;
|
||||||
@@ -1432,10 +1429,10 @@ bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *bits,
|
|||||||
|
|
||||||
Pixmap pixmap = 0;
|
Pixmap pixmap = 0;
|
||||||
Pixmap mask = 0;
|
Pixmap mask = 0;
|
||||||
|
|
||||||
int ErrorStatus = XpmCreatePixmapFromData( xdisplay, xroot, (char**) bits,
|
int ErrorStatus = XpmCreatePixmapFromData( xdisplay, xroot, (char**) bits,
|
||||||
&pixmap, &mask, &xpmAttr );
|
&pixmap, &mask, &xpmAttr );
|
||||||
|
|
||||||
if (ErrorStatus == XpmSuccess)
|
if (ErrorStatus == XpmSuccess)
|
||||||
{
|
{
|
||||||
M_BMPHANDLERDATA->m_width = xpmAttr.width;
|
M_BMPHANDLERDATA->m_width = xpmAttr.width;
|
||||||
@@ -1454,31 +1451,28 @@ bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *bits,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
XpmFreeAttributes(&xpmAttr);
|
XpmFreeAttributes(&xpmAttr);
|
||||||
|
|
||||||
M_BMPHANDLERDATA->m_pixmap = (WXPixmap) pixmap;
|
M_BMPHANDLERDATA->m_pixmap = (WXPixmap) pixmap;
|
||||||
|
|
||||||
if (mask)
|
if (mask)
|
||||||
{
|
{
|
||||||
M_BMPHANDLERDATA->m_mask = new wxMask;
|
M_BMPHANDLERDATA->m_mask = new wxMask;
|
||||||
M_BMPHANDLERDATA->m_mask->SetBitmap( (WXPixmap) mask );
|
M_BMPHANDLERDATA->m_mask->SetBitmap( (WXPixmap) mask );
|
||||||
M_BMPHANDLERDATA->m_mask->SetDisplay( xdisplay );
|
M_BMPHANDLERDATA->m_mask->SetDisplay( xdisplay );
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bitmap->UnRef();
|
bitmap->UnRef();
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
#else
|
#else // !wxHAVE_LIB_XPM
|
||||||
wxXPMDecoder decoder;
|
wxXPMDecoder decoder;
|
||||||
wxImage image(decoder.ReadData(bits));
|
wxImage image(decoder.ReadData((const char **)bits));
|
||||||
if (image.Ok())
|
return image.Ok() && bitmap->CreateFromImage(image);
|
||||||
return bitmap->CreateFromImage(image);
|
#endif // wxHAVE_LIB_XPM/!wxHAVE_LIB_XPM
|
||||||
else
|
|
||||||
return FALSE;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_XPM
|
#endif // wxUSE_XPM
|
||||||
@@ -1523,10 +1517,10 @@ bool wxXBMDataHandler::Create( wxBitmap *bitmap, void *bits,
|
|||||||
M_BMPHANDLERDATA->m_display = wxGlobalDisplay();
|
M_BMPHANDLERDATA->m_display = wxGlobalDisplay();
|
||||||
|
|
||||||
Display *xdisplay = (Display*) M_BMPHANDLERDATA->m_display;
|
Display *xdisplay = (Display*) M_BMPHANDLERDATA->m_display;
|
||||||
|
|
||||||
int xscreen = DefaultScreen( xdisplay );
|
int xscreen = DefaultScreen( xdisplay );
|
||||||
Window xroot = RootWindow( xdisplay, xscreen );
|
Window xroot = RootWindow( xdisplay, xscreen );
|
||||||
|
|
||||||
M_BMPHANDLERDATA->m_mask = (wxMask *) NULL;
|
M_BMPHANDLERDATA->m_mask = (wxMask *) NULL;
|
||||||
M_BMPHANDLERDATA->m_bitmap =
|
M_BMPHANDLERDATA->m_bitmap =
|
||||||
(WXPixmap) XCreateBitmapFromData( xdisplay, xroot,
|
(WXPixmap) XCreateBitmapFromData( xdisplay, xroot,
|
||||||
|
Reference in New Issue
Block a user