X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/58826ef7132ee12ecddc391df121a27666c5fca6..6dd697d9a5a0d749e26b0c371d0f96a47e1ed501:/src/macgui.h diff --git a/src/macgui.h b/src/macgui.h index 7eb6c9942a..7a65e583b1 100644 --- a/src/macgui.h +++ b/src/macgui.h @@ -1,12 +1,12 @@ /* Definitions and headers for communication on the Mac OS. Copyright (C) 2000, 2001, 2002, 2003, 2004, - 2005, 2006 Free Software Foundation, Inc. + 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of GNU Emacs. GNU Emacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) +the Free Software Foundation; either version 3, or (at your option) any later version. GNU Emacs is distributed in the hope that it will be useful, @@ -24,7 +24,7 @@ Boston, MA 02110-1301, USA. */ #ifndef EMACS_MACGUI_H #define EMACS_MACGUI_H -typedef int Display; /* fix later */ +typedef struct _XDisplay Display; /* opaque */ typedef Lisp_Object XrmDatabase; @@ -71,7 +71,7 @@ typedef unsigned long Time; #undef Z #define Z (current_buffer->text->z) #else /* not HAVE_CARBON */ -#include /* for WindowPtr */ +#include /* for WindowRef */ #include /* for GWorldPtr */ #include /* for ThemeCursor */ #include @@ -79,19 +79,52 @@ typedef unsigned long Time; #include #endif /* not HAVE_CARBON */ +/* Whether to use ATSUI (Apple Type Services for Unicode Imaging) for + text drawing. */ +#ifndef USE_ATSUI +#ifdef MAC_OSX +#define USE_ATSUI 1 +#endif +#endif + +/* Whether to use low-level Quartz 2D (aka Core Graphics) text drawing + in preference to ATSUI for ASCII and Latin-1 characters. */ #ifndef USE_CG_TEXT_DRAWING #if USE_ATSUI && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 #define USE_CG_TEXT_DRAWING 1 #endif #endif +/* Whether to use Quartz 2D routines for drawing operations other than + texts. */ #ifndef USE_CG_DRAWING -#if USE_ATSUI && defined (MAC_OSX) +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020 #define USE_CG_DRAWING 1 #endif #endif -typedef WindowPtr Window; +/* Whether to use the standard Font Panel floating dialog. */ +#ifndef USE_MAC_FONT_PANEL +#if USE_ATSUI && MAC_OS_X_VERSION_MAX_ALLOWED >= 1020 +#define USE_MAC_FONT_PANEL 1 +#endif +#endif + +/* Whether to use Text Services Manager. */ +#ifndef USE_MAC_TSM +#if TARGET_API_MAC_CARBON +#define USE_MAC_TSM 1 +#endif +#endif + +/* Whether to use HIToolbar. */ +#ifndef USE_MAC_TOOLBAR +#if USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 && MAC_OS_X_VERSION_MIN_REQUIRED != 1020 +#define USE_MAC_TOOLBAR 1 +#endif +#endif + +typedef WindowRef Window; typedef GWorldPtr Pixmap; #define Cursor ThemeCursor @@ -105,6 +138,8 @@ typedef GWorldPtr Pixmap; /* Emulate XCharStruct. */ +/* If the sum of ascent and descent is negative, that means some + special status specified by enum pcm_status. */ typedef struct _XCharStruct { short lbearing; /* origin to left edge of raster */ @@ -117,6 +152,12 @@ typedef struct _XCharStruct #endif } XCharStruct; +enum pcm_status + { + PCM_VALID = 0, /* pcm data is valid */ + PCM_INVALID = -1, /* pcm data is invalid */ + }; + #define STORE_XCHARSTRUCT(xcs, w, bds) \ ((xcs).width = (w), \ (xcs).lbearing = (bds).left, \ @@ -124,18 +165,6 @@ typedef struct _XCharStruct (xcs).ascent = -(bds).top, \ (xcs).descent = (bds).bottom) -typedef struct -{ - char valid_bits[0x100 / 8]; - XCharStruct per_char[0x100]; -} XCharStructRow; - -#define XCHARSTRUCTROW_CHAR_VALID_P(row, byte2) \ - ((row)->valid_bits[(byte2) / 8] & (1 << (byte2) % 8)) - -#define XCHARSTRUCTROW_SET_CHAR_VALID(row, byte2) \ - ((row)->valid_bits[(byte2) / 8] |= (1 << (byte2) % 8)) - struct MacFontStruct { char *full_name; @@ -175,7 +204,7 @@ struct MacFontStruct { XCharStruct max_bounds; /* maximum bounds over all existing char */ union { XCharStruct *per_char; /* first_char to last_char information */ - XCharStructRow **rows; /* first row to last row information */ + XCharStruct **rows; /* first row to last row information */ } bounds; int ascent; /* logical extent above baseline for spacing */ int descent; /* logical decent below baseline for spacing */ @@ -222,6 +251,14 @@ typedef struct _XGC /* QuickDraw background color. */ RGBColor back_color; +#if USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 + /* Quartz 2D foreground color. */ + CGColorRef cg_fore_color; + + /* Quartz 2D background color. */ + CGColorRef cg_back_color; +#endif + #define MAX_CLIP_RECTS 2 /* Number of clipping rectangles. */ int n_clip_rects; @@ -229,7 +266,7 @@ typedef struct _XGC /* QuickDraw clipping region. Ignored if n_clip_rects == 0. */ RgnHandle clip_region; -#if defined (MAC_OSX) && USE_ATSUI +#if defined (MAC_OSX) && (USE_ATSUI || USE_CG_DRAWING) /* Clipping rectangles used in Quartz 2D drawing. The y-coordinate is in QuickDraw's. */ CGRect clip_rects[MAX_CLIP_RECTS];