[Contents] [Index] [Help] [Retrace] [browse <] [Browse >]

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