added concrete implementations of putc(), getc(), getchar() and gets()
[tangerine.git] / compiler / include / intuition / intuition.h
blob9446b0b4869acf351a8588ace7bb296d0262d23a
1 #ifndef INTUITION_INTUITION_H
2 #define INTUITION_INTUITION_H
4 /*
5 Copyright 1995-2001, 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 LONG 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 LONG 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;
494 WORD MouseX;
495 WORD MouseY;
496 WORD MinWidth;
497 WORD MinHeight;
498 WORD MaxWidth;
499 WORD MaxHeight;
501 ULONG Flags;
503 struct Menu * MenuStrip;
504 UBYTE * Title;
505 struct Requester * FirstRequest;
506 struct Requester * DMRequest;
508 WORD ReqCount;
510 struct Screen * WScreen;
511 struct RastPort * RPort;
513 BYTE BorderLeft;
514 BYTE BorderTop;
515 BYTE BorderRight;
516 BYTE BorderBottom;
517 struct RastPort * BorderRPort;
519 struct Gadget * FirstGadget;
520 struct Window * Parent;
521 struct Window * Descendant;
523 UWORD * Pointer;
524 BYTE PtrHeight;
525 BYTE PtrWidth;
526 BYTE XOffset;
527 BYTE YOffset;
529 ULONG IDCMPFlags;
530 struct MsgPort * UserPort;
531 struct MsgPort * WindowPort;
532 struct IntuiMessage * MessageKey;
534 UBYTE DetailPen;
535 UBYTE BlockPen;
536 struct Image * CheckMark;
537 UBYTE * ScreenTitle;
539 WORD GZZMouseX;
540 WORD GZZMouseY;
541 WORD GZZWidth;
542 WORD GZZHeight;
544 UBYTE * ExtData;
545 BYTE * UserData;
547 struct Layer * WLayer;
548 struct TextFont * IFont;
550 ULONG MoreFlags;
552 WORD RelLeftEdge; // relative coordinates of the window
553 WORD RelTopEdge; // to its parent window. If it is
554 // a window on the screen then these
555 // are the same as LeftEdge and TopEdge.
557 struct Window * firstchild; // pointer to first child
558 struct Window * prevchild; // if window is a child of a window
559 struct Window * nextchild; // then they are concatenated here.
560 struct Window * parent; // parent of this window
563 #define HAS_CHILDREN(w) (NULL != w->firstchild)
564 #define IS_CHILD(w) (NULL != w->parent)
566 struct NewWindow
568 WORD LeftEdge;
569 WORD TopEdge;
570 WORD Width;
571 WORD Height;
573 UBYTE DetailPen;
574 UBYTE BlockPen;
576 ULONG IDCMPFlags;
577 ULONG Flags;
579 struct Gadget * FirstGadget;
580 struct Image * CheckMark;
581 UBYTE * Title;
582 struct Screen * Screen;
583 struct BitMap * BitMap;
585 WORD MinWidth;
586 WORD MinHeight;
587 UWORD MaxWidth;
588 UWORD MaxHeight;
590 UWORD Type;
593 struct ExtNewWindow
595 WORD LeftEdge;
596 WORD TopEdge;
597 WORD Width;
598 WORD Height;
600 UBYTE DetailPen;
601 UBYTE BlockPen;
603 ULONG IDCMPFlags;
604 ULONG Flags;
606 struct Gadget * FirstGadget;
607 struct Image * CheckMark;
608 UBYTE * Title;
609 struct Screen * Screen;
610 struct BitMap * BitMap;
612 WORD MinWidth;
613 WORD MinHeight;
614 UWORD MaxWidth;
615 UWORD MaxHeight;
617 UWORD Type;
619 /* ExtNewWindow specific fields */
620 struct TagItem *Extension;
623 /* Tags */
624 #define WA_Dummy (TAG_USER + 99)
625 #define WA_Left (WA_Dummy + 1)
626 #define WA_Top (WA_Dummy + 2)
627 #define WA_Width (WA_Dummy + 3)
628 #define WA_Height (WA_Dummy + 4)
629 #define WA_DetailPen (WA_Dummy + 5)
630 #define WA_BlockPen (WA_Dummy + 6)
631 #define WA_IDCMP (WA_Dummy + 7)
632 #define WA_Flags (WA_Dummy + 8)
633 #define WA_Gadgets (WA_Dummy + 9)
634 #define WA_Checkmark (WA_Dummy + 10)
635 #define WA_Title (WA_Dummy + 11)
636 #define WA_ScreenTitle (WA_Dummy + 12)
637 #define WA_CustomScreen (WA_Dummy + 13)
638 #define WA_SuperBitMap (WA_Dummy + 14)
639 #define WA_MinWidth (WA_Dummy + 15)
640 #define WA_MinHeight (WA_Dummy + 16)
641 #define WA_MaxWidth (WA_Dummy + 17)
642 #define WA_MaxHeight (WA_Dummy + 18)
643 #define WA_InnerWidth (WA_Dummy + 19)
644 #define WA_InnerHeight (WA_Dummy + 20)
645 #define WA_PubScreenName (WA_Dummy + 21)
646 #define WA_PubScreen (WA_Dummy + 22)
647 #define WA_PubScreenFallBack (WA_Dummy + 23)
648 #define WA_WindowName (WA_Dummy + 24)
649 #define WA_Colors (WA_Dummy + 25)
650 #define WA_Zoom (WA_Dummy + 26)
651 #define WA_MouseQueue (WA_Dummy + 27)
652 #define WA_BackFill (WA_Dummy + 28)
653 #define WA_RptQueue (WA_Dummy + 29)
654 #define WA_SizeGadget (WA_Dummy + 30)
655 #define WA_DragBar (WA_Dummy + 31)
656 #define WA_DepthGadget (WA_Dummy + 32)
657 #define WA_CloseGadget (WA_Dummy + 33)
658 #define WA_Backdrop (WA_Dummy + 34)
659 #define WA_ReportMouse (WA_Dummy + 35)
660 #define WA_NoCareRefresh (WA_Dummy + 36)
661 #define WA_Borderless (WA_Dummy + 37)
662 #define WA_Activate (WA_Dummy + 38)
663 #define WA_RMBTrap (WA_Dummy + 39)
664 #define WA_WBenchWindow (WA_Dummy + 40)
665 #define WA_SimpleRefresh (WA_Dummy + 41)
666 #define WA_SmartRefresh (WA_Dummy + 42)
667 #define WA_SizeBRight (WA_Dummy + 43)
668 #define WA_SizeBBottom (WA_Dummy + 44)
669 #define WA_AutoAdjust (WA_Dummy + 45)
670 #define WA_GimmeZeroZero (WA_Dummy + 46)
671 #define WA_MenuHelp (WA_Dummy + 47)
672 #define WA_NewLookMenus (WA_Dummy + 48)
673 #define WA_AmigaKey (WA_Dummy + 49)
674 #define WA_NotifyDepth (WA_Dummy + 50)
675 #define WA_Pointer (WA_Dummy + 52)
676 #define WA_BusyPointer (WA_Dummy + 53)
677 #define WA_PointerDelay (WA_Dummy + 54)
678 #define WA_TabletMessages (WA_Dummy + 55)
679 #define WA_HelpGroup (WA_Dummy + 56)
680 #define WA_HelpGroupWindow (WA_Dummy + 57)
681 #define WA_ToolBox (WA_Dummy + 58)
683 /* AROS specific tags */
685 #define WA_Priority (WA_Dummy + 100)
686 #define WA_Parent (WA_Dummy + 101)
687 #define WA_InFrontOf (WA_Dummy + 102)
688 #define WA_Behind (WA_Dummy + 103)
689 #define WA_Visible (WA_Dummy + 104)
690 #define WA_Shape (WA_Dummy + 105)
691 #define WA_ShapeHook (WA_Dummy + 106)
693 /* Flags */
694 #define WFLG_SIZEGADGET (1L<<0)
695 #define WFLG_DRAGBAR (1L<<1)
696 #define WFLG_DEPTHGADGET (1L<<2)
697 #define WFLG_CLOSEGADGET (1L<<3)
698 #define WFLG_SIZEBRIGHT (1L<<4)
699 #define WFLG_SIZEBBOTTOM (1L<<5)
701 #define WFLG_SMART_REFRESH 0
702 #define WFLG_SIMPLE_REFRESH (1L<<6)
703 #define WFLG_SUPER_BITMAP (1L<<7)
704 #define WFLG_OTHER_REFRESH ((1L<<6) | (1L<<7))
705 #define WFLG_REFRESHBITS WFLG_OTHER_REFRESH
707 #define WFLG_BACKDROP (1L<<8)
708 #define WFLG_REPORTMOUSE (1L<<9)
709 #define WFLG_GIMMEZEROZERO (1L<<10)
710 #define WFLG_BORDERLESS (1L<<11)
711 #define WFLG_ACTIVATE (1L<<12)
713 /* PRIVATE */
714 #define WFLG_WINDOWACTIVE (1L<<13)
715 #define WFLG_INREQUEST (1L<<14)
716 #define WFLG_MENUSTATE (1L<<15)
718 #define WFLG_RMBTRAP (1L<<16)
719 #define WFLG_NOCAREREFRESH (1L<<17)
720 #define WFLG_NW_EXTENDED (1L<<18)
722 #define WFLG_NEWLOOKMENUS (1L<<21)
724 /* PRIVATE */
725 #define WFLG_WINDOWREFRESH (1L<<24)
726 #define WFLG_WBENCHWINDOW (1L<<25)
727 #define WFLG_WINDOWTICKED (1L<<26)
728 #define WFLG_VISITOR (1L<<27)
729 #define WFLG_ZOOMED (1L<<28)
730 #define WFLG_HASZOOM (1L<<29)
731 #define WFLG_TOOLBOX (1L<<30)
733 #define DEFAULTMOUSEQUEUE 5
735 #define HC_GADGETHELP 1
737 /***** Images *****/
739 struct Image
741 WORD LeftEdge;
742 WORD TopEdge;
743 WORD Width;
744 WORD Height;
746 WORD Depth;
747 UWORD * ImageData;
748 UBYTE PlanePick;
749 UBYTE PlaneOnOff;
751 struct Image * NextImage;
754 /***** Border *****/
756 struct Border
758 WORD LeftEdge;
759 WORD TopEdge;
760 UBYTE FrontPen;
761 UBYTE BackPen;
762 UBYTE DrawMode;
763 BYTE Count;
764 WORD * XY;
766 struct Border * NextBorder;
769 /***** Tablets *****/
771 struct TabletData
773 UWORD td_XFraction;
774 UWORD td_YFraction;
775 ULONG td_TabletX;
776 ULONG td_TabletY;
777 ULONG td_RangeX;
778 ULONG td_RangeY;
780 struct TagItem * td_TagList; /* see below */
783 /* Tags */
784 #define TABLETA_Dummy (TAG_USER + 0x3A000)
785 #define TABLETA_TabletZ (TABLETA_Dummy + 0x01)
786 #define TABLETA_RangeZ (TABLETA_Dummy + 0x02)
787 #define TABLETA_AngleX (TABLETA_Dummy + 0x03)
788 #define TABLETA_AngleY (TABLETA_Dummy + 0x04)
789 #define TABLETA_AngleZ (TABLETA_Dummy + 0x05)
790 #define TABLETA_Pressure (TABLETA_Dummy + 0x06)
791 #define TABLETA_ButtonBits (TABLETA_Dummy + 0x07)
792 #define TABLETA_InProximity (TABLETA_Dummy + 0x08)
793 #define TABLETA_ResolutionX (TABLETA_Dummy + 0x09)
794 #define TABLETA_ResolutionY (TABLETA_Dummy + 0x0a)
796 struct TabletHookData
798 struct Screen * thd_Screen;
799 ULONG thd_Width;
800 ULONG thd_Height;
801 LONG thd_ScreenChanged;
804 /***** Keys *****/
806 #define SELECTDOWN (IECODE_LBUTTON)
807 #define SELECTUP (IECODE_LBUTTON | IECODE_UP_PREFIX)
808 #define MENUDOWN (IECODE_RBUTTON)
809 #define MENUUP (IECODE_RBUTTON | IECODE_UP_PREFIX)
810 #define MIDDLEDOWN (IECODE_MBUTTON)
811 #define MIDDLEUP (IECODE_MBUTTON | IECODE_UP_PREFIX)
812 #define ALTLEFT (IEQUALIFIER_LALT)
813 #define ALTRIGHT (IEQUALIFIER_RALT)
814 #define AMIGALEFT (IEQUALIFIER_LCOMMAND)
815 #define AMIGARIGHT (IEQUALIFIER_RCOMMAND)
816 #define AMIGAKEYS (AMIGALEFT | AMIGARIGHT)
818 #define CURSORUP 0x4C
819 #define CURSORDOWN 0x4D
820 #define CURSORRIGHT 0x4E
821 #define CURSORLEFT 0x4F
823 #define KEYCODE_Q 0x10
824 #define KEYCODE_Z 0x31
825 #define KEYCODE_X 0x32
826 #define KEYCODE_V 0x34
827 #define KEYCODE_B 0x35
828 #define KEYCODE_N 0x36
829 #define KEYCODE_M 0x37
830 #define KEYCODE_LESS 0x38
831 #define KEYCODE_GREATER 0x39
833 /* Miscellaneous */
835 struct IBox
837 WORD Left;
838 WORD Top;
839 WORD Width;
840 WORD Height;
843 struct Remember
845 struct Remember * NextRemember;
846 ULONG RememberSize;
847 UBYTE * Memory;
850 struct ColorSpec
852 WORD ColorIndex;
853 UWORD Red;
854 UWORD Green;
855 UWORD Blue;
858 #define FOREVER for(;;)
859 #define SIGN(x) (((x)>0) - ((x)<0))
860 #define NOT !
862 #define ALERT_TYPE 0x80000000
863 #define RECOVERY_ALERT 0x00000000
864 #define DEADEND_ALERT 0x80000000
866 #define AUTOFRONTPEN 0
867 #define AUTOBACKPEN 1
868 #define AUTODRAWMODE JAM2
869 #define AUTOLEFTEDGE 6
870 #define AUTORIGHTEDGE 3
871 #define AUTOITEXTFONT NULL
872 #define AUTONEXTTEXT NULL
874 /* NewDecorator structure used by ChangeDecoration
875 the three Objects (nd_Window, nd_Screen and nd_Menu
876 must be installed and point to decorator objects
877 the port is used for different issues and will be filled
878 up with DecoratorMessages */
880 struct NewDecorator
881 { struct Node nd_Node;
882 struct MsgPort *nd_Port;
883 UWORD nd_cnt;
884 STRPTR nd_Pattern;
885 STRPTR nd_IntPattern; /* Private, transformated Pattern be dos/ParsePattern() */
886 Object *nd_Window;
887 Object *nd_Screen;
888 Object *nd_Menu;
891 struct DecoratorMessage
893 struct MagicMessage dm_Message;
894 ULONG dm_Class;
895 ULONG dm_Code;
896 ULONG dm_Flags;
897 IPTR dm_Object;
900 #define DECORATOR_VERSION 0
902 /* there is only one Message in the initial decoration system
903 it will be sent to the decorator port to signal that it´ll not be used any longer
904 and may be destroyed, in that case the dm_Object contains the NewDecorator struct
905 Intuition does not touch anything, the decorator have to destroy all objects as well as the
906 NewDecorator struct. */
908 #define DM_CLASS_DESTROYDECORATOR 0x8001
910 struct ScreenNotifyMessage
912 struct MagicMessage snm_Message;
913 ULONG snm_Class; /* Notification Class ID same as SNA_Notify */
914 ULONG snm_Code; /* Code only supported for ScreenDepth() and will put the Flags in */
915 IPTR snm_Object; /* Pointer to the Object that caused this message */
916 IPTR snm_UserData; /* will be filled with SNA_UserData */
919 #define SCREENNOTIFY_VERSION 0
921 #define SNA_PubName (TAG_USER + 0x01) /* public screen name of NULL for all screens */
922 #define SNA_Notify (TAG_USER + 0x02) /* Flags to look for see below */
923 #define SNA_UserData (TAG_USER + 0x03) /* this tag will be passed to the screennotify message */
924 #define SNA_SigTask (TAG_USER + 0x04) /* if port == NULL, a sigbit will be set for this task */
925 #define SNA_SigBit (TAG_USER + 0x05) /* signal bit to set if port == NULL*/
926 #define SNA_MsgPort (TAG_USER + 0x06) /* if != NULL post mesage to this port */
927 #define SNA_Priority (TAG_USER + 0x07) /* */
928 #define SNA_Hook (TAG_USER + 0x08)
930 /* SNA_Notify (all unassigned bits are reserved for system use) */
931 #define SNOTIFY_AFTER_OPENSCREEN (1<<0) /* screen has been opened */
932 #define SNOTIFY_BEFORE_CLOSESCREEN (1<<1) /* going to close screen */
933 #define SNOTIFY_AFTER_OPENWB (1<<2) /* Workbench is open */
934 #define SNOTIFY_BEFORE_CLOSEWB (1<<3) /* Workbench is going to be closed */
935 #define SNOTIFY_AFTER_OPENWINDOW (1<<4) /* new window */
936 #define SNOTIFY_BEFORE_CLOSEWINDOW (1<<5) /* window is going to be closed */
937 #define SNOTIFY_PUBSCREENSTATE (1<<6) /* PubScreenState() */
938 #define SNOTIFY_LOCKPUBSCREEN (1<<7) /* LockPubScreen() */
939 #define SNOTIFY_SCREENDEPTH (1<<8) /* ScreenDepth() */
940 #define SNOTIFY_AFTER_CLOSESCREEN (1<<9) /* notify after CloseScreen() */
941 #define SNOTIFY_AFTER_CLOSEWINDOW (1<<10) /* dto. CloseWindow() */
942 #define SNOTIFY_BEFORE_OPENSCREEN (1<<11) /* notify before OpenScreen() */
943 #define SNOTIFY_BEFORE_OPENWINDOW (1<<12) /* dto. OpenWindow() */
944 #define SNOTIFY_BEFORE_OPENWB (1<<13) /* like OPENSCREEN */
945 #define SNOTIFY_AFTER_CLOSEWB (1<<14) /* like CLOSESCREEN */
946 #define SNOTIFY_WAIT_REPLY (1<<15) /* wait for reply before taking action */
947 #define SNOTIFY_UNLOCKPUBSCREEN (1<<16) /* UnlockPubScreen() */
948 #define SNOTIFY_BEFORE_UPDATEINTUITION (1<<17) /* Intuition is going to be updated */
949 #define SNOTIFY_AFTER_UPDATEINTUITION (1<<18) /* Intuition is updated */
950 #endif /* INTUITION_INTUITION_H */