#ifndef OGEDGETABLE_H
#define OGEDGETABLE_H
#include "ogTypes.h"
#include "objgfx.h"
struct ogEdgeState
{
ogEdgeState* nextEdge;
int32 x;
int32 startY;
int32 wholePixelXMove;
int32 xDirection;
int32 errorTerm;
int32 errorTermAdjUp;
int32 errorTermAdjDown;
int32 count;
ogRGBA8 colour;
int32 rStepY;
int32 gStepY;
int32 bStepY;
int32 aStepY;
int32 rIncY;
int32 gIncY;
int32 bIncY;
int32 aIncY;
};
class ogEdgeTable
{
public:
ogEdgeState * globalEdges;
ogEdgeState * activeEdges;
ogEdgeTable(void) { globalEdges = activeEdges = nullptr; return; }
void AdvanceAET(void);
void BuildGET(uInt32 numPoints, ogPoint2d * polyPoints);
void BuildGET_G(uInt32 numPoints, ogPoint2d * polyPoints, ogRGBA8 * colours);
void MoveXSortedToAET(int32 yToMove);
void ScanOutAET(ogSurface & destObject, int32 yToScan, uInt32 colour);
void ScanOutAET_G(ogSurface & destObject, int32 yToScan);
void XSortAET(void);
~ogEdgeTable(void);
}; // ogEdgeTable
#endif