]> code.delx.au - gnu-emacs/blobdiff - src/macgui.h
(GDB Graphical Interface): Shorten node names.
[gnu-emacs] / src / macgui.h
index 40244dbc7c6caeb02a0eb7070cd9b4b7d355d8bc..1ea53af59be5d79a5322959e67a5e218a3784396 100644 (file)
@@ -1,6 +1,6 @@
 /* Definitions and headers for communication on the Mac OS.
    Copyright (C) 2000, 2001, 2002, 2003, 2004,
-                 2005 Free Software Foundation, Inc.
+                 2005, 2006 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -79,6 +79,44 @@ typedef unsigned long Time;
 #include <Gestalt.h>
 #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 && MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
+#define USE_CG_DRAWING 1
+#endif
+#endif
+
+/* 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
+
 typedef WindowPtr Window;
 typedef GWorldPtr Pixmap;
 
@@ -92,13 +130,9 @@ typedef GWorldPtr Pixmap;
 #endif
 
 
-#ifndef USE_CG_TEXT_DRAWING
-#if USE_ATSUI && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
-#define USE_CG_TEXT_DRAWING 1
-#endif
-#endif
-
 /* 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 */
@@ -109,16 +143,20 @@ typedef struct _XCharStruct
 #if 0
   unsigned short attributes;   /* per char flags (not predefined) */
 #endif
-  unsigned valid_p : 1;
 } 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,                                \
    (xcs).rbearing = (bds).right,                       \
    (xcs).ascent = -(bds).top,                          \
-   (xcs).descent = (bds).bottom,                       \
-   (xcs).valid_p = 1)
+   (xcs).descent = (bds).bottom)
 
 struct MacFontStruct {
   char *full_name;
@@ -157,7 +195,10 @@ struct MacFontStruct {
 #endif /* 0 */
   XCharStruct min_bounds;  /* minimum bounds over all existing char */
   XCharStruct max_bounds;  /* maximum bounds over all existing char */
-  XCharStruct *per_char;   /* first_char to last_char information */
+  union {
+    XCharStruct *per_char; /* first_char to last_char 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 */
 };
@@ -204,13 +245,13 @@ typedef struct _XGC
   RGBColor back_color;
 
 #define MAX_CLIP_RECTS 2
-  /* QuickDraw clipping region.  */
-  RgnHandle clip_region;
-
-#if defined (MAC_OSX) && USE_ATSUI
-  /* Number of clipping rectangles used in Quartz 2D drawing.  */
+  /* Number of clipping rectangles.  */
   int n_clip_rects;
 
+  /* QuickDraw clipping region.  Ignored if n_clip_rects == 0.  */
+  RgnHandle clip_region;
+
+#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];