diff options
Diffstat (limited to 'src/image.c')
-rw-r--r-- | src/image.c | 1053 |
1 files changed, 32 insertions, 1021 deletions
diff --git a/src/image.c b/src/image.c index 7aee1e6512e..1312d132f5c 100644 --- a/src/image.c +++ b/src/image.c @@ -81,56 +81,6 @@ typedef struct w32_bitmap_record Bitmap_Record; #define DefaultDepthOfScreen(screen) (one_w32_display_info.n_cbits) #endif /* HAVE_NTGUI */ - -#ifdef MAC_OS -#include "macterm.h" -#include <sys/stat.h> -#ifndef MAC_OSX -#include <alloca.h> -#include <sys/param.h> -#endif -#if TARGET_API_MAC_CARBON -#ifdef MAC_OSX -#include <QuickTime/QuickTime.h> -#else /* not MAC_OSX */ -#include <QuickTime.h> -#endif /* not MAC_OSX */ -#else /* not TARGET_API_MAC_CARBON */ -#include <Windows.h> -#include <Gestalt.h> -#include <TextUtils.h> -#include <ImageCompression.h> -#include <QuickTimeComponents.h> -#endif /* not TARGET_API_MAC_CARBON */ - -/* MAC_TODO : Color tables on Mac. */ -#undef COLOR_TABLE_SUPPORT - -#define ZPixmap 0 /* arbitrary */ -typedef struct mac_bitmap_record Bitmap_Record; - -#define GET_PIXEL(ximg, x, y) XGetPixel(ximg, x, y) -#define NO_PIXMAP 0 - -#define RGB_PIXEL_COLOR unsigned long - -#if USE_MAC_IMAGE_IO -#define PIX_MASK_DRAW 255 -#define PIX_MASK_RETAIN 0 -#else -/* A black pixel in a mask bitmap/pixmap means ``draw a source - pixel''. A white pixel means ``retain the current pixel''. */ -#define PIX_MASK_DRAW RGB_TO_ULONG(0,0,0) -#define PIX_MASK_RETAIN RGB_TO_ULONG(255,255,255) -#endif - -#define FRAME_X_VISUAL(f) FRAME_X_DISPLAY_INFO (f)->visual -#define x_defined_color mac_defined_color -#define DefaultDepthOfScreen(screen) (one_mac_display_info.n_planes) - -#endif /* MAC_OS */ - - #ifdef HAVE_NS #include "nsterm.h" #include <sys/types.h> @@ -564,12 +514,6 @@ x_create_bitmap_from_data (f, bits, width, height) return -1; #endif /* HAVE_NTGUI */ -#ifdef MAC_OS - /* MAC_TODO: for now fail if width is not mod 16 (toolbox requires it) */ - if (width % 16 != 0) - return -1; -#endif - #ifdef HAVE_NS void *bitmap = ns_image_from_XBM(bits, width, height); if (!bitmap) @@ -577,10 +521,6 @@ x_create_bitmap_from_data (f, bits, width, height) #endif id = x_allocate_bitmap_record (f); -#ifdef MAC_OS - dpyinfo->bitmaps[id - 1].bitmap_data = (char *) xmalloc (height * width); - bcopy (bits, dpyinfo->bitmaps[id - 1].bitmap_data, height * width); -#endif /* MAC_OS */ #ifdef HAVE_NS dpyinfo->bitmaps[id - 1].img = bitmap; @@ -616,10 +556,6 @@ x_create_bitmap_from_file (f, file) { Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f); -#ifdef MAC_OS - return -1; /* MAC_TODO : bitmap support */ -#endif /* MAC_OS */ - #ifdef HAVE_NTGUI return -1; /* W32_TODO : bitmap support */ #endif /* HAVE_NTGUI */ @@ -707,11 +643,6 @@ free_bitmap_record (dpyinfo, bm) DeleteObject (bm->pixmap); #endif /* HAVE_NTGUI */ -#ifdef MAC_OS - xfree (bm->bitmap_data); /* Added ++kfs */ - bm->bitmap_data = NULL; -#endif /* MAC_OS */ - #ifdef HAVE_NS ns_release_object(bm->img); #endif @@ -1446,17 +1377,6 @@ prepare_image_for_display (f, img) if (img->pixmap == NO_PIXMAP && !img->load_failed_p) img->load_failed_p = img->type->load (f, img) == 0; -#if defined (MAC_OS) && USE_CG_DRAWING - if (!img->load_failed_p && img->data.ptr_val == NULL) - { - img->data.ptr_val = mac_create_cg_image_from_image (f, img); - if (img->data.ptr_val == NULL) - { - img->load_failed_p = 1; - img->type->free (f, img); - } - } -#endif } @@ -1718,7 +1638,6 @@ x_clear_image_1 (f, img, pixmap_p, mask_p, colors_p) if (colors_p && img->ncolors) { - /* MAC_TODO: color table support. */ /* W32_TODO: color table support. */ #ifdef HAVE_X_WINDOWS x_free_colors (f, img->colors, img->ncolors); @@ -1728,13 +1647,6 @@ x_clear_image_1 (f, img, pixmap_p, mask_p, colors_p) img->ncolors = 0; } -#if defined (MAC_OS) && USE_CG_DRAWING - if (img->data.ptr_val) - { - CGImageRelease (img->data.ptr_val); - img->data.ptr_val = NULL; - } -#endif } /* Free X resources of image IMG which is used on frame F. */ @@ -2279,7 +2191,7 @@ mark_image_cache (struct image_cache *c) /*********************************************************************** - X / MAC / W32 support code + X / NS / W32 support code ***********************************************************************/ #ifdef HAVE_NTGUI @@ -2464,29 +2376,6 @@ x_create_x_image_and_pixmap (f, width, height, depth, ximg, pixmap) #endif /* HAVE_NTGUI */ -#ifdef MAC_OS - Display *display = FRAME_X_DISPLAY (f); - Window window = FRAME_X_WINDOW (f); - - xassert (interrupt_input_blocked); - - /* Allocate a pixmap of the same size. */ - *pixmap = XCreatePixmap (display, window, width, height, depth); - if (*pixmap == NO_PIXMAP) - { - *ximg = NULL; - image_error ("Unable to create X pixmap", Qnil, Qnil); - return 0; - } - -#if !USE_MAC_IMAGE_IO - LockPixels (GetGWorldPixMap (*pixmap)); -#endif - *ximg = *pixmap; - return 1; - -#endif /* MAC_OS */ - #ifdef HAVE_NS *pixmap = ns_image_for_XPM(width, height, depth); if (*pixmap == 0) @@ -2520,9 +2409,6 @@ x_destroy_x_image (ximg) ximg->data = NULL; xfree (ximg); #endif /* HAVE_NTGUI */ -#ifdef MAC_OS - XDestroyImage (ximg); -#endif /* MAC_OS */ #ifdef HAVE_NS ns_release_object(ximg); #endif /* HAVE_NS */ @@ -2557,10 +2443,6 @@ x_put_x_image (f, ximg, pixmap, width, height) #endif #endif /* HAVE_NTGUI */ -#ifdef MAC_OS - xassert (ximg == pixmap); -#endif /* MAC_OS */ - #ifdef HAVE_NS xassert (ximg == pixmap); ns_retain_object(ximg); @@ -2648,593 +2530,6 @@ slurp_file (file, size) -#ifdef MAC_OS - -/*********************************************************************** - MAC Image Load Functions - ***********************************************************************/ - -#if USE_MAC_IMAGE_IO -static int -image_load_image_io (f, img, type) - struct frame *f; - struct image *img; - CFStringRef type; -{ - CFDictionaryRef options, src_props = NULL, props = NULL; - CFStringRef keys[2]; - CFTypeRef values[2]; - Lisp_Object specified_file, specified_data; - CGImageSourceRef source = NULL; - size_t count; - CGImageRef image = NULL; - int loop_count = -1; - double delay_time = -1.0; - int width, height; - XImagePtr ximg = NULL; - CGContextRef context; - CGRect rectangle; - int has_alpha_p, gif_p; - - gif_p = UTTypeEqual (type, kUTTypeGIF); - - keys[0] = kCGImageSourceTypeIdentifierHint; - values[0] = (CFTypeRef) type; - keys[1] = kCGImageSourceShouldCache; - values[1] = (CFTypeRef) kCFBooleanFalse; - options = CFDictionaryCreate (NULL, (const void **) keys, - (const void **) values, - sizeof (keys) / sizeof (keys[0]), - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); - if (options == NULL) - { - image_error ("Error creating options for image `%s'", img->spec, Qnil); - return 0; - } - - /* Open the file. */ - specified_file = image_spec_value (img->spec, QCfile, NULL); - specified_data = image_spec_value (img->spec, QCdata, NULL); - - if (NILP (specified_data)) - { - Lisp_Object file; - CFStringRef path; - CFURLRef url; - - file = x_find_image_file (specified_file); - if (!STRINGP (file)) - { - image_error ("Cannot find image file `%s'", specified_file, Qnil); - return 0; - } - path = cfstring_create_with_utf8_cstring (SDATA (file)); - if (path) - { - url = CFURLCreateWithFileSystemPath (NULL, path, - kCFURLPOSIXPathStyle, 0); - CFRelease (path); - if (url) - { - source = CGImageSourceCreateWithURL (url, NULL); - CFRelease (url); - } - } - } - else - { - CFDataRef data = CFDataCreate (NULL, SDATA (specified_data), - SBYTES (specified_data)); - - if (data) - { - source = CGImageSourceCreateWithData (data, options); - CFRelease (data); - } - } - CFRelease (options); - - if (source) - { - CFStringRef real_type = CGImageSourceGetType (source); - - if (real_type && UTTypeEqual (type, real_type)) - src_props = CGImageSourceCopyProperties (source, NULL); - if (src_props) - { - EMACS_INT ino = 0; - - count = CGImageSourceGetCount (source); - if (gif_p) - { - Lisp_Object image = image_spec_value (img->spec, QCindex, NULL); - - if (INTEGERP (image)) - ino = XFASTINT (image); - } - if (ino >= 0 && ino < count) - { - props = CGImageSourceCopyPropertiesAtIndex (source, ino, NULL); - if (props) - image = CGImageSourceCreateImageAtIndex (source, ino, NULL); - } - } - CFRelease (source); - } - - if (image == NULL) - { - if (src_props) - CFRelease (src_props); - if (props) - CFRelease (props); - image_error ("Error reading image `%s'", img->spec, Qnil); - return 0; - } - else - { - CFBooleanRef boolean; - - if (CFDictionaryGetValueIfPresent (props, kCGImagePropertyHasAlpha, - (const void **) &boolean)) - has_alpha_p = CFBooleanGetValue (boolean); - if (gif_p) - { - CFDictionaryRef dict; - CFNumberRef number; - - dict = CFDictionaryGetValue (src_props, - kCGImagePropertyGIFDictionary); - if (dict - && CFDictionaryGetValueIfPresent (dict, - kCGImagePropertyGIFLoopCount, - (const void **) &number)) - CFNumberGetValue (number, kCFNumberIntType, &loop_count); - - dict = CFDictionaryGetValue (props, kCGImagePropertyGIFDictionary); - if (dict - && CFDictionaryGetValueIfPresent (dict, - kCGImagePropertyGIFDelayTime, - (const void **) &number)) - CFNumberGetValue (number, kCFNumberDoubleType, &delay_time); - } - CFRelease (src_props); - CFRelease (props); - } - - width = img->width = CGImageGetWidth (image); - height = img->height = CGImageGetHeight (image); - - if (!check_image_size (f, width, height)) - { - CGImageRelease (image); - image_error ("Invalid image size", Qnil, Qnil); - return 0; - } - - if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) - { - CGImageRelease (image); - image_error ("Out of memory (%s)", img->spec, Qnil); - return 0; - } - rectangle = CGRectMake (0, 0, width, height); - - context = CGBitmapContextCreate (ximg->data, ximg->width, ximg->height, 8, - ximg->bytes_per_line, - mac_cg_color_space_rgb, - kCGImageAlphaNoneSkipFirst - | kCGBitmapByteOrder32Host); - if (has_alpha_p) - { - Lisp_Object specified_bg; - XColor color; - - specified_bg = image_spec_value (img->spec, QCbackground, NULL); - if (!STRINGP (specified_bg) - || !mac_defined_color (f, SDATA (specified_bg), &color, 0)) - { - color.pixel = FRAME_BACKGROUND_PIXEL (f); - color.red = RED16_FROM_ULONG (color.pixel); - color.green = GREEN16_FROM_ULONG (color.pixel); - color.blue = BLUE16_FROM_ULONG (color.pixel); - } - CGContextSetRGBFillColor (context, color.red / 65535.0, - color.green / 65535.0, - color.blue / 65535.0, 1.0); - CGContextFillRect (context, rectangle); - } - CGContextDrawImage (context, rectangle, image); - CGContextRelease (context); - CGImageRelease (image); - - /* Save GIF image extension data for `image-extension-data'. - Format is (count IMAGES - 0xff "NETSCAPE2.0" 0x00 DATA_SUB_BLOCK_FOR_LOOP_COUNT - 0xf9 GRAPHIC_CONTROL_EXTENSION_BLOCK). */ - if (gif_p) - { - img->data.lisp_val = Qnil; - if (delay_time >= 0) - { - Lisp_Object gce = make_uninit_string (4); - int centisec = delay_time * 100.0 + 0.5; - - /* Fill the delay time field. */ - SSET (gce, 1, centisec & 0xff); - SSET (gce, 2, (centisec >> 8) & 0xff); - /* We don't know about other fields. */ - SSET (gce, 0, 0); - SSET (gce, 3, 0); - img->data.lisp_val = Fcons (make_number (0xf9), - Fcons (gce, - img->data.lisp_val)); - } - if (loop_count >= 0) - { - Lisp_Object data_sub_block = make_uninit_string (3); - - SSET (data_sub_block, 0, 0x01); - SSET (data_sub_block, 1, loop_count & 0xff); - SSET (data_sub_block, 2, (loop_count >> 8) & 0xff); - img->data.lisp_val = Fcons (make_number (0), - Fcons (data_sub_block, - img->data.lisp_val)); - img->data.lisp_val = Fcons (make_number (0xff), - Fcons (build_string ("NETSCAPE2.0"), - img->data.lisp_val)); - } - if (count > 1) - img->data.lisp_val = Fcons (Qcount, - Fcons (make_number (count), - img->data.lisp_val)); - } - - /* Maybe fill in the background field while we have ximg handy. */ - if (NILP (image_spec_value (img->spec, QCbackground, NULL))) - IMAGE_BACKGROUND (img, f, ximg); - - /* Put the image into the pixmap. */ - x_put_x_image (f, ximg, img->pixmap, width, height); - x_destroy_x_image (ximg); - return 1; -} -#else /* !USE_MAC_IMAGE_IO */ -static int image_load_quicktime P_ ((struct frame *, struct image *img, - OSType)); -#ifdef MAC_OSX -static int image_load_quartz2d P_ ((struct frame *, struct image *img, int)); -#endif - -static OSErr -find_image_fsspec (specified_file, file, fss) - Lisp_Object specified_file, *file; - FSSpec *fss; -{ - OSErr err; - AEDesc desc; - - *file = x_find_image_file (specified_file); - if (!STRINGP (*file)) - return fnfErr; /* file or directory not found; - incomplete pathname */ - /* Try to open the image file. */ - err = AECoercePtr (TYPE_FILE_NAME, SDATA (*file), - SBYTES (*file), typeFSS, &desc); - if (err == noErr) - { -#if TARGET_API_MAC_CARBON - err = AEGetDescData (&desc, fss, sizeof (FSSpec)); -#else - *fss = *(FSSpec *)(*(desc.dataHandle)); -#endif - AEDisposeDesc (&desc); - } - return err; -} - -static int -image_load_qt_1 (f, img, type, fss, dh) - struct frame *f; - struct image *img; - OSType type; - const FSSpec *fss; - Handle dh; -{ - ComponentResult err; - GraphicsImportComponent gi; - Rect rect; - int width, height; - ImageDescriptionHandle desc_handle; - short draw_all_pixels; - Lisp_Object specified_bg; - XColor color; - XImagePtr ximg; - RGBColor bg_color; - - err = OpenADefaultComponent (GraphicsImporterComponentType, type, &gi); - if (err != noErr) - { - image_error ("Cannot get importer component for `%s'", img->spec, Qnil); - return 0; - } - if (dh == NULL) - { - /* read from file system spec */ - err = GraphicsImportSetDataFile (gi, fss); - if (err != noErr) - { - image_error ("Cannot set fsspec to graphics importer for '%s'", - img->spec, Qnil); - goto error; - } - } - else - { - /* read from data handle */ - err = GraphicsImportSetDataHandle (gi, dh); - if (err != noErr) - { - image_error ("Cannot set data handle to graphics importer for `%s'", - img->spec, Qnil); - goto error; - } - } - err = GraphicsImportGetImageDescription (gi, &desc_handle); - if (err != noErr || desc_handle == NULL) - { - image_error ("Error reading `%s'", img->spec, Qnil); - goto error; - } - width = img->width = (*desc_handle)->width; - height = img->height = (*desc_handle)->height; - DisposeHandle ((Handle)desc_handle); - - if (!check_image_size (f, width, height)) - { - image_error ("Invalid image size", Qnil, Qnil); - goto error; - } - - err = GraphicsImportDoesDrawAllPixels (gi, &draw_all_pixels); -#if 0 - /* Don't check the error code here. It may have an undocumented - value -32766. */ - if (err != noErr) - { - image_error ("Error reading `%s'", img->spec, Qnil); - goto error; - } -#endif - if (draw_all_pixels != graphicsImporterDrawsAllPixels) - { - specified_bg = image_spec_value (img->spec, QCbackground, NULL); - if (!STRINGP (specified_bg) || - !mac_defined_color (f, SDATA (specified_bg), &color, 0)) - { - color.pixel = FRAME_BACKGROUND_PIXEL (f); - color.red = RED16_FROM_ULONG (color.pixel); - color.green = GREEN16_FROM_ULONG (color.pixel); - color.blue = BLUE16_FROM_ULONG (color.pixel); - } - } - - if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) - goto error; - if (draw_all_pixels != graphicsImporterDrawsAllPixels) - { - CGrafPtr old_port; - GDHandle old_gdh; - - GetGWorld (&old_port, &old_gdh); - SetGWorld (ximg, NULL); - bg_color.red = color.red; - bg_color.green = color.green; - bg_color.blue = color.blue; - RGBBackColor (&bg_color); -#if TARGET_API_MAC_CARBON - GetPortBounds (ximg, &rect); - EraseRect (&rect); -#else - EraseRect (&(ximg->portRect)); -#endif - SetGWorld (old_port, old_gdh); - } - GraphicsImportSetGWorld (gi, ximg, NULL); - GraphicsImportDraw (gi); - CloseComponent (gi); - - /* Maybe fill in the background field while we have ximg handy. */ - if (NILP (image_spec_value (img->spec, QCbackground, NULL))) - IMAGE_BACKGROUND (img, f, ximg); - - /* Put the image into the pixmap. */ - x_put_x_image (f, ximg, img->pixmap, width, height); - x_destroy_x_image (ximg); - return 1; - - error: - CloseComponent (gi); - return 0; -} - - -/* Load an image using the QuickTime Graphics Importer. - Note: The alpha channel does not work for PNG images. */ -static int -image_load_quicktime (f, img, type) - struct frame *f; - struct image *img; - OSType type; -{ - Lisp_Object specified_file; - Lisp_Object specified_data; - OSErr err; - - specified_file = image_spec_value (img->spec, QCfile, NULL); - specified_data = image_spec_value (img->spec, QCdata, NULL); - - if (NILP (specified_data)) - { - /* Read from a file */ - Lisp_Object file; - FSSpec fss; - - err = find_image_fsspec (specified_file, &file, &fss); - if (err != noErr) - { - if (err == fnfErr) - image_error ("Cannot find image file `%s'", specified_file, Qnil); - else - image_error ("Cannot open `%s'", file, Qnil); - return 0; - } - return image_load_qt_1 (f, img, type, &fss, NULL); - } - else - { - /* Memory source! */ - int success_p; - Handle dh; - - err = PtrToHand (SDATA (specified_data), &dh, SBYTES (specified_data)); - if (err != noErr) - { - image_error ("Cannot allocate data handle for `%s'", - img->spec, Qnil); - return 0; - } - success_p = image_load_qt_1 (f, img, type, NULL, dh); - DisposeHandle (dh); - return success_p; - } -} - - -#ifdef MAC_OSX -static int -image_load_quartz2d (f, img, png_p) - struct frame *f; - struct image *img; - int png_p; -{ - Lisp_Object file, specified_file; - Lisp_Object specified_data, specified_bg; - struct gcpro gcpro1; - CGDataProviderRef source; - CGImageRef image; - int width, height; - XColor color; - XImagePtr ximg = NULL; - CGContextRef context; - CGRect rectangle; - - /* Open the file. */ - specified_file = image_spec_value (img->spec, QCfile, NULL); - specified_data = image_spec_value (img->spec, QCdata, NULL); - - file = Qnil; - GCPRO1 (file); - - if (NILP (specified_data)) - { - CFStringRef path; - CFURLRef url; - - file = x_find_image_file (specified_file); - if (!STRINGP (file)) - { - image_error ("Cannot find image file `%s'", specified_file, Qnil); - UNGCPRO; - return 0; - } - path = cfstring_create_with_utf8_cstring (SDATA (file)); - url = CFURLCreateWithFileSystemPath (NULL, path, - kCFURLPOSIXPathStyle, 0); - CFRelease (path); - source = CGDataProviderCreateWithURL (url); - CFRelease (url); - } - else - source = CGDataProviderCreateWithData (NULL, SDATA (specified_data), - SBYTES (specified_data), NULL); - -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020 - if (png_p) - image = CGImageCreateWithPNGDataProvider (source, NULL, false, - kCGRenderingIntentDefault); - else -#endif - image = CGImageCreateWithJPEGDataProvider (source, NULL, false, - kCGRenderingIntentDefault); - - CGDataProviderRelease (source); - if (image == NULL) - { - UNGCPRO; - image_error ("Error reading image `%s'", img->spec, Qnil); - return 0; - } - width = img->width = CGImageGetWidth (image); - height = img->height = CGImageGetHeight (image); - - if (!check_image_size (f, width, height)) - { - CGImageRelease (image); - UNGCPRO; - image_error ("Invalid image size", Qnil, Qnil); - return 0; - } - - if (png_p) - { - specified_bg = image_spec_value (img->spec, QCbackground, NULL); - if (!STRINGP (specified_bg) || - !mac_defined_color (f, SDATA (specified_bg), &color, 0)) - { - color.pixel = FRAME_BACKGROUND_PIXEL (f); - color.red = RED16_FROM_ULONG (color.pixel); - color.green = GREEN16_FROM_ULONG (color.pixel); - color.blue = BLUE16_FROM_ULONG (color.pixel); - } - } - - if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) - { - CGImageRelease (image); - UNGCPRO; - return 0; - } - rectangle = CGRectMake (0, 0, width, height); - QDBeginCGContext (ximg, &context); - if (png_p) - { - CGContextSetRGBFillColor (context, color.red / 65535.0, - color.green / 65535.0, - color.blue / 65535.0, 1.0); - CGContextFillRect (context, rectangle); - } - CGContextDrawImage (context, rectangle, image); - QDEndCGContext (ximg, &context); - CGImageRelease (image); - - /* Maybe fill in the background field while we have ximg handy. */ - if (NILP (image_spec_value (img->spec, QCbackground, NULL))) - IMAGE_BACKGROUND (img, f, ximg); - - /* Put the image into the pixmap. */ - x_put_x_image (f, ximg, img->pixmap, width, height); - x_destroy_x_image (ximg); - UNGCPRO; - return 1; -} -#endif -#endif /* !USE_MAC_IMAGE_IO */ - -#endif /* MAC_OS */ - - /*********************************************************************** XBM images ***********************************************************************/ @@ -4011,13 +3306,13 @@ xbm_load (f, img) XPM images ***********************************************************************/ -#if defined (HAVE_XPM) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_XPM) || defined (HAVE_NS) static int xpm_image_p P_ ((Lisp_Object object)); static int xpm_load P_ ((struct frame *f, struct image *img)); static int xpm_valid_color_symbols_p P_ ((Lisp_Object)); -#endif /* HAVE_XPM || MAC_OS || HAVE_NS */ +#endif /* HAVE_XPM || HAVE_NS */ #ifdef HAVE_XPM #ifdef HAVE_NTGUI @@ -4040,7 +3335,7 @@ static int xpm_valid_color_symbols_p P_ ((Lisp_Object)); #endif /* HAVE_NTGUI */ #endif /* HAVE_XPM */ -#if defined (HAVE_XPM) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_XPM) || defined (HAVE_NS) /* The symbol `xpm' identifying XPM-format images. */ Lisp_Object Qxpm; @@ -4367,7 +3662,7 @@ xpm_image_p (object) || xpm_valid_color_symbols_p (fmt[XPM_COLOR_SYMBOLS].value))); } -#endif /* HAVE_XPM || MAC_OS || HAVE_NS */ +#endif /* HAVE_XPM || HAVE_NS */ #if defined (HAVE_XPM) && defined (HAVE_X_WINDOWS) int @@ -4646,9 +3941,9 @@ xpm_load (f, img) #endif /* HAVE_XPM */ -#if defined (MAC_OS) || ( defined (HAVE_NS) && !defined (HAVE_XPM) ) +#if defined (HAVE_NS) && !defined (HAVE_XPM) -/* XPM support functions for Mac OS where libxpm is not available. +/* XPM support functions for NS where libxpm is not available. Only XPM version 3 (without any extensions) is supported. */ static int xpm_scan P_ ((const unsigned char **, const unsigned char *, @@ -5132,7 +4427,7 @@ xpm_load (f, img) return success_p; } -#endif /* MAC_OS || (HAVE_NS && !HAVE_XPM) */ +#endif /* HAVE_NS && !HAVE_XPM */ @@ -5393,11 +4688,6 @@ lookup_rgb_color (f, r, g, b) { unsigned long pixel; -#ifdef MAC_OS - pixel = RGB_TO_ULONG (r >> 8, g >> 8, b >> 8); - gamma_correct (f, &pixel); -#endif /* MAC_OS */ - #ifdef HAVE_NTGUI pixel = PALETTERGB (r >> 8, g >> 8, b >> 8); #endif /* HAVE_NTGUI */ @@ -5510,11 +4800,11 @@ x_to_xcolors (f, img, rgb_p) p->pixel = GET_PIXEL (ximg, x, y); if (rgb_p) { -#if defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_NS) p->red = RED16_FROM_ULONG (p->pixel); p->green = GREEN16_FROM_ULONG (p->pixel); p->blue = BLUE16_FROM_ULONG (p->pixel); -#endif /* MAC_OS */ +#endif /* HAVE_NS */ #ifdef HAVE_NTGUI p->red = 256 * GetRValue (p->pixel); p->green = 256 * GetGValue (p->pixel); @@ -5807,11 +5097,7 @@ x_disable_image (f, img) #ifndef HAVE_NS //TODO: NS support, however this not needed for toolbars -#ifdef MAC_OS -#define MaskForeground(f) PIX_MASK_DRAW -#else #define MaskForeground(f) WHITE_PIX_DEFAULT (f) -#endif gc = XCreateGC (dpy, img->pixmap, 0, NULL); XSetForeground (dpy, gc, BLACK_PIX_DEFAULT (f)); @@ -6422,7 +5708,7 @@ pbm_load (f, img) PNG ***********************************************************************/ -#if defined (HAVE_PNG) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_PNG) || defined (HAVE_NS) /* Function prototypes. */ @@ -6494,7 +5780,7 @@ png_image_p (object) return fmt[PNG_FILE].count + fmt[PNG_DATA].count == 1; } -#endif /* HAVE_PNG || MAC_OS || HAVE_NS */ +#endif /* HAVE_PNG || HAVE_NS */ #ifdef HAVE_PNG @@ -6882,19 +6168,6 @@ png_load (f, img) frame_background.blue = GetBValue (color); #endif /* HAVE_NTGUI */ -#ifdef MAC_OS - unsigned long color; - png_color_16 frame_background; - color = FRAME_BACKGROUND_PIXEL (f); -#if 0 /* MAC/W32 TODO : Colormap support. */ - x_query_color (f, &color); -#endif - bzero (&frame_background, sizeof frame_background); - frame_background.red = RED_FROM_ULONG (color); - frame_background.green = GREEN_FROM_ULONG (color); - frame_background.blue = BLUE_FROM_ULONG (color); -#endif /* MAC_OS */ - fn_png_set_background (png_ptr, &frame_background, PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); } @@ -7038,22 +6311,6 @@ png_load (f, img) #else /* HAVE_PNG */ -#ifdef MAC_OS -static int -png_load (f, img) - struct frame *f; - struct image *img; -{ -#if USE_MAC_IMAGE_IO - return image_load_image_io (f, img, kUTTypePNG); -#elif MAC_OS_X_VERSION_MAX_ALLOWED >= 1020 - return image_load_quartz2d (f, img, 1); -#else - return image_load_quicktime (f, img, kQTFileTypePNG); -#endif -} -#endif /* MAC_OS */ - #ifdef HAVE_NS static int png_load (struct frame *f, struct image *img) @@ -7073,7 +6330,7 @@ png_load (struct frame *f, struct image *img) JPEG ***********************************************************************/ -#if defined (HAVE_JPEG) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_JPEG) || defined (HAVE_NS) static int jpeg_image_p P_ ((Lisp_Object object)); static int jpeg_load P_ ((struct frame *f, struct image *img)); @@ -7144,7 +6401,7 @@ jpeg_image_p (object) return fmt[JPEG_FILE].count + fmt[JPEG_DATA].count == 1; } -#endif /* HAVE_JPEG || MAC_OS || HAVE_NS */ +#endif /* HAVE_JPEG || HAVE_NS */ #ifdef HAVE_JPEG @@ -7628,22 +6885,6 @@ jpeg_load (f, img) #else /* HAVE_JPEG */ -#ifdef MAC_OS -static int -jpeg_load (f, img) - struct frame *f; - struct image *img; -{ -#if USE_MAC_IMAGE_IO - return image_load_image_io (f, img, kUTTypeJPEG); -#elif defined (MAC_OSX) - return image_load_quartz2d (f, img, 0); -#else - return image_load_quicktime (f, img, kQTFileTypeJPEG); -#endif -} -#endif /* MAC_OS */ - #ifdef HAVE_NS static int jpeg_load (struct frame *f, struct image *img) @@ -7662,7 +6903,7 @@ jpeg_load (struct frame *f, struct image *img) TIFF ***********************************************************************/ -#if defined (HAVE_TIFF) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_TIFF) || defined (HAVE_NS) static int tiff_image_p P_ ((Lisp_Object object)); static int tiff_load P_ ((struct frame *f, struct image *img)); @@ -7732,7 +6973,7 @@ tiff_image_p (object) return fmt[TIFF_FILE].count + fmt[TIFF_DATA].count == 1; } -#endif /* HAVE_TIFF || MAC_OS || HAVE_NS */ +#endif /* HAVE_TIFF || HAVE_NS */ #ifdef HAVE_TIFF @@ -8065,20 +7306,6 @@ tiff_load (f, img) #else /* HAVE_TIFF */ -#ifdef MAC_OS -static int -tiff_load (f, img) - struct frame *f; - struct image *img; -{ -#if USE_MAC_IMAGE_IO - return image_load_image_io (f, img, kUTTypeTIFF); -#else - return image_load_quicktime (f, img, kQTFileTypeTIFF); -#endif -} -#endif /* MAC_OS */ - #ifdef HAVE_NS static int tiff_load (struct frame *f, struct image *img) @@ -8097,7 +7324,7 @@ tiff_load (struct frame *f, struct image *img) GIF ***********************************************************************/ -#if defined (HAVE_GIF) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_GIF) || defined (HAVE_NS) static int gif_image_p P_ ((Lisp_Object object)); static int gif_load P_ ((struct frame *f, struct image *img)); @@ -8182,11 +7409,11 @@ gif_image_p (object) return fmt[GIF_FILE].count + fmt[GIF_DATA].count == 1; } -#endif /* HAVE_GIF || MAC_OS */ +#endif /* HAVE_GIF */ #ifdef HAVE_GIF -#if defined (HAVE_NTGUI) || defined (MAC_OS) +#if defined (HAVE_NTGUI) /* winuser.h might define DrawText to DrawTextA or DrawTextW. Undefine before redefining to avoid a preprocessor warning. */ #ifdef DrawText @@ -8197,11 +7424,11 @@ gif_image_p (object) #include <gif_lib.h> #undef DrawText -#else /* HAVE_NTGUI || MAC_OS */ +#else /* HAVE_NTGUI */ #include <gif_lib.h> -#endif /* HAVE_NTGUI || MAC_OS */ +#endif /* HAVE_NTGUI */ #ifdef HAVE_NTGUI @@ -8515,217 +7742,6 @@ gif_load (f, img) #else /* !HAVE_GIF */ -#ifdef MAC_OS -static int -gif_load (f, img) - struct frame *f; - struct image *img; -{ -#if USE_MAC_IMAGE_IO - return image_load_image_io (f, img, kUTTypeGIF); -#else /* !USE_MAC_IMAGE_IO */ - Lisp_Object specified_file, file; - Lisp_Object specified_data; - OSErr err; - Boolean graphic_p, movie_p, prefer_graphic_p; - Handle dh = NULL; - Movie movie = NULL; - Lisp_Object image; - Track track = NULL; - Media media = NULL; - long nsamples; - Rect rect; - Lisp_Object specified_bg; - XColor color; - RGBColor bg_color; - int width, height; - XImagePtr ximg; - TimeScale time_scale; - TimeValue time, duration; - int ino; - CGrafPtr old_port; - GDHandle old_gdh; - - specified_file = image_spec_value (img->spec, QCfile, NULL); - specified_data = image_spec_value (img->spec, QCdata, NULL); - - /* Animated gifs use QuickTime Movie Toolbox. So initialize it here. */ - EnterMovies (); - - if (NILP (specified_data)) - { - /* Read from a file */ - FSSpec fss; - short refnum; - - err = find_image_fsspec (specified_file, &file, &fss); - if (err != noErr) - { - if (err == fnfErr) - image_error ("Cannot find image file `%s'", specified_file, Qnil); - else - goto open_error; - } - - err = CanQuickTimeOpenFile (&fss, kQTFileTypeGIF, 0, - &graphic_p, &movie_p, &prefer_graphic_p, 0); - if (err != noErr) - goto open_error; - - if (!graphic_p && !movie_p) - goto open_error; - if (prefer_graphic_p) - return image_load_qt_1 (f, img, kQTFileTypeGIF, &fss, NULL); - err = OpenMovieFile (&fss, &refnum, fsRdPerm); - if (err != noErr) - goto open_error; - err = NewMovieFromFile (&movie, refnum, NULL, NULL, 0, NULL); - CloseMovieFile (refnum); - if (err != noErr) - { - image_error ("Error reading `%s'", file, Qnil); - return 0; - } - } - else - { - /* Memory source! */ - Handle dref = NULL; - long file_type_atom[3]; - - err = PtrToHand (SDATA (specified_data), &dh, SBYTES (specified_data)); - if (err != noErr) - { - image_error ("Cannot allocate data handle for `%s'", - img->spec, Qnil); - goto error; - } - - file_type_atom[0] = EndianU32_NtoB (sizeof (long) * 3); - file_type_atom[1] = EndianU32_NtoB (kDataRefExtensionMacOSFileType); - file_type_atom[2] = EndianU32_NtoB (kQTFileTypeGIF); - err = PtrToHand (&dh, &dref, sizeof (Handle)); - if (err == noErr) - /* no file name */ - err = PtrAndHand ("\p", dref, 1); - if (err == noErr) - err = PtrAndHand (file_type_atom, dref, sizeof (long) * 3); - if (err != noErr) - { - image_error ("Cannot allocate handle data ref for `%s'", img->spec, Qnil); - goto error; - } - err = CanQuickTimeOpenDataRef (dref, HandleDataHandlerSubType, &graphic_p, - &movie_p, &prefer_graphic_p, 0); - if (err != noErr) - goto open_error; - - if (!graphic_p && !movie_p) - goto open_error; - if (prefer_graphic_p) - { - int success_p; - - DisposeHandle (dref); - success_p = image_load_qt_1 (f, img, kQTFileTypeGIF, NULL, dh); - DisposeHandle (dh); - return success_p; - } - err = NewMovieFromDataRef (&movie, 0, NULL, dref, - HandleDataHandlerSubType); - DisposeHandle (dref); - if (err != noErr) - goto open_error; - } - - image = image_spec_value (img->spec, QCindex, NULL); - ino = INTEGERP (image) ? XFASTINT (image) : 0; - track = GetMovieIndTrack (movie, 1); - media = GetTrackMedia (track); - nsamples = GetMediaSampleCount (media); - if (ino >= nsamples) - { - image_error ("Invalid image number `%s' in image `%s'", - image, img->spec); - goto error; - } - time_scale = GetMediaTimeScale (media); - - specified_bg = image_spec_value (img->spec, QCbackground, NULL); - if (!STRINGP (specified_bg) - || !mac_defined_color (f, SDATA (specified_bg), &color, 0)) - { - color.pixel = FRAME_BACKGROUND_PIXEL (f); - color.red = RED16_FROM_ULONG (color.pixel); - color.green = GREEN16_FROM_ULONG (color.pixel); - color.blue = BLUE16_FROM_ULONG (color.pixel); - } - GetMovieBox (movie, &rect); - width = img->width = rect.right - rect.left; - height = img->height = rect.bottom - rect.top; - if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) - goto error; - - GetGWorld (&old_port, &old_gdh); - SetGWorld (ximg, NULL); - bg_color.red = color.red; - bg_color.green = color.green; - bg_color.blue = color.blue; - RGBBackColor (&bg_color); - SetGWorld (old_port, old_gdh); - SetMovieActive (movie, 1); - SetMovieGWorld (movie, ximg, NULL); - SampleNumToMediaTime (media, ino + 1, &time, &duration); - SetMovieTimeValue (movie, time); - MoviesTask (movie, 0L); - DisposeTrackMedia (media); - DisposeMovieTrack (track); - DisposeMovie (movie); - if (dh) - DisposeHandle (dh); - - /* Save GIF image extension data for `image-extension-data'. - Format is (count IMAGES 0xf9 GRAPHIC_CONTROL_EXTENSION_BLOCK). */ - { - Lisp_Object gce = make_uninit_string (4); - int centisec = ((float)duration / time_scale) * 100.0f + 0.5f; - - /* Fill the delay time field. */ - SSET (gce, 1, centisec & 0xff); - SSET (gce, 2, (centisec >> 8) & 0xff); - /* We don't know about other fields. */ - SSET (gce, 0, 0); - SSET (gce, 3, 0); - - img->data.lisp_val = list4 (Qcount, make_number (nsamples), - make_number (0xf9), gce); - } - - /* Maybe fill in the background field while we have ximg handy. */ - if (NILP (image_spec_value (img->spec, QCbackground, NULL))) - IMAGE_BACKGROUND (img, f, ximg); - - /* Put the image into the pixmap. */ - x_put_x_image (f, ximg, img->pixmap, width, height); - x_destroy_x_image (ximg); - return 1; - - open_error: - image_error ("Cannot open `%s'", file, Qnil); - error: - if (media) - DisposeTrackMedia (media); - if (track) - DisposeMovieTrack (track); - if (movie) - DisposeMovie (movie); - if (dh) - DisposeHandle (dh); - return 0; -#endif /* !USE_MAC_IMAGE_IO */ -} -#endif /* MAC_OS */ - #ifdef HAVE_NS static int gif_load (struct frame *f, struct image *img) @@ -9069,11 +8085,6 @@ svg_load_image (f, img, contents, size) background.red >>= 8; background.green >>= 8; background.blue >>= 8; -#elif defined (MAC_OS) - background.pixel = FRAME_BACKGROUND_PIXEL (f); - background.red = RED_FROM_ULONG (background.pixel); - background.green = GREEN_FROM_ULONG (background.pixel); - background.blue = BLUE_FROM_ULONG (background.pixel); #elif defined (HAVE_NTGUI) background.pixel = FRAME_BACKGROUND_PIXEL (f); #if 0 /* W32 TODO : Colormap support. */ @@ -9086,7 +8097,7 @@ svg_load_image (f, img, contents, size) background.red >>= 8; background.green >>= 8; background.blue >>= 8; -#else /* not HAVE_X_WINDOWS && not MAC_OS*/ +#else /* not HAVE_X_WINDOWS*/ #error FIXME #endif } @@ -9524,27 +8535,27 @@ of `image-library-alist', which see). */) if (CONSP (tested)) return XCDR (tested); -#if defined (HAVE_XPM) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_XPM) || defined (HAVE_NS) if (EQ (type, Qxpm)) return CHECK_LIB_AVAILABLE (&xpm_type, init_xpm_functions, libraries); #endif -#if defined (HAVE_JPEG) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_JPEG) || defined (HAVE_NS) if (EQ (type, Qjpeg)) return CHECK_LIB_AVAILABLE (&jpeg_type, init_jpeg_functions, libraries); #endif -#if defined (HAVE_TIFF) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_TIFF) || defined (HAVE_NS) if (EQ (type, Qtiff)) return CHECK_LIB_AVAILABLE (&tiff_type, init_tiff_functions, libraries); #endif -#if defined (HAVE_GIF) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_GIF) || defined (HAVE_NS) if (EQ (type, Qgif)) return CHECK_LIB_AVAILABLE (&gif_type, init_gif_functions, libraries); #endif -#if defined (HAVE_PNG) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_PNG) || defined (HAVE_NS) if (EQ (type, Qpng)) return CHECK_LIB_AVAILABLE (&png_type, init_png_functions, libraries); #endif @@ -9669,31 +8680,31 @@ non-numeric, there is no explicit limit on the size of images. */); staticpro (&QCpt_height); #endif /* HAVE_GHOSTSCRIPT */ -#if defined (HAVE_XPM) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_XPM) || defined (HAVE_NS) Qxpm = intern ("xpm"); staticpro (&Qxpm); ADD_IMAGE_TYPE (Qxpm); #endif -#if defined (HAVE_JPEG) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_JPEG) || defined (HAVE_NS) Qjpeg = intern ("jpeg"); staticpro (&Qjpeg); ADD_IMAGE_TYPE (Qjpeg); #endif -#if defined (HAVE_TIFF) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_TIFF) || defined (HAVE_NS) Qtiff = intern ("tiff"); staticpro (&Qtiff); ADD_IMAGE_TYPE (Qtiff); #endif -#if defined (HAVE_GIF) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_GIF) || defined (HAVE_NS) Qgif = intern ("gif"); staticpro (&Qgif); ADD_IMAGE_TYPE (Qgif); #endif -#if defined (HAVE_PNG) || defined (MAC_OS) || defined (HAVE_NS) +#if defined (HAVE_PNG) || defined (HAVE_NS) Qpng = intern ("png"); staticpro (&Qpng); ADD_IMAGE_TYPE (Qpng); |