ultimatepp/uppsrc/Draw/ImageOp.h
mdelfede 024c03c51a new uvs2 releases : uppsrc-2586 tutorial-38 examples-141 reference-113
git-svn-id: svn://ultimatepp.org/upp/trunk@283 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2008-06-07 22:57:08 +00:00

153 lines
4.3 KiB
C++

Image CreateImage(Size sz, Color color);
Image SetColorKeepAlpha(const Image& img, Color c);
Image WithHotSpots(const Image& m, int x1, int y1, int x2, int y2);
Image WithHotSpot(const Image& m, int x1, int y1);
void Over(ImageBuffer& dest, Point p, const Image& src, const Rect& srect);
void Copy(ImageBuffer& dest, Point p, const Image& src, const Rect& srect);
void Copy(Image& dest, Point p, const Image& src, const Rect& srect);
void Over(Image& dest, Point p, const Image& src, const Rect& srect);
void OverStraightOpaque(ImageBuffer& dest, Point p, const Image& src, const Rect& srect);
void OverStraightOpaque(Image& dest, Point p, const Image& _src, const Rect& srect);
void Crop(RasterEncoder& tgt, Raster& img, const Rect& rc);
Image Crop(const Image& img, const Rect& rc);
Image Crop(const Image& img, int x, int y, int cx, int cy);
Image ColorMask(const Image& src, Color transparent);
void CanvasSize(RasterEncoder& tgt, Raster& img, int cx, int cy);
Image CanvasSize(const Image& img, int cx, int cy);
Image AssignAlpha(const Image& img, const Image& new_alpha);
Image Grayscale(const Image& img);
Image Grayscale(const Image& img, int amount);
Image Contrast(const Image& img, int amount = 256);
Image HorzFadeOut(int cx, int cy, Color color);
Image HorzFadeOut(Size sz, Color color);
class RescaleImage {
Raster *src;
Size tsz;
Vector<dword> horz;
Vector<dword> vert;
void (*row_proc)(dword *dest, const RGBA *src, const dword *map);
Size size;
int cx4;
int count;
int segment;
int entry;
int step;
int segspan;
bool bigseg;
Buffer<dword> row_buffers;
int first;
int full;
const dword *offsets;
int offset;
int y;
struct Ln {
RasterLine line;
int ii;
};
Ln cache[4];
int cii;
const RGBA *GetLine(int i);
public:
void Create(Size sz, Raster& src, const Rect& src_rc);
void Get(RGBA *line);
};
void DrawRasterData(Draw& w, int x, int y, int cx, int cy, const String& data);
void Rescale(RasterEncoder& tgt, Size sz, Raster& src, const Rect& src_rc);
Image Rescale(const Image& src, Size sz, const Rect& src_rc);
Image Rescale(const Image& src, Size sz);
Image Rescale(const Image& src, int cx, int cy);
struct ImageFilter9 {
virtual RGBA operator()(const RGBA **mx) = 0;
virtual ~ImageFilter9() {}
};
Image Filter(const Image& img, ImageFilter9& filter);
void Filter(RasterEncoder& target, Raster& src, ImageFilter9& filter);
Image Etched(const Image& img);
Image Sharpen(const Image& img, int amount = 100);
Image RotateClockwise(const Image& img);
Image RotateAntiClockwise(const Image& img);
Image MirrorHorz(const Image& img);
Image MirrorVert(const Image& img);
Image Rotate(const Image& m, int angle);
// Experimental {
Image Colorize(const Image& img, Color color, int alpha = 100);
Image Equalight(const Image& img, int thold = 10);
// }
//Chameleon support
int Diff(RGBA a, RGBA b);
Image Unglyph(const Image& m, Color& c, double& factor);
Image Unglyph(const Image& m, Color& c);
Image Unglyph(const Image& m);
Image VertBlend(Image img1, Image img2, int y0, int y1);
Image HorzBlend(Image img1, Image img2, int x0, int x1);
Image HorzSymm(Image src);
enum {
IMAGECONTENT_VERTDUP = 1,
IMAGECONTENT_HORZDUP = 2,
IMAGECONTENT_OPAQUEBODY = 4,
};
int ClassifyContent(const Image& m, const Rect& rect);
Image RecreateAlpha(const Image& overwhite, const Image& overblack);
int ImageMargin(const Image& m, int p, int dist);
struct ChPartMaker {
Image image;
Color border;
Color bg;
bool t, b, l, r;
byte tl, tr, bl, br;
void ResetShape();
Image Make() const;
ChPartMaker(const Image& m);
};
// Image cache
struct ImageMaker {
virtual String Key() const = 0;
virtual Image Make() const = 0;
virtual ~ImageMaker() {}
};
Image MakeImage(const ImageMaker& m);
Image MakeImage(const Image& image, Image (*make)(const Image& image));
void SetMakeImageCacheSize(int m);
void SetMakeImageCacheMax(int m);
Image MakeImagePaintOnly(const ImageMaker& m);
Image CachedRescale(const Image& m, Size sz, const Rect& src);
Image CachedRescale(const Image& m, Size sz);
Image CachedRescalePaintOnly(const Image& m, Size sz, const Rect& src);
Image CachedRescalePaintOnly(const Image& m, Size sz);
Image Magnify(const Image& img, int nx, int ny);