Add seq-set-equal-p to test for set equality
[emacs.git] / src / nsterm.h
blob9285178d190ca73e649ce73cf038adccfc499603
1 /* Definitions and headers for communication with NeXT/Open/GNUstep API.
2 Copyright (C) 1989, 1993, 2005, 2008-2017 Free Software Foundation,
3 Inc.
5 This file is part of GNU Emacs.
7 GNU Emacs is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or (at
10 your option) any later version.
12 GNU Emacs is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
21 #include "dispextern.h"
22 #include "frame.h"
23 #include "character.h"
24 #include "font.h"
25 #include "sysselect.h"
27 #ifdef HAVE_NS
29 #ifdef NS_IMPL_COCOA
30 #ifndef MAC_OS_X_VERSION_10_6
31 #define MAC_OS_X_VERSION_10_6 1060
32 #endif
33 #ifndef MAC_OS_X_VERSION_10_7
34 #define MAC_OS_X_VERSION_10_7 1070
35 #endif
36 #ifndef MAC_OS_X_VERSION_10_8
37 #define MAC_OS_X_VERSION_10_8 1080
38 #endif
39 #ifndef MAC_OS_X_VERSION_10_9
40 #define MAC_OS_X_VERSION_10_9 1090
41 #endif
42 #ifndef MAC_OS_X_VERSION_10_12
43 #define MAC_OS_X_VERSION_10_12 101200
44 #endif
46 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
47 #define HAVE_NATIVE_FS
48 #endif
50 #endif /* NS_IMPL_COCOA */
52 #ifdef __OBJC__
54 /* CGFloat on GNUstep may be 4 or 8 byte, but functions expect float* for some
55 versions.
56 On Cocoa >= 10.5, functions expect CGFloat *. Make compatible type. */
57 #ifdef NS_IMPL_COCOA
58 typedef CGFloat EmacsCGFloat;
59 #elif GNUSTEP_GUI_MAJOR_VERSION > 0 || GNUSTEP_GUI_MINOR_VERSION >= 22
60 typedef CGFloat EmacsCGFloat;
61 #else
62 typedef float EmacsCGFloat;
63 #endif
65 /* ==========================================================================
67 Trace support
69 ========================================================================== */
71 /* Uncomment the following line to enable trace.
73 Uncomment suitable NSTRACE_GROUP_xxx lines to trace more.
75 Hint: keep the trailing whitespace -- the version control system
76 will reject accidental commits. */
78 /* #define NSTRACE_ENABLED 1 */
81 /* When non-zero, trace output is enabled for all parts, except those
82 explicitly disabled. */
83 /* #define NSTRACE_ALL_GROUPS 1 */
85 /* When non-zero, trace output is enabled in the corresponding part. */
86 /* #define NSTRACE_GROUP_EVENTS 1 */
87 /* #define NSTRACE_GROUP_UPDATES 1 */
88 /* #define NSTRACE_GROUP_FRINGE 1 */
89 /* #define NSTRACE_GROUP_COLOR 1 */
90 /* #define NSTRACE_GROUP_GLYPHS 1 */
91 /* #define NSTRACE_GROUP_FOCUS 1 */
94 /* Print a call tree containing all annotated functions.
96 The call structure of the functions is represented using
97 indentation and vertical lines. Extra information is printed using
98 horizontal lines that connect to the vertical line.
100 The return value is represented using the arrow "->>". For simple
101 functions, the arrow can be printed on the same line as the
102 function name. If more output is printed, it is connected to the
103 vertical line of the function.
105 The first column contains the file name, the second the line
106 number, and the third a number increasing for each trace line.
108 Note, when trace output from several threads are mixed, the output
109 can become misaligned, as all threads (currently) share one state.
110 This is post prominent when the EVENTS part is enabled.
112 Note that the trace system, when enabled, use the GCC/Clang
113 "cleanup" extension. */
115 /* For example, the following is the output of `M-x
116 toggle-frame-maximized RET'.
118 (Long lines manually split to reduced width):
120 nsterm.m : 1608: [ 354] ns_fullscreen_hook
121 nsterm.m : 7180: [ 355] | [EmacsView handleFS]
122 nsterm.m : 7209: [ 356] | +--- FULLSCREEN_MAXIMIZED
123 nsterm.m : 7706: [ 357] | | [EmacsWindow performZoom:]
124 nsterm.m : 7715: [ 358] | | | [EmacsWindow zoom:]
125 nsterm.m : 882: [ 359] | | | | ns_update_auto_hide_menu_bar
126 nsterm.m : 6752: [ 360] | | | |
127 [EmacsView windowWillUseStandardFrame:defaultFrame:(X:0 Y:0)/(W:1600 H:1177)]
128 nsterm.m : 6753: [ 361] | | | | +--- fs_state: FULLSCREEN_NONE
129 nsterm.m : 6754: [ 362] | | | | +--- fs_before_fs: -1
130 nsterm.m : 6755: [ 363] | | | | +--- next_maximized: FULLSCREEN_MAXIMIZED
131 nsterm.m : 6756: [ 364] | | | | +--- ns_userRect: (X:0 Y:0)/(W:0 H:0)
132 nsterm.m : 6757: [ 365] | | | | +---
133 [sender frame]: (X:0 Y:626)/(W:595 H:551)
134 nsterm.m : 6781: [ 366] | | | | +---
135 ns_userRect (2): (X:0 Y:626)/(W:595 H:551)
136 nsterm.m : 6821: [ 367] | | | | +--- FULLSCREEN_MAXIMIZED
137 nsterm.m : 7232: [ 368] | | | | |
138 [EmacsView setFSValue:FULLSCREEN_MAXIMIZED]
139 nsterm.m : 6848: [ 369] | | | | +---
140 Final ns_userRect: (X:0 Y:626)/(W:595 H:551)
141 nsterm.m : 6849: [ 370] | | | | +--- Final maximized_width: 1600
142 nsterm.m : 6850: [ 371] | | | | +--- Final maximized_height: 1177
143 nsterm.m : 6851: [ 372] | | | | +--- Final next_maximized: -1
144 nsterm.m : 6322: [ 373] | | | | |
145 [EmacsView windowWillResize:toSize: (W:1600 H:1177)]
146 nsterm.m : 6323: [ 374] | | | | | +---
147 [sender frame]: (X:0 Y:626)/(W:595 H:551)
148 nsterm.m : 6324: [ 375] | | | | | +--- fs_state: FULLSCREEN_MAXIMIZED
149 nsterm.m : 7027: [ 376] | | | | | | [EmacsView isFullscreen]
150 nsterm.m : 6387: [ 377] | | | | | +--- cols: 223 rows: 79
151 nsterm.m : 6412: [ 378] | | | | | +->> (W:1596 H:1167)
152 nsterm.m : 6855: [ 379] | | | | +->> (X:0 Y:0)/(W:1600 H:1177)
155 #ifndef NSTRACE_ENABLED
156 #define NSTRACE_ENABLED 0
157 #endif
159 #if NSTRACE_ENABLED
161 #ifndef NSTRACE_ALL_GROUPS
162 #define NSTRACE_ALL_GROUPS 0
163 #endif
165 #ifndef NSTRACE_GROUP_EVENTS
166 #define NSTRACE_GROUP_EVENTS NSTRACE_ALL_GROUPS
167 #endif
169 #ifndef NSTRACE_GROUP_UPDATES
170 #define NSTRACE_GROUP_UPDATES NSTRACE_ALL_GROUPS
171 #endif
173 #ifndef NSTRACE_GROUP_FRINGE
174 #define NSTRACE_GROUP_FRINGE NSTRACE_ALL_GROUPS
175 #endif
177 #ifndef NSTRACE_GROUP_COLOR
178 #define NSTRACE_GROUP_COLOR NSTRACE_ALL_GROUPS
179 #endif
181 #ifndef NSTRACE_GROUP_GLYPHS
182 #define NSTRACE_GROUP_GLYPHS NSTRACE_ALL_GROUPS
183 #endif
185 #ifndef NSTRACE_GROUP_FOCUS
186 #define NSTRACE_GROUP_FOCUS NSTRACE_ALL_GROUPS
187 #endif
189 extern volatile int nstrace_num;
190 extern volatile int nstrace_depth;
191 extern volatile int nstrace_enabled_global;
193 void nstrace_leave(int *);
194 void nstrace_restore_global_trace_state(int *);
195 char const * nstrace_fullscreen_type_name (int);
197 /* printf-style trace output. Output is aligned with contained heading. */
198 #define NSTRACE_MSG_NO_DASHES(...) \
199 do \
201 if (nstrace_enabled) \
203 fprintf (stderr, "%-10s:%5d: [%5d]%.*s", \
204 __FILE__, __LINE__, nstrace_num++, \
205 2*nstrace_depth, " | | | | | | | | | | | | | | | .."); \
206 fprintf (stderr, __VA_ARGS__); \
207 fprintf (stderr, "\n"); \
210 while(0)
212 #define NSTRACE_MSG(...) NSTRACE_MSG_NO_DASHES("+--- " __VA_ARGS__)
216 /* Macros for printing complex types.
218 NSTRACE_FMT_what -- Printf format string for "what".
219 NSTRACE_ARG_what(x) -- Printf argument for "what". */
221 #define NSTRACE_FMT_SIZE "(W:%.0f H:%.0f)"
222 #define NSTRACE_ARG_SIZE(elt) (elt).width, (elt).height
224 #define NSTRACE_FMT_POINT "(X:%.0f Y:%.0f)"
225 #define NSTRACE_ARG_POINT(elt) (elt).x, (elt).y
227 #define NSTRACE_FMT_RECT NSTRACE_FMT_POINT "/" NSTRACE_FMT_SIZE
228 #define NSTRACE_ARG_RECT(elt) \
229 NSTRACE_ARG_POINT((elt).origin), NSTRACE_ARG_SIZE((elt).size)
231 #define NSTRACE_FMT_FSTYPE "%s"
232 #define NSTRACE_ARG_FSTYPE(elt) nstrace_fullscreen_type_name(elt)
235 /* Macros for printing complex types as extra information. */
237 #define NSTRACE_SIZE(str,size) \
238 NSTRACE_MSG (str ": " NSTRACE_FMT_SIZE, \
239 NSTRACE_ARG_SIZE (size));
241 #define NSTRACE_POINT(str,point) \
242 NSTRACE_MSG (str ": " NSTRACE_FMT_POINT, \
243 NSTRACE_ARG_POINT (point));
245 #define NSTRACE_RECT(str,rect) \
246 NSTRACE_MSG (str ": " NSTRACE_FMT_RECT, \
247 NSTRACE_ARG_RECT (rect));
249 #define NSTRACE_FSTYPE(str,fs_type) \
250 NSTRACE_MSG (str ": " NSTRACE_FMT_FSTYPE, \
251 NSTRACE_ARG_FSTYPE (fs_type));
254 /* Return value macros.
256 NSTRACE_RETURN(fmt, ...) - Print a return value, support printf-style
257 format string and arguments.
259 NSTRACE_RETURN_what(obj) - Print a return value of kind WHAT.
261 NSTRACE_FMT_RETURN - A string literal representing a returned
262 value. Useful when creating a format string
263 to printf-like constructs like NSTRACE(). */
265 #define NSTRACE_FMT_RETURN "->>"
267 #define NSTRACE_RETURN(...) \
268 NSTRACE_MSG_NO_DASHES ("+" NSTRACE_FMT_RETURN " " __VA_ARGS__)
270 #define NSTRACE_RETURN_SIZE(size) \
271 NSTRACE_RETURN(NSTRACE_FMT_SIZE, NSTRACE_ARG_SIZE(size))
273 #define NSTRACE_RETURN_POINT(point) \
274 NSTRACE_RETURN(NSTRACE_FMT_POINT, NSTRACE_ARG_POINT(point))
276 #define NSTRACE_RETURN_RECT(rect) \
277 NSTRACE_RETURN(NSTRACE_FMT_RECT, NSTRACE_ARG_RECT(rect))
280 /* Function enter macros.
282 NSTRACE (fmt, ...) -- Enable trace output in current block
283 (typically a function). Accepts printf-style
284 arguments.
286 NSTRACE_WHEN (cond, fmt, ...) -- Enable trace output when COND is true.
288 NSTRACE_UNLESS (cond, fmt, ...) -- Enable trace output unless COND is
289 true. */
293 #define NSTRACE_WHEN(cond, ...) \
294 __attribute__((cleanup(nstrace_restore_global_trace_state))) \
295 int nstrace_saved_enabled_global = nstrace_enabled_global; \
296 __attribute__((cleanup(nstrace_leave))) \
297 int nstrace_enabled = nstrace_enabled_global && (cond); \
298 if (nstrace_enabled) { ++nstrace_depth; } \
299 else { nstrace_enabled_global = 0; } \
300 NSTRACE_MSG_NO_DASHES(__VA_ARGS__);
302 /* Unsilence called functions.
304 Concretely, this us used to allow "event" functions to be silenced
305 while trace output can be printed for functions they call. */
306 #define NSTRACE_UNSILENCE() do { nstrace_enabled_global = 1; } while(0)
308 #endif /* NSTRACE_ENABLED */
310 #define NSTRACE(...) NSTRACE_WHEN(1, __VA_ARGS__)
311 #define NSTRACE_UNLESS(cond, ...) NSTRACE_WHEN(!(cond), __VA_ARGS__)
313 /* Non-trace replacement versions. */
314 #ifndef NSTRACE_WHEN
315 #define NSTRACE_WHEN(...)
316 #endif
318 #ifndef NSTRACE_MSG
319 #define NSTRACE_MSG(...)
320 #endif
322 #ifndef NSTRACE_SIZE
323 #define NSTRACE_SIZE(str,size)
324 #endif
326 #ifndef NSTRACE_POINT
327 #define NSTRACE_POINT(str,point)
328 #endif
330 #ifndef NSTRACE_RECT
331 #define NSTRACE_RECT(str,rect)
332 #endif
334 #ifndef NSTRACE_FSTYPE
335 #define NSTRACE_FSTYPE(str,fs_type)
336 #endif
338 #ifndef NSTRACE_RETURN_SIZE
339 #define NSTRACE_RETURN_SIZE(size)
340 #endif
342 #ifndef NSTRACE_RETURN_POINT
343 #define NSTRACE_RETURN_POINT(point)
344 #endif
346 #ifndef NSTRACE_RETURN_RECT
347 #define NSTRACE_RETURN_RECT(rect)
348 #endif
350 #ifndef NSTRACE_RETURN_FSTYPE
351 #define NSTRACE_RETURN_FSTYPE(fs_type)
352 #endif
354 #ifndef NSTRACE_UNSILENCE
355 #define NSTRACE_UNSILENCE()
356 #endif
359 /* ==========================================================================
361 NSColor, EmacsColor category.
363 ========================================================================== */
364 @interface NSColor (EmacsColor)
365 + (NSColor *)colorForEmacsRed:(CGFloat)red green:(CGFloat)green
366 blue:(CGFloat)blue alpha:(CGFloat)alpha;
367 - (NSColor *)colorUsingDefaultColorSpace;
369 @end
371 /* ==========================================================================
373 The Emacs application
375 ========================================================================== */
377 /* We override sendEvent: as a means to stop/start the event loop */
378 @interface EmacsApp : NSApplication
380 #ifdef NS_IMPL_COCOA
381 BOOL shouldKeepRunning;
382 BOOL isFirst;
383 #endif
384 #ifdef NS_IMPL_GNUSTEP
385 BOOL applicationDidFinishLaunchingCalled;
386 #endif
387 @public
388 int nextappdefined;
390 - (void)logNotification: (NSNotification *)notification;
391 - (void)antialiasThresholdDidChange:(NSNotification *)notification;
392 - (void)sendEvent: (NSEvent *)theEvent;
393 - (void)showPreferencesWindow: (id)sender;
394 - (BOOL) openFile: (NSString *)fileName;
395 - (void)fd_handler: (id)unused;
396 - (void)timeout_handler: (NSTimer *)timedEntry;
397 - (BOOL)fulfillService: (NSString *)name withArg: (NSString *)arg;
398 #ifdef NS_IMPL_GNUSTEP
399 - (void)sendFromMainThread:(id)unused;
400 #endif
401 @end
403 #ifdef NS_IMPL_GNUSTEP
404 /* Dummy class to get rid of startup warnings. */
405 @interface EmacsDocument : NSDocument
408 @end
409 #endif
411 /* ==========================================================================
413 The main Emacs view
415 ========================================================================== */
417 @class EmacsToolbar;
419 #ifdef NS_IMPL_COCOA
420 @interface EmacsView : NSView <NSTextInput, NSWindowDelegate>
421 #else
422 @interface EmacsView : NSView <NSTextInput>
423 #endif
425 #ifdef NS_IMPL_COCOA
426 char *old_title;
427 BOOL maximizing_resize;
428 #endif
429 BOOL windowClosing;
430 NSString *workingText;
431 BOOL processingCompose;
432 int fs_state, fs_before_fs, next_maximized;
433 int bwidth;
434 int maximized_width, maximized_height;
435 NSWindow *nonfs_window;
436 BOOL fs_is_native;
437 @public
438 struct frame *emacsframe;
439 int rows, cols;
440 int scrollbarsNeedingUpdate;
441 EmacsToolbar *toolbar;
442 NSRect ns_userRect;
443 BOOL wait_for_tool_bar;
446 /* AppKit-side interface */
447 - menuDown: (id)sender;
448 - toolbarClicked: (id)item;
449 - toggleToolbar: (id)sender;
450 - (void)keyDown: (NSEvent *)theEvent;
451 - (void)mouseDown: (NSEvent *)theEvent;
452 - (void)mouseUp: (NSEvent *)theEvent;
453 - setMiniwindowImage: (BOOL)setMini;
455 /* Emacs-side interface */
456 - initFrameFromEmacs: (struct frame *) f;
457 - (void) createToolbar: (struct frame *)f;
458 - (void) setRows: (int) r andColumns: (int) c;
459 - (void) setWindowClosing: (BOOL)closing;
460 - (EmacsToolbar *) toolbar;
461 - (void) deleteWorkingText;
462 - (void) updateFrameSize: (BOOL) delay;
463 - (void) handleFS;
464 - (void) setFSValue: (int)value;
465 - (void) toggleFullScreen: (id) sender;
466 - (BOOL) fsIsNative;
467 - (BOOL) isFullscreen;
468 #ifdef HAVE_NATIVE_FS
469 - (void) updateCollectionBehavior;
470 #endif
472 #ifdef NS_IMPL_GNUSTEP
473 - (void)windowDidMove: (id)sender;
474 #endif
475 - (int)fullscreenState;
477 /* Non-notification versions of NSView methods. Used for direct calls. */
478 - (void)windowWillEnterFullScreen;
479 - (void)windowDidEnterFullScreen;
480 - (void)windowWillExitFullScreen;
481 - (void)windowDidExitFullScreen;
482 - (void)windowDidBecomeKey;
483 @end
486 /* Small utility used for processing resize events under Cocoa. */
487 @interface EmacsWindow : NSWindow
489 NSPoint grabOffset;
491 @end
494 /* Fullscreen version of the above. */
495 @interface EmacsFSWindow : EmacsWindow
498 @end
500 /* ==========================================================================
502 The main menu implementation
504 ========================================================================== */
506 #ifdef NS_IMPL_COCOA
507 @interface EmacsMenu : NSMenu <NSMenuDelegate>
508 #else
509 @interface EmacsMenu : NSMenu
510 #endif
512 struct frame *frame;
513 unsigned long keyEquivModMask;
516 - initWithTitle: (NSString *)title frame: (struct frame *)f;
517 - (void)setFrame: (struct frame *)f;
518 - (void)menuNeedsUpdate: (NSMenu *)menu; /* (delegate method) */
519 - (NSString *)parseKeyEquiv: (const char *)key;
520 - (NSMenuItem *)addItemWithWidgetValue: (void *)wvptr;
521 - (void)fillWithWidgetValue: (void *)wvptr;
522 - (void)fillWithWidgetValue: (void *)wvptr frame: (struct frame *)f;
523 - (EmacsMenu *)addSubmenuWithTitle: (const char *)title forFrame: (struct frame *)f;
524 - (void) clear;
525 - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f
526 keymaps: (bool)keymaps;
527 @end
530 /* ==========================================================================
532 Toolbar
534 ========================================================================== */
536 @class EmacsImage;
538 #ifdef NS_IMPL_COCOA
539 @interface EmacsToolbar : NSToolbar <NSToolbarDelegate>
540 #else
541 @interface EmacsToolbar : NSToolbar
542 #endif
544 EmacsView *emacsView;
545 NSMutableDictionary *identifierToItem;
546 NSMutableArray *activeIdentifiers;
547 NSArray *prevIdentifiers;
548 unsigned long enablement, prevEnablement;
550 - initForView: (EmacsView *)view withIdentifier: (NSString *)identifier;
551 - (void) clearActive;
552 - (void) clearAll;
553 - (BOOL) changed;
554 - (void) addDisplayItemWithImage: (EmacsImage *)img
555 idx: (int)idx
556 tag: (int)tag
557 helpText: (const char *)help
558 enabled: (BOOL)enabled;
560 /* delegate methods */
561 - (NSToolbarItem *)toolbar: (NSToolbar *)toolbar
562 itemForItemIdentifier: (NSString *)itemIdentifier
563 willBeInsertedIntoToolbar: (BOOL)flag;
564 - (NSArray *)toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar;
565 - (NSArray *)toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar;
566 @end
569 /* ==========================================================================
571 Message / question windows
573 ========================================================================== */
575 @interface EmacsDialogPanel : NSPanel
577 NSTextField *command;
578 NSTextField *title;
579 NSMatrix *matrix;
580 int rows, cols;
581 BOOL timer_fired, window_closed;
582 Lisp_Object dialog_return;
583 Lisp_Object *button_values;
585 - initFromContents: (Lisp_Object)menu isQuestion: (BOOL)isQ;
586 - (void)process_dialog: (Lisp_Object)list;
587 - (void)addButton: (char *)str value: (int)tag row: (int)row;
588 - (void)addString: (char *)str row: (int)row;
589 - (void)addSplit;
590 - (Lisp_Object)runDialogAt: (NSPoint)p;
591 - (void)timeout_handler: (NSTimer *)timedEntry;
592 @end
594 #ifdef NS_IMPL_COCOA
595 @interface EmacsTooltip : NSObject <NSWindowDelegate>
596 #else
597 @interface EmacsTooltip : NSObject
598 #endif
600 NSWindow *win;
601 NSTextField *textField;
602 NSTimer *timer;
604 - init;
605 - (void) setText: (char *)text;
606 - (void) showAtX: (int)x Y: (int)y for: (int)seconds;
607 - (void) hide;
608 - (BOOL) isActive;
609 - (NSRect) frame;
610 @end
613 /* ==========================================================================
615 File open/save panels
616 This and next override methods to handle keyboard input in panels.
618 ========================================================================== */
620 @interface EmacsSavePanel : NSSavePanel
623 @end
624 @interface EmacsOpenPanel : NSOpenPanel
627 @end
629 @interface EmacsFileDelegate : NSObject
632 - (BOOL)panel: (id)sender isValidFilename: (NSString *)filename;
633 - (BOOL)panel: (id)sender shouldShowFilename: (NSString *)filename;
634 - (NSString *)panel: (id)sender userEnteredFilename: (NSString *)filename
635 confirmed: (BOOL)okFlag;
636 @end
639 /* ==========================================================================
641 Images and stippling
643 ========================================================================== */
645 @interface EmacsImage : NSImage
647 NSBitmapImageRep *bmRep; /* used for accessing pixel data */
648 unsigned char *pixmapData[5]; /* shortcut to access pixel data */
649 NSColor *stippleMask;
650 unsigned long xbm_fg;
652 + allocInitFromFile: (Lisp_Object)file;
653 - (void)dealloc;
654 - initFromXBM: (unsigned char *)bits width: (int)w height: (int)h
655 fg: (unsigned long)fg bg: (unsigned long)bg;
656 - setXBMColor: (NSColor *)color;
657 - initForXPMWithDepth: (int)depth width: (int)width height: (int)height;
658 - (void)setPixmapData;
659 - (unsigned long)getPixelAtX: (int)x Y: (int)y;
660 - (void)setPixelAtX: (int)x Y: (int)y toRed: (unsigned char)r
661 green: (unsigned char)g blue: (unsigned char)b
662 alpha:(unsigned char)a;
663 - (void)setAlphaAtX: (int)x Y: (int)y to: (unsigned char)a;
664 - (NSColor *)stippleMask;
665 @end
668 /* ==========================================================================
670 Scrollbars
672 ========================================================================== */
674 @interface EmacsScroller : NSScroller
676 struct window *window;
677 struct frame *frame;
678 NSResponder *prevResponder;
680 /* offset to the bottom of knob of last mouse down */
681 CGFloat last_mouse_offset;
682 float min_portion;
683 int pixel_length;
684 enum scroll_bar_part last_hit_part;
686 BOOL condemned;
688 BOOL horizontal;
690 /* optimize against excessive positioning calls generated by emacs */
691 int em_position;
692 int em_portion;
693 int em_whole;
696 - initFrame: (NSRect )r window: (Lisp_Object)win;
697 - (void)setFrame: (NSRect)r;
699 - setPosition: (int) position portion: (int) portion whole: (int) whole;
700 - (int) checkSamePosition: (int)position portion: (int)portion
701 whole: (int)whole;
702 - (void) sendScrollEventAtLoc: (float)loc fromEvent: (NSEvent *)e;
703 - repeatScroll: (NSTimer *)sender;
704 - condemn;
705 - reprieve;
706 - (bool)judge;
707 + (CGFloat)scrollerWidth;
708 @end
711 /* ==========================================================================
713 Rendering
715 ========================================================================== */
717 #ifdef NS_IMPL_COCOA
718 /* rendering util */
719 @interface EmacsGlyphStorage : NSObject <NSGlyphStorage>
721 @public
722 NSAttributedString *attrStr;
723 NSMutableDictionary *dict;
724 CGGlyph *cglyphs;
725 unsigned long maxChar, maxGlyph;
726 long i, len;
728 - initWithCapacity: (unsigned long) c;
729 - (void) setString: (NSString *)str font: (NSFont *)font;
730 @end
731 #endif /* NS_IMPL_COCOA */
733 extern NSArray *ns_send_types, *ns_return_types;
734 extern NSString *ns_app_name;
735 extern EmacsMenu *svcsMenu;
737 /* Apple removed the declaration, but kept the implementation */
738 #if defined (NS_IMPL_COCOA)
739 @interface NSApplication (EmacsApp)
740 - (void)setAppleMenu: (NSMenu *)menu;
741 @end
742 #endif
744 #endif /* __OBJC__ */
748 /* ==========================================================================
750 Non-OO stuff
752 ========================================================================== */
754 /* Special keycodes that we pass down the event chain */
755 #define KEY_NS_POWER_OFF ((1<<28)|(0<<16)|1)
756 #define KEY_NS_OPEN_FILE ((1<<28)|(0<<16)|2)
757 #define KEY_NS_OPEN_TEMP_FILE ((1<<28)|(0<<16)|3)
758 #define KEY_NS_CHANGE_FONT ((1<<28)|(0<<16)|7)
759 #define KEY_NS_OPEN_FILE_LINE ((1<<28)|(0<<16)|8)
760 #define KEY_NS_PUT_WORKING_TEXT ((1<<28)|(0<<16)|9)
761 #define KEY_NS_UNPUT_WORKING_TEXT ((1<<28)|(0<<16)|10)
762 #define KEY_NS_SPI_SERVICE_CALL ((1<<28)|(0<<16)|11)
763 #define KEY_NS_NEW_FRAME ((1<<28)|(0<<16)|12)
764 #define KEY_NS_TOGGLE_TOOLBAR ((1<<28)|(0<<16)|13)
765 #define KEY_NS_SHOW_PREFS ((1<<28)|(0<<16)|14)
767 /* could use list to store these, but rest of emacs has a big infrastructure
768 for managing a table of bitmap "records" */
769 struct ns_bitmap_record
771 #ifdef __OBJC__
772 EmacsImage *img;
773 #else
774 void *img;
775 #endif
776 char *file;
777 int refcount;
778 int height, width, depth;
781 /* this to map between emacs color indices and NSColor objects */
782 struct ns_color_table
784 ptrdiff_t size;
785 ptrdiff_t avail;
786 #ifdef __OBJC__
787 NSColor **colors;
788 NSMutableSet *empty_indices;
789 #else
790 void **items;
791 void *availIndices;
792 #endif
794 #define NS_COLOR_CAPACITY 256
796 #define RGB_TO_ULONG(r, g, b) (((r) << 16) | ((g) << 8) | (b))
797 #define ARGB_TO_ULONG(a, r, g, b) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b))
799 #define ALPHA_FROM_ULONG(color) ((color) >> 24)
800 #define RED_FROM_ULONG(color) (((color) >> 16) & 0xff)
801 #define GREEN_FROM_ULONG(color) (((color) >> 8) & 0xff)
802 #define BLUE_FROM_ULONG(color) ((color) & 0xff)
804 /* Do not change `* 0x101' in the following lines to `<< 8'. If
805 changed, image masks in 1-bit depth will not work. */
806 #define RED16_FROM_ULONG(color) (RED_FROM_ULONG(color) * 0x101)
807 #define GREEN16_FROM_ULONG(color) (GREEN_FROM_ULONG(color) * 0x101)
808 #define BLUE16_FROM_ULONG(color) (BLUE_FROM_ULONG(color) * 0x101)
810 /* this extends font backend font */
811 struct nsfont_info
813 struct font font;
815 char *name; /* PostScript name, uniquely identifies on NS systems */
817 /* The following metrics are stored as float rather than int. */
819 float width; /* Maximum advance for the font. */
820 float height;
821 float underpos;
822 float underwidth;
823 float size;
824 #ifdef __OBJC__
825 NSFont *nsfont;
826 #if defined (NS_IMPL_COCOA)
827 CGFontRef cgfont;
828 #else /* GNUstep */
829 void *cgfont;
830 #endif
831 #else /* ! OBJC */
832 void *nsfont;
833 void *cgfont;
834 #endif
835 char bold, ital; /* convenience flags */
836 char synthItal;
837 XCharStruct max_bounds;
838 /* we compute glyph codes and metrics on-demand in blocks of 256 indexed
839 by hibyte, lobyte */
840 unsigned short **glyphs; /* map Unicode index to glyph */
841 struct font_metrics **metrics;
845 /* init'd in ns_initialize_display_info () */
846 struct ns_display_info
848 /* Chain of all ns_display_info structures. */
849 struct ns_display_info *next;
851 /* The generic display parameters corresponding to this NS display. */
852 struct terminal *terminal;
854 /* This is a cons cell of the form (NAME . FONT-LIST-CACHE). */
855 Lisp_Object name_list_element;
857 /* The number of fonts loaded. */
858 int n_fonts;
860 /* Minimum width over all characters in all fonts in font_table. */
861 int smallest_char_width;
863 /* Minimum font height over all fonts in font_table. */
864 int smallest_font_height;
866 struct ns_bitmap_record *bitmaps;
867 ptrdiff_t bitmaps_size;
868 ptrdiff_t bitmaps_last;
870 struct ns_color_table *color_table;
872 /* DPI resolution of this screen */
873 double resx, resy;
875 /* Mask of things that cause the mouse to be grabbed */
876 int grabbed;
878 int n_planes;
880 int color_p;
882 Window root_window;
884 /* Xism */
885 XrmDatabase xrdb;
887 /* The cursor to use for vertical scroll bars. */
888 Cursor vertical_scroll_bar_cursor;
890 /* The cursor to use for horizontal scroll bars. */
891 Cursor horizontal_scroll_bar_cursor;
893 /* Information about the range of text currently shown in
894 mouse-face. */
895 Mouse_HLInfo mouse_highlight;
897 struct frame *x_highlight_frame;
898 struct frame *x_focus_frame;
900 /* The frame where the mouse was last time we reported a mouse event. */
901 struct frame *last_mouse_frame;
903 /* The frame where the mouse was last time we reported a mouse motion. */
904 struct frame *last_mouse_motion_frame;
906 /* Position where the mouse was last time we reported a motion.
907 This is a position on last_mouse_motion_frame. */
908 int last_mouse_motion_x;
909 int last_mouse_motion_y;
911 /* Where the mouse was last time we reported a mouse position. */
912 NSRect last_mouse_glyph;
914 /* Time of last mouse movement. */
915 Time last_mouse_movement_time;
917 /* The scroll bar in which the last motion event occurred. */
918 #ifdef __OBJC__
919 EmacsScroller *last_mouse_scroll_bar;
920 #else
921 void *last_mouse_scroll_bar;
922 #endif
925 /* This is a chain of structures for all the NS displays currently in use. */
926 extern struct ns_display_info *x_display_list;
928 struct ns_output
930 #ifdef __OBJC__
931 EmacsView *view;
932 id miniimage;
933 NSColor *cursor_color;
934 NSColor *foreground_color;
935 NSColor *background_color;
936 EmacsToolbar *toolbar;
937 #else
938 void *view;
939 void *miniimage;
940 void *cursor_color;
941 void *foreground_color;
942 void *background_color;
943 void *toolbar;
944 #endif
946 /* NSCursors init'ed in initFrameFromEmacs */
947 Cursor text_cursor;
948 Cursor nontext_cursor;
949 Cursor modeline_cursor;
950 Cursor hand_cursor;
951 Cursor hourglass_cursor;
952 Cursor horizontal_drag_cursor;
953 Cursor vertical_drag_cursor;
955 /* NS-specific */
956 Cursor current_pointer;
958 /* lord knows why Emacs needs to know about our Window ids.. */
959 Window window_desc, parent_desc;
960 char explicit_parent;
962 struct font *font;
963 int baseline_offset;
965 /* If a fontset is specified for this frame instead of font, this
966 value contains an ID of the fontset, else -1. */
967 int fontset; /* only used with font_backend */
969 int icon_top;
970 int icon_left;
972 /* The size of the extra width currently allotted for vertical
973 scroll bars, in pixels. */
974 int vertical_scroll_bar_extra;
976 /* The height of the titlebar decoration (included in NSWindow's frame). */
977 int titlebar_height;
979 /* The height of the toolbar if displayed, else 0. */
980 int toolbar_height;
982 /* This is the Emacs structure for the NS display this frame is on. */
983 struct ns_display_info *display_info;
985 /* Non-zero if we are zooming (maximizing) the frame. */
986 int zooming;
988 /* Non-zero if we are doing an animation, e.g. toggling the tool bar. */
989 int in_animation;
992 /* this dummy decl needed to support TTYs */
993 struct x_output
995 int unused;
999 /* This gives the ns_display_info structure for the display F is on. */
1000 #define FRAME_DISPLAY_INFO(f) ((f)->output_data.ns->display_info)
1001 #define FRAME_X_OUTPUT(f) ((f)->output_data.ns)
1002 #define FRAME_NS_WINDOW(f) ((f)->output_data.ns->window_desc)
1003 #define FRAME_X_WINDOW(f) ((f)->output_data.ns->window_desc)
1005 /* This is the `Display *' which frame F is on. */
1006 #define FRAME_NS_DISPLAY(f) (0)
1007 #define FRAME_X_DISPLAY(f) (0)
1008 #define FRAME_X_SCREEN(f) (0)
1009 #define FRAME_X_VISUAL(f) FRAME_DISPLAY_INFO(f)->visual
1011 #define FRAME_FOREGROUND_COLOR(f) ((f)->output_data.ns->foreground_color)
1012 #define FRAME_BACKGROUND_COLOR(f) ((f)->output_data.ns->background_color)
1014 #define NS_FACE_FOREGROUND(f) ((f)->foreground)
1015 #define NS_FACE_BACKGROUND(f) ((f)->background)
1017 #define FRAME_DEFAULT_FACE(f) FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID)
1019 #define FRAME_NS_VIEW(f) ((f)->output_data.ns->view)
1020 #define FRAME_CURSOR_COLOR(f) ((f)->output_data.ns->cursor_color)
1021 #define FRAME_POINTER_TYPE(f) ((f)->output_data.ns->current_pointer)
1023 #define FRAME_FONT(f) ((f)->output_data.ns->font)
1025 #ifdef __OBJC__
1026 #define XNS_SCROLL_BAR(vec) ((id) XSAVE_POINTER (vec, 0))
1027 #else
1028 #define XNS_SCROLL_BAR(vec) XSAVE_POINTER (vec, 0)
1029 #endif
1031 /* Compute pixel height of the frame's titlebar. */
1032 #define FRAME_NS_TITLEBAR_HEIGHT(f) \
1033 (NSHeight([FRAME_NS_VIEW (f) frame]) == 0 ? \
1035 : (int)(NSHeight([FRAME_NS_VIEW (f) window].frame) \
1036 - NSHeight([NSWindow contentRectForFrameRect: \
1037 [[FRAME_NS_VIEW (f) window] frame] \
1038 styleMask:[[FRAME_NS_VIEW (f) window] styleMask]])))
1040 /* Compute pixel height of the toolbar. */
1041 #define FRAME_TOOLBAR_HEIGHT(f) \
1042 (([[FRAME_NS_VIEW (f) window] toolbar] == nil \
1043 || ! [[FRAME_NS_VIEW (f) window] toolbar].isVisible) ? \
1045 : (int)(NSHeight([NSWindow contentRectForFrameRect: \
1046 [[FRAME_NS_VIEW (f) window] frame] \
1047 styleMask:[[FRAME_NS_VIEW (f) window] styleMask]]) \
1048 - NSHeight([[[FRAME_NS_VIEW (f) window] contentView] frame])))
1050 /* Compute pixel size for vertical scroll bars */
1051 #define NS_SCROLL_BAR_WIDTH(f) \
1052 (FRAME_HAS_VERTICAL_SCROLL_BARS (f) \
1053 ? rint (FRAME_CONFIG_SCROLL_BAR_WIDTH (f) > 0 \
1054 ? FRAME_CONFIG_SCROLL_BAR_WIDTH (f) \
1055 : (FRAME_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f))) \
1056 : 0)
1058 /* Compute pixel size for horizontal scroll bars */
1059 #define NS_SCROLL_BAR_HEIGHT(f) \
1060 (FRAME_HAS_HORIZONTAL_SCROLL_BARS (f) \
1061 ? rint (FRAME_CONFIG_SCROLL_BAR_HEIGHT (f) > 0 \
1062 ? FRAME_CONFIG_SCROLL_BAR_HEIGHT (f) \
1063 : (FRAME_SCROLL_BAR_LINES (f) * FRAME_LINE_HEIGHT (f))) \
1064 : 0)
1066 /* Difference btwn char-column-calculated and actual SB widths.
1067 This is only a concern for rendering when SB on left. */
1068 #define NS_SCROLL_BAR_ADJUST(w, f) \
1069 (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) ? \
1070 (FRAME_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f) \
1071 - NS_SCROLL_BAR_WIDTH (f)) : 0)
1073 /* Difference btwn char-line-calculated and actual SB heights.
1074 This is only a concern for rendering when SB on top. */
1075 #define NS_SCROLL_BAR_ADJUST_HORIZONTALLY(w, f) \
1076 (WINDOW_HAS_HORIZONTAL_SCROLL_BARS (w) ? \
1077 (FRAME_SCROLL_BAR_LINES (f) * FRAME_LINE_HEIGHT (f) \
1078 - NS_SCROLL_BAR_HEIGHT (f)) : 0)
1080 /* Calculate system coordinates of the left and top of the parent
1081 window or, if there is no parent window, the screen. */
1082 #define NS_PARENT_WINDOW_LEFT_POS(f) \
1083 (FRAME_PARENT_FRAME (f) != NULL \
1084 ? [[FRAME_NS_VIEW (f) window] parentWindow].frame.origin.x : 0)
1085 #define NS_PARENT_WINDOW_TOP_POS(f) \
1086 (FRAME_PARENT_FRAME (f) != NULL \
1087 ? ([[FRAME_NS_VIEW (f) window] parentWindow].frame.origin.y \
1088 + [[FRAME_NS_VIEW (f) window] parentWindow].frame.size.height \
1089 - FRAME_NS_TITLEBAR_HEIGHT (FRAME_PARENT_FRAME (f))) \
1090 : [[[FRAME_NS_VIEW (f) window] screen] frame].size.height)
1092 #define FRAME_NS_FONT_TABLE(f) (FRAME_DISPLAY_INFO (f)->font_table)
1094 #define FRAME_FONTSET(f) ((f)->output_data.ns->fontset)
1096 #define FRAME_BASELINE_OFFSET(f) ((f)->output_data.ns->baseline_offset)
1097 #define BLACK_PIX_DEFAULT(f) 0x000000
1098 #define WHITE_PIX_DEFAULT(f) 0xFFFFFF
1100 /* First position where characters can be shown (instead of scrollbar, if
1101 it is on left. */
1102 #define FIRST_CHAR_POSITION(f) \
1103 (! (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT (f)) ? 0 \
1104 : FRAME_SCROLL_BAR_COLS (f))
1106 extern struct ns_display_info *ns_term_init (Lisp_Object display_name);
1107 extern void ns_term_shutdown (int sig);
1109 /* constants for text rendering */
1110 #define NS_DUMPGLYPH_NORMAL 0
1111 #define NS_DUMPGLYPH_CURSOR 1
1112 #define NS_DUMPGLYPH_FOREGROUND 2
1113 #define NS_DUMPGLYPH_MOUSEFACE 3
1117 /* In nsfont, called from fontset.c */
1118 extern void nsfont_make_fontset_for_font (Lisp_Object name,
1119 Lisp_Object font_object);
1121 /* In nsfont, for debugging */
1122 struct glyph_string;
1123 void ns_dump_glyphstring (struct glyph_string *s) EXTERNALLY_VISIBLE;
1125 /* Implemented in nsterm, published in or needed from nsfns. */
1126 extern Lisp_Object ns_list_fonts (struct frame *f, Lisp_Object pattern,
1127 int size, int maxnames);
1128 extern void ns_clear_frame (struct frame *f);
1130 extern const char *ns_xlfd_to_fontname (const char *xlfd);
1132 extern Lisp_Object ns_map_event_to_object (void);
1133 #ifdef __OBJC__
1134 extern Lisp_Object ns_string_from_pasteboard (id pb);
1135 extern void ns_string_to_pasteboard (id pb, Lisp_Object str);
1136 #endif
1137 extern Lisp_Object ns_get_local_selection (Lisp_Object selection_name,
1138 Lisp_Object target_type);
1139 extern void nxatoms_of_nsselect (void);
1140 extern void ns_set_doc_edited (void);
1142 extern bool
1143 ns_defined_color (struct frame *f,
1144 const char *name,
1145 XColor *color_def, bool alloc,
1146 bool makeIndex);
1147 extern void
1148 ns_query_color (void *col, XColor *color_def, int setPixel);
1150 #ifdef __OBJC__
1151 extern int ns_lisp_to_color (Lisp_Object color, NSColor **col);
1152 extern NSColor *ns_lookup_indexed_color (unsigned long idx, struct frame *f);
1153 extern unsigned long ns_index_color (NSColor *color, struct frame *f);
1154 extern const char *ns_get_pending_menu_title (void);
1155 extern void ns_check_menu_open (NSMenu *menu);
1156 extern void ns_check_pending_open_menu (void);
1157 #endif
1159 /* C access to ObjC functionality */
1160 extern void ns_release_object (void *obj);
1161 extern void ns_retain_object (void *obj);
1162 extern void *ns_alloc_autorelease_pool (void);
1163 extern void ns_release_autorelease_pool (void *);
1164 extern const char *ns_get_defaults_value (const char *key);
1165 extern void ns_init_locale (void);
1168 /* in nsmenu */
1169 extern void update_frame_tool_bar (struct frame *f);
1170 extern void free_frame_tool_bar (struct frame *f);
1171 extern Lisp_Object find_and_return_menu_selection (struct frame *f,
1172 bool keymaps,
1173 void *client_data);
1174 extern Lisp_Object ns_popup_dialog (struct frame *, Lisp_Object header,
1175 Lisp_Object contents);
1177 #define NSAPP_DATA2_RUNASSCRIPT 10
1178 extern void ns_run_ascript (void);
1180 #define NSAPP_DATA2_RUNFILEDIALOG 11
1181 extern void ns_run_file_dialog (void);
1183 extern const char *ns_etc_directory (void);
1184 extern const char *ns_exec_path (void);
1185 extern const char *ns_load_path (void);
1186 extern void syms_of_nsterm (void);
1187 extern void syms_of_nsfns (void);
1188 extern void syms_of_nsmenu (void);
1189 extern void syms_of_nsselect (void);
1191 /* From nsimage.m, needed in image.c */
1192 struct image;
1193 extern void *ns_image_from_XBM (char *bits, int width, int height,
1194 unsigned long fg, unsigned long bg);
1195 extern void *ns_image_for_XPM (int width, int height, int depth);
1196 extern void *ns_image_from_file (Lisp_Object file);
1197 extern bool ns_load_image (struct frame *f, struct image *img,
1198 Lisp_Object spec_file, Lisp_Object spec_data);
1199 extern int ns_image_width (void *img);
1200 extern int ns_image_height (void *img);
1201 extern unsigned long ns_get_pixel (void *img, int x, int y);
1202 extern void ns_put_pixel (void *img, int x, int y, unsigned long argb);
1203 extern void ns_set_alpha (void *img, int x, int y, unsigned char a);
1205 extern int x_display_pixel_height (struct ns_display_info *);
1206 extern int x_display_pixel_width (struct ns_display_info *);
1208 /* This in nsterm.m */
1209 extern float ns_antialias_threshold;
1210 extern void x_destroy_window (struct frame *f);
1211 extern void x_set_undecorated (struct frame *f, Lisp_Object new_value,
1212 Lisp_Object old_value);
1213 extern void x_set_parent_frame (struct frame *f, Lisp_Object new_value,
1214 Lisp_Object old_value);
1215 extern void x_set_no_accept_focus (struct frame *f, Lisp_Object new_value,
1216 Lisp_Object old_value);
1217 extern void x_set_z_group (struct frame *f, Lisp_Object new_value,
1218 Lisp_Object old_value);
1219 extern int ns_select (int nfds, fd_set *readfds, fd_set *writefds,
1220 fd_set *exceptfds, struct timespec const *timeout,
1221 sigset_t const *sigmask);
1222 extern unsigned long ns_get_rgb_color (struct frame *f,
1223 float r, float g, float b, float a);
1225 struct input_event;
1226 extern void ns_init_events (struct input_event *);
1227 extern void ns_finish_events (void);
1229 #ifdef __OBJC__
1230 /* Needed in nsfns.m. */
1231 extern void
1232 ns_set_represented_filename (NSString *fstr, struct frame *f);
1234 #endif
1236 #ifdef NS_IMPL_GNUSTEP
1237 extern char gnustep_base_version[]; /* version tracking */
1238 #endif
1240 #define MINWIDTH 10
1241 #define MINHEIGHT 10
1243 /* Screen max coordinate
1244 Using larger coordinates causes movewindow/placewindow to abort */
1245 #define SCREENMAX 16000
1247 #define NS_SCROLL_BAR_WIDTH_DEFAULT [EmacsScroller scrollerWidth]
1248 #define NS_SCROLL_BAR_HEIGHT_DEFAULT [EmacsScroller scrollerHeight]
1249 /* This is to match emacs on other platforms, ugly though it is. */
1250 #define NS_SELECTION_BG_COLOR_DEFAULT @"LightGoldenrod2";
1251 #define NS_SELECTION_FG_COLOR_DEFAULT @"Black";
1252 #define RESIZE_HANDLE_SIZE 12
1254 /* Little utility macros */
1255 #define IN_BOUND(min, x, max) (((x) < (min)) \
1256 ? (min) : (((x)>(max)) ? (max) : (x)))
1257 #define SCREENMAXBOUND(x) (IN_BOUND (-SCREENMAX, x, SCREENMAX))
1259 /* macOS 10.12 deprecates a bunch of constants. */
1260 #if !defined (NS_IMPL_COCOA) || \
1261 MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12
1262 #define NSEventModifierFlagCommand NSCommandKeyMask
1263 #define NSEventModifierFlagControl NSControlKeyMask
1264 #define NSEventModifierFlagHelp NSHelpKeyMask
1265 #define NSEventModifierFlagNumericPad NSNumericPadKeyMask
1266 #define NSEventModifierFlagOption NSAlternateKeyMask
1267 #define NSEventModifierFlagShift NSShiftKeyMask
1268 #define NSCompositingOperationSourceOver NSCompositeSourceOver
1269 #define NSEventMaskApplicationDefined NSApplicationDefinedMask
1270 #define NSEventTypeApplicationDefined NSApplicationDefined
1271 #define NSEventTypeCursorUpdate NSCursorUpdate
1272 #define NSEventTypeMouseMoved NSMouseMoved
1273 #define NSEventTypeLeftMouseDown NSLeftMouseDown
1274 #define NSEventTypeRightMouseDown NSRightMouseDown
1275 #define NSEventTypeOtherMouseDown NSOtherMouseDown
1276 #define NSEventTypeLeftMouseUp NSLeftMouseUp
1277 #define NSEventTypeRightMouseUp NSRightMouseUp
1278 #define NSEventTypeOtherMouseUp NSOtherMouseUp
1279 #define NSEventTypeLeftMouseDragged NSLeftMouseDragged
1280 #define NSEventTypeRightMouseDragged NSRightMouseDragged
1281 #define NSEventTypeOtherMouseDragged NSOtherMouseDragged
1282 #define NSEventTypeScrollWheel NSScrollWheel
1283 #define NSEventTypeKeyDown NSKeyDown
1284 #define NSEventTypeKeyUp NSKeyUp
1285 #define NSEventTypeFlagsChanged NSFlagsChanged
1286 #define NSEventMaskAny NSAnyEventMask
1287 #define NSWindowStyleMaskBorderless NSBorderlessWindowMask
1288 #define NSWindowStyleMaskClosable NSClosableWindowMask
1289 #define NSWindowStyleMaskFullScreen NSFullScreenWindowMask
1290 #define NSWindowStyleMaskMiniaturizable NSMiniaturizableWindowMask
1291 #define NSWindowStyleMaskResizable NSResizableWindowMask
1292 #define NSWindowStyleMaskTitled NSTitledWindowMask
1293 #define NSAlertStyleCritical NSCriticalAlertStyle
1294 #define NSControlSizeRegular NSRegularControlSize
1295 #endif
1297 #endif /* HAVE_NS */