1 #ifndef INTUITION_INTUITION_H 2 #define INTUITION_INTUITION_H 3 4 /* 5 intuition definitions 6 7 Copyright (C) 2002-2025 The MorphOS Development Team, All Rights Reserved. 8 */ 9 10 #ifndef EXEC_TYPES_H 11 # include <exec/types.h> 12 #endif 13 14 #ifndef GRAPHICS_GFX_H 15 # include <graphics/gfx.h> 16 #endif 17 18 #ifndef GRAPHICS_CLIP_H 19 # include <graphics/clip.h> 20 #endif 21 22 #ifndef GRAPHICS_VIEW_H 23 # include <graphics/view.h> 24 #endif 25 26 #ifndef GRAPHICS_RASTPORT_H 27 # include <graphics/rastport.h> 28 #endif 29 30 #ifndef GRAPHICS_LAYERS_H 31 # include <graphics/layers.h> 32 #endif 33 34 #ifndef GRAPHICS_TEXT_H 35 # include <graphics/text.h> 36 #endif 37 38 #ifndef EXEC_PORTS_H 39 # include <exec/ports.h> 40 #endif 41 42 #ifndef DEVICES_INPUTEVENT_H 43 # include <devices/inputevent.h> 44 #endif 45 46 #ifndef UTILITY_TAGITEM_H 47 # include <utility/tagitem.h> 48 #endif 49 50 #pragma pack(2) 51 52 53 struct Menu 54 { 55 struct Menu *NextMenu; 56 WORD LeftEdge, TopEdge; 57 WORD Width, Height; 58 UWORD Flags; 59 BYTE *MenuName; 60 struct MenuItem *FirstItem; 61 62 WORD JazzX, JazzY, BeatX, BeatY; 63 }; 64 65 66 #define MENUENABLED 0x0001 67 #define MIDRAWN 0x0100 68 69 70 struct MenuItem 71 { 72 struct MenuItem *NextItem; 73 WORD LeftEdge, TopEdge; 74 WORD Width, Height; 75 UWORD Flags; 76 77 LONG MutualExclude; 78 79 APTR ItemFill; 80 81 APTR SelectFill; 82 83 BYTE Command; 84 85 struct MenuItem *SubItem; 86 87 UWORD NextSelect; 88 }; 89 90 91 #define CHECKIT 0x0001 92 #define ITEMTEXT 0x0002 93 #define COMMSEQ 0x0004 94 #define MENUTOGGLE 0x0008 95 #define ITEMENABLED 0x0010 96 97 #define HIGHFLAGS 0x00C0 98 #define HIGHIMAGE 0x0000 99 #define HIGHCOMP 0x0040 100 #define HIGHBOX 0x0080 101 #define HIGHNONE 0x00C0 102 103 #define CHECKED 0x0100 104 105 #define ISDRAWN 0x1000 106 #define HIGHITEM 0x2000 107 #define MENUTOGGLED 0x4000 108 109 110 struct Requester 111 { 112 struct Requester *OlderRequest; 113 WORD LeftEdge, TopEdge; 114 WORD Width, Height; 115 WORD RelLeft, RelTop; 116 117 struct Gadget *ReqGadget; 118 struct Border *ReqBorder; 119 struct IntuiText *ReqText; 120 UWORD Flags; 121 122 UBYTE BackFill; 123 struct Layer *ReqLayer; 124 UBYTE ReqPad1[32]; 125 126 struct BitMap *ImageBMap; 127 struct Window *RWindow; 128 129 struct Image *ReqImage; 130 UBYTE ReqPad2[32]; 131 }; 132 133 134 #define POINTREL 0x0001 135 #define PREDRAWN 0x0002 136 #define NOISYREQ 0x0004 137 #define SIMPLEREQ 0x0010 138 #define USEREQIMAGE 0x0020 139 #define NOREQBACKFILL 0x0040 140 141 #define REQOFFWINDOW 0x1000 142 #define REQACTIVE 0x2000 143 #define SYSREQUEST 0x4000 144 #define DEFERREFRESH 0x8000 145 146 147 struct Gadget 148 { 149 struct Gadget *NextGadget; 150 151 WORD LeftEdge, TopEdge; 152 WORD Width, Height; 153 154 UWORD Flags; 155 UWORD Activation; 156 157 UWORD GadgetType; 158 APTR GadgetRender; 159 APTR SelectRender; 160 161 struct IntuiText *GadgetText; 162 LONG MutualExclude; 163 APTR SpecialInfo; 164 165 UWORD GadgetID; 166 APTR UserData; 167 }; 168 169 170 struct ExtGadget 171 { 172 struct ExtGadget *NextGadget; 173 WORD LeftEdge, TopEdge; 174 WORD Width, Height; 175 UWORD Flags; 176 UWORD Activation; 177 UWORD GadgetType; 178 APTR GadgetRender; 179 APTR SelectRender; 180 struct IntuiText *GadgetText; 181 LONG MutualExclude; 182 APTR SpecialInfo; 183 UWORD GadgetID; 184 APTR UserData; 185 186 ULONG MoreFlags; 187 WORD BoundsLeftEdge; 188 WORD BoundsTopEdge; 189 WORD BoundsWidth; 190 WORD BoundsHeight; 191 }; 192 193 194 #define GFLG_GADGHIGHBITS 0x0003 195 #define GFLG_GADGHCOMP 0x0000 196 #define GFLG_GADGHBOX 0x0001 197 #define GFLG_GADGHIMAGE 0x0002 198 #define GFLG_GADGHNONE 0x0003 199 #define GFLG_GADGIMAGE 0x0004 200 201 #define GFLG_RELBOTTOM 0x0008 202 #define GFLG_RELRIGHT 0x0010 203 #define GFLG_RELWIDTH 0x0020 204 #define GFLG_RELHEIGHT 0x0040 205 206 #define GFLG_RELSPECIAL 0x4000 207 #define GFLG_SELECTED 0x0080 208 #define GFLG_DISABLED 0x0100 209 210 #define GFLG_LABELMASK 0x3000 211 #define GFLG_LABELITEXT 0x0000 212 #define GFLG_LABELSTRING 0x1000 213 #define GFLG_LABELIMAGE 0x2000 214 215 #define GFLG_TABCYCLE 0x0200 216 #define GFLG_STRINGEXTEND 0x0400 217 #define GFLG_IMAGEDISABLE 0x0800 218 219 #define GFLG_EXTENDED 0x8000 220 221 222 #define GACT_RELVERIFY 0x0001 223 #define GACT_IMMEDIATE 0x0002 224 #define GACT_ENDGADGET 0x0004 225 #define GACT_FOLLOWMOUSE 0x0008 226 227 #define GACT_RIGHTBORDER 0x0010 228 #define GACT_LEFTBORDER 0x0020 229 #define GACT_TOPBORDER 0x0040 230 #define GACT_BOTTOMBORDER 0x0080 231 #define GACT_BORDERSNIFF 0x8000 232 233 #define GACT_TOGGLESELECT 0x0100 234 #define GACT_BOOLEXTEND 0x2000 235 236 #define GACT_STRINGLEFT 0x0000 237 #define GACT_STRINGCENTER 0x0200 238 #define GACT_STRINGRIGHT 0x0400 239 #define GACT_LONGINT 0x0800 240 #define GACT_ALTKEYMAP 0x1000 241 #define GACT_STRINGEXTEND 0x2000 242 243 #define GACT_ACTIVEGADGET 0x4000 244 245 246 #define GTYP_GADGETTYPE 0xFC00 247 248 #define GTYP_SCRGADGET 0x4000 249 #define GTYP_GZZGADGET 0x2000 250 #define GTYP_REQGADGET 0x1000 251 252 #define GTYP_SYSGADGET 0x8000 253 #define GTYP_SYSTYPEMASK 0x00F0 254 255 #define GTYP_SIZING 0x0010 256 #define GTYP_WDRAGGING 0x0020 257 #define GTYP_SDRAGGING 0x0030 258 #define GTYP_WDEPTH 0x0040 259 #define GTYP_SDEPTH 0x0050 260 #define GTYP_WZOOM 0x0060 261 #define GTYP_SUNUSED 0x0070 262 #define GTYP_CLOSE 0x0080 263 264 /* V50 SYSGADGET types */ 265 #define GTYP_WDRAGGING2 0x0090 /* GTYP_WDRAGGING2 gadgets only send IDCMP_GADGETDOWN, this one also sends IDCMP_GADGETUP*/ 266 267 #define GTYP_WUPFRONT GTYP_WDEPTH 268 #define GTYP_SUPFRONT GTYP_SDEPTH 269 #define GTYP_WDOWNBACK GTYP_WZOOM 270 #define GTYP_SDOWNBACK GTYP_SUNUSED 271 272 #define GTYP_GTYPEMASK 0x0007 273 274 #define GTYP_BOOLGADGET 0x0001 275 #define GTYP_GADGET0002 0x0002 276 #define GTYP_PROPGADGET 0x0003 277 #define GTYP_STRGADGET 0x0004 278 #define GTYP_CUSTOMGADGET 0x0005 279 280 281 #define GMORE_BOUNDS 0x00000001L 282 #define GMORE_GADGETHELP 0x00000002L 283 #define GMORE_SCROLLRASTER 0x00000004L 284 285 286 struct BoolInfo 287 { 288 UWORD Flags; 289 UWORD *Mask; 290 ULONG Reserved; 291 }; 292 293 #define BOOLMASK 0x0001 294 295 296 struct PropInfo 297 { 298 UWORD Flags; 299 300 UWORD HorizPot; 301 UWORD VertPot; 302 303 UWORD HorizBody; 304 UWORD VertBody; 305 306 UWORD CWidth; 307 UWORD CHeight; 308 UWORD HPotRes, VPotRes; 309 UWORD LeftBorder; 310 UWORD TopBorder; 311 }; 312 313 314 #define AUTOKNOB 0x0001 315 #define FREEHORIZ 0x0002 316 #define FREEVERT 0x0004 317 #define PROPBORDERLESS 0x0008 318 #define KNOBHIT 0x0100 319 #define PROPNEWLOOK 0x0010 320 321 #define KNOBHMIN 6 322 #define KNOBVMIN 4 323 #define MAXBODY 0xFFFF 324 #define MAXPOT 0xFFFF 325 326 327 struct StringInfo 328 { 329 UBYTE *Buffer; 330 UBYTE *UndoBuffer; 331 WORD BufferPos; 332 WORD MaxChars; 333 WORD DispPos; 334 335 WORD UndoPos; 336 WORD NumChars; 337 WORD DispCount; 338 WORD CLeft, CTop; 339 340 struct StringExtend *Extension; 341 342 LONG LongInt; 343 344 struct KeyMap *AltKeyMap; 345 }; 346 347 348 struct IntuiText 349 { 350 UBYTE FrontPen, BackPen; 351 UBYTE DrawMode; 352 WORD LeftEdge; 353 WORD TopEdge; 354 struct TextAttr *ITextFont; 355 UBYTE *IText; 356 struct IntuiText *NextText; 357 }; 358 359 360 struct Border 361 { 362 WORD LeftEdge, TopEdge; 363 UBYTE FrontPen, BackPen; 364 UBYTE DrawMode; 365 BYTE Count; 366 WORD *XY; 367 struct Border *NextBorder; 368 }; 369 370 371 struct Image 372 { 373 WORD LeftEdge; 374 WORD TopEdge; 375 WORD Width; 376 WORD Height; 377 WORD Depth; 378 UWORD *ImageData; 379 380 UBYTE PlanePick, PlaneOnOff; 381 382 struct Image *NextImage; 383 }; 384 385 386 struct IntuiMessage 387 { 388 struct Message ExecMessage; 389 390 ULONG Class; 391 UWORD Code; 392 UWORD Qualifier; 393 APTR IAddress; 394 395 WORD MouseX, MouseY; 396 ULONG Seconds, Micros; 397 398 struct Window *IDCMPWindow; 399 400 struct IntuiMessage *SpecialLink; 401 }; 402 403 404 struct ExtIntuiMessage 405 { 406 struct IntuiMessage eim_IntuiMessage; 407 struct TabletData *eim_TabletData; 408 }; 409 410 411 #define IDCMP_SIZEVERIFY 0x00000001 412 #define IDCMP_NEWSIZE 0x00000002 413 #define IDCMP_REFRESHWINDOW 0x00000004 414 #define IDCMP_MOUSEBUTTONS 0x00000008 415 #define IDCMP_MOUSEMOVE 0x00000010 416 #define IDCMP_GADGETDOWN 0x00000020 417 #define IDCMP_GADGETUP 0x00000040 418 #define IDCMP_REQSET 0x00000080 419 #define IDCMP_MENUPICK 0x00000100 420 #define IDCMP_CLOSEWINDOW 0x00000200 421 #define IDCMP_RAWKEY 0x00000400 422 #define IDCMP_REQVERIFY 0x00000800 423 #define IDCMP_REQCLEAR 0x00001000 424 #define IDCMP_MENUVERIFY 0x00002000 425 #define IDCMP_NEWPREFS 0x00004000 426 #define IDCMP_DISKINSERTED 0x00008000 427 #define IDCMP_DISKREMOVED 0x00010000 428 #define IDCMP_WBENCHMESSAGE 0x00020000 429 #define IDCMP_ACTIVEWINDOW 0x00040000 430 #define IDCMP_INACTIVEWINDOW 0x00080000 431 #define IDCMP_DELTAMOVE 0x00100000 432 #define IDCMP_VANILLAKEY 0x00200000 433 #define IDCMP_INTUITICKS 0x00400000 434 #define IDCMP_IDCMPUPDATE 0x00800000 435 #define IDCMP_MENUHELP 0x01000000 436 #define IDCMP_CHANGEWINDOW 0x02000000 437 #define IDCMP_GADGETHELP 0x04000000 438 439 #define IDCMP_MOUSEHOVER 0x08000000 /* v50 */ 440 #define IDCMP_MOUSEOBJECTMUI 0x40000000 /* special idcmp message created by MUI */ 441 442 #define IDCMP_LONELYMESSAGE 0x80000000 443 444 445 #define CWCODE_MOVESIZE 0x0000 446 #define CWCODE_DEPTH 0x0001 447 448 #define MENUHOT 0x0001 449 #define MENUCANCEL 0x0002 450 #define MENUWAITING 0x0003 451 452 #define OKOK MENUHOT 453 #define OKABORT 0x0004 454 #define OKCANCEL MENUCANCEL 455 456 #define WBENCHOPEN 0x0001 457 #define WBENCHCLOSE 0x0002 458 459 #define HOVERSTART 0x0001 /* v50 */ 460 #define HOVERSTOP 0x0002 /* v50 */ 461 462 struct IBox 463 { 464 WORD Left; 465 WORD Top; 466 WORD Width; 467 WORD Height; 468 }; 469 470 471 struct Window 472 { 473 struct Window *NextWindow; 474 475 WORD LeftEdge, TopEdge; 476 WORD Width, Height; 477 478 WORD MouseY, MouseX; 479 480 WORD MinWidth, MinHeight; 481 UWORD MaxWidth, MaxHeight; 482 483 ULONG Flags; 484 485 struct Menu *MenuStrip; 486 487 UBYTE *Title; 488 489 struct Requester *FirstRequest; 490 491 struct Requester *DMRequest; 492 493 WORD ReqCount; 494 495 struct Screen *WScreen; 496 struct RastPort *RPort; 497 498 BYTE BorderLeft, BorderTop, BorderRight, BorderBottom; 499 struct RastPort *BorderRPort; 500 501 struct Gadget *FirstGadget; 502 503 struct Window *Parent, *Descendant; 504 505 UWORD *Pointer; 506 BYTE PtrHeight; 507 BYTE PtrWidth; 508 BYTE XOffset, YOffset; 509 510 ULONG IDCMPFlags; 511 struct MsgPort *UserPort, *WindowPort; 512 struct IntuiMessage *MessageKey; 513 514 UBYTE DetailPen, BlockPen; 515 516 struct Image *CheckMark; 517 518 UBYTE *ScreenTitle; 519 520 WORD GZZMouseX; 521 WORD GZZMouseY; 522 WORD GZZWidth; 523 WORD GZZHeight; 524 525 UBYTE *ExtData; 526 527 BYTE *UserData; 528 529 struct Layer *WLayer; 530 531 struct TextFont *IFont; 532 533 ULONG MoreFlags; 534 }; 535 536 537 #define WFLG_SIZEGADGET 0x00000001 538 #define WFLG_DRAGBAR 0x00000002 539 #define WFLG_DEPTHGADGET 0x00000004 540 #define WFLG_CLOSEGADGET 0x00000008 541 542 #define WFLG_SIZEBRIGHT 0x00000010 543 #define WFLG_SIZEBBOTTOM 0x00000020 544 545 #define WFLG_REFRESHBITS 0x000000C0 546 #define WFLG_SMART_REFRESH 0x00000000 547 #define WFLG_SIMPLE_REFRESH 0x00000040 548 #define WFLG_SUPER_BITMAP 0x00000080 549 #define WFLG_OTHER_REFRESH 0x000000C0 550 551 #define WFLG_BACKDROP 0x00000100 552 553 #define WFLG_REPORTMOUSE 0x00000200 554 555 #define WFLG_GIMMEZEROZERO 0x00000400 556 557 #define WFLG_BORDERLESS 0x00000800 558 559 #define WFLG_ACTIVATE 0x00001000 560 561 #define WFLG_RMBTRAP 0x00010000 562 #define WFLG_NOCAREREFRESH 0x00020000 563 564 #define WFLG_NW_EXTENDED 0x00040000 565 566 #define WFLG_NEWLOOKMENUS 0x00200000 567 568 #define WFLG_WINDOWACTIVE 0x00002000 569 #define WFLG_INREQUEST 0x00004000 570 #define WFLG_MENUSTATE 0x00008000 571 #define WFLG_WINDOWREFRESH 0x01000000 572 #define WFLG_WBENCHWINDOW 0x02000000 573 #define WFLG_WINDOWTICKED 0x04000000 574 575 #define WFLG_VISITOR 0x08000000 576 #define WFLG_ZOOMED 0x10000000 577 #define WFLG_HASZOOM 0x20000000 578 579 580 #define DEFAULTMOUSEQUEUE (5) 581 582 583 struct NewWindow 584 { 585 WORD LeftEdge, TopEdge; 586 WORD Width, Height; 587 588 UBYTE DetailPen, BlockPen; 589 ULONG IDCMPFlags; 590 ULONG Flags; 591 struct Gadget *FirstGadget; 592 593 struct Image *CheckMark; 594 595 UBYTE *Title; 596 struct Screen *Screen; 597 struct BitMap *BitMap; 598 599 WORD MinWidth, MinHeight; 600 UWORD MaxWidth, MaxHeight; 601 602 UWORD Type; 603 }; 604 605 struct ExtNewWindow 606 { 607 WORD LeftEdge, TopEdge; 608 WORD Width, Height; 609 610 UBYTE DetailPen, BlockPen; 611 ULONG IDCMPFlags; 612 ULONG Flags; 613 struct Gadget *FirstGadget; 614 615 struct Image *CheckMark; 616 617 UBYTE *Title; 618 struct Screen *Screen; 619 struct BitMap *BitMap; 620 621 WORD MinWidth, MinHeight; 622 UWORD MaxWidth, MaxHeight; 623 624 UWORD Type; 625 626 struct TagItem *Extension; 627 }; 628 629 630 #define WA_Dummy (TAG_USER + 99) 631 #define WA_Left /* ISG */ (WA_Dummy + 1) 632 #define WA_Top /* ISG */ (WA_Dummy + 2) 633 #define WA_Width /* ISG */ (WA_Dummy + 3) 634 #define WA_Height /* ISG */ (WA_Dummy + 4) 635 #define WA_DetailPen /* I* */ (WA_Dummy + 5) 636 #define WA_BlockPen /* I* */ (WA_Dummy + 6) 637 #define WA_IDCMP /* ISG */ (WA_Dummy + 7) 638 #define WA_Flags /* I** */ (WA_Dummy + 8) 639 #define WA_Gadgets /* I** */ (WA_Dummy + 9) 640 #define WA_Checkmark /* I** */ (WA_Dummy + 10) 641 #define WA_Title /* I** */ (WA_Dummy + 11) 642 #define WA_ScreenTitle /* I** */ (WA_Dummy + 12) 643 #define WA_CustomScreen /* I** */ (WA_Dummy + 13) 644 #define WA_SuperBitMap /* I** */ (WA_Dummy + 14) 645 #define WA_MinWidth /* ISG */ (WA_Dummy + 15) 646 #define WA_MinHeight /* ISG */ (WA_Dummy + 16) 647 #define WA_MaxWidth /* ISG */ (WA_Dummy + 17) 648 #define WA_MaxHeight /* ISG */ (WA_Dummy + 18) 649 650 #define WA_InnerWidth /* ISG */ (WA_Dummy + 19) 651 #define WA_InnerHeight /* ISG */ (WA_Dummy + 20) 652 #define WA_PubScreenName /* I** */ (WA_Dummy + 21) 653 #define WA_PubScreen /* I** */ (WA_Dummy + 22) 654 #define WA_PubScreenFallBack /* I** */ (WA_Dummy + 23) 655 #define WA_WindowName /* I** */ (WA_Dummy + 24) 656 #define WA_Colors /* I** */ (WA_Dummy + 25) 657 #define WA_Zoom /* I*G */ (WA_Dummy + 26) 658 #define WA_MouseQueue /* I** */ (WA_Dummy + 27) 659 #define WA_BackFill /* I** */ (WA_Dummy + 28) 660 #define WA_RptQueue /* I** */ (WA_Dummy + 29) 661 662 #define WA_SizeGadget /* I** */ (WA_Dummy + 30) 663 #define WA_DragBar /* I** */ (WA_Dummy + 31) 664 #define WA_DepthGadget /* I** */ (WA_Dummy + 32) 665 #define WA_CloseGadget /* I** */ (WA_Dummy + 33) 666 #define WA_Backdrop /* I** */ (WA_Dummy + 34) 667 #define WA_ReportMouse /* I** */ (WA_Dummy + 35) 668 #define WA_NoCareRefresh /* I** */ (WA_Dummy + 36) 669 #define WA_Borderless /* I** */ (WA_Dummy + 37) 670 #define WA_Activate /* I** */ (WA_Dummy + 38) 671 #define WA_RMBTrap /* I** */ (WA_Dummy + 39) 672 #define WA_WBenchWindow /* I** */ (WA_Dummy + 40) 673 #define WA_SimpleRefresh /* I** */ (WA_Dummy + 41) 674 #define WA_SmartRefresh /* I** */ (WA_Dummy + 42) 675 #define WA_SizeBRight /* I** */ (WA_Dummy + 43) 676 #define WA_SizeBBottom /* I** */ (WA_Dummy + 44) 677 678 #define WA_AutoAdjust /* I** */ (WA_Dummy + 45) 679 #define WA_GimmeZeroZero /* I** */ (WA_Dummy + 46) 680 681 #define WA_MenuHelp /* I** */ (WA_Dummy + 47) 682 #define WA_NewLookMenus /* I** */ (WA_Dummy + 48) 683 #define WA_AmigaKey /* I** */ (WA_Dummy + 49) 684 #define WA_NotifyDepth /* I** */ (WA_Dummy + 50) 685 686 #define WA_Pointer /* IS* */ (WA_Dummy + 52) 687 #define WA_BusyPointer /* ISG */ (WA_Dummy + 53) 688 #define WA_PointerDelay /* IS* */ (WA_Dummy + 54) 689 #define WA_TabletMessages /* I** */ (WA_Dummy + 55) 690 #define WA_HelpGroup /* I** */ (WA_Dummy + 56) 691 #define WA_HelpGroupWindow /* I** */ (WA_Dummy + 57) 692 693 /* new OpenWindowTags tags (added some padding there) */ 694 695 /* V50 */ 696 697 698 #define WA_ExtraTitlebarGadgets /* I** */ (WA_Dummy + 151) 699 700 /* ULONG flag field to indicate window titlebar gadgets 701 ** your app wants to use. Those are built-in in sysiclass 702 ** and use intuition skins system. 703 ** You'll be notified with normal IDCMP_GADGETUP when one 704 ** of those gadgets get pressed. 705 */ 706 707 #define WA_ExtraGadgetsStartID /* I** */ (WA_Dummy + 152) 708 709 /* All the extra gadgets have the Gadget ID's set to 710 ** ETI_Dummy + gadget id value (defined below). Set this tag 711 ** if you want to change ETI_Dummy value for your gadgets. 712 ** (for example when those ID's are already in use) 713 */ 714 715 /* instead of using WA_ExtraTitlebarGadgets... */ 716 #define WA_ExtraGadget_Iconify /* IS* */ (WA_Dummy + 153) 717 #define WA_ExtraGadget_Lock /* IS* */ (WA_Dummy + 154) 718 #define WA_ExtraGadget_MUI /* IS* */ (WA_Dummy + 155) 719 #define WA_ExtraGadget_PopUp /* IS* */ (WA_Dummy + 156) 720 #define WA_ExtraGadget_Snapshot /* IS* */ (WA_Dummy + 157) 721 #define WA_ExtraGadget_Jump /* IS* */ (WA_Dummy + 158) 722 723 #define WA_SkinInfo /* I** */ (WA_Dummy + 159) 724 725 /* Intuition skins system usualy enchances window size when 726 ** SIZEIMAGE width/height forces non-std border sizes. 727 ** If your app already knows about the border sizes (GetSkinInfo) 728 ** please add this tag to your OpenWindow call. This will switch 729 ** off window size adjustment. 730 ** ti_Data should point to SkinInfo struct allocated by GetSkinInfo. 731 ** IMPORTANT: passing WA_SkinInfo tag to OpenWindowTags means 732 ** that your app IS Skin compilant. Expect windows with non 733 ** standard titlebar height, etc when you pass it (also with NULL 734 ** tag->ti_Data!) 735 */ 736 737 #define WA_TransparentRegion /* I** */ (WA_Dummy + 160) 738 739 /* Installs the provided region as a transparent region in window's layer. 740 ** Best solution for fixed size windows. Setting WA_TransparentRegion clears 741 ** previously set WA_TransparentRegionHook! 742 ** 743 ** For more information please refer to intuition/TransparencyControl() autodoc. 744 */ 745 746 #define WA_TransparentRegionHook /* I** */ (WA_Dummy + 161) 747 748 /* Installs the provided transparent region hook. The hook is called whenever 749 ** window's layer needs updating (usualy on resize). The hook is called with 750 ** window pointer in A2 and struct TransparencyMessage * in A1 registers. 751 ** Setting this tag clears previously set WA_TransparentRegion! 752 ** 753 ** For more information please refer to intuition/TransparencyControl() autodoc. 754 */ 755 756 #define WA_UserPort /* I*G */ (WA_Dummy + 162) 757 /* Please note that ModifyIDCMP(win,NULL) WILL NOT FREE userport 758 ** when you use WA_UserPort!!! It will also NOT create a new msg 759 ** port later!!! Keep in mind that ModifyIDCMP(win,NULL) will 760 ** clear win->UserPort, but NOT free it - you need to store it and 761 ** free manually! CloseWindow() doesn't free the port as well. 762 ** IMPORTANT: remember that you need to reply all messages before 763 ** the msg port was detached from all your windows! 764 */ 765 766 /* V51 */ 767 768 #define WA_ToolbarWindow /* I** */ (WA_Dummy + 163) 769 /* Toolbar windows are windows that cannot be activated. They react 770 ** fine on IDCMP_MOUSEBUTTONS, IDCMP_MOUSEMOVE, IDCMP_INTUITICKS, but 771 ** only on those. The one and only supported intuition gadget is a 772 ** GTYP_WDRAGGING(2) gadget, rest will be ignored. Toolbar windows 773 ** are _always_ borderless. 774 */ 775 776 #define WA_PointerType /* ISG */ (WA_Dummy + 164) 777 /* Use one of intuition's built-in pointers in your window. There's 778 ** basicly everything an app should need there - please avoid using 779 ** custom pointers when possible. 780 */ 781 782 #define WA_FrontWindow /* I** */ (WA_Dummy + 165) 783 /* Window stays always on front of other windows. 784 */ 785 786 #define WA_Parent /* I*G */ (WA_Dummy + 166) 787 /* struct Window *. Makes the new window a child window of the one 788 ** passed in ti_Data. Useful for popup windows - you can set 789 ** child window position relatively to parent top/leftedge, child 790 ** windows are also depth arranged with their parent 791 ** windows, but NOT dragged (you need to care about this yourself). 792 */ 793 794 795 #define WA_Opacity /* ISG */ (WA_Dummy + 168) 796 /* ULONG. A 32bit opacity value. Use 0xFFFFFFFF for full visibility. 797 ** NOTES: GZZ windows are not supported */ 798 799 #define WA_HasAlpha /* ISG */ (WA_Dummy + 169) 800 /* BOOL. Set to TRUE to make the window use the alpha data of it's 801 ** buffer as window's opacity level 802 ** NOTES: GZZ windows are not supported */ 803 804 805 #define WA_SizeNumerator /* ISG */ (WA_Dummy + 171) 806 #define WA_SizeDenominator /* ISG */ (WA_Dummy + 172) 807 #define WA_SizeExtraWidth /* ISG */ (WA_Dummy + 173) 808 #define WA_SizeExtraHeight /* ISG */ (WA_Dummy + 174) 809 /* ULONG. The four attributes define how the window should act when 810 ** the user resizes it. This allows to define an aspect ratio in 811 ** which the window will be resized. ExtraWidth/Height attributes 812 ** specify the total size of the area which the aspect ratio resize 813 ** should not include (toolbars, window borders, etc). 814 ** To disable aspect resizing, set the Numerator and Denominator to 1. 815 ** Setting aspect resize doesn't resize the window or change it's 816 ** size limits - you have to do it yourself. */ 817 818 #define WA_HitLevel /* ISG */ (WA_Dummy + 175) 819 /* ULONG. Defines the maximum opacity value to which the window 820 ** will not be clickable. Unlike WA_Opacity, the value is in the 821 ** 0-255 range. WA_HitLevel,0 will make the window clickable if 822 ** it's opacity is != 0. Use 255 to make a fully visible window 823 ** ignore mouse clicks, hovering, etc */ 824 825 #define WA_ShadowTop /* ISG */ (WA_Dummy + 176) 826 #define WA_ShadowLeft /* ISG */ (WA_Dummy + 177) 827 #define WA_ShadowRight /* ISG */ (WA_Dummy + 178) 828 #define WA_ShadowBottom /* ISG */ (WA_Dummy + 179) 829 /* BOOL. Some skins might support window shadows in certain display 830 ** modes (depending on the hardware). In such case all windows with 831 ** a window border will be given a shadow. You can query if the 832 ** shadow is on with those attributes (to disable your own fake shadows, 833 ** etc). Set any of the tags above to false to disable a certain 834 ** part of the shadow. Set any of the tags above to true to force 835 ** shadows in a borderless window */ 836 837 #define WA_VisibleOnMaximize /* ISG */ (WA_Dummy + 180) 838 /* BOOL. When maximizing windows, intuition will take the windows 839 ** with this tag on into the account and substract them from the 840 ** area the maximized window will cover. Do note that intuition will 841 ** not take windows that are not touching any screen border into the 842 ** account. You should generally let user decide if he wants this 843 ** functionality or not */ 844 845 #define WA_Unicode /* I*G */ (WA_Dummy + 181) 846 /* BOOL. If set to true, the window menu titles are assumed to be 847 ** encoded in UTF-8. Defaults to FALSE. */ 848 849 #define WA_RealtimeLayer /* I** */ (WA_Dummy + 182) 850 /* BOOL. If set to true, the window's layers will be realtime. 851 ** OpenWindow will fail if the screen isn't composited. Window must 852 ** be a borderless one. */ 853 854 #define WA_LockMouseToScreen /* ISG */ (WA_Dummy + 183) 855 /* BOOL. If set to true, mouse will be prevented from leaving the 856 ** screen in a multi-display setup. Ignored unless the window has 857 ** successfully called WM_ObtainEvents */ 858 859 /* window methods */ 860 #define WM_Dummy WA_Dummy 861 862 #define WM_OpenMenu (WM_Dummy + 1) 863 /* void. Makes intuition open a menu for the window the method was 864 ** called on. Does nothing if there is no menu or the system 865 ** is busy. Will fail silently if the menu did not open */ 866 867 #define WM_ObtainEvents (WM_Dummy + 2) 868 /* BOOL. Obtains the events for the screen the window is at. 869 ** This is an equivalent of installing your own, high priority 870 ** inputhandler to capture input events. All IDCMPs will 871 ** be sent to your window. Clicking outside of your window 872 ** will not send events to other windows or cause their activation. 873 ** Intuition menus will not be opened. The mouse pointer will use 874 ** whatever your window has set, even if your window was not 875 ** active when you obtained the pointer. Use this solely for the 876 ** purpose of letting user pick a window, mark some area for 877 ** snapshoting, etc. Will return FALSE if another window 878 ** currently owns the events or your window already owns them. 879 ** If the method returns true, you are the pointer owner and 880 ** MUST match the call with WM_ReleaseEvents after you are done. 881 ** For security reasons, if your application crashes or refuses 882 ** to reply to IDCMP messages, the event ownership might be 883 ** silently revoked. If a new window opens or gets activated 884 ** while you have the ownership, it will be revoked and you 885 ** will receive an IDCMP_INACTIVEWINDOW idcmp (even if your window 886 ** is still active or was inactive before obtaining the pointer). 887 ** The IDCMPS that your window will actually capture are: 888 ** IDCMP_MOUSEMOVE, IDCMP_MOUSEBUTTON, IDCMP_RAWKEY, 889 ** IDCMP_VANILLAKEY, IDCMP_INTUITICKS */ 890 891 #define WM_ReleaseEvents (WM_Dummy + 3) 892 /* void. Releases the events obtained with WM_ObtainEvents. You MUST 893 ** always call it after WM_ObtainEvents returned TRUE. It is safe 894 ** to call it in case your events ownership was revoked by the 895 ** system */ 896 897 898 #define HC_GADGETHELP (1) 899 900 901 #pragma pack() 902 903 #ifndef INTUITION_SCREENS_H 904 # include <intuition/screens.h> 905 #endif 906 907 #ifndef INTUITION_PREFERENCES_H 908 # include <intuition/preferences.h> 909 #endif 910 911 #pragma pack(2) 912 913 914 struct Remember 915 { 916 struct Remember *NextRemember; 917 ULONG RememberSize; 918 UBYTE *Memory; 919 }; 920 921 922 struct ColorSpec 923 { 924 WORD ColorIndex; 925 UWORD Red; 926 UWORD Green; 927 UWORD Blue; 928 }; 929 930 struct EasyStruct 931 { 932 ULONG es_StructSize; 933 ULONG es_Flags; 934 UBYTE *es_Title; 935 UBYTE *es_TextFormat; 936 UBYTE *es_GadgetFormat; 937 }; 938 939 940 #define MENUNUM(n) ((n) & 0x1F) 941 #define ITEMNUM(n) (((n) >> 5) & 0x003F) 942 #define SUBNUM(n) (((n) >> 11) & 0x001F) 943 944 #define SHIFTMENU(n) ((n) & 0x1F) 945 #define SHIFTITEM(n) (((n) & 0x3F) << 5) 946 #define SHIFTSUB(n) (((n) & 0x1F) << 11) 947 948 #define FULLMENUNUM(menu,item,sub) (SHIFTSUB(sub) | SHIFTITEM(item) | SHIFTMENU(menu)) 949 950 #define SRBNUM(n) (0x08 - ((n) >> 4)) 951 #define SWBNUM(n) (0x08 - ((n) & 0x0F)) 952 #define SSBNUM(n) (0x01 + ((n) >> 4)) 953 #define SPARNUM(n) ((n) >> 4) 954 #define SHAKNUM(n) ((n) & 0x0F) 955 956 957 #define NOMENU 0x001F 958 #define NOITEM 0x003F 959 #define NOSUB 0x001F 960 #define MENUNULL 0xFFFF 961 962 963 #define FOREVER for(;;) 964 #ifdef __GNUC__ 965 # define SIGN(x) ({typeof(x) __tmpx__ = (x); ((__tmpx__) > 0) - ((__tmpx__) < 0);}) 966 #else /* __GNUC__ */ 967 # define SIGN(x) (((x) > 0) - ((x) < 0)) 968 #endif /* __GNUC__ */ 969 #define NOT ! 970 971 972 #define CHECKWIDTH 19 973 #define COMMWIDTH 27 974 #define LOWCHECKWIDTH 13 975 #define LOWCOMMWIDTH 16 976 977 978 #define ALERT_TYPE 0x80000000 979 #define RECOVERY_ALERT 0x00000000 980 #define DEADEND_ALERT 0x80000000 981 982 983 #define AUTOFRONTPEN 0 984 #define AUTOBACKPEN 1 985 #define AUTODRAWMODE JAM2 986 #define AUTOLEFTEDGE 6 987 #define AUTOTOPEDGE 3 988 #define AUTOITEXTFONT NULL 989 #define AUTONEXTTEXT NULL 990 991 992 #define SELECTUP (IECODE_LBUTTON | IECODE_UP_PREFIX) 993 #define SELECTDOWN (IECODE_LBUTTON) 994 #define MENUUP (IECODE_RBUTTON | IECODE_UP_PREFIX) 995 #define MENUDOWN (IECODE_RBUTTON) 996 #define MIDDLEUP (IECODE_MBUTTON | IECODE_UP_PREFIX) 997 #define MIDDLEDOWN (IECODE_MBUTTON) 998 #define ALTLEFT (IEQUALIFIER_LALT) 999 #define ALTRIGHT (IEQUALIFIER_RALT) 1000 #define AMIGALEFT (IEQUALIFIER_LCOMMAND) 1001 #define AMIGARIGHT (IEQUALIFIER_RCOMMAND) 1002 #define AMIGAKEYS (AMIGALEFT | AMIGARIGHT) 1003 1004 #define CURSORUP 0x4C 1005 #define CURSORLEFT 0x4F 1006 #define CURSORRIGHT 0x4E 1007 #define CURSORDOWN 0x4D 1008 #define KEYCODE_Q 0x10 1009 #define KEYCODE_Z 0x31 1010 #define KEYCODE_X 0x32 1011 #define KEYCODE_V 0x34 1012 #define KEYCODE_B 0x35 1013 #define KEYCODE_N 0x36 1014 #define KEYCODE_M 0x37 1015 #define KEYCODE_LESS 0x38 1016 #define KEYCODE_GREATER 0x39 1017 1018 1019 #define TABLETA_Dummy (TAG_USER + 0x3A000) 1020 #define TABLETA_TabletZ (TABLETA_Dummy + 1) 1021 #define TABLETA_RangeZ (TABLETA_Dummy + 2) 1022 #define TABLETA_AngleX (TABLETA_Dummy + 3) 1023 #define TABLETA_AngleY (TABLETA_Dummy + 4) 1024 #define TABLETA_AngleZ (TABLETA_Dummy + 5) 1025 #define TABLETA_Pressure (TABLETA_Dummy + 6) 1026 #define TABLETA_ButtonBits (TABLETA_Dummy + 7) 1027 #define TABLETA_InProximity (TABLETA_Dummy + 8) 1028 #define TABLETA_ResolutionX (TABLETA_Dummy + 9) 1029 #define TABLETA_ResolutionY (TABLETA_Dummy + 10) 1030 1031 1032 struct TabletData 1033 { 1034 UWORD td_XFraction, td_YFraction; 1035 ULONG td_TabletX, td_TabletY; 1036 ULONG td_RangeX, td_RangeY; 1037 1038 struct TagItem *td_TagList; 1039 }; 1040 1041 1042 struct TabletHookData 1043 { 1044 struct Screen *thd_Screen; 1045 1046 ULONG thd_Width; 1047 ULONG thd_Height; 1048 1049 LONG thd_ScreenChanged; 1050 }; 1051 1052 1053 #pragma pack() 1054 1055 #ifndef INTUITION_IOBSOLETE_H 1056 # include <intuition/iobsolete.h> 1057 #endif 1058 1059 #endif /* INTUITION_INTUITION_H */