#include <lib/base/elock.h>
#include <lib/gdi/erect.h>
#include <lib/gdi/fb.h>
-#include <lib/gdi/region.h>
-
-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
{
gRGB(unsigned long val): b(val&0xFF), g((val>>8)&0xFF), r((val>>16)&0xFF), a((val>>24)&0xFF) // ARGB
{
}
+ gRGB(const char *colorstring)
+ {
+ unsigned long val = 0;
+ if (colorstring)
+ {
+ for (int i = 0; i < 8; i++)
+ {
+ if (i) val <<= 4;
+ if (!colorstring[i]) break;
+ val |= (colorstring[i]) & 0x0f;
+ }
+ }
+ b = val&0xFF;
+ g = (val>>8)&0xFF;
+ r = (val>>16)&0xFF;
+ a = (val>>24)&0xFF;
+ }
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;
{
return (b == c.b) && (g == c.g) && (r == c.r) && (a == c.a);
}
+ bool operator != (const gRGB &c) const
+ {
+ return (b != c.b) || (g != c.g) || (r != c.r) || (a != c.a);
+ }
+ operator const std::string () const
+ {
+ unsigned long val = (a<<24)|(r<<16)|(g<<8)|b;
+ std::string escapecolor = "\\c";
+ escapecolor.resize(10);
+ for (int i = 9; i >= 2; i--)
+ {
+ escapecolor[i] = 0x40 | (val & 0xf);
+ val >>= 4;
+ }
+ return escapecolor;
+ }
+};
+
+#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
gSurface(eSize size, int bpp, int accel);
~gSurface();
};
+#endif
+
+class gRegion;
+SWIG_IGNORE(gPixmap);
class gPixmap: public iObject
{
DECLARE_REF(gPixmap);
public:
+#ifndef SWIG
enum
{
blitAlphaTest=1,
- blitAlphaBlend=2
+ blitAlphaBlend=2,
+ blitScale=4
};
-#ifndef SWIG
gPixmap(gSurface *surface);
gPixmap(eSize, int bpp, int accel = 0);
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:
-#ifndef SWIG
+ bool must_delete_surface;
friend class gDC;
void fill(const gRegion &clip, const gColor &color);
+ void fill(const gRegion &clip, const gRGB &color);
- void blit(const gPixmap &src, ePoint pos, const gRegion &clip, int flags=0);
+ 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);
-#else
+#ifdef SWIG
gPixmap();
#endif
-
};
-
-TEMPLATE_TYPEDEF(ePtr<gPixmap>, gPixmapPtr);
+SWIG_TEMPLATE_TYPEDEF(ePtr<gPixmap>, gPixmapPtr);
#endif