home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / Reference / DevCon / Milan_1991 / Devcon91.4 / AppShell / include / libraries / appobjects.h next >
Encoding:
C/C++ Source or Header  |  1992-09-01  |  15.9 KB  |  505 lines

  1. #ifndef LIBRARIES_APPOBJECTS_H
  2. #define    LIBRARIES_APPOBJECTS_H
  3.  
  4. /* appobjects.h
  5.  *
  6.  */
  7.  
  8. #ifndef EXEC_TYPES_H
  9. #include <exec/types.h>
  10. #endif
  11.  
  12. #ifndef INTUITION_INTUITION_H
  13. #include <intuition/intuition.h>
  14. #endif
  15.  
  16. #ifndef    INTUITION_CLASSES_H
  17. #include <intuition/classes.h>
  18. #endif
  19.  
  20. #ifndef INTUITION_CLASSUSR_H
  21. #include <intuition/classusr.h>
  22. #endif
  23.  
  24. #ifndef INTUITION_GADGETCLASS_H
  25. #include <intuition/gadgetclass.h>
  26. #endif
  27.  
  28. #ifndef INTUITION_IMAGECLASS_H
  29. #include <intuition/imageclass.h>
  30. #endif
  31.  
  32. #ifndef UTILITY_TAGITEM_H
  33. #include <utility/tagitem.h>
  34. #endif
  35.  
  36. #ifndef LIBRARIES_APPSHELL_H
  37. #include <libraries/appshell.h>
  38. #endif
  39.  
  40. /* Normal low-overhead IDCMP messages */
  41. #define    IDCMP_flagF (CLOSEWINDOW | RAWKEY | MOUSEBUTTONS \
  42.              | GADGETDOWN | GADGETUP | MENUPICK | ACTIVEWINDOW \
  43.              | INACTIVEWINDOW | IDCMPUPDATE | IDCMP_MENUHELP)
  44.  
  45. /* IDCMP messages used when a hold or drag gadget is active */
  46. #define    IDCMP_flagS (RAWKEY | MOUSEMOVE | MOUSEBUTTONS \
  47.              | INTUITICKS | GADGETUP | ACTIVEWINDOW \
  48.              | INACTIVEWINDOW | IDCMPUPDATE | IDCMP_MENUHELP)
  49.  
  50. /* Normal window flags */
  51. #define    DEFWINFLAGS (WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | ACTIVATE \
  52.              | REPORTMOUSE | SMART_REFRESH)
  53.  
  54. /* Often used qualifier pairs */
  55. #ifndef SHIFTED
  56. #define SHIFTED (IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT)
  57. #define ALTED (IEQUALIFIER_LALT | IEQUALIFIER_RALT)
  58. #endif
  59.  
  60. /*--------------*/
  61. /* Object Types */
  62. /*--------------*/
  63.  
  64. /* GadTools gadgets */
  65. #define    OBJ_Generic    1L
  66. #define    OBJ_Button    2L
  67. #define    OBJ_Checkbox    3L
  68. #define    OBJ_Integer    4L
  69. #define    OBJ_Listview    5L
  70. #define    OBJ_MX        6L
  71. #define    OBJ_Number    7L
  72. #define    OBJ_Cycle    8L
  73. #define    OBJ_Palette    9L
  74. #define    OBJ_Scroller    10L
  75. #define    OBJ_reserved1    11L        /* reserved for system use */
  76. #define    OBJ_Slider    12L
  77. #define    OBJ_String    13L
  78. #define    OBJ_Text    14L
  79.  
  80. /* other gadgets */
  81. #define    OBJ_Display    30L
  82. #define    OBJ_Select    31L
  83. #define    OBJ_Dropbox    32L
  84. #define    OBJ_GImage    33L
  85. #define    OBJ_MultiText    34L
  86. #define    OBJ_reserved2    35L
  87. #define    OBJ_DirString    36L
  88. #define    OBJ_DirNumeric    37L
  89. #define    OBJ_boopsi    38L
  90. #define    OBJ_View    39L        /* View gadget */
  91. #define    OBJ_ListView    40L        /* View gadget with scrollbars */
  92.  
  93. /* images */
  94. #define    OBJ_Image    50L
  95. #define    OBJ_Column    51L        /* Can only be used with OBJ_View
  96.                      * and OBJ_ListView */
  97.  
  98. /* borders */
  99. #define    OBJ_reserved3    60L
  100. #define    OBJ_BevelIn    61L
  101. #define    OBJ_BevelOut    62L
  102. #define    OBJ_DblBevelIn    63L
  103. #define    OBJ_DblBevelOut    64L
  104.  
  105. /* other object types */
  106. #define    OBJ_Screen    70L        /* screen information */
  107. #define    OBJ_Window    71L        /* window information */
  108. #define    OBJ_Group    72L        /* Layout group */
  109. #define    OBJ_VFill    73L        /* Vertical fill */
  110. #define    OBJ_HFill    74L        /* Horizontal fill */
  111. #define    OBJ_VGroup    75L        /* Vertical layout group */
  112. #define    OBJ_HGroup    76L        /* Horizontal layout group */
  113. #define    OBJ_MGroup    77L        /* Mutual Exclude group */
  114.  
  115. /* Intuition user-interface object (gadget, border, text, etc... Currently
  116.  * the AppShell has stolen the UserData fields of both gadgets and windows.
  117.  * o_Key is used to assign a key to a GadTools object.  Our boopsi classes
  118.  * understand the _ sign in a label as indicating the key assigned to a
  119.  * gadget. */
  120. struct Object
  121. {
  122.     struct Object *o_NextObject;/* next object in array */
  123.     WORD o_Group;        /* Object group */
  124.     WORD o_Priority;        /* Inclusion priority of object */
  125.     ULONG o_Type;        /* type */
  126.     ULONG o_ObjectID;        /* ID */
  127.     ULONG o_Flags;        /* see defines below */
  128.     UWORD o_Key;        /* hotkey */
  129.     STRPTR o_Name;        /* name */
  130.     ULONG o_LabelID;        /* label index into text catalogue */
  131.     struct IBox o_Outer;    /* size w/label */
  132.     struct TagItem *o_Tags;    /* tags for object */
  133.     APTR o_UserData;        /* user data for object */
  134. };
  135.  
  136. /* Use this for a system computed o_Outer edge, such as the left edge of
  137.  * all buttons in a horizontal group that get evenly spaced relativity. */
  138. #define    FLOATING_EDGE    (~0)
  139.  
  140. /* To indicate that this gadget is the default gadget to activate when the
  141.  * window gets activated. */
  142. #define    APSH_OBJF_ACTIVATE    (1L<<0)
  143.  
  144. /* To indicate that a gadget is used to close a window, set the following
  145.  * flag.  The window is closed after any functions for the gadget have
  146.  * completed. */
  147. #define    APSH_OBJF_CLOSEWINDOW    (1L<<1)
  148.  
  149. /* Don't adjust the gadget rectangle.  Don't use this flag unless your
  150.  * absolutely sure you know what you're doing.  Don't use it. */
  151. #define    APSH_OBJF_NOADJUST    (1L<<2)
  152.  
  153. /* Used to indicate that the object is draggable, like an icon. This flag
  154.  * should only applied to the OBJ_GImage object type.  Any other object
  155.  * type will provide unpredictable results. */
  156. #define    APSH_OBJF_DRAGGABLE    (1L<<3)
  157.  
  158. /* OBSOLETE!! */
  159. #define    APSH_OBJF_LOCALTEXT    (1L<<4)
  160.  
  161. /* Don't scale the gadget rectangle.  The main use for this flag is for
  162.  * objects that are going into the border. */
  163. #define    APSH_OBJF_NOSCALE    (1L<<5)
  164.  
  165. /* Indicate that the text is to come from the global text table, when there
  166.  * is a local window text table. */
  167. #define    APSH_OBJF_GLOBALTEXT    (1L<<6)
  168.  
  169. /* Object (usually only for group objects) gets an engraved border. */
  170. #define    APSH_OBJF_BORDER    (1L<<7)
  171.  
  172. /* Object isn't a gadget, so don't add to GList. */
  173. #define    APSH_OBJF_NOGADGET    (1L<<8)
  174.  
  175. /* This is used to describe the environment to the layout engine */
  176. struct ObjectInfo
  177. {
  178.     /* The following fields must be supplied initially */
  179.     struct Screen *oi_Screen;        /* Screen that object resides in */
  180.     struct TextAttr *oi_TextAttr;    /* Text attribute of font to use */
  181.     struct NewWindow *oi_NewWindow;    /* Pointer to NewWindow */
  182.     struct TagItem *oi_WindowAttrs;    /* NewWindow attributes */
  183.     struct IBox *oi_ZoomBox;        /* Pointer to ZoomBox */
  184.     STRPTR *oi_TextTable;        /* Pointer to text table to use */
  185.     STRPTR *oi_LocalText;        /* Pointer to the local text table */
  186.     struct Object *oi_Objects;        /* List of objects */
  187.  
  188.     /* The remaining fields are maintained by the system */
  189.     struct Rectangle oi_View;        /* View rectangle */
  190.     struct Gadget *oi_Gadgets;        /* Gadget list to AddGList to window */
  191.     struct Gadget *oi_GList;        /* PRIVATE Gadget work list */
  192.     struct Gadget *oi_Active;        /* Active/Activate gadget */
  193.     struct DrawInfo *oi_DrInfo;        /* Rendering information */
  194.     VOID *oi_VisualInfo;        /* GadTools visual information */
  195.     struct TextFont *oi_TextFont;    /* Font to use */
  196.     struct Window *oi_Window;        /* Window that object resides in */
  197.     struct RastPort oi_RastPort;    /* PRIVATE RastPort for rendering */
  198.     UWORD oi_Size;            /* SYSIA_Size of screen */
  199.     UWORD oi_PriorKey;            /* Prior keystroke */
  200.     struct ObjectNode *oi_PriorObj;    /* Prior keystroke object */
  201.     struct List oi_ObjList;        /* List of objects */
  202.     ULONG oi_Flags;
  203.     struct IBox oi_WinBox;        /* Window rectangle */
  204.     struct IBox oi_Zoom;        /* Zoom rectangle */
  205.     APTR oi_UserData;            /* Extra user information */
  206.     APTR oi_SystemData;            /* Extra system information */
  207. };
  208.  
  209. /* This environment contains relative GadTool objects */
  210. #define    AOIF_REMOVE    (1L<<0)
  211.  
  212. /* Gadget list has been removed */
  213. #define    AOIF_REMOVED    (1L<<1)
  214.  
  215. /* This environment contains GadTool objects */
  216. #define    AOIF_GADTOOLS    (1L<<2)
  217.  
  218. /* State information: we're working on objects in an opened window */
  219. #define    AOIF_REFRESH    (1L<<3)
  220. #define    AOIF_TAILOR    (1L<<4)
  221.  
  222. /* Information required for each Intuition object in the list. */
  223. struct ObjectNode
  224. {
  225.     struct Node on_Node;        /* Node in the object list */
  226.     struct Object on_Object;        /* Embedded object structure */
  227.     struct TagItem *on_OTags;        /* Reserved for system use */
  228.     struct IBox on_OBox;        /* Reserved for system use */
  229.     struct Gadget *on_Gadget;        /* Main gadget for object */
  230.     ULONG on_Flags;            /* Extended flags */
  231.     ULONG on_Funcs[10];            /* Function ID's */
  232.     ULONG on_Current;            /* Current function ID */
  233.     APTR on_Image;            /* Image for object */
  234.     APTR on_ObjData;            /* Object data */
  235.     APTR on_ExtraData;            /* Extra information for object */
  236.     APTR on_UserData;            /* Extra user information */
  237.     APTR on_SystemData;            /* Extra system information */
  238. };
  239.  
  240. /* Gadget is selected by keystroke */
  241. #define    ONF_KEYSELECT    (1L<<0)
  242.  
  243. /* Reserved for system use */
  244. #define    ONF_CONVERTED    (1L<<1)
  245. #define    ONF_DELETED    (1L<<2)
  246.  
  247. /* on_SystemData points to an ObjectData structure */
  248. #define    ONF_OBJDATA    (1L<<3)
  249.  
  250. /* Extended Gadget function array pointers */
  251. #define    EG_DOWNPRESS    0
  252. #define    EG_HOLD        1
  253. #define    EG_RELEASE    2
  254. #define    EG_DBLCLICK    3
  255. #define    EG_ABORT    4
  256. #define    EG_ALTHIT    5
  257. #define    EG_SHIFTHIT    6
  258. #define    EG_CREATE    7
  259. #define    EG_DELETE    8
  260. #define    EG_UPDATE    9
  261.  
  262. /* Data structure for Listview, Cycle, and MutualExclude */
  263. struct ObjectData
  264. {
  265.     APTR od_Label;            /* Pointer to the label(s) */
  266.     LONG od_Current;            /* Current value */
  267.     LONG od_Top;            /* Top of the view */
  268.     LONG od_View;            /* Number that fit in view */
  269.     LONG od_Max;            /* Number of labels */
  270.     LONG od_Flags;
  271.     APTR od_UserData;
  272.     APTR od_SystemData;
  273. };
  274.  
  275. /* Attributes for our gadgets */
  276. #define    CGTA_Dummy        (TAG_USER + 0x32100)
  277. #define    CGTA_reserved1        (CGTA_Dummy + 1)
  278. #define    CGTA_reserved2        (CGTA_Dummy + 2)
  279. #define    CGTA_HighPens        (CGTA_Dummy + 3)    /* Highlight pens */
  280. #define    CGTA_NextField        (CGTA_Dummy + 4)    /* OBSOLETE: TAB to */
  281. #define    CGTA_PrevField        (CGTA_Dummy + 5)    /* OBSOLETE: SHIFT-TAB to */
  282. #define    CGTA_Total        (CGTA_Dummy + 6)    /* Maximum rows */
  283. #define    CGTA_Visible        (CGTA_Dummy + 7)    /* Visible rows */
  284. #define    CGTA_Top        (CGTA_Dummy + 8)    /* Top row */
  285. #define    CGTA_List        (CGTA_Dummy + 9)    /* History list */
  286. #define CGTA_Increment        (CGTA_Dummy + 23)    /* Increment value */
  287. #define CGTA_Decrement        (CGTA_Dummy + 24)    /* Decrement value */
  288. #define    CGTA_LabelInfo        (CGTA_Dummy + 100)    /* Label information */
  289. #define    CGTA_Keystroke        (CGTA_Dummy + 101)    /* Inquire keystroke */
  290. #define    CGTA_Borderless        (CGTA_Dummy + 102)    /* No border */
  291. #define    CGTA_DisplayOnly    (CGTA_Dummy + 103)    /* Display only */
  292. #define    CGTA_MinWidth        (CGTA_Dummy + 104)    /* Minimum width */
  293. #define    CGTA_MinHeight        (CGTA_Dummy + 105)    /* Minimum height */
  294. #define    CGTA_MaxWidth        (CGTA_Dummy + 106)    /* Maximum width */
  295. #define    CGTA_MaxHeight        (CGTA_Dummy + 107)    /* Maximum height */
  296. #define    CGTA_FrameInfo        (CGTA_Dummy + 108)    /* Frame information */
  297. #define    CGTA_Constraint        (CGTA_Dummy + 109)    /* Sizing contraints */
  298. #define    CGTA_Nominal        (CGTA_Dummy + 110)    /* Nominal size */
  299. #define    CGTA_TextAttr        (CGTA_Dummy + 111)    /* Font to use for label */
  300. #define    CGTA_Master        (CGTA_Dummy + 112)    /* Main gadget in group */
  301. #define    CGTA_Transparent    (CGTA_Dummy + 113)    /* Not hit-able */
  302. #define    CGTA_InBorder        (CGTA_Dummy + 114)    /* IMAGE is in border */
  303. #define    CGTA_Parent        (CGTA_Dummy + 115)    /* Label's parent */
  304.  
  305. /* CGTA_LabelInfo flags */
  306. #define    LABEL_RIGHT        0x0001
  307. #define    LABEL_BOTTOM        0x0002
  308. #define    LABEL_VCENTER        0x0004
  309. #define    LABEL_HCENTER        0x0008
  310. #define    LABEL_CENTER        (LABEL_VCENTER | LABEL_HCENTER)
  311. #define    LIBITS            (LABEL_RIGHT | LABEL_BOTTOM | LABEL_CENTER)
  312.  
  313. /* Use the text highlight pen for text labels */
  314. #define    LABEL_HIGHLIGHT        0x0010
  315.  
  316. /* Don't add a border to the gadget */
  317. #define    CGTF_BORDERLESS        0x0020
  318.  
  319. /* Make the gadget readonly */
  320. #define    CGTF_READONLY        0x0040
  321.  
  322. /* CGTA_FrameInfo flags */
  323. #define    FRAME_RIGHT        0x0100
  324. #define    FRAME_BOTTOM        0x0200
  325. #define    FRAME_VCENTER        0x0400
  326. #define    FRAME_HCENTER        0x0800
  327. #define    FRAME_CENTER        (FRAME_VCENTER | FRAME_HCENTER)
  328. #define    FIBITS            (FRAME_RIGHT | FRAME_BOTTOM | FRAME_CENTER)
  329.  
  330. #define    CGTF_TRANSPARENT    0x1000
  331.  
  332. #define    NOT_SET            (~0)
  333.  
  334. /* Additional label placement flags */
  335. #define    PLACETEXT_ABOVEC    0x0040
  336. #define    PLACETEXT_ABOVEI    0x0080
  337. #define    PLACETEXT_BELOWI    0x0100
  338. #define    PLACETEXT_BELOWC    0x0200
  339.  
  340. /* Attached to the SpecialInfo field of the ListView gadget.  This is
  341.  * READONLY, all changes MUST be done with SetGadgetAttrs() */
  342. struct LVSpecialInfo
  343. {
  344.     struct List *si_List;    /* Pointer to list of structures */
  345.     struct IBox si_View;    /* View rectangle */
  346.     ULONG si_Flags;
  347.  
  348.     UWORD si_UnitWidth;        /* Width of each horizontal unit */
  349.     UWORD si_UnitHeight;    /* Height of each vertical unit */
  350.  
  351.     LONG si_TopVert;        /* Vertical top */
  352.     LONG si_VisibleVert;    /* Number of visible vertical units */
  353.     LONG si_TotalVert;        /* Total number of vertical units */
  354.  
  355.     LONG si_TopHoriz;        /* Horizontal top */
  356.     LONG si_VisibleHoriz;    /* Number of visible horizontal units */
  357.     LONG si_TotalHoriz;        /* Total number of horizontal units */
  358.  
  359.     /* Anchor point */
  360.     struct
  361.     {
  362.     LONG X;
  363.     LONG Y;
  364.     } si_Anchor;
  365.  
  366.     /* Point that the mouse is currently over */
  367.     struct
  368.     {
  369.     LONG X;
  370.     LONG Y;
  371.     } si_Over;
  372.  
  373. };
  374.  
  375. /* These are global flags */
  376. #define    LVSF_HORIZONTAL      0x0002    /* Horizontal scroll bar */
  377. #define    LVSF_VERTICAL      0x0004    /* Vertical scroll bar */
  378. #define    LVSF_BORDERLESS      0x0008    /* No frame around view */
  379. #define    LVSF_READONLY      0x0010    /* Listview is read-only */
  380. #define    LVSF_MULTISELECT  0x0020    /* Listview is multiselect. Sets
  381.                      * LNF_SELECTED if item is selected. */
  382. #define    LVSF_DRAGGING      0x0100    /* MultiSelect dragging */
  383. #define    LVSF_SELECT      0x0200    /* Turn line on */
  384. #define    LVSF_HIGHLIGHT      0x0400    /* Toggled (PRIVATE) */
  385.  
  386. #define    LNF_SELECTED      0x01        /* Set in lvn_Node.ln_Type if selected */
  387. #define    LNF_TEMPORARY      0x02        /* (PRIVATE) */
  388. #define    LNF_REFRESH      0x04        /* (PRIVATE) */
  389.  
  390. /* Tags used by the ListView class */
  391. #define    AOLV_Dummy        (TAG_USER + 0x32500)
  392.  
  393. #define    AOLV_Borderless        (AOLV_Dummy + 1)
  394. #define    AOLV_Freedom        (AOLV_Dummy + 2)
  395. #define    AOLV_UnitWidth        (AOLV_Dummy + 3)
  396. #define    AOLV_UnitHeight        (AOLV_Dummy + 4)
  397. #define    AOLV_ReadOnly        (AOLV_Dummy + 5)
  398. #define    AOLV_MultiSelect    (AOLV_Dummy + 6)
  399. #define    AOLV_SpecialInfo    (AOLV_Dummy + 7)
  400. #define    AOLV_TextAttr        (AOLV_Dummy + 8)
  401. #define    AOLV_View        (AOLV_Dummy + 9) /* View size (IBox) */
  402.  
  403. #define    AOLV_TopVert        (AOLV_Dummy + 10)
  404. #define    AOLV_VisibleVert    (AOLV_Dummy + 11)
  405. #define    AOLV_TotalVert        (AOLV_Dummy + 12)
  406. #define    AOLV_VertArrowSize    (AOLV_Dummy + 13)
  407. #define    AOLV_VertArrow        (AOLV_Dummy + 14)
  408.  
  409. #define    AOLV_TopHoriz        (AOLV_Dummy + 20)
  410. #define    AOLV_VisibleHoriz    (AOLV_Dummy + 21)
  411. #define    AOLV_TotalHoriz        (AOLV_Dummy + 22)
  412. #define    AOLV_HorizArrowSize    (AOLV_Dummy + 23)
  413. #define    AOLV_HorizArrow        (AOLV_Dummy + 24)
  414.  
  415. /* The following tags are for ListViewImages (columns) */
  416. #define    AOLV_List        (AOLV_Dummy + 30)
  417. #define    AOLV_Position        (AOLV_Dummy + 31) /* column position */
  418. #define    AOLV_ColumnWidth    (AOLV_Dummy + 32) /* % of view */
  419. #define    AOLV_Title        (AOLV_Dummy + 33) /* Title of column */
  420. #define    AOLV_Justification    (AOLV_Dummy + 34) /* Use flags */
  421. #define    AOLV_ControlHeight    (AOLV_Dummy + 35)
  422. #define    AOLV_LabelHeight    (AOLV_Dummy + 36)
  423.  
  424. /* AOLV_Justification flags */
  425. #define    AOLVF_LEFT        0x00 /* Left justify within column */
  426. #define    AOLVF_RIGHT        0x10 /* Right justify within column */
  427. #define    AOLVF_CENTER        0x20 /* Center within column. Not Impl. */
  428.  
  429. /* The following two tags are used to display fields from a structure.  The
  430.  * very first field MUST be an embedded struct Node. */
  431. #define    AOLV_FieldOffset    (AOLV_Dummy + 35) /* Offset of field in structure */
  432. #define    AOLV_FieldType        (AOLV_Dummy + 36) /* Field type */
  433.  
  434. /* Field types, for use with AOLV_FieldType */
  435. #define    FT_NODENAME    0
  436. #define    FT_STRING    1
  437. #define    FT_STRPTR    2
  438. #define    FT_LONG        3
  439. #define    FT_ULONG    4
  440. #define    FT_SHORT    5
  441. #define    FT_USHORT    6
  442. #define    FT_BYTE        7
  443. #define    FT_UBYTE    8
  444. #define    FT_BOOL        9
  445. #define    FT_IMAGE    10
  446.  
  447. /* Additional messages */
  448. #define    LV_ADDCOLUMN        (0x1000 + OM_ADDMEMBER)
  449. #define    LV_REMCOLUMN        (0x1000 + OM_REMMEMBER)
  450.  
  451. /* LV_ADDCOLUMN */
  452. struct opAddColumn
  453. {
  454.     ULONG MethodID;
  455.     Object *opac_Object;    /* Column to add */
  456.     Object *opac_Control;    /* Control gadget */
  457. };
  458.  
  459. #define    LV_DRAWCOLUMN        (0x1000 + IM_DRAWFRAME)
  460. struct impDrawColumn
  461. {
  462.     ULONG MethodID;
  463.     struct RastPort *imp_RPort;
  464.  
  465.     /* Upper left of gadget that column belongs to */
  466.     struct
  467.     {
  468.     WORD X;
  469.     WORD Y;
  470.     } imp_Offset;
  471.  
  472.     ULONG imp_State;
  473.     struct DrawInfo *imp_DrInfo;
  474.  
  475.     struct
  476.     {
  477.     WORD Width;
  478.     WORD Height;
  479.     } imp_Dimensions;
  480.  
  481.     ULONG imp_Mode;        /* Drawing mode */
  482.  
  483.     /* Anchor point */
  484.     struct
  485.     {
  486.     LONG X;
  487.     LONG Y;
  488.     } imp_Anchor;
  489.  
  490.     /* Point that the mouse is currently over */
  491.     struct
  492.     {
  493.     LONG X;
  494.     LONG Y;
  495.     } imp_Over;
  496.  
  497. };
  498.  
  499. /* This is the drawing mode */
  500. #define    IDSM_TOGGLE    0
  501. #define    IDSM_REDRAW    1
  502. #define    IDSM_UPDATE    2
  503.  
  504. #endif /* LIBRARIES_APPOBJECTS_H */
  505.