ultimatepp/uppsrc/Painter/Fillers.h
cxl 889e98c8d7 Painter: Fixed subpixel mode in MT
git-svn-id: svn://ultimatepp.org/upp/trunk@12658 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2019-01-10 11:14:51 +00:00

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