chalk

kis_opengl_canvas_painter.h
1/*
2 * Copyright (c) 2005 Adrian Page <adrian@pagenet.plus.com>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 */
18
19#ifndef KIS_OPENGL_CANVAS_PAINTER_H_
20#define KIS_OPENGL_CANVAS_PAINTER_H_
21
22#ifdef HAVE_CONFIG_H
23#include <config.h>
24#endif
25
26#ifdef HAVE_GL
27
28#include <tqwidget.h>
29#include <tqgl.h>
30#include <tqpainter.h>
31
32#include "kis_global.h"
33#include "kis_canvas_painter.h"
34
35class KisOpenGLCanvasPainter : public KisCanvasWidgetPainter {
36public:
37 KisOpenGLCanvasPainter();
38 KisOpenGLCanvasPainter(TQGLWidget *widget);
39
40 virtual ~KisOpenGLCanvasPainter();
41
42 virtual bool begin(KisCanvasWidget *canvasWidget, bool unclipped = false);
43
44 // If we don't have OpenGL, we use the base class's no-op methods.
45
46 virtual bool end();
47
48 virtual void save();
49 virtual void restore();
50
51 virtual TQFontMetrics fontMetrics() const;
52 virtual TQFontInfo fontInfo() const;
53
54 virtual const TQFont& font() const;
55 virtual void setFont(const TQFont&);
56 virtual const TQPen& pen() const;
57 virtual void setPen(const TQPen&);
58 virtual void setPen(TQt::PenStyle);
59 virtual void setPen(const TQColor&);
60 virtual const TQBrush&brush() const;
61 virtual void setBrush(const TQBrush&);
62 virtual void setBrush(TQt::BrushStyle);
63 virtual void setBrush(const TQColor&);
64 virtual TQPoint pos() const;
65
66 virtual const TQColor& backgroundColor() const;
67 virtual void setBackgroundColor(const TQColor&);
68 virtual TQt::BGMode backgroundMode() const;
69 virtual void setBackgroundMode(TQt::BGMode);
70 virtual TQt::RasterOp rasterOp() const;
71 virtual void setRasterOp(TQt::RasterOp);
72 virtual const TQPoint& brushOrigin() const;
73 virtual void setBrushOrigin(int x, int y);
74 virtual void setBrushOrigin(const TQPoint&);
75
76 virtual bool hasViewXForm() const;
77 virtual bool hasWorldXForm() const;
78
79 virtual void setViewXForm(bool);
80 virtual TQRect window() const;
81 virtual void setWindow(const TQRect&);
82 virtual void setWindow(int x, int y, int w, int h);
83 virtual TQRect viewport() const;
84 virtual void setViewport(const TQRect&);
85 virtual void setViewport(int x, int y, int w, int h);
86
87 virtual void setWorldXForm(bool);
88 virtual const TQWMatrix&worldMatrix() const;
89 virtual void setWorldMatrix(const TQWMatrix&, bool combine=false);
90
91 virtual void saveWorldMatrix();
92 virtual void restoreWorldMatrix();
93
94 virtual void scale(double sx, double sy);
95 virtual void shear(double sh, double sv);
96 virtual void rotate(double a);
97
98 virtual void translate(double dx, double dy);
99 virtual void resetXForm();
100 virtual double translationX() const;
101 virtual double translationY() const;
102
103 virtual TQPoint xForm(const TQPoint&) const;
104 virtual TQRect xForm(const TQRect&) const;
105 virtual TQPointArray xForm(const TQPointArray&) const;
106 virtual TQPointArray xForm(const TQPointArray&, int index, int npoints) const;
107 virtual TQPoint xFormDev(const TQPoint&) const;
108 virtual TQRect xFormDev(const TQRect&) const;
109 virtual TQPointArray xFormDev(const TQPointArray&) const;
110 virtual TQPointArray xFormDev(const TQPointArray&, int index, int npoints) const;
111
112 virtual void setClipping(bool);
113 virtual bool hasClipping() const;
114 virtual TQRegion clipRegion(TQPainter::CoordinateMode = TQPainter::CoordDevice) const;
115 virtual void setClipRect(const TQRect&, TQPainter::CoordinateMode = TQPainter::CoordDevice);
116 virtual void setClipRect(int x, int y, int w, int h, TQPainter::CoordinateMode = TQPainter::CoordDevice);
117 virtual void setClipRegion(const TQRegion&, TQPainter::CoordinateMode = TQPainter::CoordDevice);
118
119 virtual void drawPoint(int x, int y);
120 virtual void drawPoint(const TQPoint&);
121 virtual void drawPoints(const TQPointArray& a, int index=0, int npoints=-1);
122 virtual void moveTo(int x, int y);
123 virtual void moveTo(const TQPoint&);
124 virtual void lineTo(int x, int y);
125 virtual void lineTo(const TQPoint&);
126 virtual void drawLine(int x1, int y1, int x2, int y2);
127 virtual void drawLine(const TQPoint&, const TQPoint&);
128 virtual void drawRect(int x, int y, int w, int h);
129 virtual void drawRect(const TQRect&);
130 virtual void drawWinFocusRect(int x, int y, int w, int h);
131 virtual void drawWinFocusRect(int x, int y, int w, int h, const TQColor&bgColor);
132 virtual void drawWinFocusRect(const TQRect&);
133 virtual void drawWinFocusRect(const TQRect&, const TQColor&bgColor);
134 virtual void drawRoundRect(int x, int y, int w, int h, int = 25, int = 25);
135 virtual void drawRoundRect(const TQRect&, int = 25, int = 25);
136 virtual void drawEllipse(int x, int y, int w, int h);
137 virtual void drawEllipse(const TQRect&);
138 virtual void drawArc(int x, int y, int w, int h, int a, int alen);
139 virtual void drawArc(const TQRect&, int a, int alen);
140 virtual void drawPie(int x, int y, int w, int h, int a, int alen);
141 virtual void drawPie(const TQRect&, int a, int alen);
142 virtual void drawChord(int x, int y, int w, int h, int a, int alen);
143 virtual void drawChord(const TQRect&, int a, int alen);
144 virtual void drawLineSegments(const TQPointArray&, int index=0, int nlines=-1);
145 virtual void drawPolyline(const TQPointArray&, int index=0, int npoints=-1);
146 virtual void drawPolygon(const TQPointArray&, bool winding=false, int index=0, int npoints=-1);
147 virtual void drawConvexPolygon(const TQPointArray&, int index=0, int npoints=-1);
148 virtual void drawCubicBezier(const TQPointArray&, int index=0);
149 virtual void drawPixmap(int x, int y, const TQPixmap&, int sx=0, int sy=0, int sw=-1, int sh=-1);
150 virtual void drawPixmap(const TQPoint&, const TQPixmap&, const TQRect&sr);
151 virtual void drawPixmap(const TQPoint&, const TQPixmap&);
152 virtual void drawPixmap(const TQRect&, const TQPixmap&);
153 virtual void drawImage(int x, int y, const TQImage&, int sx = 0, int sy = 0, int sw = -1, int sh = -1, int conversionFlags = 0);
154 virtual void drawImage(const TQPoint&, const TQImage&, const TQRect&sr, int conversionFlags = 0);
155 virtual void drawImage(const TQPoint&, const TQImage&, int conversion_flags = 0);
156 virtual void drawImage(const TQRect&, const TQImage&);
157 virtual void drawTiledPixmap(int x, int y, int w, int h, const TQPixmap&, int sx=0, int sy=0);
158 virtual void drawTiledPixmap(const TQRect&, const TQPixmap&, const TQPoint&);
159 virtual void drawTiledPixmap(const TQRect&, const TQPixmap&);
160 //virtual void drawPicture(const TQPicture&);
161 //virtual void drawPicture(int x, int y, const TQPicture&);
162 //virtual void drawPicture(const TQPoint&, const TQPicture&);
163
164 virtual void fillRect(int x, int y, int w, int h, const TQBrush&);
165 virtual void fillRect(const TQRect&, const TQBrush&);
166 virtual void eraseRect(int x, int y, int w, int h);
167 virtual void eraseRect(const TQRect&);
168
169 virtual void drawText(int x, int y, const TQString&, int len = -1, TQPainter::TextDirection dir = TQPainter::Auto);
170 virtual void drawText(const TQPoint&, const TQString&, int len = -1, TQPainter::TextDirection dir = TQPainter::Auto);
171
172 virtual void drawText(int x, int y, const TQString&, int pos, int len, TQPainter::TextDirection dir = TQPainter::Auto);
173 virtual void drawText(const TQPoint&p, const TQString&, int pos, int len, TQPainter::TextDirection dir = TQPainter::Auto);
174
175 virtual void drawText(int x, int y, int w, int h, int flags, const TQString&, int len = -1, TQRect *br=0, TQTextParag **intern=0);
176 virtual void drawText(const TQRect&, int flags, const TQString&, int len = -1, TQRect *br=0, TQTextParag **intern=0);
177
178 virtual void drawTextItem(int x, int y, const TQTextItem&ti, int textflags = 0);
179 virtual void drawTextItem(const TQPoint& p, const TQTextItem&ti, int textflags = 0);
180
181 virtual TQRect boundingRect(int x, int y, int w, int h, int flags, const TQString&, int len = -1, TQTextParag **intern=0);
182 virtual TQRect boundingRect(const TQRect&, int flags, const TQString&, int len = -1, TQTextParag **intern=0);
183
184 virtual int tabStops() const;
185 virtual void setTabStops(int);
186 virtual int *tabArray() const;
187 virtual void setTabArray(int *);
188
189protected:
190 void prepareForDrawing();
191 void updateViewTransformation();
192 void setPenStyle(TQt::PenStyle penStyle);
193
194protected:
195 TQFont m_defaultFont;
196 TQPen m_defaultPen;
197 TQBrush m_defaultBrush;
198 TQColor m_defaultColor;
199 TQPoint m_defaultBrushOrigin;
200 TQWMatrix m_defaultWorldMatrix;
201 TQRect m_window;
202 TQRect m_viewport;
203 bool m_active;
204
205protected:
206 TQGLWidget *m_widget;
207};
208
209#endif // HAVE_GL
210
211#endif // KIS_OPENGL_CANVAS_PAINTER_H_
212