mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
100 lines
2 KiB
C++
100 lines
2 KiB
C++
#ifndef S_PAINTER_FILLERS_H
|
|
#define S_PAINTER_FILLERS_H
|
|
|
|
namespace Upp {
|
|
|
|
struct SolidFiller : Rasterizer::Filler {
|
|
RGBA *t;
|
|
RGBA c;
|
|
bool invert;
|
|
|
|
void Start(int minx, int maxx);
|
|
void Render(int val);
|
|
void Render(int val, int len);
|
|
};
|
|
|
|
struct SpanFiller : Rasterizer::Filler {
|
|
RGBA *t;
|
|
const RGBA *s;
|
|
int y;
|
|
RGBA *buffer;
|
|
SpanSource *ss;
|
|
int alpha;
|
|
|
|
void Start(int minx, int maxx);
|
|
void Render(int val);
|
|
void Render(int val, int len);
|
|
};
|
|
|
|
struct SubpixelFiller : Rasterizer::Filler {
|
|
int16 *sbuffer;
|
|
int16 *begin;
|
|
RGBA *t, *end;
|
|
int16 *v;
|
|
RGBA *s;
|
|
RGBA color;
|
|
SpanSource *ss;
|
|
int alpha;
|
|
RGBA *buffer;
|
|
int y;
|
|
bool invert;
|
|
|
|
void Write(int len);
|
|
void RenderN(int val, int h, int n);
|
|
|
|
void Start(int minx, int maxx);
|
|
void Render(int val);
|
|
void Render(int val, int len);
|
|
void End();
|
|
};
|
|
|
|
struct ClipFiller : Rasterizer::Filler {
|
|
Buffer<byte> buffer;
|
|
byte *t;
|
|
int x;
|
|
int cx;
|
|
int last;
|
|
byte *lastn;
|
|
bool empty;
|
|
bool full;
|
|
|
|
void Span(int c, int len);
|
|
|
|
virtual void Render(int val);
|
|
virtual void Render(int val, int len);
|
|
virtual void Start(int x, int len);
|
|
|
|
void Clear();
|
|
void Finish(ClippingLine& cl);
|
|
|
|
void Init(int cx);
|
|
};
|
|
|
|
struct MaskFillerFilter : Rasterizer::Filler {
|
|
Rasterizer::Filler *t;
|
|
const byte *mask;
|
|
int empty;
|
|
int full;
|
|
|
|
void Start(int minx, int maxx);
|
|
void Render(int val, int len);
|
|
void Render(int val);
|
|
void End() { t->End(); }
|
|
|
|
void Set(Rasterizer::Filler *f, const byte *m) { t = f; mask = m; empty = full = 0; }
|
|
};
|
|
|
|
struct NoAAFillerFilter : Rasterizer::Filler {
|
|
Rasterizer::Filler *t;
|
|
|
|
void Start(int minx, int maxx);
|
|
void Render(int val, int len);
|
|
void Render(int val);
|
|
void End() { t->End(); }
|
|
|
|
void Set(Rasterizer::Filler *f) { t = f; }
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|