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