summaryrefslogtreecommitdiffstats
path: root/macosx/tkMacOSXFont.h
diff options
context:
space:
mode:
Diffstat (limited to 'macosx/tkMacOSXFont.h')
-rw-r--r--macosx/tkMacOSXFont.h113
1 files changed, 113 insertions, 0 deletions
diff --git a/macosx/tkMacOSXFont.h b/macosx/tkMacOSXFont.h
new file mode 100644
index 0000000..ad16185
--- /dev/null
+++ b/macosx/tkMacOSXFont.h
@@ -0,0 +1,113 @@
+/*
+ * tkMacOSXFont.h --
+ *
+ * Private functions and structs exported from tkMacOSXFont.c
+ * for use in ATSU specific extensions.
+ *
+ * Copyright 2002-2004 Benjamin Riefenstahl, Benjamin.Riefenstahl@epost.de
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * RCS: @(#) $Id: tkMacOSXFont.h,v 1.1 2006/03/22 00:21:18 das Exp $
+ */
+
+#ifndef TKMACOSXFONT_H
+#define TKMACOSXFONT_H 1
+
+#include "tkFont.h"
+
+/*
+ * Switches
+ */
+
+#define TK_MAC_USE_QUARZ 1
+
+/*
+ * Types
+ */
+
+/*
+ * The following structure represents our Macintosh-specific implementation
+ * of a font object.
+ */
+
+typedef struct {
+ TkFont font; /* Stuff used by generic font package. Must
+ * be first in structure. */
+
+ /*
+ * The ATSU view of the font and other text properties. Used for drawing
+ * and measuring.
+ */
+
+ ATSUFontID atsuFontId; /* == FMFont. */
+ ATSUTextLayout atsuLayout; /* ATSU layout object, representing the whole
+ * text that ATSU sees with some option
+ * bits. */
+ ATSUStyle atsuStyle; /* ATSU style object, representing a run of
+ * text with the same properties. */
+
+ /*
+ * The QuickDraw view of the font. Used to configure controls.
+ */
+
+ FMFontFamily qdFont; /* == FMFontFamilyId, Carbon replacement for
+ * QD face numbers. */
+ short qdSize; /* Font size in points. */
+ short qdStyle; /* QuickDraw style bits. */
+} TkMacOSXFont;
+
+
+#if TK_MAC_USE_QUARZ
+
+/*
+ * To use Quarz drawing we need some additional context. FIXME: We would
+ * have liked to use the similar functions from tkMacOSXDraw.c to do this
+ * (TkMacOSXSetUpCGContext(), etc), but a) those don't quite work for us
+ * (e.g. we can't use a simple upside-down coordinate system transformation,
+ * as we don't want upside-down characters ;-), and b) we don't have the
+ * necessary context information (MacDrawable), that we need as parameter for
+ * those functions. So I just cobbled together a limited edition, getting
+ * the necessary parameters from the current QD GraphPort.
+ */
+
+typedef struct {
+ CGContextRef cgContext; /* Quarz context. */
+ CGrafPtr graphPort; /* QD graph port to which this belongs.
+ * Needed for releasing cgContext. */
+ Rect portRect; /* Cached size of port. */
+} TkMacOSXFontDrawingContext;
+
+#else /* ! TK_MAC_USE_QUARZ */
+
+/*
+ * Just a dummy, so we don't have to #ifdef the parameter lists of functions
+ * that use this.
+ */
+
+typedef struct {} DrawingContext;
+
+#endif /* ? TK_MAC_USE_QUARZ */
+
+
+/*
+ * Function prototypes
+ */
+
+MODULE_SCOPE void TkMacOSXLayoutSetString(const TkMacOSXFont * fontPtr,
+ const TkMacOSXFontDrawingContext *drawingContextPtr,
+ const UniChar * uchars, int ulen);
+MODULE_SCOPE void TkMacOSXInitControlFontStyle(Tk_Font tkfont,
+ ControlFontStylePtr fsPtr);
+
+#if TK_MAC_USE_QUARZ
+MODULE_SCOPE void TkMacOSXQuarzStartDraw(
+ TkMacOSXFontDrawingContext * contextPtr);
+MODULE_SCOPE void TkMacOSXQuarzEndDraw(
+ TkMacOSXFontDrawingContext * contextPtr);
+#endif /* TK_MAC_USE_QUARZ */
+
+
+#endif /*TKMACOSXFONT_H*/
+