1 #ifndef HIDD_GRAPHICS_H
2 #define HIDD_GRAPHICS_H
5 Copyright © 1995-2013, The AROS Development Team. All rights reserved.
8 Desc: Definitions for the Graphics HIDD system.
12 #include <graphics/gfx.h>
13 #include <hidd/hidd.h>
15 #include <utility/utility.h>
17 typedef OOP_Object
*HIDDT_BitMap
;
18 typedef OOP_Object
*HIDDT_GC
;
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__
28 /**** Graphics definitions ****************************************************/
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 */
35 /* Parameter tags for the QueryModeIDs method */
38 tHidd_GfxMode_MinWidth
= TAG_USER
,
39 tHidd_GfxMode_MaxWidth
,
40 tHidd_GfxMode_MinHeight
,
41 tHidd_GfxMode_MaxHeight
,
47 vHidd_Gfx_DPMSLevel_On
,
48 vHidd_Gfx_DPMSLevel_Standby
,
49 vHidd_Gfx_DPMSLevel_Suspend
,
50 vHidd_Gfx_DPMSLevel_Off
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
;
60 struct HIDD_ModeProperties
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 */
67 /* This structure may grow in future */
72 #define COMPF_ABOVE (1 << COMPB_ABOVE) /* Compositive above screens */
74 #define COMPF_BELOW (1 << COMPB_BELOW) /* ... below ... */
76 #define COMPF_LEFT (1 << COMPB_LEFT) /* ... to the left of ... */
78 #define COMPF_RIGHT (1 << COMPB_RIGHT) /* ... and to the right of ... */
80 #define COMPF_ALPHA (1 << COMPB_ALPHA)
82 #define COMPF_SAME (1 << COMPB_SAME) /* can only composit the same sync */
87 /* A structure passed to ShowViewPorts() method */
88 struct HIDD_ViewPortData
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 */
96 #define vHidd_ModeID_Invalid ((HIDDT_ModeID)-1)
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
106 #define fHidd_Gfx_Show_CopyBack 0x01
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. */
116 /* Framebuffer types */
119 vHidd_FrameBuffer_None
,
120 vHidd_FrameBuffer_Direct
,
121 vHidd_FrameBuffer_Mirrored
124 /**** BitMap definitions ******************************************************/
130 typedef UWORD HIDDT_ColComp
; /* Color component */
131 typedef ULONG HIDDT_Pixel
;
163 /* Standard pixelformats */
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
170 vHidd_StdPixFmt_Unknown
,
171 vHidd_StdPixFmt_Native
,
172 vHidd_StdPixFmt_Native32
,
174 num_Hidd_PseudoStdPixFmt
,
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
,
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
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
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)
225 #define num_Hidd_StdPixFmt (num_Hidd_AllPf - num_Hidd_PseudoStdPixFmt)
227 #define IS_PSEUDO_STDPIXFMT(stdpf) ( (stdpf) > 0 && (stdpf) < num_Hidd_PseudoStdPixFmt )
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 )
232 #define REAL_STDPIXFMT_IDX(stdpf) ( (stdpf) - num_Hidd_PseudoStdPixFmt )
237 #define MAP_SHIFT ((sizeof (HIDDT_Pixel) - sizeof (HIDDT_ColComp)) *8)
238 #define SHIFT_UP_COL(col) ((HIDDT_Pixel)((col) << MAP_SHIFT))
240 #define MAP_COLCOMP(comp, val, pixfmt) \
241 ((SHIFT_UP_COL(val) >> (pixfmt)->comp ## _shift) & (pixfmt)->comp ## _mask)
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)
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)
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 )
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)
270 UWORD size
; /* Size of pixel in bits */
271 UWORD bytes_per_pixel
;
273 HIDDT_Pixel red_mask
;
274 HIDDT_Pixel green_mask
;
275 HIDDT_Pixel blue_mask
;
276 HIDDT_Pixel alpha_mask
;
283 HIDDT_Pixel clut_mask
;
286 HIDDT_StdPixFmt stdpixfmt
; /* Number of corresponding standard format */
287 ULONG flags
; /* Flags, see below */
291 #include <interface/Hidd_PixFmt.h>
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
);
297 #include <interface/Hidd_BitMap.h>
299 #define CLID_Hidd_BitMap IID_Hidd_BitMap
301 #define IS_BITMAP_ATTR(attr, idx) \
302 ( ( ( idx ) = (attr) - HiddBitMapAttrBase) < num_Hidd_BitMap_Attrs)
305 /**** Graphics context definitions ********************************************/
307 #include <interface/Hidd_GC.h>
309 #define CLID_Hidd_GC IID_Hidd_GC
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 */
329 #define vHidd_GC_ColExp_Transparent (1 << 0)
330 #define vHidd_GC_ColExp_Opaque (1 << 1)
332 /*******************************************************/
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 !!
341 struct _hidd_bitmap_protected
347 #define BM_PIXFMT(bm) \
348 ((HIDDT_PixelFormat *)(((struct _hidd_bitmap_protected *)bm)->pixfmt))
349 #define BM_DEPTH(bm) BM_PIXFMT(bm)->depth
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 !
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 */
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)
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)
386 /****************** PixFmt definitions **************************/
388 /* Color model, bitmap type, and swapping bytes flag are stored
389 in Flags member of the HIDDT_PixelFormat structure */
391 /* CM == Color model */
394 vHidd_ColorModel_TrueColor
,
395 vHidd_ColorModel_DirectColor
,
396 vHidd_ColorModel_Palette
,
397 vHidd_ColorModel_StaticPalette
,
398 vHidd_ColorModel_GrayScale
,
399 vHidd_ColorModel_StaticGray
,
408 vHidd_BitMapType_Unknown
,
409 vHidd_BitMapType_Chunky
,
410 vHidd_BitMapType_Planar
,
411 vHidd_BitMapType_InterleavedPlanar
,
417 #define vHidd_ColorModel_Mask 0x0000000F
418 #define vHidd_ColorModel_Shift 0
419 #define vHidd_BitMapType_Mask 0x000000F0
420 #define vHidd_BitMapType_Shift 4
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. */
431 #define vHidd_PixFmt_SwapPixelBytes_Flag 0x00000100
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);
439 #define IS_PALETTIZED(pf) ( (HIDD_PF_COLMODEL(pf) == vHidd_ColorModel_Palette) \
440 || (HIDD_PF_COLMODEL(pf) == vHidd_ColorModel_StaticPalette) )
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) )
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 );
454 #define PF_GRAPHTYPE(cmodel, bmtype) \
455 ( (vHidd_ColorModel_ ## cmodel << vHidd_ColorModel_Shift) \
456 | (vHidd_BitMapType_ ## bmtype << vHidd_BitMapType_Shift) )
458 #define SET_PF_SWAPPIXELBYTES_FLAG(pf, on) \
462 (pf)->flags |= vHidd_PixFmt_SwapPixelBytes_Flag; \
464 (pf)->flags &= ~vHidd_PixFmt_SwapPixelBytes_Flag; \
467 #define HIDD_PF_SWAPPIXELBYTES(pf) \
468 ( ( (pf)->flags & vHidd_PixFmt_SwapPixelBytes_Flag) ? 1 : 0 )
470 #define IS_PIXFMT_ATTR(attr, idx) \
471 ( ( ( idx ) = (attr) - HiddPixFmtAttrBase) < num_Hidd_PixFmt_Attrs)
475 /********** Planar bitmap *******************/
477 #include <interface/Hidd_PlanarBM.h>
479 #define CLID_Hidd_PlanarBM IID_Hidd_PlanarBM
481 #define IS_PLANARBM_ATTR(attr, idx) \
482 ( ( ( idx ) = (attr) - HiddPlanarBMAttrBase) < num_Hidd_PlanarBM_Attrs)
486 /********** Chunky bitmap *******************/
488 #include <interface/Hidd_ChunkyBM.h>
490 #define CLID_Hidd_ChunkyBM IID_Hidd_ChunkyBM
492 #define IS_CHUNKYBM_ATTR(attr, idx) \
493 ( ( ( idx ) = (attr) - HiddChunkyBMAttrBase) < num_Hidd_ChunkyBM_Attrs)
496 /********** ColorMap *******************/
498 #include <interface/Hidd_ColorMap.h>
500 #define CLID_Hidd_ColorMap IID_Hidd_ColorMap
502 #define IS_COLORMAP_ATTR(attr, idx) \
503 ( ( ( idx ) = (attr) - HiddColorMapAttrBase) < num_Hidd_ColorMap_Attrs)
506 /************* Sync class **************************************/
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 */
514 #include <interface/Hidd_Sync.h>
516 #define IS_SYNC_ATTR(attr, idx) \
517 ( ( ( idx ) = (attr) - HiddSyncAttrBase) < num_Hidd_Sync_Attrs)
519 /************* Video overlay class *****************************/
521 #include <interface/Hidd_Overlay.h>
523 #define IS_OVERLAY_ATTR(attr, idx) \
524 (((idx) = (attr) - HiddOverlayAttrBase) < num_Hidd_Overlay_Attrs)
526 /************* Graphics class *****************************/
528 #include <interface/Hidd_Gfx.h>
530 #define IS_GFX_ATTR(attr, idx) \
531 ( ( ( idx ) = (attr) - HiddGfxAttrBase) < num_Hidd_Gfx_Attrs)
533 #define CLID_Hidd_Gfx IID_Hidd_Gfx
539 vHidd_Gfx_MemAddressableTotal
, //
540 vHidd_Gfx_MemAddressableFree
,
541 vHidd_Gfx_MemClock
, //video card's memory clock in Hz
544 /* Compatability types */
545 #define pHidd_Gfx_Gamma pHidd_Gfx_GetGamma
547 /* How we hide HIDD bitmaps inside struct BitMap */
548 #define HIDD_BM_PAD_MAGIC 0x6148 /* 'Ah' - AROS HIDD */
549 #define IS_HIDD_BM(bitmap) ((bitmap)->pad == HIDD_BM_PAD_MAGIC)
551 #define HIDD_BM_EXTRAPLANES 8
552 struct HiddBitMapPlaneData
554 STACKED OOP_Object
*HBMPD_Object
;
555 STACKED
struct monitor_driverdata
*HBMPD_DriverData
;
556 STACKED OOP_Object
*HBMPD_ColMap
;
557 STACKED HIDDT_ColorModel HBMPD_ColMod
;
558 STACKED HIDDT_Pixel
*HBMPD_PixTab
;
559 STACKED LONG HBMPD_RealDepth
;
560 STACKED ULONG HBMPD_Flags
;
561 STACKED HIDDT_ModeID HBMPD_HiddMode
;
564 #define HIDD_BM_OBJ(bitmap) (((struct HiddBitMapPlaneData *)&(bitmap)->Planes[HIDD_BM_EXTRAPLANES])->HBMPD_Object)
565 #define HIDD_BM_DRVDATA(bitmap) (((struct HiddBitMapPlaneData *)&(bitmap)->Planes[HIDD_BM_EXTRAPLANES])->HBMPD_DriverData)
566 #define HIDD_BM_COLMAP(bitmap) (((struct HiddBitMapPlaneData *)&(bitmap)->Planes[HIDD_BM_EXTRAPLANES])->HBMPD_ColMap)
567 #define HIDD_BM_COLMOD(bitmap) (((struct HiddBitMapPlaneData *)&(bitmap)->Planes[HIDD_BM_EXTRAPLANES])->HBMPD_ColMod)
568 #define HIDD_BM_PIXTAB(bitmap) (((struct HiddBitMapPlaneData *)&(bitmap)->Planes[HIDD_BM_EXTRAPLANES])->HBMPD_PixTab)
569 #define HIDD_BM_REALDEPTH(bitmap) (((struct HiddBitMapPlaneData *)&(bitmap)->Planes[HIDD_BM_EXTRAPLANES])->HBMPD_RealDepth)
570 #define HIDD_BM_FLAGS(bitmap) (((struct HiddBitMapPlaneData *)&(bitmap)->Planes[HIDD_BM_EXTRAPLANES])->HBMPD_Flags)
571 #define HIDD_BM_HIDDMODE(bitmap) (((struct HiddBitMapPlaneData *)&(bitmap)->Planes[HIDD_BM_EXTRAPLANES])->HBMPD_HiddMode)
573 #endif /* HIDD_GRAPHICS_H */