Author: manolo
Date: 2010-03-14 15:21:43 -0700 (Sun, 14 Mar 2010)
New Revision: 7268
Log:
Now compiles from Mac OS 10.3 and above
Modified:
branches/branch-1.3/src/Fl_Gl_Printer.cxx
Modified: branches/branch-1.3/src/Fl_Gl_Printer.cxx
===================================================================
--- branches/branch-1.3/src/Fl_Gl_Printer.cxx 2010-03-14 21:29:12 UTC (rev
7267)
+++ branches/branch-1.3/src/Fl_Gl_Printer.cxx 2010-03-14 22:21:43 UTC (rev
7268)
@@ -9,6 +9,11 @@
#include "FL/fl_draw.H"
#endif
+static void imgProviderReleaseData (void *info, const void *data, size_t size)
+{
+ free((void *)data);
+}
+
void Fl_Gl_Printer::print_gl_window(Fl_Gl_Window *glw, int x, int y)
{
#ifdef WIN32
@@ -51,19 +56,23 @@
#ifdef WIN32
fl_draw_image(baseAddress + (glw->h() - 1) * mByteWidth, x, y , glw->w(),
glw->h(), bytesperpixel, - mByteWidth);
#elif defined(__APPLE__)
- CGColorSpaceRef cSpace = CGColorSpaceCreateWithName
(kCGColorSpaceGenericRGB);
- CGContextRef bitmap = CGBitmapContextCreate(baseAddress, glw->w(), glw->h(),
8, mByteWidth, cSpace,
+#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_4
+#define kCGBitmapByteOrder32Big 0
+#define CGBitmapInfo CGImageAlphaInfo
+#endif
+ CGColorSpaceRef cSpace = CGColorSpaceCreateDeviceRGB();
+ CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, baseAddress,
mByteWidth * glw->h(), imgProviderReleaseData);
+ CGImageRef image = CGImageCreate(glw->w(), glw->h(), 8, 8*bytesperpixel,
mByteWidth, cSpace,
#if __BIG_ENDIAN__
- kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Big /* XRGB Big
Endian */);
+ (CGBitmapInfo)(kCGImageAlphaNoneSkipFirst |
kCGBitmapByteOrder32Big) /* XRGB Big Endian */
#else
- kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Little /* XRGB
Little Endian */);
+ kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Little /*
XRGB Little Endian */
#endif
- if(bitmap == NULL) return;
- CFRelease(cSpace);
- // Make an image out of our bitmap
- CGImageRef image = CGBitmapContextCreateImage(bitmap);
+ , provider, NULL, false, kCGRenderingIntentDefault);
+ CGColorSpaceRelease(cSpace);
+ CGDataProviderRelease(provider);
+
if(image == NULL) return;
- CFRelease(bitmap);
CGContextSaveGState(fl_gc);
int w, h;
this->printable_rect(&w, &h);
@@ -78,5 +87,7 @@
#else // FIXME Linux/Unix
fl_draw_image(baseAddress + (glw->h() - 1) * mByteWidth, x, y , glw->w(),
glw->h(), bytesperpixel, - mByteWidth);
#endif // WIN32
+#ifndef __APPLE__
free(baseAddress);
+#endif
}
_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit