1 /* NetHack 3.6 tileedit.h $NHDT-Date: 1432512809 2015/05/25 00:13:29 $ $NHDT-Branch: master $:$NHDT-Revision: 1.8 $ */ 2 /* Copyright (c) Warwick Allison, 1999. */ 3 /* NetHack may be freely redistributed. See license for details. */ 4 #ifndef QNHTILEEDIT_H 5 #define QNHTILEEDIT_H 6 7 #include <qtabwidget.h> 8 #include <qpixmap.h> 9 #include <qimage.h> 10 #include <qvbox.h> 11 12 class TilePickerTab : public QWidget 13 { 14 Q_OBJECT 15 public: 16 TilePickerTab(const char *basename, int id, QWidget *parent); 17 18 bool save(); 19 int numTiles(); 20 21 signals: 22 void pick(const QImage &); 23 void pickName(const QString &); 24 25 public slots: 26 void setCurrent(const QImage &); 27 28 protected: 29 void paintEvent(QPaintEvent *); 30 QSize sizeHint() const; 31 void mousePressEvent(QMouseEvent *); 32 33 private: 34 QString filename; 35 int id; 36 int last_pick; 37 int num; 38 QPixmap pixmap; 39 QImage image; 40 }; 41 42 class TilePicker : public QTabWidget 43 { 44 Q_OBJECT 45 public: 46 TilePicker(QWidget *parent); 47 48 void setTile(int tilenum, const QImage &); 49 50 signals: 51 void pick(const QImage &); 52 void pickName(const QString &); 53 54 public slots: 55 void setCurrent(const QImage &); 56 void save(); 57 }; 58 59 class TrivialTileEditor : public QWidget 60 { 61 Q_OBJECT 62 public: 63 TrivialTileEditor(QWidget *parent); 64 const QImage &image() const; 65 66 signals: 67 void edited(const QImage &); 68 void pick(QRgb); 69 70 public slots: 71 void setColor(QRgb); 72 void setImage(const QImage &); 73 74 protected: 75 void paintEvent(QPaintEvent *); 76 void mousePressEvent(QMouseEvent *); 77 void mouseReleaseEvent(QMouseEvent *); 78 void mouseMoveEvent(QMouseEvent *); 79 QSize sizeHint() const; 80 QSize sizeForWidth(int) const; 81 QSizePolicy sizePolicy() const; 82 83 private: 84 void fill(QPainter &painter, QPoint p, uchar from); 85 QImage img; 86 QColor pen; 87 int penpixel; 88 void paintPoint(QPainter &painter, QPoint p); 89 QPoint screenPoint(QPoint) const; 90 QPoint imagePoint(QPoint) const; 91 }; 92 93 class TilePalette : public QWidget 94 { 95 Q_OBJECT 96 public: 97 TilePalette(QWidget *parent); 98 ~TilePalette(); 99 void setFromImage(const QImage &); 100 101 protected: 102 void paintEvent(QPaintEvent *); 103 void mousePressEvent(QMouseEvent *); 104 QSize sizeHint() const; 105 QSizePolicy sizePolicy() const; 106 signals: 107 void pick(QRgb); 108 public slots: 109 void setColor(QRgb); 110 111 private: 112 int num; 113 QRgb *rgb; 114 }; 115 116 class TileEditor : public QVBox 117 { 118 Q_OBJECT 119 public: 120 TileEditor(QWidget *parent); 121 122 const QImage &image() const; 123 124 signals: 125 void edited(const QImage &); 126 127 public slots: 128 void edit(const QImage &); 129 130 private: 131 TrivialTileEditor editor; 132 TilePalette palette; 133 }; 134 135 #endif 136