#ifndef GRAPHICS_RASTPORT_H #define GRAPHICS_RASTPORT_H /* ** $Filename: graphics/rastport.h $ ** $Release: 2.04 Includes, V37.4 $ ** $Revision: 37.0 $ ** $Date: 91/01/07 $ ** ** ** ** (C) Copyright 1985-1999 Amiga, Inc. ** All Rights Reserved */ #ifndef EXEC_TYPES_H #include <exec/types.h> #endif #ifndef GRAPHICS_GFX_H #include <graphics/gfx.h> #endif struct AreaInfo { WORD *VctrTbl; /* ptr to start of vector table */ WORD *VctrPtr; /* ptr to current vertex */ BYTE *FlagTbl; /* ptr to start of vector flag table */ BYTE *FlagPtr; /* ptrs to areafill flags */ WORD Count; /* number of vertices in list */ WORD MaxCount; /* AreaMove/Draw will not allow Count>MaxCount*/ WORD FirstX,FirstY; /* first point for this polygon */ }; struct TmpRas { BYTE *RasPtr; LONG Size; }; /* unoptimized for 32bit alignment of pointers */ struct GelsInfo { BYTE sprRsrvd; /* flag of which sprites to reserve from vsprite system */ UBYTE Flags; /* system use */ struct VSprite *gelHead, *gelTail; /* dummy vSprites for list management*/ /* pointer to array of 8 WORDS for sprite available lines */ WORD *nextLine; /* pointer to array of 8 pointers for color-last-assigned to vSprites */ WORD **lastColor; struct collTable *collHandler; /* addresses of collision routines */ WORD leftmost, rightmost, topmost, bottommost; APTR firstBlissObj,lastBlissObj; /* system use only */ }; struct RastPort { struct Layer *Layer; struct BitMap *BitMap; UWORD *AreaPtrn; /* ptr to areafill pattern */ struct TmpRas *TmpRas; struct AreaInfo *AreaInfo; struct GelsInfo *GelsInfo; UBYTE Mask; /* write mask for this raster */ BYTE FgPen; /* foreground pen for this raster */ BYTE BgPen; /* background pen */ BYTE AOlPen; /* areafill outline pen */ BYTE DrawMode; /* drawing mode for fill, lines, and text */ BYTE AreaPtSz; /* 2^n words for areafill pattern */ BYTE linpatcnt; /* current line drawing pattern preshift */ BYTE dummy; UWORD Flags; /* miscellaneous control bits */ UWORD LinePtrn; /* 16 bits for textured lines */ WORD cp_x, cp_y; /* current pen position */ UBYTE minterms[8]; WORD PenWidth; WORD PenHeight; struct TextFont *Font; /* current font address */ UBYTE AlgoStyle; /* the algorithmically generated style */ UBYTE TxFlags; /* text specific flags */ UWORD TxHeight; /* text height */ UWORD TxWidth; /* text nominal width */ UWORD TxBaseline; /* text baseline */ WORD TxSpacing; /* text spacing (per character) */ APTR *RP_User; ULONG longreserved[2]; #ifndef GFX_RASTPORT_1_2 UWORD wordreserved[7]; /* used to be a node */ UBYTE reserved[8]; /* for future use */ #endif }; /* drawing modes */ #define JAM1 0 /* jam 1 color into raster */ #define JAM2 1 /* jam 2 colors into raster */ #define COMPLEMENT 2 /* XOR bits into raster */ #define INVERSVID 4 /* inverse video for drawing modes */ /* these are the flag bits for RastPort flags */ #define FRST_DOT 0x01 /* draw the first dot of this line ? */ #define ONE_DOT 0x02 /* use one dot mode for drawing lines */ #define DBUFFER 0x04 /* flag set when RastPorts are double-buffered */ /* only used for bobs */ #define AREAOUTLINE 0x08 /* used by areafiller */ #define NOCROSSFILL 0x20 /* areafills have no crossovers */ /* there is only one style of clipping: raster clipping */ /* this preserves the continuity of jaggies regardless of clip window */ /* When drawing into a RastPort, if the ptr to ClipRect is nil then there */ /* is no clipping done, this is dangerous but useful for speed */ #endif /* GRAPHICS_RASTPORT_H */