/* Graph in AmigaOS window */

#include "graph-win.h"

extern Library *GfxBase;

//-------------------------------------------------------------------------------------------------------

GraphWin::GraphWin(GdDataStream *stream)
  : AxedGraph(300, 150, stream),
    SysWindow(306, 156)
  {
    Rp = get_rastport();
    OffsetX = 3 + left_border();
    OffsetY = 3 - top_border();
    bgcolor = ObtainBestPen(get_colormap(), 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, TAG_END);
    drawpen = ObtainBestPen(get_colormap(), 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, TAG_END);
    SetBPen(Rp, bgcolor);
    SetDrMd(Rp, JAM1);
    set_window_limits(250, 200, -1, -1);
//    set_window_titles(stream->name(), "GraphDraw 0.2");
  }

//-------------------------------------------------------------------------------------------------------

GraphWin::~GraphWin()
  {
    ReleasePen(get_colormap(), drawpen);
    ReleasePen(get_colormap(), bgcolor);
  }

//-------------------------------------------------------------------------------------------------------

void GraphWin::rgbcolor(unsigned char r, unsigned char g, unsigned char b)
  {
    unsigned long sr, sg, sb;

    ReleasePen(get_colormap(), drawpen);
    sr = (r << 24) | (r << 16) | (r << 8) | r;
    sg = (g << 24) | (g << 16) | (g << 8) | g;
    sb = (b << 24) | (b << 16) | (b << 8) | b;
    drawpen = ObtainBestPen(get_colormap(), sr, sg, sb, TAG_END);
    SetAPen(Rp, drawpen);
  }

//-------------------------------------------------------------------------------------------------------

void GraphWin::pattern(short pat)
  {
    unsigned short p;

    switch (pat)
      {
        case PATTERN_SOLID:     p = 0xFFFF; break;
        case PATTERN_DASHED:    p = 0xCCCC; break;
        case PATTERN_DOTTED:    p = 0xAAAA; break;
      }
    SetDrPt(Rp, p);
  }

//-------------------------------------------------------------------------------------------------------

void GraphWin::clear()
  {
    SetAPen(Rp, bgcolor);
    RectFill(Rp, left_border(), top_border(), getw() + left_border() - 1, geth() + top_border() - 1);
  }

//-------------------------------------------------------------------------------------------------------

