home *** CD-ROM | disk | FTP | other *** search
- #ifndef GRAPHICS_VIEW_H
- #define GRAPHICS_VIEW_H
- /*
- ** $VER: view.h 39.34 (31.5.93)
- ** Includes Release 40.15
- **
- ** graphics view/viewport definintions
- **
- ** (C) Copyright 1985-1993 Commodore-Amiga, Inc.
- ** All Rights Reserved
- */
-
- #define ECS_SPECIFIC
-
- #ifndef EXEC_TYPES_H
- #include <exec/types.h>
- #endif
-
- #ifndef EXEC_SEMAPHORES_H
- #include <exec/semaphores.h>
- #endif
-
- #ifndef GRAPHICS_GFX_H
- #include <graphics/gfx.h>
- #endif
-
- #ifndef GRAPHICS_COPPER_H
- #include <graphics/copper.h>
- #endif
-
- #ifndef GRAPHICS_GFXNODES_H
- #include <graphics/gfxnodes.h>
- #endif
-
- #ifndef GRAPHICS_MONITOR_H
- #include <graphics/monitor.h>
- #endif
-
- #ifndef GRAPHICS_DISPLAYINFO_H
- #include <graphics/displayinfo.h>
- #endif
-
- #ifndef HARDWARE_CUSTOM_H
- #include <hardware/custom.h>
- #endif
-
- struct ViewPort
- {
- struct ViewPort *Next;
- struct ColorMap *ColorMap; /* table of colors for this viewport */
- /* if this is nil, MakeVPort assumes default values */
- struct CopList *DspIns; /* used by MakeVPort() */
- struct CopList *SprIns; /* used by sprite stuff */
- struct CopList *ClrIns; /* used by sprite stuff */
- struct UCopList *UCopIns; /* User copper list */
- WORD DWidth,DHeight;
- WORD DxOffset,DyOffset;
- UWORD Modes;
- UBYTE SpritePriorities;
- UBYTE ExtendedModes;
- struct RasInfo *RasInfo;
- };
-
- struct View
- {
- struct ViewPort *ViewPort;
- struct cprlist *LOFCprList; /* used for interlaced and noninterlaced */
- struct cprlist *SHFCprList; /* only used during interlace */
- WORD DyOffset,DxOffset; /* for complete View positioning */
- /* offsets are +- adjustments to standard #s */
- UWORD Modes; /* such as INTERLACE, GENLOC */
- };
-
- /* these structures are obtained via GfxNew */
- /* and disposed by GfxFree */
- struct ViewExtra
- {
- struct ExtendedNode n;
- struct View *View; /* backwards link */
- struct MonitorSpec *Monitor; /* monitors for this view */
- UWORD TopLine;
- };
-
- /* this structure is obtained via GfxNew */
- /* and disposed by GfxFree */
- struct ViewPortExtra
- {
- struct ExtendedNode n;
- struct ViewPort *ViewPort; /* backwards link */
- struct Rectangle DisplayClip; /* MakeVPort display clipping information */
- /* These are added for V39 */
- APTR VecTable; /* Private */
- APTR DriverData[2];
- UWORD Flags;
- Point Origin[2]; /* First visible point relative to the DClip.
- * One for each possible playfield.
- */
- ULONG cop1ptr; /* private */
- ULONG cop2ptr; /* private */
- };
-
- /* All these VPXF_ flags are private */
- #define VPXB_FREE_ME 0
- #define VPXF_FREE_ME (1 << VPXB_FREE_ME)
- #define VPXB_LAST 1
- #define VPXF_LAST (1 << VPXB_LAST)
- #define VPXB_STRADDLES_256 4
- #define VPXF_STRADDLES_256 (1 << VPXB_STRADDLES_256)
- #define VPXB_STRADDLES_512 5
- #define VPXF_STRADDLES_512 (1 << VPXB_STRADDLES_512)
-
-
- #define EXTEND_VSTRUCT 0x1000 /* unused bit in Modes field of View */
-
- #define VPF_A2024 0x40 /* VP?_ fields internal only */
- #define VPF_TENHZ 0x20
- #define VPB_A2024 6
- #define VPB_TENHZ 4
-
- /* defines used for Modes in IVPargs */
-
- #define GENLOCK_VIDEO 0x0002
- #define LACE 0x0004
- #define DOUBLESCAN 0x0008
- #define SUPERHIRES 0x0020
- #define PFBA 0x0040
- #define EXTRA_HALFBRITE 0x0080
- #define GENLOCK_AUDIO 0x0100
- #define DUALPF 0x0400
- #define HAM 0x0800
- #define EXTENDED_MODE 0x1000
- #define VP_HIDE 0x2000
- #define SPRITES 0x4000
- #define HIRES 0x8000
-
- struct RasInfo /* used by callers to and InitDspC() */
- {
- struct RasInfo *Next; /* used for dualpf */
- struct BitMap *BitMap;
- WORD RxOffset,RyOffset; /* scroll offsets in this BitMap */
- };
-
- struct ColorMap
- {
- UBYTE Flags;
- UBYTE Type;
- UWORD Count;
- APTR ColorTable;
- struct ViewPortExtra *cm_vpe;
- APTR LowColorBits;
- UBYTE TransparencyPlane;
- UBYTE SpriteResolution;
- UBYTE SpriteResDefault; /* what resolution you get when you have set SPRITERESN_DEFAULT */
- UBYTE AuxFlags;
- struct ViewPort *cm_vp;
- APTR NormalDisplayInfo;
- APTR CoerceDisplayInfo;
- struct TagItem *cm_batch_items;
- ULONG VPModeID;
- struct PaletteExtra *PalExtra;
- UWORD SpriteBase_Even;
- UWORD SpriteBase_Odd;
- UWORD Bp_0_base;
- UWORD Bp_1_base;
-
- };
-
- /* if Type == 0 then ColorMap is V1.2/V1.3 compatible */
- /* if Type != 0 then ColorMap is V38 compatible */
- /* the system will never create other than V39 type colormaps when running V39 */
-
- #define COLORMAP_TYPE_V1_2 0x00
- #define COLORMAP_TYPE_V1_4 0x01
- #define COLORMAP_TYPE_V36 COLORMAP_TYPE_V1_4 /* use this definition */
- #define COLORMAP_TYPE_V39 0x02
-
- /* Flags variable */
- #define COLORMAP_TRANSPARENCY 0x01
- #define COLORPLANE_TRANSPARENCY 0x02
- #define BORDER_BLANKING 0x04
- #define BORDER_NOTRANSPARENCY 0x08
- #define VIDEOCONTROL_BATCH 0x10
- #define USER_COPPER_CLIP 0x20
- #define BORDERSPRITES 0x40
-
- #define CMF_CMTRANS 0
- #define CMF_CPTRANS 1
- #define CMF_BRDRBLNK 2
- #define CMF_BRDNTRAN 3
- #define CMF_BRDRSPRT 6
-
- #define SPRITERESN_ECS 0
- /* ^140ns, except in 35ns viewport, where it is 70ns. */
- #define SPRITERESN_140NS 1
- #define SPRITERESN_70NS 2
- #define SPRITERESN_35NS 3
- #define SPRITERESN_DEFAULT -1
-
- /* AuxFlags : */
- #define CMAB_FULLPALETTE 0
- #define CMAF_FULLPALETTE (1<<CMAB_FULLPALETTE)
- #define CMAB_NO_INTERMED_UPDATE 1
- #define CMAF_NO_INTERMED_UPDATE (1<<CMAB_NO_INTERMED_UPDATE)
- #define CMAB_NO_COLOR_LOAD 2
- #define CMAF_NO_COLOR_LOAD (1 << CMAB_NO_COLOR_LOAD)
- #define CMAB_DUALPF_DISABLE 3
- #define CMAF_DUALPF_DISABLE (1 << CMAB_DUALPF_DISABLE)
-
-
- struct PaletteExtra /* structure may be extended so watch out! */
- {
- struct SignalSemaphore pe_Semaphore; /* shared semaphore for arbitration */
- UWORD pe_FirstFree; /* *private* */
- UWORD pe_NFree; /* number of free colors */
- UWORD pe_FirstShared; /* *private* */
- UWORD pe_NShared; /* *private* */
- UBYTE *pe_RefCnt; /* *private* */
- UBYTE *pe_AllocList; /* *private* */
- struct ViewPort *pe_ViewPort; /* back pointer to viewport */
- UWORD pe_SharableColors; /* the number of sharable colors. */
- };
-
- /* flags values for ObtainPen */
-
- #define PENB_EXCLUSIVE 0
- #define PENB_NO_SETCOLOR 1
-
- #define PENF_EXCLUSIVE (1l<<PENB_EXCLUSIVE)
- #define PENF_NO_SETCOLOR (1l<<PENB_NO_SETCOLOR)
-
- /* obsolete names for PENF_xxx flags: */
-
- #define PEN_EXCLUSIVE PENF_EXCLUSIVE
- #define PEN_NO_SETCOLOR PENF_NO_SETCOLOR
-
- /* precision values for ObtainBestPen : */
-
- #define PRECISION_EXACT -1
- #define PRECISION_IMAGE 0
- #define PRECISION_ICON 16
- #define PRECISION_GUI 32
-
-
- /* tags for ObtainBestPen: */
- #define OBP_Precision 0x84000000
- #define OBP_FailIfBad 0x84000001
-
- /* From V39, MakeVPort() will return an error if there is not enough memory,
- * or the requested mode cannot be opened with the requested depth with the
- * given bitmap (for higher bandwidth alignments).
- */
-
- #define MVP_OK 0 /* you want to see this one */
- #define MVP_NO_MEM 1 /* insufficient memory for intermediate workspace */
- #define MVP_NO_VPE 2 /* ViewPort does not have a ViewPortExtra, and
- * insufficient memory to allocate a temporary one.
- */
- #define MVP_NO_DSPINS 3 /* insufficient memory for intermidiate copper
- * instructions.
- */
- #define MVP_NO_DISPLAY 4 /* BitMap data is misaligned for this viewport's
- * mode and depth - see AllocBitMap().
- */
- #define MVP_OFF_BOTTOM 5 /* PRIVATE - you will never see this. */
-
- /* From V39, MrgCop() will return an error if there is not enough memory,
- * or for some reason MrgCop() did not need to make any copper lists.
- */
-
- #define MCOP_OK 0 /* you want to see this one */
- #define MCOP_NO_MEM 1 /* insufficient memory to allocate the system
- * copper lists.
- */
- #define MCOP_NOP 2 /* MrgCop() did not merge any copper lists
- * (eg, no ViewPorts in the list, or all marked as
- * hidden).
- */
-
- struct DBufInfo {
- APTR dbi_Link1;
- ULONG dbi_Count1;
- struct Message dbi_SafeMessage; /* replied to when safe to write to old bitmap */
- APTR dbi_UserData1; /* first user data */
-
- APTR dbi_Link2;
- ULONG dbi_Count2;
- struct Message dbi_DispMessage; /* replied to when new bitmap has been displayed at least
- once */
- APTR dbi_UserData2; /* second user data */
- ULONG dbi_MatchLong;
- APTR dbi_CopPtr1;
- APTR dbi_CopPtr2;
- APTR dbi_CopPtr3;
- UWORD dbi_BeamPos1;
- UWORD dbi_BeamPos2;
- };
-
- #endif /* GRAPHICS_VIEW_H */
-