#ifndef INTUITION_IMAGECLASS_H #define INTUITION_IMAGECLASS_H /* ** $VER: imageclass.h 44.1 (19.10.1999) ** Includes Release 44.1 ** ** definitions for the system image classes ** ** (C) Copyright 1987-1999 Amiga, Inc. ** All Rights Reserved */ /******************************************************/ #ifndef INTUITION_INTUITION_H #include <intuition/intuition.h> #endif /* * NOTE: <intuition/iobsolete.h> is included at the END of this file! */ #define CUSTOMIMAGEDEPTH (-1) /* if image.Depth is this, it's a new Image class object */ /* some convenient macros and casts */ #define GADGET_BOX( g ) ( (struct IBox *) &((struct Gadget *)(g))->LeftEdge ) #define IM_BOX( im ) ( (struct IBox *) &((struct Image *)(im))->LeftEdge ) #define IM_FGPEN( im ) ( (im)->PlanePick ) #define IM_BGPEN( im ) ( (im)->PlaneOnOff ) /******************************************************/ #define IA_Dummy (TAG_USER + 0x20000) #define IA_Left (IA_Dummy + 0x01) #define IA_Top (IA_Dummy + 0x02) #define IA_Width (IA_Dummy + 0x03) #define IA_Height (IA_Dummy + 0x04) #define IA_FGPen (IA_Dummy + 0x05) /* IA_FGPen also means "PlanePick" */ #define IA_BGPen (IA_Dummy + 0x06) /* IA_BGPen also means "PlaneOnOff" */ #define IA_Data (IA_Dummy + 0x07) /* bitplanes, for classic image, * other image classes may use it for other things */ #define IA_LineWidth (IA_Dummy + 0x08) #define IA_Pens (IA_Dummy + 0x0E) /* pointer to UWORD pens[], * ala DrawInfo.Pens, MUST be * terminated by ~0. Some classes can * choose to have this, or SYSIA_DrawInfo, * or both. */ #define IA_Resolution (IA_Dummy + 0x0F) /* packed uwords for x/y resolution into a longword * ala DrawInfo.Resolution */ /**** see class documentation to learn which *****/ /**** classes recognize these *****/ #define IA_APattern (IA_Dummy + 0x10) #define IA_APatSize (IA_Dummy + 0x11) #define IA_Mode (IA_Dummy + 0x12) #define IA_Font (IA_Dummy + 0x13) #define IA_Outline (IA_Dummy + 0x14) #define IA_Recessed (IA_Dummy + 0x15) #define IA_DoubleEmboss (IA_Dummy + 0x16) #define IA_EdgesOnly (IA_Dummy + 0x17) /**** "sysiclass" attributes *****/ #define SYSIA_Size (IA_Dummy + 0x0B) /* #define's below */ #define SYSIA_Depth (IA_Dummy + 0x0C) /* this is unused by Intuition. SYSIA_DrawInfo * is used instead for V36 */ #define SYSIA_Which (IA_Dummy + 0x0D) /* see #define's below */ #define SYSIA_DrawInfo (IA_Dummy + 0x18) /* pass to sysiclass, please */ /***** obsolete: don't use these, use IA_Pens *****/ #define SYSIA_Pens IA_Pens #define IA_ShadowPen (IA_Dummy + 0x09) #define IA_HighlightPen (IA_Dummy + 0x0A) /* New for V39: */ #define SYSIA_ReferenceFont (IA_Dummy + 0x19) /* Font to use as reference for scaling * certain sysiclass images */ #define IA_SupportsDisable (IA_Dummy + 0x1a) /* By default, Intuition ghosts gadgets itself, * instead of relying on IDS_DISABLED or * IDS_SELECTEDDISABLED. An imageclass that * supports these states should return this attribute * as TRUE. You cannot set or clear this attribute, * however. */ #define IA_FrameType (IA_Dummy + 0x1b) /* Starting with V39, FrameIClass recognizes * several standard types of frame. Use one * of the FRAME_ specifiers below. Defaults * to FRAME_DEFAULT. */ #define IA_Underscore (IA_Dummy + 0x1c) /* V44, Indicate underscore keyboard shortcut for image labels. * (UBYTE) Defaults to '_' */ #define IA_Scalable (IA_Dummy + 0x1d) /* V44, Attribute indicates this image is allowed * to/can scale its rendering. * (BOOL) Defaults to FALSE. */ #define IA_ActivateKey (IA_Dummy + 0x1e) /* V44, Used to get an underscored label shortcut. * Useful for labels attached to string gadgets. * (UBYTE) Defaults to NULL. */ #define IA_Screen (IA_Dummy + 0x1f) /* V44 Screen pointer, may be useful/required by certain classes. * (struct Screen *) */ #define IA_Precision (IA_Dummy + 0x20) /* V44 Precision value, typically pen precision but may be * used for similar custom purposes. * (ULONG) */ /** next attribute: (IA_Dummy + 0x21) **/ /*************************************************/ /* data values for SYSIA_Size */ #define SYSISIZE_MEDRES (0) #define SYSISIZE_LOWRES (1) #define SYSISIZE_HIRES (2) /* * SYSIA_Which tag data values: * Specifies which system gadget you want an image for. * Some numbers correspond to internal Intuition #defines */ #define DEPTHIMAGE (0x00L) /* Window depth gadget image */ #define ZOOMIMAGE (0x01L) /* Window zoom gadget image */ #define SIZEIMAGE (0x02L) /* Window sizing gadget image */ #define CLOSEIMAGE (0x03L) /* Window close gadget image */ #define SDEPTHIMAGE (0x05L) /* Screen depth gadget image */ #define LEFTIMAGE (0x0AL) /* Left-arrow gadget image */ #define UPIMAGE (0x0BL) /* Up-arrow gadget image */ #define RIGHTIMAGE (0x0CL) /* Right-arrow gadget image */ #define DOWNIMAGE (0x0DL) /* Down-arrow gadget image */ #define CHECKIMAGE (0x0EL) /* GadTools checkbox image */ #define MXIMAGE (0x0FL) /* GadTools mutual exclude "button" image */ /* New for V39: */ #define MENUCHECK (0x10L) /* Menu checkmark image */ #define AMIGAKEY (0x11L) /* Menu Amiga-key image */ /* Data values for IA_FrameType (recognized by FrameIClass) * * FRAME_DEFAULT: The standard V37-type frame, which has * thin edges. * FRAME_BUTTON: Standard button gadget frames, having thicker * sides and nicely edged corners. * FRAME_RIDGE: A ridge such as used by standard string gadgets. * You can recess the ridge to get a groove image. * FRAME_ICONDROPBOX: A broad ridge which is the standard imagery * for areas in AppWindows where icons may be dropped. */ #define FRAME_DEFAULT 0 #define FRAME_BUTTON 1 #define FRAME_RIDGE 2 #define FRAME_ICONDROPBOX 3 /* image message id's */ #define IM_DRAW 0x202L /* draw yourself, with "state" */ #define IM_HITTEST 0x203L /* return TRUE if click hits image */ #define IM_ERASE 0x204L /* erase yourself */ #define IM_MOVE 0x205L /* draw new and erase old, smoothly */ #define IM_DRAWFRAME 0x206L /* draw with specified dimensions */ #define IM_FRAMEBOX 0x207L /* get recommended frame around some box*/ #define IM_HITFRAME 0x208L /* hittest with dimensions */ #define IM_ERASEFRAME 0x209L /* erase with dimensions */ #define IM_DOMAINFRAME 0x20AL /* query image for its domain info (V44) */ /* image draw states or styles, for IM_DRAW */ /* Note that they have no bitwise meanings (unfortunately) */ #define IDS_NORMAL (0L) #define IDS_SELECTED (1L) /* for selected gadgets */ #define IDS_DISABLED (2L) /* for disabled gadgets */ #define IDS_BUSY (3L) /* for future functionality */ #define IDS_INDETERMINATE (4L) /* for future functionality */ #define IDS_INACTIVENORMAL (5L) /* normal, in inactive window border */ #define IDS_INACTIVESELECTED (6L) /* selected, in inactive border */ #define IDS_INACTIVEDISABLED (7L) /* disabled, in inactive border */ #define IDS_SELECTEDDISABLED (8L) /* disabled and selected */ /* oops, please forgive spelling error by jimm */ #define IDS_INDETERMINANT IDS_INDETERMINATE /* IM_FRAMEBOX */ struct impFrameBox { ULONG MethodID; struct IBox *imp_ContentsBox; /* input: relative box of contents */ struct IBox *imp_FrameBox; /* output: rel. box of encl frame */ struct DrawInfo *imp_DrInfo; /* NB: May be NULL */ ULONG imp_FrameFlags; }; #define FRAMEF_SPECIFY (1<<0) /* Make do with the dimensions of FrameBox * provided. */ /* IM_DRAW, IM_DRAWFRAME */ struct impDraw { ULONG MethodID; struct RastPort *imp_RPort; struct { WORD X; WORD Y; } imp_Offset; ULONG imp_State; struct DrawInfo *imp_DrInfo; /* NB: May be NULL */ /* these parameters only valid for IM_DRAWFRAME */ struct { WORD Width; WORD Height; } imp_Dimensions; }; /* IM_ERASE, IM_ERASEFRAME */ /* NOTE: This is a subset of impDraw */ struct impErase { ULONG MethodID; struct RastPort *imp_RPort; struct { WORD X; WORD Y; } imp_Offset; /* these parameters only valid for IM_ERASEFRAME */ struct { WORD Width; WORD Height; } imp_Dimensions; }; /* IM_HITTEST, IM_HITFRAME */ struct impHitTest { ULONG MethodID; struct { WORD X; WORD Y; } imp_Point; /* these parameters only valid for IM_HITFRAME */ struct { WORD Width; WORD Height; } imp_Dimensions; }; /* The IM_DOMAINFRAME method is used to obtain the sizing * requirements of an image object within a layout group. */ /* IM_DOMAINFRAME */ struct impDomainFrame { ULONG MethodID; struct DrawInfo *imp_DrInfo; /* DrawInfo */ struct RastPort *imp_RPort; /* RastPort to layout for */ LONG imp_Which; /* what size - min/nominal/max */ struct IBox imp_Domain; /* Resulting domain */ struct TagItem *imp_Attrs; /* Additional attributes */ }; /* Accepted vales for imp_Which. */ #define IDOMAIN_MINIMUM (0) #define IDOMAIN_NOMINAL (1) #define IDOMAIN_MAXIMUM (2) /* Include obsolete identifiers: */ #ifndef INTUITION_IOBSOLETE_H #include <intuition/iobsolete.h> #endif #endif