#ifndef __INC_POS_PGFX_RASTPORT_H
#define __INC_POS_PGFX_RASTPORT_H
/*******************************************************************
 Includes Release 24
 (C) Copyright 1995-1997 proDAD
     All Rights Reserved

 $AUT Holger Burkarth
 $DAT >>RastPort.h<<   01 Dec 1996    10:06:51 - (C) ProDAD
*******************************************************************/
#ifndef __INC_POS_PLAYER_RECT_H
#include <pLayer/Rect.h>
#endif


/*----------------------------------
-----------------------------------*/
struct pOS_RastPort
{
  struct pOS_GfxLibrary *rp_Base;
  ULONG                  rp_UserData[2];
  struct pOS_Layer      *rp_Layer;
  struct pOS_GfxMap     *rp_GfxMap;

  UWORD                  rp_Flags;      /* (enum pOS_RastPortFlags) */
  struct pOS_Point       rp_CP;         /* Cursor-Position */

  struct pOS_TextFont   *rp_Font;
  UWORD                  rp_AlgoStyle;  /* the algorithmically generated style */
  UWORD                  rp_TxFlags;    /* text specific flags */
  UWORD                  rp_TxHeight;   /* text height */
  UWORD                  rp_TxWidth;    /* text nominal width */
  UWORD                  rp_TxBaseline; /* text baseline */
  SWORD                  rp_TxSpacing;  /* text spacing (per character) */

  SWORD                  rp_PatMoveX;   /* Pattern-Verschiebung */
  SWORD                  rp_PatMoveY;

  UBYTE rp_Reserved[32];
};




/*----------------------------------
-----------------------------------*/
struct pOS_BltData
{
  ULONG btd_SrcX, btd_SrcY;
  SLONG btd_DstX, btd_DstY;
  ULONG btd_MskX, btd_MskY;
  ULONG btd_Width,btd_Height;
};




/** pOS_SetDrMd() **/
enum pOS_RastPortDrawMode
{
 DRMD_Jam1=       0x00, /* jam 1 color into raster */
 DRMD_Jam2=       0x01, /* jam 2 colors into raster */
 DRMD_Complement= 0x02, /* XOR bits into raster */
 DRMD_Invers=     0x04  /* inverse video for drawing modes */
};


enum pOS_RastPortFlags
{
 RASTPORTF_FirstDot=    0x01, /* draw the first dot of this line */
 RASTPORTF_OneDot=      0x02, /* use one dot mode for drawing lines */
 RASTPORTF_DBuffer=     0x04, /* flag set when RastPorts are double-buffered */
 RASTPORTF_AreaOutline= 0x08, /* used by areafiller */
 RASTPORTF_NoCrossFill= 0x20  /* areafills have no crossovers */
};


enum pOS_BltStdMinterm
{
  BLTMINT_Copy  = 0xc0,
  BLTMINT_Mask  = 0xe0
};


/** pOS_ScrollRaster() **/
enum pOS_ScrollRasterFlags
{
  SCLRSTF_Std      = 0x0002,    /* Standard => BPen ohne Damage */
  SCLRSTF_Ignore   = 0x0000,    /* keine spezielle Aktion auslösen */
  SCLRSTF_Damage   = 0x0001,    /* Alle freigewordenen Bereiche als Damage kennzeichnen. */
  SCLRSTF_BPen     = 0x0002,    /* BPen verwenden */
  SCLRSTF_Erase    = 0x0004     /* Die freigewordenen Bereiche werden mit dem
                                ** BackFill-Hook gefüllt. Schließt BPen-Draw aus.
                                */
};



/** pOS_PolyFill() **/
enum pOS_PolyFillFlags
{
  POLYFILF_Std     = 0x0000,    /* */
  POLYFILF_Erase   = 0x0002     /* BackFill zum Zeichnen verwenden, sonst APen */
};


#endif
