mirror of https://github.com/fltk/fltk
Mac OS platform: make fl_draw_image() draw correctly depth-4 images with transparent areas.
This simplifies the drawing of Fl_Pixmap's. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11214 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
6097c134d8
commit
14759eb387
|
@ -85,8 +85,7 @@ static void innards(const uchar *buf, int X, int Y, int W, int H,
|
||||||
tmpBuf ? dataReleaseCB : NULL
|
tmpBuf ? dataReleaseCB : NULL
|
||||||
);
|
);
|
||||||
CGImageRef img = CGImageCreate( W, H, 8, 8*delta, linedelta,
|
CGImageRef img = CGImageCreate( W, H, 8, 8*delta, linedelta,
|
||||||
lut, delta&1?kCGImageAlphaNone:kCGImageAlphaNoneSkipLast,
|
lut, delta&1?kCGImageAlphaNone:kCGImageAlphaLast,
|
||||||
//lut, delta&1?kCGImageAlphaNone:kCGImageAlphaLast,
|
|
||||||
src, 0L, false, kCGRenderingIntentDefault);
|
src, 0L, false, kCGRenderingIntentDefault);
|
||||||
// draw the image into the destination context
|
// draw the image into the destination context
|
||||||
if (img) {
|
if (img) {
|
||||||
|
|
|
@ -255,16 +255,6 @@ int fl_draw_pixmap(const char*const* cdata, int x, int y, Fl_Color bg) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Hack until fl_draw_image() supports alpha properly
|
|
||||||
#ifdef __APPLE_QUARTZ__ // PORTME: Fl_Graphics_Driver - platform pixmap
|
|
||||||
if (Fl_Surface_Device::surface()->driver()->has_feature(Fl_Graphics_Driver::NATIVE)) {
|
|
||||||
Fl_RGB_Image* rgb = new Fl_RGB_Image(buffer, w, h, 4);
|
|
||||||
rgb->alloc_array = 1;
|
|
||||||
rgb->draw(x, y);
|
|
||||||
delete rgb;
|
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
#endif // __APPLE_QUARTZ__ // PORTME: Fl_Graphics_Driver - platform pixmap
|
|
||||||
// build the mask bitmap used by Fl_Pixmap:
|
// build the mask bitmap used by Fl_Pixmap:
|
||||||
if (fl_mask_bitmap) {
|
if (fl_mask_bitmap) {
|
||||||
int W = (w+7)/8;
|
int W = (w+7)/8;
|
||||||
|
@ -289,9 +279,6 @@ int fl_draw_pixmap(const char*const* cdata, int x, int y, Fl_Color bg) {
|
||||||
|
|
||||||
fl_draw_image(buffer, x, y, w, h, 4);
|
fl_draw_image(buffer, x, y, w, h, 4);
|
||||||
|
|
||||||
#ifdef __APPLE_QUARTZ__ // PORTME: Fl_Graphics_Driver - platform pixmap
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
delete[] buffer;
|
delete[] buffer;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -565,6 +565,7 @@ void copy(Fl_Widget *, void *data) {
|
||||||
}
|
}
|
||||||
rgb_surf = new Fl_Image_Surface(W, H, 1);
|
rgb_surf = new Fl_Image_Surface(W, H, 1);
|
||||||
rgb_surf->set_current();
|
rgb_surf->set_current();
|
||||||
|
fl_color(FL_YELLOW);fl_rectf(0,0,1000,1000);
|
||||||
if (decorated)
|
if (decorated)
|
||||||
rgb_surf->draw_decorated_window(target->as_window());
|
rgb_surf->draw_decorated_window(target->as_window());
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue