#define __gpixmap_h
#include <pthread.h>
-#include <lib/base/estring.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/base/elock.h>
-
-#include <lib/base/object.h>
struct gColor
{
struct gRGB
{
- int b, g, r, a;
+ unsigned char b, g, r, a;
gRGB(int r, int g, int b, int a=0): b(b), g(g), r(r), a(a)
{
}
gRGB(unsigned long val): b(val&0xFF), g((val>>8)&0xFF), r((val>>16)&0xFF), a((val>>24)&0xFF) // ARGB
{
}
- gRGB()
+ gRGB(): b(0), g(0), r(0), a(0)
{
}
+ void operator=(unsigned long val)
+ {
+ b = val&0xFF;
+ g = (val>>8)&0xFF;
+ r = (val>>16)&0xFF;
+ a = (val>>24)&0xFF;
+ }
bool operator < (const gRGB &c) const
{
if (b < c.b)
gColor *lookup;
gLookup(int size, const gPalette &pal, const gRGB &start, const gRGB &end);
gLookup();
+ ~gLookup() { delete [] lookup; }
void build(int size, const gPalette &pal, const gRGB &start, const gRGB &end);
};
-/**
- * \brief A softreference to a font.
- *
- * The font is specified by a name and a size.
- * \c gFont is part of the \ref gdi.
- */
-struct gFont
+struct gSurface
{
- eString family;
- int pointSize;
-
- /**
- * \brief Constructs a font with the given name and size.
- * \param family The name of the font, for example "NimbusSansL-Regular Sans L Regular".
- * \param pointSize the size of the font in PIXELS.
- */
- gFont(const eString &family, int pointSize):
- family(family), pointSize(pointSize)
- {
- }
-
- enum
- {
- tRegular, tFixed
- };
-
- gFont(int type, int pointSize);
+ int type;
+ int x, y, bpp, bypp, stride;
+ gPalette clut;
- gFont()
- :pointSize(0)
- {
- }
+ void *data;
+ int data_phys;
+ int offset; // only for backbuffers
+
+ gSurface();
+ gSurface(eSize size, int bpp, int accel);
+ ~gSurface();
};
-struct gPixmap: public iObject
+class gPixmap: public iObject
{
-DECLARE_REF;
+ DECLARE_REF(gPixmap);
public:
- int x, y, bpp, bypp, stride;
- void *data;
+ enum
+ {
+ blitAlphaTest=1,
+ blitAlphaBlend=2
+ };
+
+#ifndef SWIG
+ gPixmap(gSurface *surface);
+ gPixmap(eSize, int bpp, int accel = 0);
+
+ gSurface *surface;
- gPalette clut;
+ eLock contentlock;
+ int final;
+
+ gPixmap *lock();
+ void unlock();
+#endif
+ virtual ~gPixmap();
- eSize getSize() const { return eSize(x, y); }
+ eSize size() const { return eSize(surface->x, surface->y); }
- void fill(const eRect &area, const gColor &color);
+private:
+#ifndef SWIG
+ friend class gDC;
+ void fill(const gRegion &clip, const gColor &color);
- enum
- {
- blitAlphaTest=1
- };
- void blit(const gPixmap &src, ePoint pos, const eRect &clip=eRect(), int flags=0);
+ void blit(const gPixmap &src, ePoint pos, const gRegion &clip, int flags=0);
void mergePalette(const gPixmap &target);
- void line(ePoint start, ePoint end, gColor color);
+ void line(const gRegion &clip, ePoint start, ePoint end, gColor color);
+#else
gPixmap();
- virtual ~gPixmap();
-};
+#endif
-struct gImage: gPixmap
-{
- gImage(eSize size, int bpp);
- ~gImage();
};
+TEMPLATE_TYPEDEF(ePtr<gPixmap>, gPixmapPtr);
+
#endif