#include <pthread.h>
#include <string>
#include <lib/base/object.h>
+#include <lib/base/smartptr.h>
#include <lib/base/elock.h>
#include <lib/gdi/erect.h>
#include <lib/gdi/fb.h>
+#include <lib/gdi/region.h>
struct gColor
{
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;
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:
enum
{
blitAlphaBlend=2
};
+#ifndef SWIG
+ gPixmap(gSurface *surface);
+ gPixmap(eSize, int bpp, int accel = 0);
+
gSurface *surface;
eLock contentlock;
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);
- gPixmap(gSurface *surface);
- gPixmap(eSize, int bpp, int accel = 0);
- virtual ~gPixmap();
+ 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);
+#else
+ gPixmap();
+#endif
+
};
TEMPLATE_TYPEDEF(ePtr<gPixmap>, gPixmapPtr);