summaryrefslogtreecommitdiffstats
path: root/carbon/tkMacOSXInt.h
diff options
context:
space:
mode:
authordas <das>2009-06-26 01:42:46 (GMT)
committerdas <das>2009-06-26 01:42:46 (GMT)
commit501fcd66876991e90384cad2039ec6ee83d3c485 (patch)
tree2adb96ca0ec47497841adacd8b08b680f66112e5 /carbon/tkMacOSXInt.h
parent24a50e27f48ca6c20da7657f1369203445367099 (diff)
downloadtk-501fcd66876991e90384cad2039ec6ee83d3c485.zip
tk-501fcd66876991e90384cad2039ec6ee83d3c485.tar.gz
tk-501fcd66876991e90384cad2039ec6ee83d3c485.tar.bz2
* carbon/ (new directory): copy of current state of 'macosx'
source directory, to preserve legacy TkAqua implementation based on Carbon API (with support for Mac OS X releases older than 10.5).
Diffstat (limited to 'carbon/tkMacOSXInt.h')
-rw-r--r--carbon/tkMacOSXInt.h180
1 files changed, 180 insertions, 0 deletions
diff --git a/carbon/tkMacOSXInt.h b/carbon/tkMacOSXInt.h
new file mode 100644
index 0000000..c349798
--- /dev/null
+++ b/carbon/tkMacOSXInt.h
@@ -0,0 +1,180 @@
+/*
+ * tkMacOSXInt.h --
+ *
+ * Declarations of Macintosh specific shared variables and procedures.
+ *
+ * Copyright (c) 1995-1997 Sun Microsystems, Inc.
+ * Copyright 2001, Apple Computer, Inc.
+ * Copyright (c) 2005-2007 Daniel A. Steffen <das@users.sourceforge.net>
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * RCS: @(#) $Id: tkMacOSXInt.h,v 1.1 2009/06/26 01:42:47 das Exp $
+ */
+
+#ifndef _TKMACINT
+#define _TKMACINT
+
+#ifndef _TKINT
+#include "tkInt.h"
+#endif
+
+#define TextStyle MacTextStyle
+#include <Carbon/Carbon.h>
+#undef TextStyle
+
+/*
+ * Include platform specific public interfaces.
+ */
+
+#ifndef _TKMAC
+#include "tkMacOSX.h"
+#endif
+
+struct TkWindowPrivate {
+ TkWindow *winPtr; /* Ptr to tk window or NULL if Pixmap */
+ CGrafPtr grafPtr;
+ CGContextRef context;
+ ControlRef rootControl;
+ int xOff; /* X offset from toplevel window */
+ int yOff; /* Y offset from toplevel window */
+ CGSize size;
+ HIShapeRef visRgn; /* Visible region of window */
+ HIShapeRef aboveVisRgn; /* Visible region of window & its children */
+ CGRect drawRect; /* Clipped drawing rect */
+ int referenceCount; /* Don't delete toplevel until children are
+ * gone. */
+ struct TkWindowPrivate *toplevel;
+ /* Pointer to the toplevel datastruct. */
+ int flags; /* Various state see defines below. */
+};
+typedef struct TkWindowPrivate MacDrawable;
+
+/*
+ * This list is used to keep track of toplevel windows that have a Mac
+ * window attached. This is useful for several things, not the least
+ * of which is maintaining floating windows.
+ */
+
+typedef struct TkMacOSXWindowList {
+ struct TkMacOSXWindowList *nextPtr;
+ /* The next window in the list. */
+ TkWindow *winPtr; /* This window */
+} TkMacOSXWindowList;
+
+/*
+ * Defines use for the flags field of the MacDrawable data structure.
+ */
+
+#define TK_SCROLLBAR_GROW 0x01
+#define TK_CLIP_INVALID 0x02
+#define TK_HOST_EXISTS 0x04
+#define TK_DRAWN_UNDER_MENU 0x08
+#define TK_CLIPPED_DRAW 0x10
+#define TK_IS_PIXMAP 0x20
+#define TK_IS_BW_PIXMAP 0x40
+
+/*
+ * I am reserving TK_EMBEDDED = 0x100 in the MacDrawable flags
+ * This is defined in tk.h. We need to duplicate the TK_EMBEDDED flag in the
+ * TkWindow structure for the window, but in the MacWin. This way we can
+ * still tell what the correct port is after the TKWindow structure has been
+ * freed. This actually happens when you bind destroy of a toplevel to
+ * Destroy of a child.
+ */
+
+/*
+ * This structure is for handling Netscape-type in process
+ * embedding where Tk does not control the top-level. It contains
+ * various functions that are needed by Mac specific routines, like
+ * TkMacOSXGetDrawablePort. The definitions of the function types
+ * are in tkMacOSX.h.
+ */
+
+typedef struct {
+ Tk_MacOSXEmbedRegisterWinProc *registerWinProc;
+ Tk_MacOSXEmbedGetGrafPortProc *getPortProc;
+ Tk_MacOSXEmbedMakeContainerExistProc *containerExistProc;
+ Tk_MacOSXEmbedGetClipProc *getClipProc;
+ Tk_MacOSXEmbedGetOffsetInParentProc *getOffsetProc;
+} TkMacOSXEmbedHandler;
+
+MODULE_SCOPE TkMacOSXEmbedHandler *tkMacOSXEmbedHandler;
+
+/*
+ * Defines used for TkMacOSXInvalidateWindow
+ */
+
+#define TK_WINDOW_ONLY 0
+#define TK_PARENT_WINDOW 1
+
+/*
+ * Accessor for the privatePtr flags field for the TK_HOST_EXISTS field
+ */
+
+#define TkMacOSXHostToplevelExists(tkwin) \
+ (((TkWindow *) (tkwin))->privatePtr->toplevel->flags & TK_HOST_EXISTS)
+
+/*
+ * Defines use for the flags argument to TkGenWMConfigureEvent.
+ */
+
+#define TK_LOCATION_CHANGED 1
+#define TK_SIZE_CHANGED 2
+#define TK_BOTH_CHANGED 3
+
+/*
+ * Defines for tkTextDisp.c
+ */
+
+#define TK_LAYOUT_WITH_BASE_CHUNKS 1
+#define TK_DRAW_IN_CONTEXT 1
+
+#if !TK_DRAW_IN_CONTEXT
+MODULE_SCOPE int TkMacOSXCompareColors(unsigned long c1, unsigned long c2);
+#endif
+
+/*
+ * Globals shared among TkAqua.
+ */
+
+MODULE_SCOPE MenuHandle tkCurrentAppleMenu; /* Handle to current Apple Menu */
+MODULE_SCOPE MenuHandle tkAppleMenu; /* Handle to default Apple Menu */
+MODULE_SCOPE MenuHandle tkFileMenu; /* Handles to menus */
+MODULE_SCOPE MenuHandle tkEditMenu; /* Handles to menus */
+MODULE_SCOPE int tkPictureIsOpen; /* If this is 1, we are drawing to a
+ * picture The clipping should then be
+ * done relative to the bounds of the
+ * picture rather than the window. As
+ * of OS X.0.4, something is seriously
+ * wrong: The clipping bounds only
+ * seem to work if the top,left values
+ * are 0,0 The destination rectangle
+ * for CopyBits should also have
+ * top,left values of 0,0
+ */
+MODULE_SCOPE TkMacOSXWindowList *tkMacOSXWindowListPtr; /* List of toplevels */
+MODULE_SCOPE Tcl_Encoding TkMacOSXCarbonEncoding;
+
+/*
+ * Prototypes of internal procs not in the stubs table.
+ */
+
+MODULE_SCOPE void TkMacOSXDefaultStartupScript(void);
+#if 0
+MODULE_SCOPE int XSetClipRectangles(Display *d, GC gc, int clip_x_origin,
+ int clip_y_origin, XRectangle* rectangles, int n, int ordering);
+#endif
+MODULE_SCOPE void TkpClipDrawableToRect(Display *display, Drawable d, int x,
+ int y, int width, int height);
+MODULE_SCOPE void TkpRetainRegion(TkRegion r);
+MODULE_SCOPE void TkpReleaseRegion(TkRegion r);
+
+/*
+ * Include the stubbed internal platform-specific API.
+ */
+
+#include "tkIntPlatDecls.h"
+
+#endif /* _TKMACINT */