home *** CD-ROM | disk | FTP | other *** search
- /*************************************
- * *
- * Gadgets v2.0 *
- * by Torsten Jürgeleit in 05/91 *
- * *
- * Defines, structs and protos *
- * *
- *************************************/
-
- #ifndef GADGET_LIST_H
- #define GADGET_LIST_H
-
- /* Defines for gadgets */
-
- #define ISUP_ID ((ULONG)'I' << 24 | (ULONG)'S' << 16 | 'U' << 8 | 'P')
-
- #define GADGET_DATA_TYPE_BUTTON 1 /* button gadget */
- #define GADGET_DATA_TYPE_CHECK 2 /* check mark gadget */
- #define GADGET_DATA_TYPE_MX 3 /* mutual exclude gadget */
- #define GADGET_DATA_TYPE_STRING 4 /* string input gadget */
- #define GADGET_DATA_TYPE_INTEGER 5 /* integer input gadget */
- #define GADGET_DATA_TYPE_SLIDER 6 /* slider gadget */
- #define GADGET_DATA_TYPE_SCROLLER 7 /* scroller gadget */
- #define GADGET_DATA_TYPE_CYCLE 8 /* cycle gadget */
- #define GADGET_DATA_TYPE_COUNT 9 /* count gadget */
- #define GADGET_DATA_TYPE_LISTVIEW 10 /* list view gadget */
- #define GADGET_DATA_TYPE_PALETTE 11 /* palette gadget */
-
- #define MAX_GADGET_DATA_TYPE GADGET_DATA_TYPE_PALETTE
-
- #define GADGET_DATA_FLAG_DISABLED (1L << 0) /* gadget disabled (ghosted) - default enabled */
- #define GADGET_DATA_FLAG_NO_BORDER (1L << 1) /* no gadget border - default with border */
- #define GADGET_DATA_FLAG_HIGH_COMP (1L << 2) /* highliting by complement - default by select border */
- #define GADGET_DATA_FLAG_ORIENTATION_VERT (1L << 3) /* vertical orientation - default horizontal */
- #define GADGET_DATA_FLAG_HOT_KEY (1L << 4) /* hot key given - default none */
- #define GADGET_DATA_FLAG_TEXT_LEFT (1L << 5) /* place text left of gadget */
- #define GADGET_DATA_FLAG_TEXT_RIGHT (1L << 6) /* place text right of gadget */
- #define GADGET_DATA_FLAG_TEXT_ABOVE (1L << 7) /* place text above of gadget */
- #define GADGET_DATA_FLAG_TEXT_BELOW (1L << 8) /* place text below of gadget */
- #define GADGET_DATA_FLAG_TEXT_COLOR2 (1L << 9) /* use 2nd text render pen for gadget text */
- #define GADGET_DATA_FLAG_BUTTON_TOGGLE (1L << 10) /* button gadgets: toggle button - default no toggle */
- #define GADGET_DATA_FLAG_BUTTON_IMAGE (1L << 11) /* button gadgets: render image - default no image */
- #define GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE (1L << 12) /* input gadgets: acivate after GADGETUP next or previous input gadget */
- #define GADGET_DATA_FLAG_STRING_UNSIGNED_DEC (1L << 13) /* string gadgets: input default no pointer to string but an unsigned decimal number */
- #define GADGET_DATA_FLAG_STRING_SIGNED_DEC (1L << 14) /* string gadgets: input default no pointer to string but an signed decimal number */
- #define GADGET_DATA_FLAG_STRING_HEX (1L << 15) /* string gadgets: input default no pointer to string but an hex number */
- #define GADGET_DATA_FLAG_STRING_BIN (1L << 16) /* string gadgets: input default no pointer to string but an binary number */
- #define GADGET_DATA_FLAG_SCROLLER_NO_ARROWS (1L << 17) /* scroller gadget: no arrows - default with arrows */
- #define GADGET_DATA_FLAG_COUNT_SIGNED_DEC (1L << 18) /* count gadget: signed dec - default unsigned dec */
- #define GADGET_DATA_FLAG_LISTVIEW_READ_ONLY (1L << 19) /* list view gadget: read only - default selection enabled */
- #define GADGET_DATA_FLAG_PALETTE_NO_INDICATOR (1L << 20) /* palette gadget: no current color indicator - default with indicator */
- #define GADGET_DATA_FLAG_PALETTE_INDICATOR_TOP (1L << 21) /* palette gadget: place indicator at top - default at left */
-
- #define GADGET_IDCMP_FLAGS_BUTTON (GADGETUP | VANILLAKEY)
- #define GADGET_IDCMP_FLAGS_CHECK (GADGETDOWN | VANILLAKEY)
- #define GADGET_IDCMP_FLAGS_MX (GADGETDOWN | VANILLAKEY)
- #define GADGET_IDCMP_FLAGS_STRING (GADGETUP | VANILLAKEY)
- #define GADGET_IDCMP_FLAGS_INTEGER (GADGETUP | VANILLAKEY)
- #define GADGET_IDCMP_FLAGS_SLIDER (GADGETUP | MOUSEMOVE | VANILLAKEY)
- #define GADGET_IDCMP_FLAGS_SCROLLER (GADGETDOWN | GADGETUP | MOUSEMOVE | INTUITICKS | VANILLAKEY)
- #define GADGET_IDCMP_FLAGS_CYCLE (GADGETUP | VANILLAKEY)
- #define GADGET_IDCMP_FLAGS_COUNT (GADGETDOWN | GADGETUP | MOUSEMOVE | VANILLAKEY)
- #define GADGET_IDCMP_FLAGS_LISTVIEW (GADGETDOWN | GADGETUP | MOUSEMOVE | INTUITICKS | VANILLAKEY)
- #define GADGET_IDCMP_FLAGS_PALETTE (GADGETUP | VANILLAKEY)
- #define GADGET_IDCMP_FLAGS_ALL (GADGETDOWN | GADGETUP | MOUSEMOVE | INTUITICKS | VANILLAKEY)
-
- #define GADGET_LIST_FLAG_DISPLAYED (1 << 0) /* gadget list currently displayed */
-
- #define EXTENDED_GADGET_TYPE_BUTTON 1
- #define EXTENDED_GADGET_TYPE_CHECK 2
- #define EXTENDED_GADGET_TYPE_MX 3
- #define EXTENDED_GADGET_TYPE_STRING 4
- #define EXTENDED_GADGET_TYPE_INTEGER 5
- #define EXTENDED_GADGET_TYPE_SLIDER_PROP 6
- #define EXTENDED_GADGET_TYPE_SCROLLER_PROP 7
- #define EXTENDED_GADGET_TYPE_SCROLLER_LEFT 8
- #define EXTENDED_GADGET_TYPE_SCROLLER_RIGHT 9
- #define EXTENDED_GADGET_TYPE_SCROLLER_UP 10
- #define EXTENDED_GADGET_TYPE_SCROLLER_DOWN 11
- #define EXTENDED_GADGET_TYPE_CYCLE 12
- #define EXTENDED_GADGET_TYPE_COUNT 13
- #define EXTENDED_GADGET_TYPE_LISTVIEW_PROP 14
- #define EXTENDED_GADGET_TYPE_LISTVIEW_UP 15
- #define EXTENDED_GADGET_TYPE_LISTVIEW_DOWN 16
- #define EXTENDED_GADGET_TYPE_LISTVIEW_ENTRY 17
- #define EXTENDED_GADGET_TYPE_PALETTE_INDICATOR 18
- #define EXTENDED_GADGET_TYPE_PALETTE_COLOR 19
-
- #define EXTENDED_GADGET_FLAG_HOT_KEY (1 << 0)
- #define EXTENDED_GADGET_FLAG_RENDER_BORDER (1 << 1)
- #define EXTENDED_GADGET_FLAG_RENDER_IMAGE (1 << 2)
- #define EXTENDED_GADGET_FLAG_NORMAL_IMAGE_COPY (1 << 3)
- #define EXTENDED_GADGET_FLAG_SELECT_IMAGE_COPY (1 << 4)
-
- #define USE_CURRENT_VALUE ~0L /* used for set_gadget_attributes() to indicate data for which to use the current value */
-
- /* Defines for internal use only */
-
- #define ARROW_AUTO_REPEAT_START_DELAY 3
-
- #define MAX_COUNT_DELAY 5
- #define MAX_COUNT_STEP_SIZE 20
- #define MAX_COUNT_DISTANCE (MAX_COUNT_DELAY * MAX_COUNT_STEP_SIZE)
- #define MIN_COUNT_DELAY_MICROS 30000L
-
- #define MAX_DEC_NUM_DIGITS 10
- #define MAX_BIN_NUM_DIGITS 32
-
- /* Structures */
-
- struct VisibleGadgetLists {
- struct SignalSemaphore vg_Semaphore;
- struct MinList vg_MinList;
- USHORT vg_Count;
- };
- struct GadgetList {
- struct MinNode gl_MinNode; /* node to insert GadgetList into VisibleGadgetLists list */
- struct RenderInfo *gl_RenderInfo;
- struct Window *gl_Window;
- struct GadgetData *gl_Data;
- USHORT gl_DataEntries;
- UBYTE gl_Flags;
- UBYTE gl_AutoRepeatDelay; /* delay counter for start of auto repeat for active arrow gadget */
- BYTE *gl_GadgetBuffer;
- ULONG gl_GadgetBufferSize;
- BYTE *gl_ImageBuffer;
- ULONG gl_ImageBufferSize;
- struct ExtendedGadget *gl_ActiveGadget;
- struct ExtendedGadget *gl_Gadgets[1]; /* array with gl_DataEntries ptr to extended gadgets */
- };
- struct GadgetData {
- ULONG gd_Type;
- ULONG gd_Flags;
- USHORT gd_LeftEdge;
- USHORT gd_TopEdge;
- USHORT gd_Width;
- USHORT gd_Height;
- BYTE *gd_Text;
- struct TextAttr *gd_TextAttr;
- union {
- struct { /* standard data struct */
- LONG gd_Data1;
- LONG gd_Data2;
- VOID *gd_Data3;
- } gd_Data;
- struct { /* for button gadgets */
- ULONG gd_ButtonSelected; /* selection state for toggle buttons - ZERO = unselected, non ZERO = selected */
- struct Image *gd_ButtonNormalRender; /* normal render image */
- struct Image *gd_ButtonSelectRender; /* select render image */
- } gd_ButtonData;
- struct { /* for check gadgets */
- ULONG gd_CheckSelected; /* selection state - ZERO = unselected, non ZERO = selected */
- ULONG gd_CheckPad1;
- ULONG gd_CheckPad2;
- } gd_CheckData;
- struct { /* for mutual exclude gadgets */
- ULONG gd_MXSpacing; /* pixel spacing between MX gadgets */
- ULONG gd_MXActiveEntry; /* num of active entry from text array */
- BYTE **gd_MXTextArray; /* ptr to MX text ptr array */
- } gd_MXData;
- struct { /* for string and integer gadgets */
- ULONG gd_InputLen; /* len of input buffer */
- USHORT gd_InputActivateNext; /* num of next string/num gadget to activate */
- USHORT gd_InputActivatePrev; /* num of previous string/num gadget to activate */
- BYTE *gd_InputDefault; /* string: default text [syntax: "text"] */
- /* integer: default number [syntax: (VOID *)num] */
- } gd_InputData;
- struct { /* for slider gadgets */
- LONG gd_SliderMin; /* min level */
- LONG gd_SliderMax; /* max level */
- LONG gd_SliderLevel; /* current slider level */
- } gd_SliderData;
- struct { /* for scroller gadgets */
- ULONG gd_ScrollerVisible; /* visible entries */
- ULONG gd_ScrollerTotal; /* total entries */
- ULONG gd_ScrollerTop; /* current top entry */
- } gd_ScrollerData;
- struct { /* for cycle gadget */
- ULONG gd_CyclePad;
- ULONG gd_CycleActive; /* num of current cycle text ptr array entry */
- BYTE **gd_CycleTextArray; /* ptr to cycle text ptr array */
- } gd_CycleData;
- struct { /* for count gadget */
- ULONG gd_CountMin; /* min value */
- ULONG gd_CountMax; /* max value */
- ULONG gd_CountValue; /* current count value */
- } gd_CountData;
- struct { /* for list view gadget */
- ULONG gd_ListViewSpacing; /* pixel spacing between list view entries */
- ULONG gd_ListViewTop; /* current top entry */
- struct List *gd_ListViewList; /* current list ptr */
- } gd_ListViewData;
- struct { /* for palette gadget */
- ULONG gd_PaletteDepth; /* num of bitplanes for palette */
- ULONG gd_PaletteColorOffset; /* first color of palette */
- ULONG gd_PaletteActiveColor; /* selected color */
- } gd_PaletteData;
- } gd_SpecialData;
- };
- struct MXData {
- USHORT mx_TextEntries;
- USHORT mx_ActiveEntry;
- };
- struct SliderData {
- ULONG sl_Flags;
- LONG sl_Min;
- LONG sl_Max;
- LONG sl_Level;
- };
- struct ScrollerData {
- ULONG sc_Flags;
- ULONG sc_Visible;
- ULONG sc_Total;
- ULONG sc_Top;
- };
- struct CycleData {
- ULONG cy_Flags;
- SHORT cy_LeftEdge;
- SHORT cy_TopEdge;
- USHORT cy_Width;
- USHORT cy_Height;
- struct TextAttr *cy_TextAttr;
- BYTE **cy_TextArray;
- BYTE *cy_ActiveText;
- USHORT cy_TextEntries;
- USHORT cy_ActiveEntry;
- };
- struct CountData {
- ULONG co_Flags;
- SHORT co_LeftEdge;
- SHORT co_TopEdge;
- USHORT co_Width;
- USHORT co_Height;
- struct TextAttr *co_TextAttr;
- ULONG co_Min;
- ULONG co_Max;
- ULONG co_Value;
- };
- struct ListViewData {
- ULONG lv_Flags;
- SHORT lv_LeftEdge;
- SHORT lv_TopEdge;
- USHORT lv_Width;
- USHORT lv_Height;
- USHORT lv_VisibleEntries;
- USHORT lv_EntryHeight;
- struct TextAttr *lv_TextAttr;
- struct List *lv_List;
- struct Node *lv_TopNode;
- USHORT lv_ListEntries;
- USHORT lv_TopEntry;
- };
- struct PaletteData {
- ULONG pd_Flags;
- USHORT pd_MaxColors;
- USHORT pd_ColorOffset;
- ULONG pd_ActiveColor;
- };
- struct ExtendedGadget {
- struct Gadget eg_Gadget;
- USHORT eg_BorderWidth; /* needed by editor */
- USHORT eg_BorderHeight; /* needed by editor */
- UBYTE eg_Type; /* internal gadget type */
- UBYTE eg_Flags; /* special flags, e.g render object type */
- USHORT eg_DataEntry; /* ordinal number of entry in gl_Data array */
- struct GadgetList *eg_GadgetList;
- SHORT eg_TextLeftEdge;
- SHORT eg_TextTopEdge;
- BYTE *eg_Text;
- USHORT eg_Hotkey; /* ASCII value of gadget hot key */
- USHORT eg_HotkeyPos; /* pos of as hot key marked (underscore) char in gadget text */
- APTR eg_Render; /* ptr to image or border - determined by eg_Flags */
- struct ExtendedGadget *eg_NextGadget;
- };
- /* Global prototypes */
-
- struct GadgetList *create_gadgets(struct RenderInfo *ri,
- struct GadgetData *gd, SHORT hoffset, SHORT voffset);
- VOID free_gadgets(struct GadgetList *gl);
- VOID display_gadgets(struct Window *win, struct GadgetList *gl);
- VOID refresh_gadgets(struct GadgetList *gl);
- ULONG set_gadget_attributes(struct GadgetList *gl, USHORT data_entry,
- ULONG flags, ULONG data1, ULONG data2, VOID *data3);
- VOID activate_input_gadget(struct GadgetList *gl, USHORT data_entry);
- struct Gadget *gadget_address(struct GadgetList *gl, USHORT data_entry);
- VOID remove_gadgets(struct GadgetList *gl);
- struct IntuiMessage *get_msg(struct MsgPort *uport);
- VOID reply_msg(struct IntuiMessage *imsg);
-
- /* Global pragmas */
-
- #pragma regcall(create_gadgets(a0,a1,d0,d1))
- #pragma regcall(free_gadgets(a0))
- #pragma regcall(display_gadgets(a0,a1))
- #pragma regcall(refresh_gadgets(a0))
- #pragma regcall(set_gadget_attributes(a0,d0,d1,d2,d3,a1))
- #pragma regcall(activate_input_gadget(a0,d0))
- #pragma regcall(gadget_address(a0,d0))
- #pragma regcall(remove_gadgets(a0))
- #pragma regcall(get_msg(a0))
- #pragma regcall(reply_msg(a0))
-
- #endif
-