X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/77c45c9d2cabd3c1dc028c41d26573ac62147a34..34e6431eb2c9fcfe1dd9ecf310970a257609c64a:/lib/gdi/gpixmap.h?ds=sidebyside diff --git a/lib/gdi/gpixmap.h b/lib/gdi/gpixmap.h index f29a0fe7..7158e269 100644 --- a/lib/gdi/gpixmap.h +++ b/lib/gdi/gpixmap.h @@ -4,9 +4,11 @@ #include #include #include +#include #include #include #include +#include struct gColor { @@ -33,6 +35,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; @@ -88,31 +96,28 @@ struct gSurface gPalette clut; void *data; - virtual ~gSurface(); -}; + int data_phys; + int offset; // only for backbuffers -struct gSurfaceSystem: gSurface -{ - gSurfaceSystem(eSize size, int bpp); - ~gSurfaceSystem(); + gSurface(); + gSurface(eSize size, int bpp, int accel); + ~gSurface(); }; -struct gPixmap: public iObject +class gPixmap: public iObject { -DECLARE_REF(gPixmap); -private: - friend class gDC; - void fill(const gRegion &clip, const gColor &color); - + DECLARE_REF(gPixmap); +public: enum { - blitAlphaTest=1 + blitAlphaTest=1, + blitAlphaBlend=2 }; - 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); -public: + +#ifndef SWIG + gPixmap(gSurface *surface); + gPixmap(eSize, int bpp, int accel = 0); + gSurface *surface; eLock contentlock; @@ -120,12 +125,25 @@ public: gPixmap *lock(); void unlock(); +#endif + virtual ~gPixmap(); + + eSize size() const { return eSize(surface->x, surface->y); } + inline bool needClut() const { return surface && surface->bpp <= 8; } +private: +#ifndef SWIG + friend class gDC; + void fill(const gRegion &clip, const gColor &color); + void fill(const gRegion &clip, const gRGB &color); - eSize getSize() const { return eSize(surface->x, surface->y); } + void blit(const gPixmap &src, ePoint pos, const gRegion &clip, int flags=0); - gPixmap(gSurface *surface); - gPixmap(eSize, int bpp); - virtual ~gPixmap(); + void mergePalette(const gPixmap &target); + void line(const gRegion &clip, ePoint start, ePoint end, gColor color); +#else + gPixmap(); +#endif + }; TEMPLATE_TYPEDEF(ePtr, gPixmapPtr);