1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24: #ifndef EMACS_MACGUI_H
25: #define EMACS_MACGUI_H
26:
27: typedef struct _XDisplay Display;
28:
29: typedef Lisp_Object XrmDatabase;
30:
31: typedef unsigned long Time;
32:
33: #ifdef HAVE_CARBON
34: #undef Z
35: #ifdef MAC_OSX
36: #if ! HAVE_MKTIME || BROKEN_MKTIME
37: #undef mktime
38: #endif
39: #undef DEBUG
40: #undef free
41: #undef malloc
42: #undef realloc
43:
44:
45: #undef max
46: #undef min
47: #undef init_process
48: #include <Carbon/Carbon.h>
49: #if ! HAVE_MKTIME || BROKEN_MKTIME
50: #undef mktime
51: #define mktime emacs_mktime
52: #endif
53: #undef free
54: #define free unexec_free
55: #undef malloc
56: #define malloc unexec_malloc
57: #undef realloc
58: #define realloc unexec_realloc
59: #undef min
60: #define min(a, b) ((a) < (b) ? (a) : (b))
61: #undef max
62: #define max(a, b) ((a) > (b) ? (a) : (b))
63: #undef init_process
64: #define init_process emacs_init_process
65: #undef INFINITY
66: #else
67: #undef SIGHUP
68: #define OLDP2C 1
69: #include <Carbon.h>
70: #endif
71: #undef Z
72: #define Z (current_buffer->text->z)
73: #else
74: #include <QuickDraw.h>
75: #include <QDOffscreen.h>
76: #include <Appearance.h>
77: #include <Windows.h>
78: #include <Controls.h>
79: #include <Gestalt.h>
80: #endif
81:
82:
83:
84: #ifndef USE_ATSUI
85: #ifdef MAC_OSX
86: #define USE_ATSUI 1
87: #endif
88: #endif
89:
90:
91:
92: #ifndef USE_CG_TEXT_DRAWING
93: #if USE_ATSUI && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
94: #define USE_CG_TEXT_DRAWING 1
95: #endif
96: #endif
97:
98:
99:
100: #ifndef USE_CG_DRAWING
101: #if USE_ATSUI && MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
102: #define USE_CG_DRAWING 1
103: #endif
104: #endif
105:
106:
107: #ifndef USE_MAC_FONT_PANEL
108: #if USE_ATSUI && MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
109: #define USE_MAC_FONT_PANEL 1
110: #endif
111: #endif
112:
113:
114: #ifndef USE_MAC_TSM
115: #if TARGET_API_MAC_CARBON
116: #define USE_MAC_TSM 1
117: #endif
118: #endif
119:
120: typedef WindowPtr Window;
121: typedef GWorldPtr Pixmap;
122:
123: #define Cursor ThemeCursor
124: #define No_Cursor (-1)
125:
126: #define FACE_DEFAULT (~0)
127:
128: #if !TARGET_API_MAC_CARBON
129: #define GetPixDepth(pmh) ((*(pmh))->pixelSize)
130: #endif
131:
132:
133:
134:
135:
136: typedef struct _XCharStruct
137: {
138: short lbearing;
139: short rbearing;
140: short width;
141: short ascent;
142: short descent;
143: #if 0
144: unsigned short attributes;
145: #endif
146: } XCharStruct;
147:
148: enum pcm_status
149: {
150: PCM_VALID = 0,
151: PCM_INVALID = -1,
152: };
153:
154: #define STORE_XCHARSTRUCT(xcs, w, bds) \
155: ((xcs).width = (w), \
156: (xcs).lbearing = (bds).left, \
157: (xcs).rbearing = (bds).right, \
158: (xcs).ascent = -(bds).top, \
159: (xcs).descent = (bds).bottom)
160:
161: struct MacFontStruct {
162: char *full_name;
163:
164: short mac_fontnum;
165: int mac_fontsize;
166: short mac_fontface;
167: #if TARGET_API_MAC_CARBON
168: int mac_scriptcode;
169: #else
170: short mac_scriptcode;
171: #endif
172: #if USE_ATSUI
173: ATSUStyle mac_style;
174: #if USE_CG_TEXT_DRAWING
175: CGFontRef cg_font;
176: CGGlyph *cg_glyphs;
177: #endif
178: #endif
179:
180:
181: #if 0
182: XExtData *ext_data;
183: Font fid;
184: unsigned direction;
185: #endif
186: unsigned min_char_or_byte2;
187: unsigned max_char_or_byte2;
188: unsigned min_byte1;
189: unsigned max_byte1;
190: #if 0
191: Bool all_chars_exist;
192: unsigned default_char;
193: int n_properties;
194: XFontProp *properties;
195: #endif
196: XCharStruct min_bounds;
197: XCharStruct max_bounds;
198: union {
199: XCharStruct *per_char;
200: XCharStruct **rows;
201: } bounds;
202: int ascent;
203: int descent;
204: };
205:
206: typedef struct MacFontStruct MacFontStruct;
207: typedef struct MacFontStruct XFontStruct;
208:
209:
210:
211: typedef struct {
212: unsigned char byte1;
213: unsigned char byte2;
214: } XChar2b;
215:
216: #define STORE_XCHAR2B(chp, b1, b2) \
217: ((chp)->byte1 = (b1), (chp)->byte2 = (b2))
218:
219: #define XCHAR2B_BYTE1(chp) \
220: ((chp)->byte1)
221:
222: #define XCHAR2B_BYTE2(chp) \
223: ((chp)->byte2)
224:
225:
226:
227: typedef struct _XGCValues
228: {
229: unsigned long foreground;
230: unsigned long background;
231: XFontStruct *font;
232: } XGCValues;
233:
234: typedef struct _XGC
235: {
236:
237: XGCValues xgcv;
238:
239:
240:
241:
242: RGBColor fore_color;
243:
244:
245: RGBColor back_color;
246:
247: #if USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
248:
249: CGColorRef cg_fore_color;
250:
251:
252: CGColorRef cg_back_color;
253: #endif
254:
255: #define MAX_CLIP_RECTS 2
256:
257: int n_clip_rects;
258:
259:
260: RgnHandle clip_region;
261:
262: #if defined (MAC_OSX) && (USE_ATSUI || USE_CG_DRAWING)
263:
264:
265: CGRect clip_rects[MAX_CLIP_RECTS];
266: #endif
267: } *GC;
268:
269: #define GCForeground (1L<<2)
270: #define GCBackground (1L<<3)
271: #define GCFont (1L<<14)
272: #define GCGraphicsExposures 0
273:
274:
275:
276: #define ForgetGravity 0
277: #define NorthWestGravity 1
278: #define NorthGravity 2
279: #define NorthEastGravity 3
280: #define WestGravity 4
281: #define CenterGravity 5
282: #define EastGravity 6
283: #define SouthWestGravity 7
284: #define SouthGravity 8
285: #define SouthEastGravity 9
286: #define StaticGravity 10
287:
288: #define NoValue 0x0000
289: #define XValue 0x0001
290: #define YValue 0x0002
291: #define WidthValue 0x0004
292: #define HeightValue 0x0008
293: #define AllValues 0x000F
294: #define XNegative 0x0010
295: #define YNegative 0x0020
296:
297: typedef struct {
298: long flags;
299: #if 0
300: int x, y;
301: int width, height;
302: #endif
303: int min_width, min_height;
304: #if 0
305: int max_width, max_height;
306: #endif
307: int width_inc, height_inc;
308: #if 0
309: struct {
310: int x;
311: int y;
312: } min_aspect, max_aspect;
313: #endif
314: int base_width, base_height;
315: #if 0
316: int win_gravity;
317: #endif
318: } XSizeHints;
319:
320: #define USPosition (1L << 0)
321: #define USSize (1L << 1)
322:
323: #define PPosition (1L << 2)
324: #define PSize (1L << 3)
325: #define PMinSize (1L << 4)
326: #define PMaxSize (1L << 5)
327: #define PResizeInc (1L << 6)
328: #define PAspect (1L << 7)
329: #define PBaseSize (1L << 8)
330: #define PWinGravity (1L << 9)
331:
332: typedef struct {
333: int x, y;
334: unsigned width, height;
335: } XRectangle;
336:
337: #define NativeRectangle Rect
338:
339: #define CONVERT_TO_XRECT(xr,nr) \
340: ((xr).x = (nr).left, \
341: (xr).y = (nr).top, \
342: (xr).width = ((nr).right - (nr).left), \
343: (xr).height = ((nr).bottom - (nr).top))
344:
345: #define CONVERT_FROM_XRECT(xr,nr) \
346: ((nr).left = (xr).x, \
347: (nr).top = (xr).y, \
348: (nr).right = ((xr).x + (xr).width), \
349: (nr).bottom = ((xr).y + (xr).height))
350:
351: #define STORE_NATIVE_RECT(nr,x,y,width,height) \
352: ((nr).left = (x), \
353: (nr).top = (y), \
354: (nr).right = ((nr).left + (width)), \
355: (nr).bottom = ((nr).top + (height)))
356:
357: #endif
358:
359:
360: