fix remapping behavior. Remapping is only necessary if we are rendering on the workbe...
[AROS-Contrib.git] / scalos / main / TTLayout.h
blob2c26a6e74bfe5c6603b117f117f41f16f0d2d45e
1 // TTLayout.h
2 // $Date$
3 // $Revision$
5 #ifndef TTLAYOUT_H
6 #define TTLAYOUT_H
8 //----------------------------------------------------------------------------
10 #include "scalos_structures.h"
12 #define TT_VERT_SPACE 1
13 #define TT_HORIZ_SPACE 3
15 enum TTLayoutMode
17 TTL_Horizontal,
18 TTL_Vertical
21 enum TTType
23 TTTYPE_Container,
24 TTTYPE_Text,
25 TTTYPE_Image,
26 TTTYPE_DTImage,
27 TTTYPE_WideTitleBar,
28 TTTYPE_Space,
29 TTTYPE_TextHook
32 enum TTVertAlign
34 TTVERTALIGN_Top,
35 TTVERTALIGN_Bottom,
36 TTVERTALIGN_Center,
37 // TTVERTALIGN_Baseline,
40 struct ttDef
42 struct ttDef *ttd_Next;
44 struct ttDef *ttd_Sub; // Subitem/Group pointer
46 UWORD ttd_LayoutMode; // enum TTLayoutMode
48 ULONG ttd_MsgID; // Message ID for locale text
50 union {
51 STRPTR ttc_Text;
52 struct DatatypesImage *ttc_Image;
53 } ttd_Contents;
55 struct TextExtent ttd_TextExtent; // bounding box for ttc_Text
57 STRPTR ttd_HiddenHookText; // Textual argument of TT_HiddenHook
59 enum TTType ttd_Type; // type of entry
61 ULONG ttd_Attributes; // text atributes (bold, ...)
62 ULONG ttd_TextPen; // text pen
63 ULONG ttd_Space;
65 ULONG ttd_HorizAlign; // horizontal contents alignment
66 enum TTVertAlign ttd_VertAlign; // vertical contents alignment
68 ULONG ttd_FrameType; // some of the MF_FRAME_... values, e.g. MF_FRAME_NONE
70 UWORD ttd_SpaceHoriz; // horizontal spacing between cells
71 UWORD ttd_SpaceVert; // vertical spacing between cells
73 UWORD ttd_SpaceLeft; // additional left space inside cell
74 UWORD ttd_SpaceRight; // additional right space inside cell
75 UWORD ttd_SpaceTop; // additional top space inside cell
76 UWORD ttd_SpaceBottom; // additional bottom space inside cell
78 struct IBox ttd_Box; // Bounding box for item
80 struct TextAttr ttd_TextAttr;
81 STRPTR ttd_TTFontSpec;
83 struct TextFont *ttd_Font; // Font for Text
84 struct TTFontFamily ttd_TTFont; // TTEngine font
86 BOOL ttd_Hidden;
89 //----------------------------------------------------------------------------
91 // Tags for TT_CreateTTItem()
93 #define TT_FirstTag (TAG_USER+17490)
95 #define TT_Dummy TAG_IGNORE
97 #define TT_Title TT_FirstTag+1 // CONST_STRPTR
98 #define TT_TitleID TT_FirstTag+2 // CONST_STRPTR
99 #define TT_HorizGroup TT_FirstTag+3 // struct ttDef *
100 #define TT_VertGroup TT_FirstTag+4 // struct ttDef *
101 #define TT_TextStyle TT_FirstTag+5 // ULONG - combination of FSF_UNDERLINED, FSF_BOLD, and FSF_ITALIC
102 #define TT_HAlign TT_FirstTag+6 // ULONG - GTJ_LEFT, GTJ_RIGHT, or GTJ_CENTER
103 #define TT_Item TT_FirstTag+7 // struct ttDef *
104 #define TT_Members TT_FirstTag+8 // struct ttDef *
105 #define TT_LayoutMode TT_FirstTag+9 // ULONG -
106 #define TT_Hidden TT_FirstTag+10 // ULONG - BOOL
107 #define TT_WideTitleBar TT_FirstTag+11 // ULONG - BOOL
108 #define TT_TextPen TT_FirstTag+12 // ULONG - Pen number for text
109 #define TT_Image TT_FirstTag+13 // struct DataTypesImage *
110 #define TT_Space TT_FirstTag+14 // ULONG - number of pixels space
111 #define TT_Font TT_FirstTag+15 // struct TextAttr *
112 #define TT_DrawFrame TT_FirstTag+16 // ULONG - some of the MF_FRAME_... values, e.g. MF_FRAME_NONE
113 #define TT_TitleHook TT_FirstTag+17 // CONST_STRPTR - userHook will be called in TTLayout() with
114 // hook=userHook, object=ttDef, message=supplied text
115 // user hook MUST return string (will be duplicated).
116 // Buffer is guaranteed to be empty at entry.
117 // If anything goes wrong, an empty buffer MUST be returned.
118 #define TT_HiddenHook TT_FirstTag+18 // CONST_STRPTR - userHook will be called in TTLayout() with
119 // hook=userHook, object=ttDef, message=supplied text
120 // user hook MUST return ULONG result
121 #define TT_SpaceLeft TT_FirstTag+19 // ULONG - additional space on left side of cell in pixel
122 #define TT_SpaceRight TT_FirstTag+20 // ULONG - additional space on right side of cell in pixel
123 #define TT_SpaceTop TT_FirstTag+21 // ULONG - additional space on top side of cell in pixel
124 #define TT_SpaceBottom TT_FirstTag+22 // ULONG - additional space on bottom side of cell in pixel
125 #define TT_DTImage TT_FirstTag+23 // CONST_STRPTR file name of datatypes image
126 #define TT_VAlign TT_FirstTag+24 // ULONG enum TTVertAlign
127 #define TT_TTFont TT_FirstTag+25 // struct TTTextAttr * - spec for TT font to use
129 //----------------------------------------------------------------------------
131 #define TT_CreateTooltip TT_CreateItem
133 #define TTSpace(s) TT_Item, (IPTR) TT_CreateItem(TT_Space, (s))
134 #define TTItem(t) TT_Item, (IPTR) TT_CreateItem(TT_Title, (t)
135 #define TTTitleHook(t) TT_Item, (IPTR) TT_CreateItem(TT_TitleHook, (t)
136 #define TTItemID(t) TT_Item, (IPTR) TT_CreateItem(TT_TitleID, (t)
137 #define TTHoriz TT_Item, (IPTR) TT_CreateItem(TT_LayoutMode, TTL_Horizontal
138 #define TTVert TT_Item, (IPTR) TT_CreateItem(TT_LayoutMode, TTL_Vertical
139 #define TTMembers TT_Members, (IPTR) TT_CreateItem(TT_Dummy, 0
140 #define TTobjName(t) TT_Item, (IPTR) TT_CreateItem(TT_Title, (t), \
141 TT_TextStyle, FSF_BOLD, TT_HAlign, GTJ_CENTER
143 #ifndef End
144 #define End TAG_DONE)
145 #endif
147 //----------------------------------------------------------------------------
149 struct ttDef *TT_CreateItemA(struct TagItem *TagList);
150 struct ttDef *TT_CreateItem(ULONG FirstTag, ...);
151 void TTDisposeItem(struct ttDef *oldDef);
152 void TTRender(struct RastPort *rp, struct ttDef *oldDef, WORD xLeft, WORD yTop);
153 void TTLayout(struct RastPort *rp, struct ttDef *oldDef, struct IBox *layoutBox,
154 ULONG LayoutMode, struct Hook *userHook);
156 //----------------------------------------------------------------------------
158 #endif /* TTLAYOUT_H */