#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif /* EXEC_TYPES_H */

#ifndef GRAPHICS_GFX_H
#include <graphics/gfx.h>
#endif /* GRAPHICS_GFX_H */

#ifndef GRAPHICS_GFX_H
#include <graphics/view.h>
#endif /* GRAPHICS_GFX_H */

#ifndef GRAPHICS_GFX_H
#include <graphics/text.h>
#endif /* GRAPHICS_GFX_H */

#ifndef GRAPHICS_GFX_H
#include <graphics/rastport.h>
#endif /* GRAPHICS_GFX_H */

#ifndef INTUITION_INTUITION_H
#include <intuition/intuition.h>
#endif /* INTUITION_INTUITION_H */

struct ExtendedTextFont {
       /* ctf_TF.CharData should be plane 0 of colordata*/
       /* ctf_TF.Style should have FSF_COLORFONT bit set */
	struct TextFont ctf_TF;

	USHORT ctf_Flags; /* Extended TextFont prefs. See defines above */

	UBYTE  ctf_Depth; /* # Bitplanes in font */
	UBYTE  ctf_FgColor; /* Colr to be remapped to FG Pen-Ignore for us */
	UBYTE  ctf_Low;     /* Lowest color in extended TextFont */
	UBYTE  ctf_Hi;      /* Lowest color in extended TextFont */
	UBYTE ctf_PlanePick;
	UBYTE ctf_PlaneOnOff;
	struct ColorMap *ctf_ColorMap;
	UBYTE  *ctf_CharData[8]; /* Room for eight bitplanes of CharData */
};

struct HameFont
  {
    struct ExtendedTextFont *Font;
    UWORD P0Bits[256];
    UWORD P1Bits[256];
    UWORD P2Bits[256];
    UWORD P3Bits[256];
    long NColors;
    long BaseColor;
    long BaseLine;
  };

struct Clip
  {
    struct BitMap *BitMap;
    UBYTE *Mask;
    long Width, Height;
  };

struct HamePort
 {
   unsigned char *bp0; /* Cached bitplane pointers - no lectures please! */
   unsigned char *bp1;
   unsigned char *bp2;
   unsigned char *bp3;
   struct Screen *Screen; /* Cached Screen pointer */
   struct Window *Window; /* Window pointer for screens opened by this library */
   int BytesPerRow; /* from Screens bitmap */
   int Width;       /* This is the HAME pixel width */
   int Rows;        /* # of rows including cookie */
   int lacer;       /* interlace flag */
   int scanbase;    /* First scanline of cookie regardless of flavour */
   int x,y;         /* Do Not Touch */
   int r,g,b;       /* red, green and blue values filled in by GetRGB8 */
   int FgColor;     /* Foreground Pen Color - DO NOT SET THIS YOURSELF!! */
   ULONG *line_bases; /* Do Not Touch */
   int firstline;   /* first line of writeable graphics data */
   int hame_mode;   /* 0 for register mode, 1 for hame mode */
   struct HameFont *Font;  /* Font pointer */
   int TextColor;   /* Do Not Touch */
   struct RastPort *RastPort; /* Do Not Touch */
   UWORD *abuff;    /* Do Not Touch */
   UBYTE *rastmem;  /* Do Not Touch */
   struct BitMap *BitMap; /* Do Not Touch */
   struct Layer_Info *LayerInfo; /* Do Not Touch */
   struct Layer *Layer; /* Do Not Touch */
   UWORD *fillpat; /* Do Not Touch */
   void *bt; /* Do Not Touch */
   struct AreaInfo *AreaInfo; /* Do Not Touch */
   struct TmpRas *TmpRas; /* Do Not Touch */
   int BgColor; /* Background Pen Color - DO NOT SET THIS YOURSELF */
   int MaxV; /* Do Not Touch */
   int MaxX; /* Do Not Touch */
   int MaxY; /* Do Not Touch */
   int PenX; /* Do Not Touch */
   int PenY; /* Do Not Touch */
   struct RastPort *TxRast; /* Do Not Touch */
 };
