Skip to content

Latest commit

 

History

History
149 lines (128 loc) · 3.46 KB

File metadata and controls

149 lines (128 loc) · 3.46 KB
#ifndef GRAPHICS_VIEW_H
#define GRAPHICS_VIEW_H
/*
**	$Filename: graphics/view.h $
**	$Release: 2.04 Includes, V37.4 $
**	$Revision: 37.0 $
**	$Date: 91/01/07 $
**
**	graphics view/viewport definintions
**
**	(C) Copyright 1985-1999 Amiga, Inc.
**	    All Rights Reserved
*/

#define ECS_SPECIFIC

#ifndef EXEC_TYPES_H
#include <exec/types.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 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;	    /* user by MakeView() */
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;		/* used by makevp */
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 */
};

/* this structure is obtained via GfxNew */
/* and disposed by GfxFree */
struct ViewPortExtra
{
struct ExtendedNode n;
struct ViewPort *ViewPort;	/* backwards link */
struct Rectangle DisplayClip;  /* makevp display clipping information */
};

#define EXTEND_VSTRUCT	0x1000	/* unused bit in Modes field of View */

/* defines used for Modes in IVPargs */

#define GENLOCK_VIDEO	0x0002
#define LACE		0x0004
#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

#define VPF_A2024		0x40
#define VPF_AGNUS		0x20
#define VPF_TENHZ		0x20

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;
UWORD	*TransparencyBits;
UBYTE	TransparencyPlane;
UBYTE	reserved1;
UWORD	reserved2;
struct	ViewPort *cm_vp;
APTR	NormalDisplayInfo;
APTR	CoerceDisplayInfo;
struct	TagItem *cm_batch_items;
ULONG	VPModeID;
};

/* if Type == 0 then ColorMap is V1.2/V1.3 compatible */
/* if Type != 0 then ColorMap is V36	   compatible */

#define COLORMAP_TYPE_V1_2	0x00
#define COLORMAP_TYPE_V1_4	0x01
#define COLORMAP_TYPE_V36 COLORMAP_TYPE_V1_4	/* use this definition */

/* 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

#endif	/* GRAPHICS_VIEW_H */