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