
#include "Scanline.h"



//---- SCANLINE CLASS --------------------------------------------------------//


Scanline::Scanline( )
{
  pmax = SCANLINE_MAX_POINTS;
  pnum = 0;
  px = new float[ SCANLINE_MAX_POINTS ];
}

Scanline::~Scanline( )
{
  delete[] px;
}

void Scanline::clear( )
{
  pnum = 0;
}

void Scanline::addPoint( float x )
{
  if( pnum >= pmax ) return;

  int i;

  for( i=pnum; i>0 && x < px[i-1]; i-- )
  {
    px[i] = px[i-1];
  }

  px[ i ] = x;

  pnum ++;
}

void Scanline::firstPoint( )
{
  pointptr = 0;
}

bool Scanline::nextPoint( float *x )
{
  if( pointptr >= pnum ) return false;
  *x = px[ pointptr++ ];
  return true;
}

void Scanline::firstPair( )
{
  pairptr = 0;
}

bool Scanline::nextPair( float *x1, float *x2 )
{
  if( pairptr > pnum-2 ) return false;

  *x1 = px[ pairptr++ ];
  *x2 = px[ pairptr++ ];

  return true;
}

