//////////////////////////////////////////////////////////////////////////////
// rastport.hpp
//
// Jeffry A Worth
// November 10, 1995
//////////////////////////////////////////////////////////////////////////////

#ifndef __RASTPORT_HPP__
#define __RASTPORT_HPP__

//////////////////////////////////////////////////////////////////////////////
// Includes
#include "aframe:include/window.hpp"
#include "graphics/rastport.h"

//////////////////////////////////////////////////////////////////////////////
// Raster Port Class

class AFRastPort 
{
public:
  AFRastPort(AFWindow* pwindow = NULL);	// Default constructor
  virtual void FromWindow(AFWindow* pwindow);	// Create from a CWindow Object
  virtual void FromHandle(LPWindow pwindow);
			// Create from a Window structure ((AFWindow*)->m_pWindow)

// Graphics functions
  virtual void Clear();
  virtual void TextOut(ULONG x, ULONG y, char* lpszData, ULONG length);
  virtual void Move(ULONG x, ULONG y);
  virtual void Move(AFPoint* point);
  virtual void Draw(ULONG x, ULONG y);
  virtual void Draw(AFPoint* point);
  virtual void Text(char *lpszData, ULONG length);
  virtual void SetAPen(UBYTE pen);
  virtual void SetBPen(UBYTE pen);
  virtual void SetDrMd(ULONG drawMode);
  virtual ULONG GetAPen();
  virtual ULONG GetBPen();
  virtual ULONG GetDrMd();
  virtual void RectFill(AFRect* prect);
  virtual void Rect(AFRect* prect);
  virtual long TextLength(char *text,long length);
  virtual void DrawEllipse(AFRect *prect);
  virtual void DrawEllipse(AFPoint* point, long radius);
  virtual void DrawEllipse(AFPoint* point, long xradius, long yradius);
  virtual void Flood(AFPoint* point, int mode);
  virtual void Flood(AFPoint* point);
  virtual void TextExtent(char *string, int count, PTEXTEXTENT textextent);
  virtual void AskFont(PTEXTATTR textattr);

private:
  LPRastPort m_prastport;
  LPWindow m_pwindow;
};

//////////////////////////////////////////////////////////////////////////////
#endif // __RASTPORT_HPP__
