X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/54b9e2790954b623c99823ab64782d4e39c128bf..12e1565871ab397a50384af408b9120aeb35d077:/lib/gdi/gpixmap.h diff --git a/lib/gdi/gpixmap.h b/lib/gdi/gpixmap.h index 8ea12574..87fb5029 100644 --- a/lib/gdi/gpixmap.h +++ b/lib/gdi/gpixmap.h @@ -4,23 +4,11 @@ #include #include #include +#include #include #include #include -struct gColor -{ - int color; - gColor(int color): color(color) - { - } - gColor(): color(0) - { - } - operator int() const { return color; } - bool operator==(const gColor &o) const { return o.color==color; } -}; - struct gRGB { unsigned char b, g, r, a; @@ -33,6 +21,12 @@ struct gRGB gRGB(): b(0), g(0), r(0), a(0) { } + + unsigned long argb() const + { + return (a<<24)|(r<<16)|(g<<8)|b; + } + void operator=(unsigned long val) { b = val&0xFF; @@ -64,6 +58,20 @@ struct gRGB } }; +#ifndef SWIG +struct gColor +{ + int color; + gColor(int color): color(color) + { + } + gColor(): color(0) + { + } + operator int() const { return color; } + bool operator==(const gColor &o) const { return o.color==color; } +}; + struct gPalette { int start, colors; @@ -95,26 +103,26 @@ struct gSurface gSurface(eSize size, int bpp, int accel); ~gSurface(); }; +#endif +class gRegion; + +SWIG_IGNORE(gPixmap); class gPixmap: public iObject { -private: -DECLARE_REF(gPixmap); -private: - friend class gDC; - void fill(const gRegion &clip, const gColor &color); - - void blit(const gPixmap &src, ePoint pos, const gRegion &clip, int flags=0); - - void mergePalette(const gPixmap &target); - void line(const gRegion &clip, ePoint start, ePoint end, gColor color); + DECLARE_REF(gPixmap); public: +#ifndef SWIG enum { blitAlphaTest=1, - blitAlphaBlend=2 + blitAlphaBlend=2, + blitScale=4 }; + gPixmap(gSurface *surface); + gPixmap(eSize, int bpp, int accel = 0); + gSurface *surface; eLock contentlock; @@ -122,14 +130,24 @@ public: gPixmap *lock(); void unlock(); - + inline bool needClut() const { return surface && surface->bpp <= 8; } +#endif + virtual ~gPixmap(); eSize size() const { return eSize(surface->x, surface->y); } +private: + bool must_delete_surface; + friend class gDC; + void fill(const gRegion &clip, const gColor &color); + void fill(const gRegion &clip, const gRGB &color); - gPixmap(gSurface *surface); - gPixmap(eSize, int bpp, int accel = 0); - virtual ~gPixmap(); + void blit(const gPixmap &src, const eRect &pos, const gRegion &clip, int flags=0); + + void mergePalette(const gPixmap &target); + void line(const gRegion &clip, ePoint start, ePoint end, gColor color); +#ifdef SWIG + gPixmap(); +#endif }; - -TEMPLATE_TYPEDEF(ePtr, gPixmapPtr); +SWIG_TEMPLATE_TYPEDEF(ePtr, gPixmapPtr); #endif