1 /* SCCS Id: @(#)tileedit.h 3.4 1999/11/19 */ 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 Q_OBJECT 14 public: 15 TilePickerTab(const char* basename, int id, QWidget* parent); 16 17 bool save(); 18 int numTiles(); 19 20 signals: 21 void pick(const QImage&); 22 void pickName(const QString&); 23 24 public slots: 25 void setCurrent(const QImage&); 26 27 protected: 28 void paintEvent( QPaintEvent* ); 29 QSize sizeHint() const; 30 void mousePressEvent(QMouseEvent*); 31 32 private: 33 QString filename; 34 int id; 35 int last_pick; 36 int num; 37 QPixmap pixmap; 38 QImage image; 39 }; 40 41 class TilePicker : public QTabWidget { 42 Q_OBJECT 43 public: 44 TilePicker(QWidget* parent); 45 46 void setTile(int tilenum, const QImage&); 47 48 signals: 49 void pick(const QImage&); 50 void pickName(const QString&); 51 52 public slots: 53 void setCurrent(const QImage&); 54 void save(); 55 }; 56 57 class TrivialTileEditor : public QWidget { 58 Q_OBJECT 59 public: 60 TrivialTileEditor( QWidget* parent ); 61 const QImage& image() const; 62 63 signals: 64 void edited(const QImage&); 65 void pick(QRgb); 66 67 public slots: 68 void setColor(QRgb); 69 void setImage( const QImage& ); 70 71 protected: 72 void paintEvent( QPaintEvent* ); 73 void mousePressEvent(QMouseEvent*); 74 void mouseReleaseEvent(QMouseEvent*); 75 void mouseMoveEvent(QMouseEvent*); 76 QSize sizeHint() const; 77 QSize sizeForWidth(int) const; 78 QSizePolicy sizePolicy() const; 79 80 private: 81 void fill(QPainter& painter, QPoint p, uchar from); 82 QImage img; 83 QColor pen; 84 int penpixel; 85 void paintPoint(QPainter& painter, QPoint p); 86 QPoint screenPoint(QPoint) const; 87 QPoint imagePoint(QPoint) const; 88 }; 89 90 class TilePalette : public QWidget { 91 Q_OBJECT 92 public: 93 TilePalette( QWidget* parent ); 94 ~TilePalette(); 95 void setFromImage( const QImage& ); 96 protected: 97 void paintEvent( QPaintEvent* ); 98 void mousePressEvent(QMouseEvent*); 99 QSize sizeHint() const; 100 QSizePolicy sizePolicy() const; 101 signals: 102 void pick(QRgb); 103 public slots: 104 void setColor(QRgb); 105 private: 106 int num; 107 QRgb *rgb; 108 }; 109 110 class TileEditor : public QVBox { 111 Q_OBJECT 112 public: 113 TileEditor(QWidget* parent); 114 115 const QImage& image() const; 116 117 signals: 118 void edited(const QImage&); 119 120 public slots: 121 void edit(const QImage&); 122 123 private: 124 TrivialTileEditor editor; 125 TilePalette palette; 126 }; 127 128 #endif 129