1 #ifndef INTUITION_SCREENS_H
2 #define INTUITION_SCREENS_H
5 Copyright © 1995-2014, The AROS Development Team. All rights reserved.
8 Desc: Screen handling structures
13 # include <exec/types.h>
15 #ifndef GRAPHICS_CLIP_H
16 # include <graphics/clip.h>
18 #ifndef GRAPHICS_GFX_H
19 # include <graphics/gfx.h>
21 #ifndef GRAPHICS_LAYERS_H
22 # include <graphics/layers.h>
24 #ifndef GRAPHICS_RASTPORT_H
25 # include <graphics/rastport.h>
27 #ifndef GRAPHICS_VIEW_H
28 # include <graphics/view.h>
30 #ifndef UTILITY_TAGITEM_H
31 # include <utility/tagitem.h>
36 struct Screen
* NextScreen
;
37 struct Window
* FirstWindow
;
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
;
74 struct Layer
* BarLayer
;
91 UWORD Type
; /* see below */
93 struct TextAttr
* Font
;
95 struct Gadget
* Gadgets
;
96 struct BitMap
* CustomBitMap
;
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
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)
139 #define STDSCREENHEIGHT -1
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_AlphaPreCompositingHook (SA_Dummy + 141) /* [ISG] Hook * AROS: Hook to Pre-Process Composited buffers */
221 #define OSCAN_STANDARD 2
223 #define OSCAN_VIDEO 4
229 struct Node psn_Node
;
231 struct Screen
* psn_Screen
;
232 UWORD psn_Flags
; /* see below */
234 WORD psn_VisitorCount
;
235 struct Task
* psn_SigTask
;
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
257 struct BitMap
* sb_BitMap
;
258 struct DBufInfo
* sb_DBufInfo
;
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)
276 UWORD dri_Version
; /* see below */
278 UWORD
* dri_Pens
; /* see below */
279 struct TextFont
* dri_Font
;
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
;
301 IPTR dri_Reserved
[3];
305 #define DRI_VERSION 3
308 #define DRIF_NEWLOOK (1L<<0)
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
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 /* INTUITION_SCREENS_H */