summaryrefslogtreecommitdiffstats
path: root/kmahjongg/Tileset.h
diff options
context:
space:
mode:
Diffstat (limited to 'kmahjongg/Tileset.h')
-rw-r--r--kmahjongg/Tileset.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/kmahjongg/Tileset.h b/kmahjongg/Tileset.h
new file mode 100644
index 00000000..45bc9281
--- /dev/null
+++ b/kmahjongg/Tileset.h
@@ -0,0 +1,107 @@
+#ifndef _TILE_SET_H_
+#define _TILE_SET_H_
+
+
+#include <qbitmap.h>
+
+class Tileset {
+ public:
+ Tileset(bool scaled=false);
+ ~Tileset();
+
+ bool loadTileset(const QString &filesetPath, const bool isPreview = false);
+ QRgb *createTile(short x, short y, QRgb *dst, QImage &src , QRgb *face);
+ QRgb *copyTileImage(short tileX, short tileY, QRgb *to, QImage &from);
+
+ void setScaled(bool sc) {isScaled = sc; divisor = (sc) ? 2 : 1;}
+
+
+ QRgb *tile(short tnum);
+ QRgb *selectedTile(short tnum);
+ short width() {return w/divisor;}
+ short height() {return h/divisor;}
+ short shadowSize() {return ss/divisor;}
+ short size() {return s;}
+ short qWidth() {return qw/divisor;}
+ short qHeight() {return qh/divisor;}
+
+
+ QPixmap *selectedPixmaps(int num) {
+ if (!isScaled)
+ return &(selectedPix[num]);
+ else
+ return &(selectedMiniPix[num]);
+ }
+
+ QPixmap *unselectedPixmaps(int num) {
+ if (!isScaled)
+ return &(unselectedPix[num]);
+ else
+ return &(unselectedMiniPix[num]);
+ }
+
+ QPixmap *selectedShadowPixmaps(int num) {
+ if (!isScaled)
+ return &(selectedShadowPix[num]);
+ else
+ return &(selectedShadowMiniPix[num]);
+ }
+
+ QPixmap *unselectedShadowPixmaps(int num) {
+ if (!isScaled)
+ return &(unselectedShadowPix[num]);
+ else
+ return &(unselectedShadowMiniPix[num]);
+ }
+
+ protected:
+
+ enum { maxTiles=45 };
+ void createPixmap(QRgb *src, QPixmap &dest, bool scale, bool shadow);
+
+
+ private:
+ QBitmap maskBits; // xbm mask for the tile
+ QBitmap maskBitsMini; // xbm mask for the tile
+ QRgb* tiles; // Buffer containing all tiles (unselected glyphs)
+ QRgb* selectedTiles; // Buffer containing all tiles (selected glyphs)
+
+
+ // in version 0.5 we have moved ftom using images and calculating
+ // masks etc, to using pixmaps and letting the blt do the hard work,
+ // in hardware.
+ QPixmap selectedPix[maxTiles]; // selected tiles
+ QPixmap unselectedPix[maxTiles]; // unselected tiles
+ QPixmap selectedMiniPix[maxTiles]; // selected tiles
+ QPixmap unselectedMiniPix[maxTiles]; // unselected tiles
+
+ QPixmap selectedShadowPix[maxTiles]; // selected tiles as above in shadow
+ QPixmap unselectedShadowPix[maxTiles]; // unselected tiles
+ QPixmap selectedShadowMiniPix[maxTiles]; // selected tiles
+ QPixmap unselectedShadowMiniPix[maxTiles]; // unselected tiles
+
+
+
+
+ QRgb* selectedFace; // The tile background face for a selected tile
+ QRgb* unselectedFace;// The tile background face for an unselected tile
+
+ QRgb tr; // transparenct color for tile bg
+
+ short ss; // left/bottom shadow width
+ short bs; // width of the border around a tile
+ short w; // tile width ( +border +shadow)
+ short h; // tile height ( +border +shadow)
+ short qw; // quarter tile width used in 3d rendering
+ short qh; // quarter tile height used in 3d rendering
+ short s; // buffer size for tile (width*height)
+
+ QString filename; // cache the last file loaded to save reloading it
+ bool isScaled;
+ int divisor;
+};
+
+
+#endif
+
+