fix comment on SA_CompositingFlags. Add SA_AlphaPreCompositHook to allow pre-processi...
[AROS.git] / compiler / include / intuition / screens.h
blob383ec017c179f7418d5f7c6d962cc0ef60bc3c5a
1 #ifndef INTUITION_SCREENS_H
2 #define INTUITION_SCREENS_H
4 /*
5 Copyright © 1995-2013, The AROS Development Team. All rights reserved.
6 $Id$
8 Desc: Screen handling structures
9 Lang: english
12 #ifndef EXEC_TYPES_H
13 # include <exec/types.h>
14 #endif
15 #ifndef GRAPHICS_CLIP_H
16 # include <graphics/clip.h>
17 #endif
18 #ifndef GRAPHICS_GFX_H
19 # include <graphics/gfx.h>
20 #endif
21 #ifndef GRAPHICS_LAYERS_H
22 # include <graphics/layers.h>
23 #endif
24 #ifndef GRAPHICS_RASTPORT_H
25 # include <graphics/rastport.h>
26 #endif
27 #ifndef GRAPHICS_VIEW_H
28 # include <graphics/view.h>
29 #endif
30 #ifndef UTILITY_TAGITEM_H
31 # include <utility/tagitem.h>
32 #endif
34 struct Screen
36 struct Screen * NextScreen;
37 struct Window * FirstWindow;
39 WORD LeftEdge;
40 WORD TopEdge;
41 WORD Width;
42 WORD Height;
44 WORD MouseY;
45 WORD MouseX;
47 UWORD Flags;
48 UBYTE * Title;
49 UBYTE * DefaultTitle;
51 BYTE BarHeight;
52 BYTE BarVBorder;
53 BYTE BarHBorder;
54 BYTE MenuVBorder;
55 BYTE MenuHBorder;
56 BYTE WBorTop;
57 BYTE WBorLeft;
58 BYTE WBorRight;
59 BYTE WBorBottom;
61 struct TextAttr * Font;
63 struct ViewPort ViewPort;
64 struct RastPort RastPort;
65 struct BitMap BitMap_OBSOLETE; /* OBSOLETE */
66 struct Layer_Info LayerInfo;
68 struct Gadget * FirstGadget;
70 UBYTE DetailPen;
71 UBYTE BlockPen;
73 UWORD SaveColor0;
74 struct Layer * BarLayer;
75 UBYTE * ExtData;
76 UBYTE * UserData;
79 struct NewScreen
81 WORD LeftEdge;
82 WORD TopEdge;
83 WORD Width;
84 WORD Height;
86 WORD Depth;
87 UBYTE DetailPen;
88 UBYTE BlockPen;
90 UWORD ViewModes;
91 UWORD Type; /* see below */
93 struct TextAttr * Font;
94 UBYTE * DefaultTitle;
95 struct Gadget * Gadgets;
96 struct BitMap * CustomBitMap;
99 struct ExtNewScreen
101 WORD LeftEdge;
102 WORD TopEdge;
103 WORD Width;
104 WORD Height;
106 WORD Depth;
107 UBYTE DetailPen;
108 UBYTE BlockPen;
110 UWORD ViewModes;
111 UWORD Type; /* see below */
113 struct TextAttr * Font;
114 UBYTE * DefaultTitle;
115 struct Gadget * Gadgets;
116 struct BitMap * CustomBitMap;
118 /* ExtNewScreen specific extension */
119 struct TagItem * Extension; /* see below */
122 /* Screen->Flags and (Ext)NewScreen->Type*/
123 #define WBENCHSCREEN (1<<0)
124 #define PUBLICSCREEN (1<<1)
125 #define CUSTOMSCREEN 0x000F
126 #define SCREENTYPE 0x000F
127 /* Screen->Flags */
128 #define SHOWTITLE (1<<4)
129 #define BEEPING (1<<5)
130 #define CUSTOMBITMAP (1<<6)
131 #define SCREENBEHIND (1<<7)
132 #define SCREENQUIET (1<<8)
133 #define SCREENHIRES (1<<9)
134 #define PENSHARED (1<<10)
135 #define NS_EXTENDED (1<<12)
136 #define AUTOSCROLL (1<<14)
138 /* Height */
139 #define STDSCREENHEIGHT -1
140 /* Width */
141 #define STDSCREENWIDTH -1
143 /* ExtNewScreen->Extension (Tags) */
144 #define SA_Dummy (TAG_USER + 32 )
145 #define SA_Left (SA_Dummy + 1 ) /* [ISG] LONG Left edge position */
146 #define SA_Top (SA_Dummy + 2 ) /* [ISG] LONG Top edge position */
147 #define SA_Width (SA_Dummy + 3 ) /* [I.G] LONG Screen width */
148 #define SA_Height (SA_Dummy + 4 ) /* [I.G] LONG Screen height */
149 #define SA_Depth (SA_Dummy + 5 ) /* [I.G] LONG Screen depth */
150 #define SA_DetailPen (SA_Dummy + 6 )
151 #define SA_BlockPen (SA_Dummy + 7 )
152 #define SA_Title (SA_Dummy + 8 )
153 #define SA_Colors (SA_Dummy + 9 )
154 #define SA_ErrorCode (SA_Dummy + 10 )
155 #define SA_Font (SA_Dummy + 11 )
156 #define SA_SysFont (SA_Dummy + 12 )
157 #define SA_Type (SA_Dummy + 13 )
158 #define SA_BitMap (SA_Dummy + 14 )
159 #define SA_PubName (SA_Dummy + 15 ) /* [I.G] STRPTR Public screen name */
160 #define SA_PubSig (SA_Dummy + 16 )
161 #define SA_PubTask (SA_Dummy + 17 )
162 #define SA_DisplayID (SA_Dummy + 18 ) /* [I.G] ULONG Display mode ID */
163 #define SA_DClip (SA_Dummy + 19 )
164 #define SA_Overscan (SA_Dummy + 20 ) /* see below */
166 #define SA_ShowTitle (SA_Dummy + 22 )
167 #define SA_Behind (SA_Dummy + 23 ) /* [I.G] BOOL */
168 #define SA_Quiet (SA_Dummy + 24 )
169 #define SA_AutoScroll (SA_Dummy + 25 )
170 #define SA_Pens (SA_Dummy + 26 )
171 #define SA_FullPalette (SA_Dummy + 27 )
172 #define SA_ColorMapEntries (SA_Dummy + 28 )
173 #define SA_Parent (SA_Dummy + 29 )
174 #define SA_Draggable (SA_Dummy + 30 )
175 #define SA_Exclusive (SA_Dummy + 31 )
176 #define SA_SharePens (SA_Dummy + 32 )
177 #define SA_BackFill (SA_Dummy + 33 )
178 #define SA_Interleaved (SA_Dummy + 34 )
179 #define SA_Colors32 (SA_Dummy + 35 )
180 #define SA_VideoControl (SA_Dummy + 36 )
181 #define SA_FrontChild (SA_Dummy + 37 )
182 #define SA_BackChild (SA_Dummy + 38 )
183 #define SA_LikeWorkbench (SA_Dummy + 39 )
184 #define SA_MinimizeISG (SA_Dummy + 41 )
186 #define SA_Displayed (SA_Dummy + 101) /* [..G] BOOL The screen is currently on display */
187 #define SA_MonitorName (SA_Dummy + 102) /* [I.G] STRPTR Monitor object name */
188 #define SA_MonitorObject (SA_Dummy + 103) /* [..G] Object * Monitorclass object */
189 #define SA_TopLeftScreen (SA_Dummy + 112) /* [..G] struct Screen * Pointer to the screen displayed on another monitor */
190 #define SA_TopMiddleScreen (SA_Dummy + 113)
191 #define SA_TopRightScreen (SA_Dummy + 114)
192 #define SA_MiddleLeftScreen (SA_Dummy + 115)
193 #define SA_MiddleRightScreen (SA_Dummy + 117)
194 #define SA_BottomLeftScreen (SA_Dummy + 118)
195 #define SA_BottomMiddleScreen (SA_Dummy + 119)
196 #define SA_BottomRightScreen (SA_Dummy + 120)
197 #define SA_StopBlanker (SA_Dummy + 121) /* [.S.] BOOL Reserved */
198 #define SA_ShowPointer (SA_Dummy + 122) /* [ISG] BOOL Whether to show mouse pointer on custom screen */
199 #define SA_GammaControl (SA_Dummy + 123) /* [I..] BOOL Enable custom gamma table for the screen */
200 #define SA_GammaRed (SA_Dummy + 124) /* [ISG] UBYTE * Gamma table for red color */
201 #define SA_GammaBlue (SA_Dummy + 125) /* [ISG] UBYTE * Gamma table for blue color */
202 #define SA_GammaGreen (SA_Dummy + 126) /* [ISG] UBYTE * Gamma table for green color */
203 #define SA_3DSupport (SA_Dummy + 127) /* [I..] BOOL Make sure that screen has 3D support */
204 #define SA_AdaptSize (SA_Dummy + 128) /* [I..] BOOL Adapt screen size to display size */
205 #define SA_DisplayWidth (SA_Dummy + 129) /* [I.G] ULONG Width of the display mode to search for */
206 #define SA_DisplayHeight (SA_Dummy + 130) /* [I.G] ULONG Height of the display mode to search for */
207 #define SA_OpacitySupport (SA_Dummy + 131) /* [..G] Reserved */
208 #define SA_SourceAlphaSupport (SA_Dummy + 132) /* [..G] Reserved */
209 #define SA_PixelFormat (SA_Dummy + 133) /* [..G] ULONG Pixel format of the screen */
210 #define SA_ScreenbarTextYPos (SA_Dummy + 134) /* [..G] LONG Y position (baseline) of the screen bar text */
211 #define SA_ScreenbarTextPen (SA_Dummy + 135) /* [..G] ULONG Pen color for the screenbar text */
212 #define SA_ScreenbarTextFont (SA_Dummy + 136) /* [..G] struct TextFont * Font for the screenbar text */
213 #define SA_ScreenbarSignal (SA_Dummy + 137) /* [..G] ULONG Reserved (MorphOS: signal bit for screenbar pluins) */
214 #define SA_ExactMatchMonitorName (SA_Dummy + 138)/* [I..] BOOL Strictly obey SA_MonitorName */
215 #define SA_CompositingLayers (SA_Dummy + 139) /* [I.G] BOOL Reserved (MorphOS: use composition for layers) */
216 #define SA_CompositingFlags (SA_Dummy + 140) /* [ISG] ULONG AROS: Allow openers to request compositing modes */
217 #define SA_AlphaPreCompositHook (SA_Dummy + 141) /* [ISG] Hook * AROS: Hook to Pre-Process Composited buffers */
219 /* SA_Overscan */
220 #define OSCAN_TEXT 1
221 #define OSCAN_STANDARD 2
222 #define OSCAN_MAX 3
223 #define OSCAN_VIDEO 4
225 /* Public Screens */
227 struct PubScreenNode
229 struct Node psn_Node;
231 struct Screen * psn_Screen;
232 UWORD psn_Flags; /* see below */
233 WORD psn_Size;
234 WORD psn_VisitorCount;
235 struct Task * psn_SigTask;
236 UBYTE psn_SigBit;
239 /* psn_Flags */
240 #define PSNF_PRIVATE (1<<0)
242 /* Maximum length of public screen names. The buffers containing these strings
243 must have a length of MAXPUBSCREENNAME+1. */
244 #define MAXPUBSCREENNAME 139
246 #define SHANGHAI (1<<0)
247 #define POPPUBSCREEN (1<<1)
249 /* Screen functions */
251 /* AllocScreenBuffer() */
252 #define SB_SCREEN_BITMAP 1
253 #define SB_COPY_BITMAP 2
255 struct ScreenBuffer
257 struct BitMap * sb_BitMap;
258 struct DBufInfo * sb_DBufInfo;
261 /* ScreenDepth() */
262 #define SDEPTH_TOFRONT 0
263 #define SDEPTH_TOBACK 1
264 #define SDEPTH_INFAMILY 2
266 /* ScreenPosition() */
267 #define SPOS_RELATIVE 0x00
268 #define SPOS_ABSOLUTE (1<<0)
269 #define SPOS_MAKEVISIBLE (1<<1)
270 #define SPOS_FORCEDRAG (1<<2)
272 /* Draw Info */
274 struct DrawInfo
276 UWORD dri_Version; /* see below */
277 UWORD dri_NumPens;
278 UWORD * dri_Pens; /* see below */
279 struct TextFont * dri_Font;
280 UWORD dri_Depth;
282 struct
284 UWORD X;
285 UWORD Y;
286 } dri_Resolution;
288 ULONG dri_Flags; /* see below */
290 /* The following fields are present if dri_Version >= 2 */
291 struct Image * dri_CheckMark;
292 struct Image * dri_AmigaKey;
295 * The following fields are compatible with AmigaOS v4.
296 * Present if dri_Version >= 3.
298 struct Screen *dri_Screen;
299 APTR dri_Prefs;
301 IPTR dri_Reserved[3];
304 /* dri_Version */
305 #define DRI_VERSION 3
307 /* dri_Flags */
308 #define DRIF_NEWLOOK (1L<<0)
310 /* dri_Pens */
311 #define DETAILPEN 0
312 #define BLOCKPEN 1
313 #define TEXTPEN 2
314 #define SHINEPEN 3
315 #define SHADOWPEN 4
316 #define FILLPEN 5
317 #define FILLTEXTPEN 6
318 #define BACKGROUNDPEN 7
319 #define HIGHLIGHTTEXTPEN 8
320 #define BARDETAILPEN 9
321 #define BARBLOCKPEN 10
322 #define BARTRIMPEN 11
323 #define NUMDRIPENS 12
325 #define PEN_C0 0xFEFF
326 #define PEN_C1 0xFEFE
327 #define PEN_C2 0xFEFD
328 #define PEN_C3 0xFEFC
330 /* values for ChangeDecoration ID param */
332 #define DECORATION_SET 0x8001
333 #define DECORATION_DEFAULT 0x8000
335 /* Errors */
336 #define OSERR_NOMONITOR 1
337 #define OSERR_NOCHIPS 2
338 #define OSERR_NOMEM 3
339 #define OSERR_NOCHIPMEM 4
340 #define OSERR_PUBNOTUNIQUE 5
341 #define OSERR_UNKNOWNMODE 6
342 #define OSERR_TOODEEP 7
343 #define OSERR_ATTACHFAIL 8
344 #define OSERR_NOTAVAILABLE 9
346 #endif /* GRAPHICS_SCREENS_H */