1 #ifndef INTUITION_INTUITION_H
2 #define INTUITION_INTUITION_H
5 Copyright © 1995-2011, The AROS Development Team. All rights reserved.
8 Desc: Important defines and structures for intuition.library
13 # include <exec/ports.h>
16 # include <exec/types.h>
18 #ifndef GRAPHICS_CLIP_H
19 # include <graphics/clip.h>
21 #ifndef GRAPHICS_GFX_H
22 # include <graphics/gfx.h>
24 #ifndef GRAPHICS_LAYERS_H
25 # include <graphics/layers.h>
27 #ifndef GRAPHICS_RASTPORT_H
28 # include <graphics/rastport.h>
30 #ifndef GRAPHICS_TEXT_H
31 # include <graphics/text.h>
33 #ifndef GRAPHICS_VIEW_H
34 # include <graphics/view.h>
36 #ifndef UTILITY_TAGITEM_H
37 # include <utility/tagitem.h>
39 #ifndef DEVICES_INPUTEVENT_H
40 # include <devices/inputevent.h>
42 #ifndef INTUITION_PREFERENCES_H
43 # include <intuition/preferences.h>
45 #ifndef INTUITION_SCREENS_H
46 # include <intuition/screens.h>
48 #ifndef INTUITION_CLASSUSR_H
49 # include <intuition/classusr.h>
52 #define INTUITIONNAME "intuition.library"
54 /***** Intuition Message *****/
58 struct Message ExecMessage
;
70 struct Window
* IDCMPWindow
;
71 struct IntuiMessage
* SpecialLink
;
74 struct ExtIntuiMessage
76 struct IntuiMessage eim_IntuiMessage
;
77 struct TabletData
* eim_TabletData
;
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
115 #define MENUWAITING 3
120 #define WBENCHCLOSE 2
122 /***** IntuiText *****/
132 struct TextAttr
* ITextFont
;
134 struct IntuiText
* NextText
;
141 struct Menu
* NextMenu
;
147 UWORD Flags
; /* see below */
150 struct MenuItem
* FirstItem
;
160 #define MENUENABLED (1<<0)
161 /* The following flag is READ-ONLY */
162 #define MIDRAWN (1<<8)
166 struct MenuItem
* NextItem
;
172 UWORD Flags
; /* see below */
178 struct MenuItem
* SubItem
;
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
202 #define MENUNULL 0xFFFF
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
223 #define LOWCOMMWIDTH 16
225 /***** Gadgets *****/
229 struct Gadget
* NextGadget
;
236 UWORD Flags
; /* see below */
237 UWORD Activation
; /* see below */
238 UWORD GadgetType
; /* see below */
242 struct IntuiText
* GadgetText
;
244 IPTR MutualExclude
; /* OBSOLETE */
253 struct ExtGadget
* NextGadget
;
260 UWORD Flags
; /* see below */
261 UWORD Activation
; /* see below */
262 UWORD GadgetType
; /* see below */
266 struct IntuiText
* GadgetText
;
268 IPTR MutualExclude
; /* OBSOLETE */
274 /* ExtGadget specific fields */
275 ULONG MoreFlags
; /* see below */
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)
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)
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
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 *****/
356 UWORD Flags
; /* see below */
358 ULONG Reserved
; /* must be NULL */
362 #define BOOLMASK (1<<0)
364 /***** Proportional gadget *****/
367 UWORD Flags
; /* see below */
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)
389 #define MAXBODY 0xFFFF
390 #define MAXPOT 0xFFFF
392 /***** StringInfo *****/
408 struct StringExtend
* Extension
;
410 struct KeyMap
* AltKeyMap
;
413 /**********************************************************************
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. */
422 struct Requester
* OlderRequest
;
424 /* The dimensions of the requester */
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 */
452 #define POINTREL (1<<0) /* If set, LeftEdge and TopEdge are relative
453 to the coordinates of either the pointer
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 SIMPLE_REFRESH layer is used */
458 #define USEREQIMAGE (1<<5) /* ReqImage points to an image, which is used
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. */
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
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 */
488 struct Window
* NextWindow
;
505 struct Menu
* MenuStrip
;
507 struct Requester
* FirstRequest
;
508 struct Requester
* DMRequest
;
512 struct Screen
* WScreen
;
513 struct RastPort
* RPort
;
519 struct RastPort
* BorderRPort
;
521 struct Gadget
* FirstGadget
;
522 struct Window
* Parent
;
523 struct Window
* Descendant
;
532 struct MsgPort
* UserPort
;
533 struct MsgPort
* WindowPort
;
534 struct IntuiMessage
* MessageKey
;
538 struct Image
* CheckMark
;
549 struct Layer
* WLayer
;
550 struct TextFont
* IFont
;
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)
581 struct Gadget
* FirstGadget
;
582 struct Image
* CheckMark
;
584 struct Screen
* Screen
; /* ignored if Type != CUSTOMSCREEN */
585 struct BitMap
* BitMap
;
608 struct Gadget
* FirstGadget
;
609 struct Image
* CheckMark
;
611 struct Screen
* Screen
;
612 struct BitMap
* BitMap
;
621 /* ExtNewWindow specific fields */
622 struct TagItem
*Extension
;
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)
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)
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)
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)
756 struct Image
* NextImage
;
771 struct Border
* NextBorder
;
774 /***** Tablets *****/
785 struct TagItem
* td_TagList
; /* see below */
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
;
806 LONG thd_ScreenChanged
;
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
850 struct Remember
* NextRemember
;
863 #define FOREVER for(;;)
864 #define SIGN(x) (((x)>0) - ((x)<0))
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 */
886 { struct Node nd_Node
;
887 struct MsgPort
*nd_Port
;
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 ***/
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
921 #define MAGIC_DECORATOR 0x8000001
922 #define MAGIC_SCREENNOTIFY 0x8000002
925 struct DecoratorMessage
927 struct MagicMessage dm_Message
;
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 */