home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / guis / iedit / developer / include / ieditor.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-02  |  22.3 KB  |  844 lines

  1. #ifndef IEDITOR_H
  2. #define IEDITOR_H
  3.  
  4. /*
  5. ** InterfaceEditor definitions' file    **
  6. **                                      **
  7. ** ©1994-1996 Simone Tellini            **
  8. ** All Rights Reserved                  **
  9. **                                      **
  10. ** $VER: IEditor_Include 3.1 (17.2.96)  **
  11. */
  12.  
  13.  
  14. #ifndef EXEC_TYPES_H
  15. #include <exec/types.h>
  16. #endif
  17. #ifndef EXEC_LISTS_H
  18. #include <exec/lists.h>
  19. #endif
  20. #ifndef EXEC_NODES_H
  21. #include <exec/nodes.h>
  22. #endif
  23. #ifndef GRAPHICS_TEXT_H
  24. #include <graphics/text.h>
  25. #endif
  26.  
  27.  
  28. /***********************************
  29. **  Values for Alloc/Free Object  **
  30. ***********************************/
  31.  
  32. #define     IE_WINDOW           0
  33. #define     IE_GADGET           1
  34. #define     IE_BOOLEAN          2
  35. #define     IE_ITEM             3
  36. #define     IE_BEVELBOX         4
  37. #define     IE_WNDIMAGE         5
  38. #define     IE_INTUITEXT        6
  39. #define     IE_IMAGE            7
  40. #define     IE_MENUSUB          8
  41. #define     IE_MENUITEM         9
  42. #define     IE_MENUTITLE       10
  43. #define     IE_REXXCMD         11
  44. #define     IE_WNDTOOPEN       12
  45. #define     IE_LIBRARY         13
  46.  
  47.  
  48.  
  49. /****************
  50. **  Expanders  **
  51. ****************/
  52.  
  53.  
  54.  
  55. #define MIN_IEX_ID  15      // minimum ID for an expander
  56.  
  57. struct IEXNode {
  58.     struct Node         Node;
  59.     struct Expander    *Base;
  60.     ULONG               ID;
  61.     STRPTR              Support;
  62.     UWORD               UseCount;
  63. };
  64.  
  65.  
  66.  
  67. /***********************************************
  68. **  Functions called by the source generator  **
  69. ***********************************************/
  70.  
  71. struct IEXSrcFun {
  72.     /*  write the globals variable */
  73.     void    ( *Globals )( __A0 struct GenFiles * );
  74.     /*  called in the GUI Setup function  */
  75.     void    ( *Setup )( __A0 struct GenFiles * );
  76.     /*  called in the GUI CloseDown function  */
  77.     void    ( *CloseDown )( __A0 struct GenFiles * );
  78.     /*  write the headers  */
  79.     void    ( *Headers )( __A0 struct GenFiles * );
  80.     /*  called in the Render routine  */
  81.     void    ( *RenderMinusZero )( __A0 struct GenFiles * );
  82.     void    ( *RenderPlusZero )( __A0 struct GenFiles * );
  83.     /*  OR the IDCMP passed with the ones you need  */
  84.     ULONG   ( *IDCMP )( __D0 ULONG );
  85.     /*  write your data  */
  86.     void    ( *Data )( __A0 struct GenFiles * );
  87.     /*  write your chip data  */
  88.     void    ( *ChipData )( __A0 struct GenFiles * );
  89.     /*  write your support routine(s) (if needed)  */
  90.     void    ( *Support )( __A0 struct GenFiles * );
  91.     /*  called in the Open<Window Label>Window routine  */
  92.     void    ( *OpenWnd )( __A0 struct GenFiles * );
  93.     /*  called in the Close<Window Label>Window routine  */
  94.     void    ( *CloseWnd )( __A0 struct GenFiles * );
  95. };
  96.  
  97.  
  98. /**************************************
  99. **  Support functions for expanders  **
  100. **************************************/
  101.  
  102. struct IEXFun {
  103.     /* Args:  UBYTE *Buffer                    */
  104.     void        ( *SplitLines )( __A0 UBYTE * );
  105.  
  106.     /* Args:  UBYTE *Buffer, STRPTR ID string  */
  107.     STRPTR      ( *GetFirstLine )( __A0 UBYTE *, __A1 STRPTR );
  108.  
  109.     /* Args:  BPTR File, STRPTR String, struct Descriptor *Descriptors */
  110.     void        ( *WriteFormatted )( __D0 BPTR, __A0 STRPTR, __A1 struct Descriptor * );
  111. };
  112.  
  113.  
  114. /*********************************************
  115. **  Support functions for external modules  **
  116. *********************************************/
  117.  
  118. struct MiscFun {
  119.  
  120.     /* Args: struct TextAttr *FontToAdd              */
  121.     struct TxtAttrNode *( *AddFont )( __A0 struct TextAttr * );
  122.  
  123.     /* Args: UBYTE *Text, BOOL Beep, ULONG CatNumber */
  124.     /* Text - Will be displayed in IE's status bar   */
  125.     /* Beep - Set to TRUE if it is a warning message */
  126.     /* CatNumber - Leave to 0                        */
  127.     void                ( *Status )( __A0 UBYTE *, __D0 BOOL, __D1 ULONG );
  128.  
  129.     /* Args: struct TxtAttrNode *FontToRemove */
  130.     void                ( *RemoveFont )( __A0 struct TxtAttrNode * );
  131.  
  132.     /* Args:  UWORD Object type, see above  */
  133.     APTR                ( *AllocObject )( __D0 UWORD );
  134.     /* Args:  APTR Object, UWORD Object type  */
  135.     void                ( *FreeObject  )( __A0 APTR, __D0 UWORD );
  136. };
  137.  
  138.  
  139.  
  140.  
  141.  
  142. /*******************************
  143. **  Internal data structures  **
  144. *******************************/
  145.  
  146. struct LocaleData {
  147.     STRPTR  Catalog;        /*  the name of the catalog to create  */
  148.     STRPTR  JoinFile;       /*  the file to prepend                */
  149.     STRPTR  BuiltIn;        /*  built-in language                  */
  150.     ULONG   Version;        /*  minimum catalog version required   */
  151. };
  152.  
  153.  
  154. struct ScreenInfo {
  155.     APTR                Visual;     /* VisualInfo of IE's screen */
  156.     UWORD               YOffset;
  157.     struct TextAttr     NewFont;
  158.     UWORD               ScrAttrs;   /* see below SC_xxx */
  159.     UWORD               St_Left;
  160.     UWORD               St_Top;
  161.     UWORD               Type;
  162.     UBYTE              *FontScr;
  163.     UBYTE              *Title;
  164.     UBYTE              *PubName;
  165.     ULONG              *Tags;       /* point to a TagItem array */
  166.                     /* at the end of the file   */
  167.                     /* you'll find the index to */
  168.                     /* access the data          */
  169.     UWORD              *DriPens;    /* 12 dripens               */
  170.     struct Screen      *Screen;
  171.     UWORD               XOffset;
  172. };
  173.  
  174.  
  175. struct IE_Data {
  176.     UBYTE               flags;              /*  various flags  */
  177.     UBYTE               flags_2;            /*  see below      */
  178.     UBYTE               mainprefs;
  179.     UBYTE               SrcFlags;
  180.     UBYTE               MainProcFlags;
  181.     UBYTE               AsmPrefs;
  182.     UBYTE               AsmPrefs2;
  183.     UBYTE               C_Prefs;
  184.     struct GadgetInfo  *gad_id;             /* last selected gadget */
  185.     struct Window      *win_active;         /* active window        */
  186.     struct WindowInfo  *win_info;           /* active window info   */
  187.     APTR                colortable;
  188.     UWORD               win_open;
  189.     UWORD               num_win;
  190.     struct MinList      win_list;           /* window list */
  191.     struct MinList      FntLst;             /* font list   */
  192.     UWORD               NumImgs;
  193.     struct MinList      Img_List;           /* images list */
  194.     UBYTE              *ScreenName;         /* ^ to my pub name */
  195.     UBYTE              *ARexxPortName;
  196.     UWORD               NumLibs;
  197.     struct MinList      Libs_List;          /* libraries to open */
  198.     UWORD               NumWndTO;
  199.     struct MinList      WndTO_List;         /* windows to open   */
  200.     UWORD               NumRexxs;
  201.     struct MinList      Rexx_List;          /* rexx commands     */
  202.     struct ScreenInfo  *ScreenData;
  203.     struct MiscFun     *Functions;
  204.     UBYTE              *RexxExt;
  205.     UBYTE              *RexxPortName;
  206.     UBYTE              *ExtraProc;
  207.     struct UserData    *User;
  208.     UBYTE              *ChipString;         /* prefs for the */
  209.                         /* Asm generator */
  210.     UBYTE              *IntString;
  211.     UBYTE              *DosString;
  212.     UBYTE              *GfxString;
  213.     UBYTE              *GadString;
  214.     UBYTE              *FntString;
  215.     UBYTE              *RexxString;
  216.     struct LocaleData  *Locale;
  217.     struct IEXFun      *IEXFun;             /* for expanders */
  218.     APTR                UserData;           /* for expanders */
  219.     struct MinList      Expanders;
  220.     struct IEXSrcFun   *IEXSrcFun;          /* used by generators */
  221. };
  222.  
  223.  
  224. /***************
  225. **  ScrAttrs  **
  226. ***************/
  227.  
  228. #define SC_LEFT             (1<<0)
  229. #define SC_TOP              (1<<1)
  230. #define SC_SHOWTITLE        (1<<2)
  231. #define SC_BEHIND           (1<<3)
  232. #define SC_QUIET            (1<<4)
  233. #define SC_OVERSCAN         (1<<5)
  234. #define SC_FULLPALETTE      (1<<6)
  235. #define SC_ERRORCODE        (1<<7)
  236. #define SC_DRAGGABLE        (1<<8)
  237. #define SC_EXCLUSIVE        (1<<9)
  238. #define SC_SHAREPENS        (1<<10)
  239. #define SC_INTERLEAVED      (1<<11)
  240. #define SC_LIKEWORKBENCH    (1<<12)
  241. #define SC_MINIMIZEISG      (1<<13)
  242. #define SC_LOC_TITLE        (1<<14)     /*  Localize the screen title  */
  243.  
  244.  
  245.  
  246. struct UserData {
  247.     STRPTR  Name;
  248.     ULONG   Number;
  249. };
  250.  
  251.  
  252. struct WindowInfo {
  253.     APTR    wi_succ;               /* private  */
  254.     APTR    wi_pred;               /* private  */
  255.     UBYTE   wi_flags1;             /* see below  */
  256.     UBYTE   wi_flags2;
  257.     UBYTE  *wi_name;               /* point to Titolo  */
  258.     struct Window *wi_winptr;      /* Window ^  */
  259.     WORD    wi_Top;                /* window data  */
  260.     WORD    wi_Left;
  261.     UWORD   wi_Width;
  262.     UWORD   wi_Height;
  263.     WORD    wi_MinWidth;
  264.     WORD    wi_MaxWidth;
  265.     WORD    wi_MinHeight;
  266.     WORD    wi_MaxHeight;
  267.     UWORD   wi_InnerWidth;
  268.     UWORD   wi_InnerHeight;
  269.     WORD    wi_ZLeft;              /* zoom  */
  270.     WORD    wi_ZTop;
  271.     UWORD   wi_ZWidth;
  272.     UWORD   wi_ZHeight;
  273.     UWORD   wi_MouseQueue;
  274.     UWORD   wi_RptQueue;
  275.     ULONG   wi_Flags;
  276.     ULONG   wi_IDCMP;
  277.     ULONG   wi_Tags;               /* tags packed  */
  278.     UBYTE   wi_Titolo[120];
  279.     UBYTE   wi_TitoloSchermo[120];
  280.     UBYTE   wi_Label[40];
  281.     struct Gadget *wi_GList;       /* private  */
  282.     UWORD   wi_NumGads;            /* # of gadgets in this window  */
  283.     struct  MinList wi_Gadgets;
  284.     UWORD   wi_NumMenus;           /* # of menus  */
  285.     struct  MinList wi_Menus;
  286.     UWORD   wi_GadTypes[13];
  287.     UWORD   wi_NumBools;           /* # of boolean gadgets  */
  288.     UWORD   wi_NumKeys;            /* # of gadget activation keys  */
  289.     UWORD   wi_NumBoxes;           /* # of bevel boxes  */
  290.     struct  MinList wi_Boxes;
  291.     UWORD   wi_NumImages;
  292.     struct  MinList wi_Images;
  293.     UWORD   wi_NumTexts;
  294.     struct  MinList wi_ITexts;
  295.     APTR    wi_Lock;               /*  *** PRIVATE ***  */
  296.     UWORD   wi_NumObjects;         /* # of external objects */
  297.     UWORD   wi_NeedRender;         /* this window needs a Render routine */
  298.     UWORD   wi_NewGadID;           /*  *** PRIVATE ***  */
  299. };
  300.  
  301. /*****************************
  302. **  Window Flags  (flags1)  **
  303. *****************************/
  304.  
  305. #define W_APERTA        (1<<0)      /* currently open  */
  306. #define W_USA_INNER_W   (1<<1)      /* use InnerWidth in the src  */
  307. #define W_USA_INNER_H   (1<<2)      /* use InnerHeight in the src  */
  308. #define W_RIAPRI        (1<<3)      /* private  */
  309.  
  310. /******************
  311. **  Window Tags  **
  312. ******************/
  313.  
  314. #define W_SCREENTITLE   (1<<1)
  315. #define W_MOUSEQUEUE    (1<<2)
  316. #define W_RPTQUEUE      (1<<3)
  317. #define W_AUTOADJUST    (1<<4)
  318. #define W_FALLBACK      (1<<5)
  319. #define W_ZOOM          (1<<6)
  320. #define W_TABLETMESSAGE (1<<7)
  321. #define W_MENUHELP      (1<<8)
  322. #define W_NOTIFYDEPTH   (1<<9)
  323.  
  324. #define W_LOC_TITLE     (1<<31)     /* localize its title  */
  325. #define W_LOC_SCRTITLE  (1<<30)     /* localize its screen title  */
  326. #define W_LOC_GADGETS   (1<<29)     /* localize its gadgets  */
  327. #define W_LOC_TEXTS     (1<<28)     /* localize its intuitexts  */
  328. #define W_LOC_MENUS     (1<<27)     /* localize its menus  */
  329.  
  330.  
  331. /* Menu Flags  ; not implemented yet
  332.  
  333. ; MF_NEWLOOK    EQU     0
  334. ; MF_ERROR      EQU     1
  335. ; MF_FRONTPEN   EQU     2
  336.  
  337. */
  338.  
  339. struct WndImages {
  340.     APTR                wim_Next;
  341.     APTR                wim_Prev;
  342.     WORD                wim_Left;
  343.     WORD                wim_Top;
  344.     UWORD               wim_Width;
  345.     UWORD               wim_Height;
  346.     UWORD               wim_Depth;
  347.     APTR                wim_Data;       /* ^ to image raw data  */
  348.     UBYTE               wim_PlanePick;
  349.     UBYTE               wim_PlaneOnOff;
  350.     APTR                wim_NextImage;  /* ^ to next image  */
  351.     struct ImageNode   *wim_ImageNode;  /* ^ to the original image node */
  352. };
  353.  
  354.  
  355. struct TxtAttrNode {
  356.     APTR    txa_Next;
  357.     APTR    txa_Prev;
  358.     APTR    txa_Ptr;
  359.     UWORD   txa_OpenCnt;
  360.     STRPTR  txa_FontName;   /* points to txa_Name...  */
  361.     UWORD   txa_Size;
  362.     UBYTE   txa_Style;
  363.     UBYTE   txa_Flags;
  364.     UBYTE   txa_Name[40];
  365.     UBYTE   txa_Label[50];
  366. };
  367.  
  368.  
  369. /* These structures are placed instead of GadgetInfo->g_Data, see below */
  370.  
  371. struct BK {                 /* Button and Checkbox Kind */
  372.     ULONG   D1;         /* Dx, Px are unused fields */
  373.     ULONG   D2;
  374.     ULONG   D3;
  375.     ULONG   D4;
  376.     ULONG   D5;
  377.     ULONG   D6;
  378.     ULONG   D7;
  379. };
  380.  
  381. struct IK {                 /* Integer Kind    */
  382.     LONG    Num;        /* Number          */
  383.     UWORD   MaxC;       /* Mx Chars        */
  384.     WORD    P2;
  385.     WORD    Just;       /* Justification   */
  386.     WORD    P3;
  387.     ULONG   D4;
  388.     ULONG   D5;
  389.     ULONG   D6;
  390.     ULONG   D7;
  391. };
  392.  
  393. struct LK {                 /* Listview Kind    */
  394.     UWORD   Top;        /* Top              */
  395.     WORD    P1;
  396.     UWORD   Vis;        /* Make Visible     */
  397.     WORD    P2;
  398.     UWORD   ScW;        /* Scroller Width   */
  399.     WORD    P3;
  400.     UWORD   Sel;        /* Selected         */
  401.     WORD    P4;
  402.     UWORD   Spc;        /* Spacing          */
  403.     WORD    P5;
  404.     UWORD   IH;         /* Item Height      */
  405.     WORD    P6;
  406.     WORD    MaxP;       /* Max Pen          */
  407.     WORD    P7;
  408. };
  409.  
  410. struct MK {                 /* MX Kind           */
  411.     UWORD   Act;        /* Active            */
  412.     WORD    P1;
  413.     UWORD   Spc;        /* Spacing           */
  414.     WORD    P2;
  415.     UWORD   TitPlc;     /* Title Place       */
  416.     WORD    P3;
  417.     UWORD   D4;
  418.     WORD    P4;
  419.     UWORD   D5;
  420.     WORD    P5;
  421.     UWORD   D6;
  422.     WORD    P6;
  423.     WORD    D7;
  424.     WORD    P7;
  425. };
  426.  
  427. struct NK {                 /* Number Kind         */
  428.     LONG    Num;        /* Number              */
  429.     BYTE    FPen;       /* Front Pen           */
  430.     BYTE    P2;
  431.     WORD    PP2;
  432.     BYTE    BPen;       /* Back Pen            */
  433.     BYTE    P3;
  434.     UWORD   Just;       /* Justification       */
  435.     ULONG   MNL;        /* Max Number Len      */
  436.     UBYTE   Format[12];
  437. };
  438.  
  439. struct CK {                 /* Cycle Kind          */
  440.     UWORD   Act;        /* Active              */
  441.     WORD    P1;
  442.     UWORD   D2;
  443.     WORD    P2;
  444.     WORD    D2;
  445.     WORD    P3;
  446.     ULONG   D4;
  447.     ULONG   D5;
  448.     ULONG   D6;
  449.     ULONG   D7;
  450. };
  451.  
  452. struct PK {                 /* Palette Kind  */
  453.     UWORD   Depth;      /* Depth  */
  454.     WORD    P1;
  455.     UBYTE   Color;      /* Color  */
  456.     BYTE    PP2;
  457.     WORD    P2;
  458.     UBYTE   ColOff;     /* Color Offset  */
  459.     BYTE    PP3;
  460.     WORD    P3;
  461.     UWORD   IW;         /* Indicator Width  */
  462.     WORD    P4;
  463.     UWORD   IH;         /* Indicator Height  */
  464.     WORD    P4;
  465.     UWORD   NumCol;     /* Num Colors  */
  466.     WORD    P6;
  467.     ULONG   D7;
  468. };
  469.  
  470. struct SK {                 /* Scroller Kind  */
  471.     UWORD   Top;        /* Top  */
  472.     WORD    p;
  473.     UWORD   Tot;        /* Total  */
  474.     WORD    P2;
  475.     UWORD   Vis;        /* Visible  */
  476.     WORD    P3;
  477.     UWORD   Arr;        /* Arrows  */
  478.     WORD    p4;
  479.     UWORD   Free;       /* Freedom  */
  480.     WORD    p5;
  481.     ULONG   D6;
  482.     ULONG   D7;
  483. };
  484.  
  485. struct SlK {                /* Slider Kind  */
  486.     WORD    Min;        /* Min  */
  487.     WORD    Max;        /* Max  */
  488.     WORD    Level;      /* Level  */
  489.     UWORD   MLL;        /* Max Level Len  */
  490.     UBYTE   LevPlc;     /* Level Place  */
  491.     UBYTE   Just;       /* Justification  */
  492.     UBYTE   Free;       /* Freedom  */
  493.     BYTE    p3;
  494.     ULONG   MPL;        /* Max Pixel Len  */
  495.     UBYTE   Format[12];
  496. };
  497.  
  498. struct StK {                /* String Kind  */
  499.     UWORD   MaxC;       /* Max Chars  */
  500.     UWORD   P1;
  501.     UWORD   Just;       /* Justification  */
  502.     WORD    P2;
  503.     WORD    d3;
  504.     WORD    P3;
  505.     ULONG   D4;
  506.     ULONG   D5;
  507.     ULONG   D6;
  508.     ULONG   D7;
  509. };
  510.  
  511. struct TK {                 /* Text Kind  */
  512.     WORD    FPen;       /* Front Pen  */
  513.     WORD    p1;
  514.     WORD    BPen;       /* Back Pen  */
  515.     WORD    P2;
  516.     WORD    Just;       /* Justification  */
  517.     WORD    P3;
  518.     ULONG   D4;
  519.     ULONG   D5;
  520.     ULONG   D6;
  521.     ULONG   D7;
  522. };
  523.  
  524. struct GadgetInfo {
  525.     struct  Node g_Node;
  526.     UWORD   g_Kind;         /* gadget kind  */
  527.     UBYTE   g_flags2;
  528.     UBYTE   g_Key;
  529.     struct TxtAttrNode *g_Font;
  530.     UBYTE   g_Titolo[80];   /* title  */
  531.     UBYTE   g_Label[40];    /* label  */
  532.     APTR    g_ExtraMem;     /* private  */
  533.     WORD    g_Left;         /* structure NewGadget  */
  534.     WORD    g_Top;
  535.     UWORD   g_Width;
  536.     UWORD   g_Height;
  537.     APTR    g_GadgetText;
  538.     APTR    g_TextAttr;
  539.     WORD    g_GadgetID;
  540.     LONG    g_Flags;
  541.     APTR    g_VisualInfo;
  542.     APTR    g_UserData;
  543.     APTR    g_Ptr;          /* private  */
  544.     ULONG   g_Tags;         /* tags  */
  545.     struct BK g_Data;       /* various data  */
  546.     UWORD   g_NumScelte;    /* items if MX, LISTVIEW or CYCLE  */
  547.     struct MinList g_Scelte;
  548. };
  549.  
  550.  
  551.  
  552.  
  553. /********************
  554. **  Gadgets flags  **
  555. ********************/
  556.  
  557. #define G_ATTIVO            (1<<1)      /* the object is selected            */
  558. #define G_CONTORNO          (1<<2)      /* *** PRIVATE ***                   */
  559. #define G_WAS_ACTIVE        (1<<3)      /* *** PRIVATE ***                   */
  560. #define G_CARICATO          (1<<4)      /* *** PRIVATE ***                   */
  561. #define G_CLICKED           (1<<5)      /* needs a <Label>Clicked routine    */
  562. #define G_KEYPRESSED        (1<<6)      /* needs a <Label>KeyPressed routine */
  563.  
  564.  
  565.  
  566. /*************************
  567. **  Extra Gadget types  **
  568. *************************/
  569.  
  570. #define BOOLEAN             14
  571.  
  572. struct BooleanInfo {
  573.     struct Node b_Node;
  574.     UWORD               b_Kind;         /* always = BOOLEAN  */
  575.     UBYTE               b_flags2;
  576.     UBYTE               b_Pad;
  577.     struct TxtAttrNode *b_Font;
  578.     UBYTE               b_Titolo[80];   /* title  */
  579.     UBYTE               b_Label[40];    /* label  */
  580.     struct Gadget      *b_NextGadget;
  581.     WORD                b_Left;         /* structure Gadget  */
  582.     WORD                b_Top;
  583.     UWORD               b_Width;
  584.     UWORD               b_Height;
  585.     UWORD               b_Flags;
  586.     UWORD               b_Activation;
  587.     UWORD               b_GadgetType;   /* always = GTYP_BOOLGADGET  */
  588.     struct Image       *b_GadgetRender;
  589.     struct Image       *b_SelectRender;
  590.     struct IntuiText   *b_GadgetText;
  591.     LONG                b_MutualExclude;
  592.     APTR                b_SpecialInfo;
  593.     WORD                b_GadgetID;
  594.     APTR                b_UserData;
  595.     BYTE                b_FrontPen;     /* IntuiText structure  */
  596.     BYTE                b_BackPen;
  597.     BYTE                b_DrawMode;
  598.     BYTE                b_AdjustToWord;
  599.     WORD                b_TxtLeft;
  600.     WORD                b_TxtTop;
  601.     APTR                b_TextFont;
  602.     UBYTE              *b_Text;
  603.     APTR                b_NextText;     /* always = NULL  */
  604. };
  605.  
  606.  
  607. /* Boolean Gadget Flags  */
  608.  
  609. #define B_TEXT          (1<<0)
  610.  
  611.  
  612. /* This is for MX, LIST and CYCLE gadgets (or others that have items)  */
  613.  
  614. struct GadgetScelta {
  615.     struct Node gs_Node;
  616.     UBYTE   gs_Testo[40];   /* text of item  */
  617. };
  618.  
  619.  
  620.  
  621.  
  622. struct ImageNode {
  623.     struct Node in_Node;
  624.     WORD    in_Left;        /* always set to 0, 0  */
  625.     WORD    in_Top;
  626.     UWORD   in_Width;
  627.     UWORD   in_Height;
  628.     UWORD   in_Depth;
  629.     APTR    in_Data;        /* ^ to image raw data  */
  630.     UBYTE   in_PlanePick;
  631.     UBYTE   in_PlaneOnOff;
  632.     APTR    in_NextImage;   /* ^ to next image, always NULL  */
  633.     UBYTE   in_Label[40];
  634.     ULONG   in_Size;        /* size of Data allocation  */
  635. };
  636.  
  637.  
  638.  
  639. struct MenuTitle {
  640.     struct Node mt_Node;
  641.     UBYTE   mt_Flags;       /* see M_xxx below  */
  642.     BYTE    mt_Pad;
  643.     UWORD   mt_NumItems;
  644.     struct MinList mt_Items;
  645.     UBYTE   mt_Text[100];
  646.     UBYTE   mt_Label[40];
  647. };
  648.  
  649.  
  650. struct _MenuItem {
  651.     struct Node min_Node;
  652.     UBYTE   min_Flags;      /* see M_xxx below  */
  653.     BYTE    min_Pad;
  654.     UBYTE   min_Text[100];
  655.     APTR    min_Image;
  656.     UBYTE   min_CommKey[16];
  657.     UBYTE   min_Label[40];
  658.     ULONG   min_MutualExclude;
  659.     UWORD   min_NumSubs;
  660.     struct  MinList min_Subs;
  661. };
  662.  
  663.  
  664. struct MenuSub {
  665.     struct Node msn_Node;
  666.     UBYTE   msn_Flags;      /* see M_xxx below  */
  667.     BYTE    msn_Pad;
  668.     UBYTE   msn_Text[100];
  669.     APTR    msn_Image;
  670.     UBYTE   msn_CommKey[16];
  671.     UBYTE   msn_Label[40];
  672.     ULONG   msn_MutualExclude;
  673. };
  674.  
  675.  
  676.  
  677. /*****************
  678. **  Menu flags  **
  679. *****************/
  680.  
  681. #define M_DISABLED          (1<<0)
  682. #define M_BARLABEL          (1<<1)
  683. #define M_CHECKIT           (1<<2)
  684. #define M_CHECKED           (1<<3)
  685. #define M_MENUTOGGLE        (1<<4)
  686.  
  687.  
  688.  
  689. struct BevelBoxNode {
  690.     APTR    bb_Next;
  691.     APTR    bb_Prev;
  692.     WORD    bb_Left;
  693.     WORD    bb_Top;
  694.     UWORD   bb_Width;
  695.     UWORD   bb_Height;
  696.     ULONG   bb_VITag;
  697.     ULONG   bb_VisualInfo;
  698.     ULONG   bb_RTag;
  699.     ULONG   bb_Recessed;
  700.     ULONG   bb_TTag;
  701.     ULONG   bb_FrameType;
  702.     ULONG   bb_TagEnd;
  703.     UBYTE   bb_Flags;
  704. };
  705.  
  706.  
  707. /* BevelBoxes's flags  -  PRIVATE  */
  708.  
  709. #define BB_SELECTED         (1<<0)
  710. #define BB_MAYBE            (1<<1)   /* maybe it's the one to active... */
  711. /* Flag 2 is equal to CONTORNO  */
  712.  
  713.  
  714.  
  715. struct ITextNode {
  716.     struct Node itn_Node;
  717.     BYTE    itn_FrontPen;
  718.     BYTE    itn_BackPen;
  719.     BYTE    itn_DrawMode;
  720.     BYTE    itn_AdjustToWord;
  721.     WORD    itn_LeftEdge;
  722.     WORD    itn_TopEdge;
  723.     struct TextAttr *itn_ITextFont;
  724.     APTR    itn_IText;
  725.     APTR    itn_NextText;
  726.     UBYTE   itn_Text[120];
  727.     struct TextAttr *itn_FontCopy;
  728. };
  729.  
  730.  
  731. /* IntuiText flags (stored in LN_TYPE)  */
  732.  
  733. #define IT_SCRFONT      (1<<0)      /* use the screen font  */
  734.  
  735.  
  736.  
  737. struct RexxNode {
  738.     struct Node rxn_Node;
  739.     UBYTE   rxn_Label[40];
  740.     UBYTE   rxn_Name[40];
  741.     UBYTE   rxn_Template[500];
  742. };
  743.  
  744.  
  745. struct LibNode {
  746.     struct Node lbn_Node;
  747.     UWORD   lbn_Version;
  748.     UBYTE   lbn_Name[60];
  749.     UBYTE   lbn_Base[60];
  750. };
  751.  
  752. /* Library flags (stored in LN_PRI)  */
  753.  
  754. #define L_FAIL          (1<<0)
  755.  
  756. struct WndToOpen {
  757.     struct Node wto_Node;
  758.     UBYTE   wto_Label[40];
  759. };
  760.  
  761.  
  762. /*********************************
  763. **  General Flags  ( flags_2 )  **
  764. *********************************/
  765.  
  766. #define         GENERASCR       (1<<1)  /* READ ONLY  */
  767.  
  768. /* ( flags ) - This can be set by loaders */
  769.  
  770. #define         NO_IEX          (1<<4)  /* set this if you didn't    */
  771.                     /* find an external module   */
  772. #define         NODISKFONT      (1<<7)  /* set this if you failed to */
  773.                     /* open a disk font          */
  774.  
  775. /*******************************
  776. **  C Preferences  (C_Prefs)  **
  777. *******************************/
  778.  
  779. #define GEN_TEMPLATE            (1<<0)  /* generate Templates for functions  */
  780. #define SMART_STR               (1<<1)  /* don't write a string twice  */
  781.  
  782. /**********************************
  783. **  Asm Preferences  (AsmPrefs)  **
  784. **********************************/
  785.  
  786. #define SEC_DATA            (1<<0)      /* create a DATA section  */
  787. #define SEC_BSS             (1<<1)      /* create a BSS section  */
  788. #define GAD_LABELS          (1<<2)      /* create a label for every gadget  */
  789.  
  790. /* Asm Preferences 2 (AsmPrefs2)  */
  791.  
  792. #define RAW_CODE            (1<<0)      /* generate RawCode  */
  793.  
  794.  
  795. /**********************************************
  796. **  Source parameters  (C_Prefs & AsmPrefs)  **
  797. **********************************************/
  798.  
  799. #define INTUIMSG            (1<<7)      /* write an IntuiMsg for every window  */
  800. #define CLICKED             (1<<6)      /* generate Clicked pointers  */
  801. #define IDCMP_HANDLER       (1<<5)      /* generate IDCMP Handlers  */
  802. #define KEY_HANDLER         (1<<4)      /* generate VanillaKey Handlers  */
  803. #define TO_LOWER            (1<<3)      /* activation key are lowercased  */
  804.  
  805. /* ( SrcFlags )  */
  806.  
  807. #define OPENDISKFONT        (1<<0)
  808. #define MAINPROC            (1<<1)
  809. #define LOCALIZE            (1<<2)      /* localize the gui  */
  810. #define FONTSENSITIVE       (1<<6)
  811.  
  812.  
  813. /********************
  814. **  MainProcFlags  **
  815. ********************/
  816.  
  817. #define MAIN_CTRL_C         (1<<0)      /* handle CTRL C  */
  818. #define MAIN_OTHERBITS      (1<<1)
  819. #define MAIN_WB             (1<<2)      /* generate wbmain() entry-point  */
  820.  
  821.  
  822. /* This is for my sources... I'm too lazy to delete it... ;-)  */
  823.  
  824. struct GXY {
  825.     UWORD   Width;
  826.     UWORD   Height;
  827.     BOOL    Resize;
  828. };
  829.  
  830.  
  831. /*****************************************
  832. **  Values index of ScreenData->Tags[]  **
  833. *****************************************/
  834.  
  835. #define     SCRWIDTH        1
  836. #define     SCRHEIGHT       3
  837. #define     SCRDEPTH        5
  838. #define     SCRID           7       /* DisplayID    */
  839. #define     SCRFNT          9       /* Don't touch! */
  840. #define     SCROVERSCAN    11
  841. #define     SCRAUTOSCROLL  13
  842.  
  843. #endif
  844.