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

Reply via email to