changeset 70303:d7f3a82edf0a

(USE_ATSUI): Set default to 1 if MAC_OSX is defined. (USE_CG_DRAWING): Don't define if compiled on Mac OS X 10.1. (enum pcm_status): New enum. (XCHARSTRUCTROW_CHAR_VALID_P, XCHARSTRUCTROW_SET_CHAR_VALID) (XCharStructRow): Remove. Now validity is represented by non-negativeness of sum of ascent and descent. (struct MacFontStruct): Change type of member `rows'. (struct _XGC) [USE_CG_DRAWING]: Add member `clip_rects'.
author YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
date Mon, 01 May 2006 01:12:23 +0000
parents 1630b730094b
children 085795461ed0
files src/macgui.h
diffstat 1 files changed, 23 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/macgui.h	Mon May 01 01:11:56 2006 +0000
+++ b/src/macgui.h	Mon May 01 01:12:23 2006 +0000
@@ -79,14 +79,26 @@
 #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 && defined (MAC_OSX)
+#if USE_ATSUI && MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
 #define USE_CG_DRAWING 1
 #endif
 #endif
@@ -105,6 +117,8 @@
 
 
 /* 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 +131,12 @@
 #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 +144,6 @@
    (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 +183,7 @@
   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 */
@@ -229,7 +237,7 @@
   /* 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];