exec/ports.h: struct MagicMessage is an AROS private message
[AROS.git] / compiler / include / intuition / intuition.h
blob46fedd7c321abd903ee7464f64c5395ae9131dbe
1 #ifndef INTUITION_INTUITION_H
2 #define INTUITION_INTUITION_H
4 /*
5 Copyright © 1995-2011, The AROS Development Team. All rights reserved.
6 $Id$
8 Desc: Important defines and structures for intuition.library
9 Lang: english
12 #ifndef EXEC_PORTS_H
13 # include <exec/ports.h>
14 #endif
15 #ifndef EXEC_TYPES_H
16 # include <exec/types.h>
17 #endif
18 #ifndef GRAPHICS_CLIP_H
19 # include <graphics/clip.h>
20 #endif
21 #ifndef GRAPHICS_GFX_H
22 # include <graphics/gfx.h>
23 #endif
24 #ifndef GRAPHICS_LAYERS_H
25 # include <graphics/layers.h>
26 #endif
27 #ifndef GRAPHICS_RASTPORT_H
28 # include <graphics/rastport.h>
29 #endif
30 #ifndef GRAPHICS_TEXT_H
31 # include <graphics/text.h>
32 #endif
33 #ifndef GRAPHICS_VIEW_H
34 # include <graphics/view.h>
35 #endif
36 #ifndef UTILITY_TAGITEM_H
37 # include <utility/tagitem.h>
38 #endif
39 #ifndef DEVICES_INPUTEVENT_H
40 # include <devices/inputevent.h>
41 #endif
42 #ifndef INTUITION_PREFERENCES_H
43 # include <intuition/preferences.h>
44 #endif
45 #ifndef INTUITION_SCREENS_H
46 # include <intuition/screens.h>
47 #endif
48 #ifndef INTUITION_CLASSUSR_H
49 # include <intuition/classusr.h>
50 #endif
52 #define INTUITIONNAME "intuition.library"
54 /***** Intuition Message *****/
56 struct IntuiMessage
58 struct Message ExecMessage;
60 ULONG Class;
61 UWORD Code;
62 UWORD Qualifier;
63 APTR IAddress;
65 WORD MouseX;
66 WORD MouseY;
67 ULONG Seconds;
68 ULONG Micros;
70 struct Window * IDCMPWindow;
71 struct IntuiMessage * SpecialLink;
74 struct ExtIntuiMessage
76 struct IntuiMessage eim_IntuiMessage;
77 struct TabletData * eim_TabletData;
80 /***** IDCMP *****/
82 #define IDCMP_SIZEVERIFY (1L<<0)
83 #define IDCMP_NEWSIZE (1L<<1)
84 #define IDCMP_REFRESHWINDOW (1L<<2)
85 #define IDCMP_MOUSEBUTTONS (1L<<3)
86 #define IDCMP_MOUSEMOVE (1L<<4)
87 #define IDCMP_GADGETDOWN (1L<<5)
88 #define IDCMP_GADGETUP (1L<<6)
89 #define IDCMP_REQSET (1L<<7)
90 #define IDCMP_MENUPICK (1L<<8)
91 #define IDCMP_CLOSEWINDOW (1L<<9)
92 #define IDCMP_RAWKEY (1L<<10)
93 #define IDCMP_REQVERIFY (1L<<11)
94 #define IDCMP_REQCLEAR (1L<<12)
95 #define IDCMP_MENUVERIFY (1L<<13)
96 #define IDCMP_NEWPREFS (1L<<14)
97 #define IDCMP_DISKINSERTED (1L<<15)
98 #define IDCMP_DISKREMOVED (1L<<16)
99 #define IDCMP_WBENCHMESSAGE (1L<<17)
100 #define IDCMP_ACTIVEWINDOW (1L<<18)
101 #define IDCMP_INACTIVEWINDOW (1L<<19)
102 #define IDCMP_DELTAMOVE (1L<<20)
103 #define IDCMP_VANILLAKEY (1L<<21)
104 #define IDCMP_INTUITICKS (1L<<22)
105 #define IDCMP_IDCMPUPDATE (1L<<23)
106 #define IDCMP_MENUHELP (1L<<24)
107 #define IDCMP_CHANGEWINDOW (1L<<25)
108 #define IDCMP_GADGETHELP (1L<<26)
109 #define IDCMP_LONELYMESSAGE (1L<<31)
111 #define CWCODE_MOVESIZE 0
112 #define CWCODE_DEPTH 1
113 #define MENUHOT 1
114 #define MENUCANCEL 2
115 #define MENUWAITING 3
116 #define OKOK 1
117 #define OKCANCEL 2
118 #define OKABORT 4
119 #define WBENCHOPEN 1
120 #define WBENCHCLOSE 2
122 /***** IntuiText *****/
124 struct IntuiText
126 UBYTE FrontPen;
127 UBYTE BackPen;
128 UBYTE DrawMode;
129 WORD LeftEdge;
130 WORD TopEdge;
132 struct TextAttr * ITextFont;
133 UBYTE * IText;
134 struct IntuiText * NextText;
137 /***** Menu *****/
139 struct Menu
141 struct Menu * NextMenu;
143 WORD LeftEdge;
144 WORD TopEdge;
145 WORD Width;
146 WORD Height;
147 UWORD Flags; /* see below */
148 BYTE * MenuName;
150 struct MenuItem * FirstItem;
152 /* PRIVATE */
153 WORD JazzX;
154 WORD JazzY;
155 WORD BeatX;
156 WORD BeatY;
159 /* Flags */
160 #define MENUENABLED (1<<0)
161 /* The following flag is READ-ONLY */
162 #define MIDRAWN (1<<8)
164 struct MenuItem
166 struct MenuItem * NextItem;
168 WORD LeftEdge;
169 WORD TopEdge;
170 WORD Width;
171 WORD Height;
172 UWORD Flags; /* see below */
173 LONG MutualExclude;
174 APTR ItemFill;
175 APTR SelectFill;
176 BYTE Command;
178 struct MenuItem * SubItem;
179 UWORD NextSelect;
182 /* Flags */
183 #define CHECKIT (1<<0)
184 #define ITEMTEXT (1<<1)
185 #define COMMSEQ (1<<2)
186 #define MENUTOGGLE (1<<3)
187 #define ITEMENABLED (1<<4)
188 #define HIGHIMAGE 0x0000
189 #define HIGHCOMP (1<<6)
190 #define HIGHBOX (1<<7)
191 #define HIGHNONE 0x00C0
192 #define HIGHFLAGS 0x00C0
193 #define CHECKED (1<<8)
194 /* The following flags are READ-ONLY */
195 #define ISDRAWN (1<<12)
196 #define HIGHITEM (1<<13)
197 #define MENUTOGGLED (1<<14)
199 #define NOMENU 0x001F
200 #define NOITEM 0x003F
201 #define NOSUB 0x001F
202 #define MENUNULL 0xFFFF
204 /* Macros */
205 #define MENUNUM(x) ((x) & 0x1F)
206 #define ITEMNUM(x) (((x)>>5) & 0x003F)
207 #define SUBNUM(x) (((x)>>11) & 0x001F)
209 #define SHIFTMENU(x) ((x) & 0x1F)
210 #define SHIFTITEM(x) (((x) & 0x3F)<<5)
211 #define SHIFTSUB(x) (((x) & 0x1F)<<11)
212 #define FULLMENUNUM(m,i,s) (SHIFTMENU(m) | SHIFTITEM(i) | SHIFTSUB(s))
214 #define SRBNUM(x) (0x08 - ((x)>>4))
215 #define SWBNUM(x) (0x08 - ((x) & 0x0F))
216 #define SSBNUM(x) (0x01 + ((x)>>4))
217 #define SPARNUM(x) ((x)>>4)
218 #define SHAKNUM(x) ((x) & 0x0F)
220 #define CHECKWIDTH 19
221 #define LOWCHECKWIDTH 13
222 #define COMMWIDTH 27
223 #define LOWCOMMWIDTH 16
225 /***** Gadgets *****/
227 struct Gadget
229 struct Gadget * NextGadget;
231 WORD LeftEdge;
232 WORD TopEdge;
233 WORD Width;
234 WORD Height;
236 UWORD Flags; /* see below */
237 UWORD Activation; /* see below */
238 UWORD GadgetType; /* see below */
240 APTR GadgetRender;
241 APTR SelectRender;
242 struct IntuiText * GadgetText;
244 IPTR MutualExclude; /* OBSOLETE */
246 APTR SpecialInfo;
247 UWORD GadgetID;
248 APTR UserData;
251 struct ExtGadget
253 struct ExtGadget * NextGadget;
255 WORD LeftEdge;
256 WORD TopEdge;
257 WORD Width;
258 WORD Height;
260 UWORD Flags; /* see below */
261 UWORD Activation; /* see below */
262 UWORD GadgetType; /* see below */
264 APTR GadgetRender;
265 APTR SelectRender;
266 struct IntuiText * GadgetText;
268 IPTR MutualExclude; /* OBSOLETE */
270 APTR SpecialInfo;
271 UWORD GadgetID;
272 APTR UserData;
274 /* ExtGadget specific fields */
275 ULONG MoreFlags; /* see below */
276 WORD BoundsLeftEdge;
277 WORD BoundsTopEdge;
278 WORD BoundsWidth;
279 WORD BoundsHeight;
282 /* Flags */
283 #define GFLG_GADGHCOMP 0x0000
284 #define GFLG_GADGHBOX (1<<0)
285 #define GFLG_GADGHIMAGE (1<<1)
286 #define GFLG_GADGHNONE 0x0003
287 #define GFLG_GADGHIGHBITS 0x0003
288 #define GFLG_GADGIMAGE (1<<2)
289 #define GFLG_RELBOTTOM (1<<3)
290 #define GFLG_RELRIGHT (1<<4)
291 #define GFLG_RELWIDTH (1<<5)
292 #define GFLG_RELHEIGHT (1<<6)
293 #define GFLG_SELECTED (1<<7)
294 #define GFLG_DISABLED (1<<8)
295 #define GFLG_TABCYCLE (1<<9)
296 #define GFLG_STRINGEXTEND (1<<10)
297 #define GFLG_IMAGEDISABLE (1<<11)
298 #define GFLG_LABELITEXT 0x0000
299 #define GFLG_LABELSTRING (1<<12)
300 #define GFLG_LABELIMAGE (1<<13)
301 #define GFLG_LABELMASK 0x3000
302 #define GFLG_RELSPECIAL (1<<14)
303 #define GFLG_EXTENDED (1<<15)
305 /* Activation */
306 #define GACT_RELVERIFY (1<<0)
307 #define GACT_IMMEDIATE (1<<1)
308 #define GACT_ENDGADGET (1<<2)
309 #define GACT_FOLLOWMOUSE (1<<3)
310 #define GACT_RIGHTBORDER (1<<4)
311 #define GACT_LEFTBORDER (1<<5)
312 #define GACT_TOPBORDER (1<<6)
313 #define GACT_BOTTOMBORDER (1<<7)
314 #define GACT_TOGGLESELECT (1<<8)
315 #define GACT_STRINGLEFT 0
316 #define GACT_STRINGCENTER (1<<9)
317 #define GACT_STRINGRIGHT (1<<10)
318 #define GACT_LONGINT (1<<11)
319 #define GACT_ALTKEYMAP (1<<12)
320 #define GACT_STRINGEXTEND (1<<13)
321 #define GACT_BOOLEXTEND (1<<13)
322 #define GACT_ACTIVEGADGET (1<<14)
323 #define GACT_BORDERSNIFF (1<<15)
325 /* GadgetType */
326 #define GTYP_GADGETTYPE 0xFC00
327 #define GTYP_SYSTYPEMASK 0x00F0
328 #define GTYP_SIZING 0x0010
329 #define GTYP_WDRAGGING 0x0020
330 #define GTYP_SDRAGGING 0x0030
331 #define GTYP_WDEPTH 0x0040
332 #define GTYP_SDEPTH 0x0050
333 #define GTYP_WZOOM 0x0060
334 #define GTYP_SUNUSED 0x0070
335 #define GTYP_CLOSE 0x0080
336 #define GTYP_REQGADGET (1<<12)
337 #define GTYP_GZZGADGET (1<<13)
338 #define GTYP_SCRGADGET (1<<14)
339 #define GTYP_SYSGADGET (1<<15)
340 #define GTYP_BOOLGADGET 0x0001
341 #define GTYP_GADGET0002 0x0002
342 #define GTYP_PROPGADGET 0x0003
343 #define GTYP_STRGADGET 0x0004
344 #define GTYP_CUSTOMGADGET 0x0005
345 #define GTYP_GTYPEMASK 0x0007
347 /* MoreFlags */
348 #define GMORE_BOUNDS (1L<<0)
349 #define GMORE_GADGETHELP (1L<<1)
350 #define GMORE_SCROLLRASTER (1L<<2)
351 #define GMORE_BOOPSIGADGET (1L<<3) /* some internal boopsi classes changes the gadget type during execution (ie propgclass), so GTYP_CUSTOMGADGET doesn´t work (dariusb) */
353 /***** Bool Gadget *****/
354 struct BoolInfo
356 UWORD Flags; /* see below */
357 UWORD * Mask;
358 ULONG Reserved; /* must be NULL */
361 /* Flags */
362 #define BOOLMASK (1<<0)
364 /***** Proportional gadget *****/
365 struct PropInfo
367 UWORD Flags; /* see below */
368 UWORD HorizPot;
369 UWORD VertPot;
370 UWORD HorizBody;
371 UWORD VertBody;
372 UWORD CWidth;
373 UWORD CHeight;
374 UWORD HPotRes;
375 UWORD VPotRes;
376 UWORD LeftBorder;
377 UWORD TopBorder;
380 #define AUTOKNOB (1<<0)
381 #define FREEHORIZ (1<<1)
382 #define FREEVERT (1<<2)
383 #define PROPBORDERLESS (1<<3)
384 #define PROPNEWLOOK (1<<4)
385 #define KNOBHIT (1<<8)
387 #define KNOBHMIN 6
388 #define KNOBVMIN 4
389 #define MAXBODY 0xFFFF
390 #define MAXPOT 0xFFFF
392 /***** StringInfo *****/
394 struct StringInfo
396 UBYTE * Buffer;
397 UBYTE * UndoBuffer;
398 WORD BufferPos;
399 WORD MaxChars;
400 WORD DispPos;
402 WORD UndoPos;
403 WORD NumChars;
404 WORD DispCount;
405 WORD CLeft;
406 WORD CTop;
408 struct StringExtend * Extension;
409 LONG LongInt;
410 struct KeyMap * AltKeyMap;
413 /**********************************************************************
414 ** Requesters **
415 **********************************************************************/
417 /* The following struct is used for standard intuition requesters
418 (not to be mixed up with asl or easy requesters).
419 See intuition.library/Request() for more information. */
420 struct Requester
422 struct Requester * OlderRequest;
424 /* The dimensions of the requester */
425 WORD LeftEdge;
426 WORD TopEdge;
427 WORD Width;
428 WORD Height;
429 WORD RelLeft;
430 WORD RelTop;
432 struct Gadget * ReqGadget; /* First gadget of the requester */
433 struct Border * ReqBorder; /* First border of the requester */
434 struct IntuiText * ReqText; /* First intuitext of the requester */
436 UWORD Flags; /* see below */
437 UBYTE BackFill; /* a pen to fill the background of the requester */
439 struct Layer * ReqLayer; /* The layer on which the requester is based */
441 UBYTE ReqPad1[32]; /* PRIVATE */
443 struct BitMap * ImageBMap; /* you may use this to fill the requester
444 with your own image */
445 struct Window * RWindow; /* window, which the requester belongs to */
446 struct Image * ReqImage; /* corresponds to USEREQIMAGE (see below) */
448 UBYTE ReqPad2[32]; /* PRIVATE */
451 /* Flags */
452 #define POINTREL (1<<0) /* If set, LeftEdge and TopEdge are relative
453 to the coordinates of either the pointer
454 or the window */
455 #define PREDRAWN (1<<1) /* If set, ImageBMap points to a custom bitmap */
456 #define NOISYREQ (1<<2) /* Requester doesn't filter input */
457 #define SIMPLEREQ (1<<4) /* If set, a SIMPLEREFRESH layer is used */
458 #define USEREQIMAGE (1<<5) /* ReqImage points to an image, which is used
459 as background */
460 #define NOREQBACKFILL (1<<6) /* Ignore BackFill pen */
461 /* The following flags are READ-ONLY */
462 #define REQOFFWINDOW (1<<12)
463 #define REQACTIVE (1<<13) /* Requester is active */
464 #define SYSREQUEST (1<<14) /* unused */
465 #define DEFERREFRESH (1<<15)
467 /* This struct is passes as second parameter to EasyRequestArgs() and
468 BuildEasyRequest(). It describes the general look of the requester. */
469 struct EasyStruct
471 ULONG es_StructSize; /* Should be sizeof(struct EasyStruct). Note
472 that this size may change, if you update the
473 includes! Do not use absolute values as
474 the size of pointers may vary on different
475 platforms! */
476 ULONG es_Flags; /* None defined, yet */
477 CONST_STRPTR es_Title; /* Text in the titlebar of the requester */
478 CONST_STRPTR es_TextFormat; /* Text in requester (printf-style). The
479 arguments needed for that string are the
480 fourth paramter to EasyRequestArgs() */
481 CONST_STRPTR es_GadgetFormat; /* Text of the gadgets, separated by |'s */
484 /***** Window *****/
486 struct Window
488 struct Window * NextWindow;
490 WORD LeftEdge;
491 WORD TopEdge;
492 WORD Width;
493 WORD Height;
495 WORD MouseY;
496 WORD MouseX;
498 WORD MinWidth;
499 WORD MinHeight;
500 UWORD MaxWidth;
501 UWORD MaxHeight;
503 ULONG Flags;
505 struct Menu * MenuStrip;
506 UBYTE * Title;
507 struct Requester * FirstRequest;
508 struct Requester * DMRequest;
510 WORD ReqCount;
512 struct Screen * WScreen;
513 struct RastPort * RPort;
515 BYTE BorderLeft;
516 BYTE BorderTop;
517 BYTE BorderRight;
518 BYTE BorderBottom;
519 struct RastPort * BorderRPort;
521 struct Gadget * FirstGadget;
522 struct Window * Parent;
523 struct Window * Descendant;
525 UWORD * Pointer;
526 BYTE PtrHeight;
527 BYTE PtrWidth;
528 BYTE XOffset;
529 BYTE YOffset;
531 ULONG IDCMPFlags;
532 struct MsgPort * UserPort;
533 struct MsgPort * WindowPort;
534 struct IntuiMessage * MessageKey;
536 UBYTE DetailPen;
537 UBYTE BlockPen;
538 struct Image * CheckMark;
539 UBYTE * ScreenTitle;
541 WORD GZZMouseX;
542 WORD GZZMouseY;
543 WORD GZZWidth;
544 WORD GZZHeight;
546 UBYTE * ExtData;
547 BYTE * UserData;
549 struct Layer * WLayer;
550 struct TextFont * IFont;
552 ULONG MoreFlags;
554 WORD RelLeftEdge; // relative coordinates of the window
555 WORD RelTopEdge; // to its parent window. If it is
556 // a window on the screen then these
557 // are the same as LeftEdge and TopEdge.
559 struct Window * firstchild; // pointer to first child
560 struct Window * prevchild; // if window is a child of a window
561 struct Window * nextchild; // then they are concatenated here.
562 struct Window * parent; // parent of this window
565 #define HAS_CHILDREN(w) (NULL != w->firstchild)
566 #define IS_CHILD(w) (NULL != w->parent)
568 struct NewWindow
570 WORD LeftEdge;
571 WORD TopEdge;
572 WORD Width;
573 WORD Height;
575 UBYTE DetailPen;
576 UBYTE BlockPen;
578 ULONG IDCMPFlags;
579 ULONG Flags;
581 struct Gadget * FirstGadget;
582 struct Image * CheckMark;
583 UBYTE * Title;
584 struct Screen * Screen; /* ignored if Type != CUSTOMSCREEN */
585 struct BitMap * BitMap;
587 WORD MinWidth;
588 WORD MinHeight;
589 UWORD MaxWidth;
590 UWORD MaxHeight;
592 UWORD Type;
595 struct ExtNewWindow
597 WORD LeftEdge;
598 WORD TopEdge;
599 WORD Width;
600 WORD Height;
602 UBYTE DetailPen;
603 UBYTE BlockPen;
605 ULONG IDCMPFlags;
606 ULONG Flags;
608 struct Gadget * FirstGadget;
609 struct Image * CheckMark;
610 UBYTE * Title;
611 struct Screen * Screen;
612 struct BitMap * BitMap;
614 WORD MinWidth;
615 WORD MinHeight;
616 UWORD MaxWidth;
617 UWORD MaxHeight;
619 UWORD Type;
621 /* ExtNewWindow specific fields */
622 struct TagItem *Extension;
625 /* Tags */
626 #define WA_Dummy (TAG_USER + 99)
627 #define WA_Left (WA_Dummy + 1)
628 #define WA_Top (WA_Dummy + 2)
629 #define WA_Width (WA_Dummy + 3)
630 #define WA_Height (WA_Dummy + 4)
631 #define WA_DetailPen (WA_Dummy + 5)
632 #define WA_BlockPen (WA_Dummy + 6)
633 #define WA_IDCMP (WA_Dummy + 7)
634 #define WA_Flags (WA_Dummy + 8)
635 #define WA_Gadgets (WA_Dummy + 9)
636 #define WA_Checkmark (WA_Dummy + 10)
637 #define WA_Title (WA_Dummy + 11)
638 #define WA_ScreenTitle (WA_Dummy + 12)
639 #define WA_CustomScreen (WA_Dummy + 13)
640 #define WA_SuperBitMap (WA_Dummy + 14)
641 #define WA_MinWidth (WA_Dummy + 15)
642 #define WA_MinHeight (WA_Dummy + 16)
643 #define WA_MaxWidth (WA_Dummy + 17)
644 #define WA_MaxHeight (WA_Dummy + 18)
645 #define WA_InnerWidth (WA_Dummy + 19)
646 #define WA_InnerHeight (WA_Dummy + 20)
647 #define WA_PubScreenName (WA_Dummy + 21)
648 #define WA_PubScreen (WA_Dummy + 22)
649 #define WA_PubScreenFallBack (WA_Dummy + 23)
650 #define WA_WindowName (WA_Dummy + 24)
651 #define WA_Colors (WA_Dummy + 25)
652 #define WA_Zoom (WA_Dummy + 26)
653 #define WA_MouseQueue (WA_Dummy + 27)
654 #define WA_BackFill (WA_Dummy + 28)
655 #define WA_RptQueue (WA_Dummy + 29)
656 #define WA_SizeGadget (WA_Dummy + 30)
657 #define WA_DragBar (WA_Dummy + 31)
658 #define WA_DepthGadget (WA_Dummy + 32)
659 #define WA_CloseGadget (WA_Dummy + 33)
660 #define WA_Backdrop (WA_Dummy + 34)
661 #define WA_ReportMouse (WA_Dummy + 35)
662 #define WA_NoCareRefresh (WA_Dummy + 36)
663 #define WA_Borderless (WA_Dummy + 37)
664 #define WA_Activate (WA_Dummy + 38)
665 #define WA_RMBTrap (WA_Dummy + 39)
666 #define WA_WBenchWindow (WA_Dummy + 40)
667 #define WA_SimpleRefresh (WA_Dummy + 41)
668 #define WA_SmartRefresh (WA_Dummy + 42)
669 #define WA_SizeBRight (WA_Dummy + 43)
670 #define WA_SizeBBottom (WA_Dummy + 44)
671 #define WA_AutoAdjust (WA_Dummy + 45)
672 #define WA_GimmeZeroZero (WA_Dummy + 46)
673 #define WA_MenuHelp (WA_Dummy + 47)
674 #define WA_NewLookMenus (WA_Dummy + 48)
675 #define WA_AmigaKey (WA_Dummy + 49)
676 #define WA_NotifyDepth (WA_Dummy + 50)
677 #define WA_Pointer (WA_Dummy + 52)
678 #define WA_BusyPointer (WA_Dummy + 53)
679 #define WA_PointerDelay (WA_Dummy + 54)
680 #define WA_TabletMessages (WA_Dummy + 55)
681 #define WA_HelpGroup (WA_Dummy + 56)
682 #define WA_HelpGroupWindow (WA_Dummy + 57)
683 /* AmigaOS4 -compatible tags follow */
684 #define WA_Hidden (WA_Dummy + 60)
685 #define WA_ToolBox (WA_Dummy + 61)
686 #define WA_ShapeRegion (WA_Dummy + 65)
687 #define WA_ShapeHook (WA_Dummy + 66)
688 #define WA_InFrontOf (WA_Dummy + 67)
689 /* AROS specific tags follow */
690 #define WA_Priority (WA_Dummy + 100)
691 #define WA_Parent (WA_Dummy + 101)
692 #define WA_Behind (WA_Dummy + 103)
694 /* Flags */
695 #define WFLG_SIZEGADGET (1L<<0)
696 #define WFLG_DRAGBAR (1L<<1)
697 #define WFLG_DEPTHGADGET (1L<<2)
698 #define WFLG_CLOSEGADGET (1L<<3)
699 #define WFLG_SIZEBRIGHT (1L<<4)
700 #define WFLG_SIZEBBOTTOM (1L<<5)
702 #define WFLG_SMART_REFRESH 0
703 #define WFLG_SIMPLE_REFRESH (1L<<6)
704 #define WFLG_SUPER_BITMAP (1L<<7)
705 #define WFLG_OTHER_REFRESH ((1L<<6) | (1L<<7))
706 #define WFLG_REFRESHBITS WFLG_OTHER_REFRESH
708 #define WFLG_BACKDROP (1L<<8)
709 #define WFLG_REPORTMOUSE (1L<<9)
710 #define WFLG_GIMMEZEROZERO (1L<<10)
711 #define WFLG_BORDERLESS (1L<<11)
712 #define WFLG_ACTIVATE (1L<<12)
714 /* PRIVATE */
715 #define WFLG_WINDOWACTIVE (1L<<13)
716 #define WFLG_INREQUEST (1L<<14)
717 #define WFLG_MENUSTATE (1L<<15)
719 #define WFLG_RMBTRAP (1L<<16)
720 #define WFLG_NOCAREREFRESH (1L<<17)
721 #define WFLG_NW_EXTENDED (1L<<18)
723 #define WFLG_NEWLOOKMENUS (1L<<21)
725 /* PRIVATE */
726 #define WFLG_WINDOWREFRESH (1L<<24)
727 #define WFLG_WBENCHWINDOW (1L<<25)
728 #define WFLG_WINDOWTICKED (1L<<26)
729 #define WFLG_VISITOR (1L<<27)
730 #define WFLG_ZOOMED (1L<<28)
731 #define WFLG_HASZOOM (1L<<29)
732 #define WFLG_TOOLBOX (1L<<30)
734 #define DEFAULTMOUSEQUEUE 5
736 #define HC_GADGETHELP 1
738 /* Magic values for ShowWindow() and WA_InFrontOf */
739 #define WINDOW_BACKMOST (NULL)
740 #define WINDOW_FRONTMOST ((struct Window *)1)
742 /***** Images *****/
744 struct Image
746 WORD LeftEdge;
747 WORD TopEdge;
748 WORD Width;
749 WORD Height;
751 WORD Depth;
752 UWORD * ImageData;
753 UBYTE PlanePick;
754 UBYTE PlaneOnOff;
756 struct Image * NextImage;
759 /***** Border *****/
761 struct Border
763 WORD LeftEdge;
764 WORD TopEdge;
765 UBYTE FrontPen;
766 UBYTE BackPen;
767 UBYTE DrawMode;
768 BYTE Count;
769 WORD * XY;
771 struct Border * NextBorder;
774 /***** Tablets *****/
776 struct TabletData
778 UWORD td_XFraction;
779 UWORD td_YFraction;
780 ULONG td_TabletX;
781 ULONG td_TabletY;
782 ULONG td_RangeX;
783 ULONG td_RangeY;
785 struct TagItem * td_TagList; /* see below */
788 /* Tags */
789 #define TABLETA_Dummy (TAG_USER + 0x3A000)
790 #define TABLETA_TabletZ (TABLETA_Dummy + 0x01)
791 #define TABLETA_RangeZ (TABLETA_Dummy + 0x02)
792 #define TABLETA_AngleX (TABLETA_Dummy + 0x03)
793 #define TABLETA_AngleY (TABLETA_Dummy + 0x04)
794 #define TABLETA_AngleZ (TABLETA_Dummy + 0x05)
795 #define TABLETA_Pressure (TABLETA_Dummy + 0x06)
796 #define TABLETA_ButtonBits (TABLETA_Dummy + 0x07)
797 #define TABLETA_InProximity (TABLETA_Dummy + 0x08)
798 #define TABLETA_ResolutionX (TABLETA_Dummy + 0x09)
799 #define TABLETA_ResolutionY (TABLETA_Dummy + 0x0a)
801 struct TabletHookData
803 struct Screen * thd_Screen;
804 ULONG thd_Width;
805 ULONG thd_Height;
806 LONG thd_ScreenChanged;
809 /***** Keys *****/
811 #define SELECTDOWN (IECODE_LBUTTON)
812 #define SELECTUP (IECODE_LBUTTON | IECODE_UP_PREFIX)
813 #define MENUDOWN (IECODE_RBUTTON)
814 #define MENUUP (IECODE_RBUTTON | IECODE_UP_PREFIX)
815 #define MIDDLEDOWN (IECODE_MBUTTON)
816 #define MIDDLEUP (IECODE_MBUTTON | IECODE_UP_PREFIX)
817 #define ALTLEFT (IEQUALIFIER_LALT)
818 #define ALTRIGHT (IEQUALIFIER_RALT)
819 #define AMIGALEFT (IEQUALIFIER_LCOMMAND)
820 #define AMIGARIGHT (IEQUALIFIER_RCOMMAND)
821 #define AMIGAKEYS (AMIGALEFT | AMIGARIGHT)
823 #define CURSORUP 0x4C
824 #define CURSORDOWN 0x4D
825 #define CURSORRIGHT 0x4E
826 #define CURSORLEFT 0x4F
828 #define KEYCODE_Q 0x10
829 #define KEYCODE_Z 0x31
830 #define KEYCODE_X 0x32
831 #define KEYCODE_V 0x34
832 #define KEYCODE_B 0x35
833 #define KEYCODE_N 0x36
834 #define KEYCODE_M 0x37
835 #define KEYCODE_LESS 0x38
836 #define KEYCODE_GREATER 0x39
838 /* Miscellaneous */
840 struct IBox
842 WORD Left;
843 WORD Top;
844 WORD Width;
845 WORD Height;
848 struct Remember
850 struct Remember * NextRemember;
851 ULONG RememberSize;
852 UBYTE * Memory;
855 struct ColorSpec
857 WORD ColorIndex;
858 UWORD Red;
859 UWORD Green;
860 UWORD Blue;
863 #define FOREVER for(;;)
864 #define SIGN(x) (((x)>0) - ((x)<0))
865 #define NOT !
867 #define ALERT_TYPE 0x80000000
868 #define RECOVERY_ALERT 0x00000000
869 #define DEADEND_ALERT 0x80000000
871 #define AUTOFRONTPEN 0
872 #define AUTOBACKPEN 1
873 #define AUTODRAWMODE JAM2
874 #define AUTOLEFTEDGE 6
875 #define AUTORIGHTEDGE 3
876 #define AUTOITEXTFONT NULL
877 #define AUTONEXTTEXT NULL
879 /* NewDecorator structure used by ChangeDecoration
880 configure class pointers (nd_WindowClass, nd_ScreenClass and nd_MenuClass)
881 to overide the default/internal decoration classes.
882 the port is used for different issues and will be filled
883 up with DecoratorMessages */
885 struct NewDecorator
886 { struct Node nd_Node;
887 struct MsgPort *nd_Port;
888 UWORD nd_cnt;
889 STRPTR nd_Pattern;
890 STRPTR nd_IntPattern; /* Private, transformated Pattern be dos/ParsePattern() */
891 struct IClass *nd_ScreenClass;
892 struct TagItem *nd_ScreenTags;
893 IPTR nd_ScreenObjOffset;
894 struct IClass *nd_MenuClass;
895 struct TagItem *nd_MenuTags;
896 IPTR nd_ScreenMenuObjOffset;
897 struct IClass *nd_WindowClass;
898 struct TagItem *nd_WindowTags;
899 IPTR nd_ScreenWindowObjOffset;
902 /*** AROS Private Messages ***/
904 struct MagicMessage
906 struct Node mn_Node;
907 struct MsgPort * mn_ReplyPort; /* message reply port */
908 UWORD mn_Length; /* total message length, in bytes */
909 /* (include the size of the Message
910 structure in the length) */
911 ULONG mn_Magic; /* can be used to figure out the message sender */
912 ULONG mn_Version; /* version can be used to extend a message in later versions */
915 /* definition for entry Magic in Messages
916 Magic is introduced to prevent Multiple Ports, for example if you´r using
917 ScreenNotifications and DecorNotifications you must have two Ports as long
918 as you cannot figure out which Messsage ist posted. With Magic this is no
919 problem. */
921 #define MAGIC_DECORATOR 0x8000001
922 #define MAGIC_SCREENNOTIFY 0x8000002
925 struct DecoratorMessage
927 struct MagicMessage dm_Message;
928 IPTR dm_Class;
929 ULONG dm_Code;
930 ULONG dm_Flags;
931 IPTR dm_Object;
934 #define DECORATOR_VERSION 0
936 /* there is only one Message in the initial decoration system
937 it will be sent to the decorator port to signal that it´ll not be used any longer
938 and may be destroyed, in that case the dm_Object contains the NewDecorator struct
939 Intuition does not touch anything, the decorator have to destroy all objects as well as the
940 NewDecorator struct. */
942 #define DM_CLASS_DESTROYDECORATOR 0x8001
944 struct ScreenNotifyMessage
946 struct MagicMessage snm_Message;
947 ULONG snm_Class; /* Notification Class ID same as SNA_Notify */
948 ULONG snm_Code; /* Code only supported for ScreenDepth() and will put the Flags in */
949 IPTR snm_Object; /* Pointer to the Object that caused this message */
950 IPTR snm_UserData; /* will be filled with SNA_UserData */
953 #define SCREENNOTIFY_VERSION 0
955 #define SNA_PubName (TAG_USER + 0x01) /* public screen name of NULL for all screens */
956 #define SNA_Notify (TAG_USER + 0x02) /* Flags to look for see below */
957 #define SNA_UserData (TAG_USER + 0x03) /* this tag will be passed to the screennotify message */
958 #define SNA_SigTask (TAG_USER + 0x04) /* if port == NULL, a sigbit will be set for this task */
959 #define SNA_SigBit (TAG_USER + 0x05) /* signal bit to set if port == NULL*/
960 #define SNA_MsgPort (TAG_USER + 0x06) /* if != NULL post mesage to this port */
961 #define SNA_Priority (TAG_USER + 0x07) /* */
962 #define SNA_Hook (TAG_USER + 0x08)
964 /* SNA_Notify (all unassigned bits are reserved for system use) */
965 #define SNOTIFY_AFTER_OPENSCREEN (1<<0) /* screen has been opened */
966 #define SNOTIFY_BEFORE_CLOSESCREEN (1<<1) /* going to close screen */
967 #define SNOTIFY_AFTER_OPENWB (1<<2) /* Workbench is open */
968 #define SNOTIFY_BEFORE_CLOSEWB (1<<3) /* Workbench is going to be closed */
969 #define SNOTIFY_AFTER_OPENWINDOW (1<<4) /* new window */
970 #define SNOTIFY_BEFORE_CLOSEWINDOW (1<<5) /* window is going to be closed */
971 #define SNOTIFY_PUBSCREENSTATE (1<<6) /* PubScreenState() */
972 #define SNOTIFY_LOCKPUBSCREEN (1<<7) /* LockPubScreen() */
973 #define SNOTIFY_SCREENDEPTH (1<<8) /* ScreenDepth() */
974 #define SNOTIFY_AFTER_CLOSESCREEN (1<<9) /* notify after CloseScreen() */
975 #define SNOTIFY_AFTER_CLOSEWINDOW (1<<10) /* dto. CloseWindow() */
976 #define SNOTIFY_BEFORE_OPENSCREEN (1<<11) /* notify before OpenScreen() */
977 #define SNOTIFY_BEFORE_OPENWINDOW (1<<12) /* dto. OpenWindow() */
978 #define SNOTIFY_BEFORE_OPENWB (1<<13) /* like OPENSCREEN */
979 #define SNOTIFY_AFTER_CLOSEWB (1<<14) /* like CLOSESCREEN */
980 #define SNOTIFY_WAIT_REPLY (1<<15) /* wait for reply before taking action */
981 #define SNOTIFY_UNLOCKPUBSCREEN (1<<16) /* UnlockPubScreen() */
982 #define SNOTIFY_BEFORE_UPDATEINTUITION (1<<17) /* Intuition is going to be updated */
983 #define SNOTIFY_AFTER_UPDATEINTUITION (1<<18) /* Intuition is updated */
984 #endif /* INTUITION_INTUITION_H */