mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 22:02:49 -06:00
49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
class DDARasterizer {
|
|
struct Segment : Moveable<Segment> {
|
|
int l;
|
|
int h;
|
|
bool flag;
|
|
|
|
bool operator<(const Segment& b) const { return h < b.h; }
|
|
};
|
|
|
|
struct Segments;
|
|
|
|
int cy;
|
|
int diry;
|
|
int dirx;
|
|
One<Segments> pseg;
|
|
Point p0, p1;
|
|
Point j1, j2;
|
|
Point b1, b2;
|
|
int width;
|
|
bool close;
|
|
|
|
void AHorz(int x, int y, int cx);
|
|
void AVert(int x, int y, int cy);
|
|
void DoLine(Point p1, Point p2, bool last);
|
|
void FatLine(Point p2);
|
|
|
|
public:
|
|
virtual void PutHorz(int x, int y, int cx) = 0;
|
|
virtual void PutVert(int x, int y, int cy) = 0;
|
|
|
|
int GetDirx() const { return dirx; }
|
|
int GetDiry() const { return diry; }
|
|
|
|
DDARasterizer& Move(Point p);
|
|
DDARasterizer& Line(Point p);
|
|
DDARasterizer& Close();
|
|
|
|
DDARasterizer& Polygon();
|
|
DDARasterizer& Fill();
|
|
|
|
DDARasterizer& Width(int width_) { width = width_; return *this; }
|
|
|
|
DDARasterizer& Ellipse(const Rect& rect, int width);
|
|
|
|
void Cy(int cy_) { cy = cy_; }
|
|
|
|
DDARasterizer();
|
|
virtual ~DDARasterizer();
|
|
};
|