add bit definitions for composition flags. add definition for alpha-composition.
[aros:aros.git] / AROS / rom / hidds / graphics / include / graphics.h
1 #ifndef HIDD_GRAPHICS_H
2 #define HIDD_GRAPHICS_H
3
4 /*
5     Copyright © 1995-2013, The AROS Development Team. All rights reserved.
6     $Id$
7
8     Desc: Definitions for the Graphics HIDD system.
9     Lang: english
10 */
11
12 #include <graphics/gfx.h>
13 #include <hidd/hidd.h>
14 #include <oop/oop.h>
15 #include <utility/utility.h>
16
17 typedef OOP_Object *HIDDT_BitMap;
18 typedef OOP_Object *HIDDT_GC;
19
20 #ifdef __GRAPHICS_NOHIDDBASE__
21 #define __Hidd_Gfx_NOMETHODBASE__
22 #define __Hidd_BitMap_NOMETHODBASE__
23 #define __Hidd_ColorMap_NOMETHODBASE__
24 #define __Hidd_GC_NOMETHODBASE__
25 #define __Hidd_PlanarBM_NOMETHODBASE__
26 #endif
27
28 /**** Graphics definitions ****************************************************/
29
30 /* Sprite types */
31 #define vHidd_SpriteType_3Plus1      0x01 /* Color 0 transparent, 1-3 visible                */
32 #define vHidd_SpriteType_2Plus1      0x02 /* Color 0 transparrent, 1 undefined, 2-3 visible */
33 #define vHidd_SpriteType_DirectColor 0x04 /* Hi- or truecolor image                          */
34
35 /* Parameter tags for the QueryModeIDs method */
36 enum
37 {
38     tHidd_GfxMode_MinWidth = TAG_USER,
39     tHidd_GfxMode_MaxWidth,
40     tHidd_GfxMode_MinHeight,
41     tHidd_GfxMode_MaxHeight,
42     tHidd_GfxMode_PixFmts
43 };
44
45 typedef enum
46 {
47     vHidd_Gfx_DPMSLevel_On,
48     vHidd_Gfx_DPMSLevel_Standby,
49     vHidd_Gfx_DPMSLevel_Suspend,
50     vHidd_Gfx_DPMSLevel_Off
51     
52 } HIDDT_DPMSLevel;
53
54 typedef IPTR HIDDT_StdPixFmt;
55 typedef IPTR HIDDT_ModeID;
56 typedef IPTR HIDDT_DrawMode;
57 typedef IPTR HIDDT_ColorModel;
58 typedef IPTR HIDDT_BitMapType;
59
60 struct HIDD_ModeProperties
61 {
62     ULONG DisplayInfoFlags; /* PropertyFlags value for struct DisplayInfo (see graphics/displayinfo.h).
63                                Does not include features emulated by software.                           */
64     UWORD NumHWSprites;     /* Number of supported hardware sprites                                      */
65     UWORD CompositionFlags; /* Supported composition types, see below                                    */
66
67     /* This structure may grow in future */
68
69 };
70
71 #define COMPB_ABOVE             0
72 #define COMPF_ABOVE             (1 << COMPB_ABOVE)      /* Compositive above screens       */
73 #define COMPB_BELOW             1
74 #define COMPF_BELOW             (1 << COMPB_BELOW)      /* ... below ...                   */
75 #define COMPB_LEFT              2
76 #define COMPF_LEFT              (1 << COMPB_LEFT)        /* ... to the left of ...         */
77 #define COMPB_RIGHT             3
78 #define COMPF_RIGHT             (1 << COMPB_RIGHT)      /* ... and to the right of ...     */
79 #define COMPB_ALPHA             7
80 #define COMPF_ALPHA             (1 << COMPB_ALPHA)
81 #define COMPB_SAME              8
82 #define COMPF_SAME              (1 << COMPB_SAME)       /* can only composit the same sync */
83
84 struct ViewPort;
85 struct View;
86
87 /* A structure passed to ShowViewPorts() method */
88 struct HIDD_ViewPortData
89 {
90     struct HIDD_ViewPortData *Next;     /* Pointer to a next bitmap             */
91     OOP_Object               *Bitmap;   /* The bitmap object itself             */
92     struct ViewPortExtra     *vpe;      /* Associated ViewPortExtra             */
93     APTR                      UserData; /* The driver can keep own stuff here   */
94 };
95
96 #define vHidd_ModeID_Invalid ((HIDDT_ModeID)-1)
97
98
99 /* Flags */
100
101 /* This will make the gfx hidd, copy back from the framebuffer into
102    the old bitmap you were using. Use this option with extreme
103    prejudice:  YOU MUST BE TOTALLY SURE THAT THE BITMAP
104    YOU CALLED SHOW ON BEFORE THIS CALL HAS NOT BEEN DISPOSED
105 */
106 #define fHidd_Gfx_Show_CopyBack 0x01
107
108 enum
109 {
110     tHidd_Cursor_BitMap,        /* OOP_Object *, cursor shape bitmap */
111     tHidd_Cursor_XPos,          /* ULONG, cursor x position     */
112     tHidd_Cursor_YPos,          /* ULONG, cursor Y position */
113     tHidd_Cursor_On             /* BOOL, cursor on, TRUE, FALSE. */
114 };
115
116 /* Framebuffer types */
117 enum
118 {
119     vHidd_FrameBuffer_None,
120     vHidd_FrameBuffer_Direct,
121     vHidd_FrameBuffer_Mirrored
122 };
123
124 /**** BitMap definitions ******************************************************/
125
126
127         /* Types */
128
129
130 typedef UWORD HIDDT_ColComp;    /* Color component */
131 typedef ULONG HIDDT_Pixel;
132
133         
134 typedef struct
135 {
136    HIDDT_ColComp        red;
137    HIDDT_ColComp        green;
138    HIDDT_ColComp        blue;
139    HIDDT_ColComp        alpha;
140    
141    HIDDT_Pixel          pixval;
142    
143 } HIDDT_Color;
144
145
146
147 typedef struct
148 {
149     ULONG entries;
150     HIDDT_Pixel *pixels;
151     
152 } HIDDT_PixelLUT;
153
154 typedef struct
155 {
156     ULONG entries;
157     HIDDT_Color *colors;
158     
159 } HIDDT_ColorLUT;
160
161
162
163 /* Standard pixelformats */
164 enum
165 {
166     /* Pseudo formats. These are not real pixelformats but are passed
167        for example to HIDD_BM_PutImage() to tell the format of the data
168     */
169       
170     vHidd_StdPixFmt_Unknown,
171     vHidd_StdPixFmt_Native,
172     vHidd_StdPixFmt_Native32,
173         
174     num_Hidd_PseudoStdPixFmt,
175         
176     /* Chunky formats. The order here must match those in ../stdpixfmts_??.h array !! */
177     vHidd_StdPixFmt_RGB24 = num_Hidd_PseudoStdPixFmt,
178     vHidd_StdPixFmt_BGR24,
179     vHidd_StdPixFmt_RGB16,
180     vHidd_StdPixFmt_RGB16_LE,
181     vHidd_StdPixFmt_BGR16,
182     vHidd_StdPixFmt_BGR16_LE,
183     vHidd_StdPixFmt_RGB15,
184     vHidd_StdPixFmt_RGB15_LE,
185     vHidd_StdPixFmt_BGR15,
186     vHidd_StdPixFmt_BGR15_LE,
187     vHidd_StdPixFmt_ARGB32,
188     vHidd_StdPixFmt_BGRA32,
189     vHidd_StdPixFmt_RGBA32,
190     vHidd_StdPixFmt_ABGR32,
191     vHidd_StdPixFmt_0RGB32,
192     vHidd_StdPixFmt_BGR032,
193     vHidd_StdPixFmt_RGB032,
194     vHidd_StdPixFmt_0BGR32,
195     vHidd_StdPixFmt_LUT8,
196     vHidd_StdPixFmt_Plane,
197
198     num_Hidd_AllPf
199 };
200
201 #if AROS_BIG_ENDIAN
202 #define vHidd_StdPixFmt_ARGB32_Native vHidd_StdPixFmt_ARGB32
203 #define vHidd_StdPixFmt_BGRA32_Native vHidd_StdPixFmt_BGRA32
204 #define vHidd_StdPixFmt_RGBA32_Native vHidd_StdPixFmt_RGBA32
205 #define vHidd_StdPixFmt_ABGR32_Native vHidd_StdPixFmt_ABGR32
206 #define vHidd_StdPixFmt_0RGB32_Native vHidd_StdPixFmt_0RGB32
207 #define vHidd_StdPixFmt_BGR032_Native vHidd_StdPixFmt_BGR032
208 #define vHidd_StdPixFmt_RGB032_Native vHidd_StdPixFmt_RGB032
209 #define vHidd_StdPixFmt_0BGR32_Native vHidd_StdPixFmt_0BGR32
210 #else
211 #define vHidd_StdPixFmt_ARGB32_Native vHidd_StdPixFmt_BGRA32
212 #define vHidd_StdPixFmt_BGRA32_Native vHidd_StdPixFmt_ARGB32
213 #define vHidd_StdPixFmt_RGBA32_Native vHidd_StdPixFmt_ABGR32
214 #define vHidd_StdPixFmt_ABGR32_Native vHidd_StdPixFmt_RGBA32
215 #define vHidd_StdPixFmt_0RGB32_Native vHidd_StdPixFmt_BGR032
216 #define vHidd_StdPixFmt_BGR032_Native vHidd_StdPixFmt_0RGB32
217 #define vHidd_StdPixFmt_RGB032_Native vHidd_StdPixFmt_0BGR32
218 #define vHidd_StdPixFmt_0BGR32_Native vHidd_StdPixFmt_RGB032
219 #endif
220
221 #define FIRST_RGB_STDPIXFMT             vHidd_StdPixFmt_RGB24
222 #define LAST_RGB_STDPIXFMT              vHidd_StdPixFmt_0BGR32
223 #define NUM_RGB_STDPIXFMT               (vHidd_StdPixFmt_0BGR32 - vHidd_StdPixFmt_RGB24 + 1)
224
225 #define num_Hidd_StdPixFmt              (num_Hidd_AllPf - num_Hidd_PseudoStdPixFmt)
226
227 #define IS_PSEUDO_STDPIXFMT(stdpf)      ( (stdpf) > 0 && (stdpf) < num_Hidd_PseudoStdPixFmt )
228     
229 #define IS_REAL_STDPIXFMT(stdpf)        ( (stdpf) >= num_Hidd_PseudoStdPixFmt && (stdpf) < num_Hidd_AllPf)
230 #define IS_STDPIXFMT(stdpf)             ( (stdpf) > 0 && (stdpf) < num_Hidd_AllPf )
231
232 #define REAL_STDPIXFMT_IDX(stdpf)       ( (stdpf) - num_Hidd_PseudoStdPixFmt )
233
234
235
236
237 #define MAP_SHIFT                       ((sizeof (HIDDT_Pixel) - sizeof (HIDDT_ColComp)) *8)
238 #define SHIFT_UP_COL(col)               ((HIDDT_Pixel)((col) << MAP_SHIFT))
239
240 #define MAP_COLCOMP(comp, val, pixfmt)  \
241         ((SHIFT_UP_COL(val) >> (pixfmt)->comp ## _shift) & (pixfmt)->comp ## _mask)
242         
243
244 #define MAP_RGB(r, g, b, pixfmt)        \
245           MAP_COLCOMP(red,   r, pixfmt) \
246         | MAP_COLCOMP(green, g, pixfmt) \
247         | MAP_COLCOMP(blue,  b, pixfmt) 
248
249
250 #define MAP_RGBA(r, g, b, a, pixfmt)    \
251           MAP_COLCOMP(red,   r, pixfmt)         \
252         | MAP_COLCOMP(green, g, pixfmt) \
253         | MAP_COLCOMP(blue,  b, pixfmt) \
254         | MAP_COLCOMP(alpha,  a, pixfmt)
255         
256         
257
258 #define SHIFT_DOWN_PIX(pix) ((pix) >> MAP_SHIFT)
259 #define GET_COLCOMP(comp, pix, pixfmt) \
260         SHIFT_DOWN_PIX( ( (pix) & (pixfmt)-> comp ## _mask) << pixfmt-> comp ## _shift )
261
262 #define RED_COMP(pix, pixfmt)   GET_COLCOMP(red,   pix, pixfmt)
263 #define GREEN_COMP(pix, pixfmt) GET_COLCOMP(green, pix, pixfmt)
264 #define BLUE_COMP(pix, pixfmt)  GET_COLCOMP(blue,  pix, pixfmt)
265 #define ALPHA_COMP(pix, pixfmt) GET_COLCOMP(alpha,  pix, pixfmt)
266
267 typedef struct
268 {
269     UWORD           depth;
270     UWORD           size;               /* Size of pixel in bits */
271     UWORD           bytes_per_pixel;
272
273     HIDDT_Pixel     red_mask;
274     HIDDT_Pixel     green_mask;
275     HIDDT_Pixel     blue_mask;
276     HIDDT_Pixel     alpha_mask;
277
278     UBYTE           red_shift;
279     UBYTE           green_shift;
280     UBYTE           blue_shift;
281     UBYTE           alpha_shift;
282
283     HIDDT_Pixel     clut_mask;
284     UBYTE           clut_shift;
285
286     HIDDT_StdPixFmt stdpixfmt;          /* Number of corresponding standard format */
287     ULONG           flags;              /* Flags, see below */
288         
289 } HIDDT_PixelFormat;
290
291 #include <interface/Hidd_PixFmt.h>
292
293 typedef ULONG (*HIDDT_RGBConversionFunction)(APTR srcPixels, ULONG srcMod, HIDDT_StdPixFmt srcPixFmt, 
294                                              APTR dstPixels, ULONG dstMod, HIDDT_StdPixFmt dstPixFmt,
295                                              UWORD width, UWORD height);
296
297 #include <interface/Hidd_BitMap.h>
298
299 #define CLID_Hidd_BitMap IID_Hidd_BitMap
300
301 #define IS_BITMAP_ATTR(attr, idx) \
302         ( ( ( idx ) = (attr) - HiddBitMapAttrBase) < num_Hidd_BitMap_Attrs)
303
304
305 /**** Graphics context definitions ********************************************/
306
307 #include <interface/Hidd_GC.h>
308
309 #define CLID_Hidd_GC IID_Hidd_GC
310
311 /* Drawmodes for a graphics context */
312 #define vHidd_GC_DrawMode_Clear         0x00 /* 0                   */
313 #define vHidd_GC_DrawMode_And           0x01 /* src AND dst         */
314 #define vHidd_GC_DrawMode_AndReverse    0x02 /* src AND NOT dst     */
315 #define vHidd_GC_DrawMode_Copy          0x03 /* src                 */
316 #define vHidd_GC_DrawMode_AndInverted   0x04 /* NOT src AND dst     */
317 #define vHidd_GC_DrawMode_NoOp          0x05 /* dst                 */
318 #define vHidd_GC_DrawMode_Xor           0x06 /* src XOR dst         */
319 #define vHidd_GC_DrawMode_Or            0x07 /* src OR dst          */
320 #define vHidd_GC_DrawMode_Nor           0x08 /* NOT src AND NOT dst */
321 #define vHidd_GC_DrawMode_Equiv         0x09 /* NOT src XOR dst     */
322 #define vHidd_GC_DrawMode_Invert        0x0A /* NOT dst             */
323 #define vHidd_GC_DrawMode_OrReverse     0x0B /* src OR NOT dst      */
324 #define vHidd_GC_DrawMode_CopyInverted  0x0C /* NOT src             */
325 #define vHidd_GC_DrawMode_OrInverted    0x0D /* NOT src OR dst      */
326 #define vHidd_GC_DrawMode_Nand          0x0E /* NOT src OR NOT dst  */
327 #define vHidd_GC_DrawMode_Set           0x0F /* 1                   */
328
329 #define vHidd_GC_ColExp_Transparent     (1 << 0)
330 #define vHidd_GC_ColExp_Opaque          (1 << 1)
331
332 /*******************************************************/
333 /**  PROTECTED DATA 
334         !! These structures are at the top of the gfx hidd baseclasses.
335         DO NEVER ATTEMPT TO ACCESS THESE FROM OUTSIDE OF SUBCLASSES.
336         DON'T EVEN THINK ABOUT IT !!!
337         THEY SHOULD ONLY BE ACCESSED FROM THE SUBCLASSES, AND THEN
338         BY USING THE MACROS BELOW !! 
339 */
340
341 struct _hidd_bitmap_protected
342 {
343     OOP_Object *pixfmt;
344 };
345
346
347 #define BM_PIXFMT(bm) \
348  ((HIDDT_PixelFormat *)(((struct _hidd_bitmap_protected *)bm)->pixfmt))
349 #define BM_DEPTH(bm)    BM_PIXFMT(bm)->depth
350
351
352 /****** !!!! PROTECTED DATA !!!!
353         This typedef can be used to acces a GC object directly from within
354         a bitmap class, but NEVER EVER use it to access a GC object
355         from outside a bitmap class. And when accessing from inside a
356         bitmap class, use the macros below !
357 */
358
359 typedef struct
360 {
361     struct Rectangle *clipRect;
362     HIDDT_Pixel       fg;         /* foreground color                                 */
363     HIDDT_Pixel       bg;         /* background color                                 */
364     ULONG             colMask;    /* ColorMask prevents some color bits from changing */
365     UWORD             linePat;    /* LinePattern                                      */
366     UBYTE             linePatCnt; /* LinePattern start bit                            */
367     UBYTE             drMode;     /* drawmode                                         */
368     UBYTE             colExp;
369 } HIDDT_GC_Intern;
370
371 #define GCINT(gc)           ((HIDDT_GC_Intern *)gc)
372 #define GC_FG(gc)           (GCINT(gc)->fg)
373 #define GC_BG(gc)           (GCINT(gc)->bg)
374 #define GC_DRMD(gc)         (GCINT(gc)->drMode)
375 #define GC_COLMASK(gc)      (GCINT(gc)->colMask)
376 #define GC_LINEPAT(gc)      (GCINT(gc)->linePat)
377 #define GC_LINEPATCNT(gc)   (GCINT(gc)->linePatCnt)
378 #define GC_COLEXP(gc)       (GCINT(gc)->colExp)
379
380 #define GC_DOCLIP(gc)       (GCINT(gc)->clipRect)
381 #define GC_CLIPX1(gc)       (GCINT(gc)->clipRect->MinX)
382 #define GC_CLIPY1(gc)       (GCINT(gc)->clipRect->MinY)
383 #define GC_CLIPX2(gc)       (GCINT(gc)->clipRect->MaxX)
384 #define GC_CLIPY2(gc)       (GCINT(gc)->clipRect->MaxY)
385
386 /****************** PixFmt definitions **************************/
387
388 /* Color model, bitmap type, and swapping bytes flag are stored
389    in Flags member of the HIDDT_PixelFormat structure */
390
391 /* CM == Color model */
392 enum
393
394     vHidd_ColorModel_TrueColor,
395     vHidd_ColorModel_DirectColor,
396     vHidd_ColorModel_Palette,
397     vHidd_ColorModel_StaticPalette,
398     vHidd_ColorModel_GrayScale,
399     vHidd_ColorModel_StaticGray,
400
401     num_Hidd_CM
402 };
403
404
405 /* Bitmap types */
406 enum
407 {
408     vHidd_BitMapType_Unknown,
409     vHidd_BitMapType_Chunky,
410     vHidd_BitMapType_Planar,
411     vHidd_BitMapType_InterleavedPlanar,
412     
413     num_Hidd_BitMapTypes
414 };
415
416
417 #define vHidd_ColorModel_Mask   0x0000000F
418 #define vHidd_ColorModel_Shift  0
419 #define vHidd_BitMapType_Mask   0x000000F0
420 #define vHidd_BitMapType_Shift  4
421
422 /* stegerg: The SwapPixelBytes flag is used to indicate that
423             one must swap the pixel bytes after reading a pixel
424             and before writing a pixel when doing some calculations
425             with the pixfmt's shift/mask values. This is for
426             pixel format which otherwise cannot be described through
427             shift/mask values. For example a 0x0RRRRRGG 0xGGGBBBBB 16 bit
428             pixfmt on a little endian machine, where a WORD-pixel-access
429             requires the pixel-value to be in 0xGGGBBBBB0RRRRRGG format. */
430             
431 #define vHidd_PixFmt_SwapPixelBytes_Flag 0x00000100
432
433 #define HIDD_PF_COLMODEL(pf) ( ((pf)->flags & vHidd_ColorModel_Mask) >> vHidd_ColorModel_Shift )
434 #define SET_PF_COLMODEL(pf, cm) \
435      (pf)->flags &= ~vHidd_ColorModel_Mask;     \
436      (pf)->flags |= ( (cm) << vHidd_ColorModel_Shift);
437      
438
439 #define IS_PALETTIZED(pf) (    (HIDD_PF_COLMODEL(pf) == vHidd_ColorModel_Palette)       \
440                             || (HIDD_PF_COLMODEL(pf) == vHidd_ColorModel_StaticPalette) )
441                             
442 #define IS_TRUECOLOR(pf)        ( (HIDD_PF_COLMODEL(pf) == vHidd_ColorModel_TrueColor) )
443 #define IS_PALETTE(pf)          ( (HIDD_PF_COLMODEL(pf) == vHidd_ColorModel_Palette) )
444 #define IS_STATICPALETTE(pf)    ( (HIDD_PF_COLMODEL(pf) == vHidd_ColorModel_StaticPalette) )
445
446
447
448 #define HIDD_PF_BITMAPTYPE(pf) ( ((pf)->flags & vHidd_BitMapType_Mask) >> vHidd_BitMapType_Shift )
449 #define SET_PF_BITMAPTYPE(pf, bmt)      \
450      (pf)->flags &= ~vHidd_BitMapType_Mask;     \
451      (pf)->flags |= ( (bmt) << vHidd_BitMapType_Shift );
452
453
454 #define PF_GRAPHTYPE(cmodel, bmtype)    \
455     (   (vHidd_ColorModel_ ## cmodel << vHidd_ColorModel_Shift) \
456       | (vHidd_BitMapType_ ## bmtype << vHidd_BitMapType_Shift) )
457
458 #define SET_PF_SWAPPIXELBYTES_FLAG(pf, on) \
459     do \
460     { \
461         if (on) \
462             (pf)->flags |= vHidd_PixFmt_SwapPixelBytes_Flag; \
463         else \
464             (pf)->flags &= ~vHidd_PixFmt_SwapPixelBytes_Flag; \
465     } while (0)
466     
467 #define HIDD_PF_SWAPPIXELBYTES(pf) \
468     ( ( (pf)->flags & vHidd_PixFmt_SwapPixelBytes_Flag) ? 1 : 0 )
469
470 #define IS_PIXFMT_ATTR(attr, idx) \
471         ( ( ( idx ) = (attr) - HiddPixFmtAttrBase) < num_Hidd_PixFmt_Attrs)
472
473
474
475 /********** Planar bitmap *******************/
476
477 #include <interface/Hidd_PlanarBM.h>
478
479 #define CLID_Hidd_PlanarBM IID_Hidd_PlanarBM
480
481 #define IS_PLANARBM_ATTR(attr, idx) \
482         ( ( ( idx ) = (attr) - HiddPlanarBMAttrBase) < num_Hidd_PlanarBM_Attrs)
483   
484
485
486 /********** Chunky bitmap *******************/
487
488 #include <interface/Hidd_ChunkyBM.h>
489
490 #define CLID_Hidd_ChunkyBM IID_Hidd_ChunkyBM
491
492 #define IS_CHUNKYBM_ATTR(attr, idx) \
493         ( ( ( idx ) = (attr) - HiddChunkyBMAttrBase) < num_Hidd_ChunkyBM_Attrs)
494
495
496 /********** ColorMap *******************/
497
498 #include <interface/Hidd_ColorMap.h>
499
500 #define CLID_Hidd_ColorMap IID_Hidd_ColorMap
501
502 #define IS_COLORMAP_ATTR(attr, idx) \
503         ( ( ( idx ) = (attr) - HiddColorMapAttrBase) < num_Hidd_ColorMap_Attrs)
504
505
506 /************* Sync class **************************************/
507
508 /* Sync flags */
509 #define vHidd_Sync_HSyncPlus            0x0001  /* HSYNC + if set */
510 #define vHidd_Sync_VSyncPlus            0x0002  /* VSYNC + if set */
511 #define vHidd_Sync_Interlaced           0x0004  /* Interlaced mode */
512 #define vHidd_Sync_DblScan              0x0008  /* Double scanline */
513
514 #include <interface/Hidd_Sync.h>
515
516 #define IS_SYNC_ATTR(attr, idx) \
517         ( ( ( idx ) = (attr) - HiddSyncAttrBase) < num_Hidd_Sync_Attrs)
518
519 /************* Video overlay class *****************************/
520
521 #include <interface/Hidd_Overlay.h>
522
523 #define IS_OVERLAY_ATTR(attr, idx) \
524         (((idx) = (attr) - HiddOverlayAttrBase) < num_Hidd_Overlay_Attrs)
525
526 /************* Graphics class *****************************/
527
528 #include <interface/Hidd_Gfx.h>
529
530 #define IS_GFX_ATTR(attr, idx)  \
531         ( ( ( idx ) = (attr) - HiddGfxAttrBase) < num_Hidd_Gfx_Attrs)
532
533 #define CLID_Hidd_Gfx IID_Hidd_Gfx
534
535 /* Compatability types */
536 #define pHidd_Gfx_Gamma pHidd_Gfx_GetGamma
537
538 /* How we hide HIDD bitmaps inside struct BitMap */
539 #define HIDD_BM_PAD_MAGIC        0x6148 /* 'Ah' - AROS HIDD */
540 #define IS_HIDD_BM(bitmap) ((bitmap)->pad == HIDD_BM_PAD_MAGIC)
541
542 #define HIDD_BM_EXTRAPLANES       8
543 #define HIDD_BM_OBJ(bitmap)       (*(OOP_Object **)&((bitmap)->Planes[8+0]))
544 #define HIDD_BM_DRVDATA(bitmap)   (*(struct monitor_driverdata **)&((bitmap)->Planes[8+1]))
545 #define HIDD_BM_COLMAP(bitmap)    (*(OOP_Object **)&((bitmap)->Planes[8+2]))
546 #define HIDD_BM_COLMOD(bitmap)    (*(HIDDT_ColorModel *)&((bitmap)->Planes[8+3]))
547 #define HIDD_BM_PIXTAB(bitmap)    (*(HIDDT_Pixel **)&((bitmap)->Planes[8+4]))
548 #define HIDD_BM_REALDEPTH(bitmap) (*(LONG *)&((bitmap)->Planes[8+5]))
549 #define HIDD_BM_FLAGS(bitmap)     (*(ULONG *)&((bitmap)->Planes[8+6]))
550 #define HIDD_BM_HIDDMODE(bitmap)  (*(HIDDT_ModeID *)&((bitmap)->Planes[8+7]))
551
552
553 #endif /* HIDD_GRAPHICS_H */