QTeXEngine 0.2
QTeXEngine.h
Go to the documentation of this file.
1/***************************************************************************
2 File : QTeXEngine.h
3 Project : QTeXEngine GNU GPL v. 3.0
4 --------------------------------------------------------------------
5 Copyright : (C) 2009 by Ion Vasilief
6 Email (use @ for *) : ion_vasilief*yahoo.fr
7 Description : Enables the export of QPainter grafics to .tex files
8 ***************************************************************************/
9
10/***************************************************************************
11 * *
12 * This program is free software; you can redistribute it and/or modify *
13 * it under the terms of the GNU General Public License as published by *
14 * the Free Software Foundation; either version 3 of the License, or *
15 * (at your option) any later version. *
16 * *
17 * This program is distributed in the hope that it will be useful, *
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
20 * GNU General Public License for more details. *
21 * *
22 * You should have received a copy of the GNU General Public License *
23 * along with this program; if not, write to the Free Software *
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, *
25 * Boston, MA 02110-1301 USA *
26 * *
27 ***************************************************************************/
28
29#ifndef Q_TEX_ENGINE_H
30#define Q_TEX_ENGINE_H
31
32#include <QPaintDevice>
33#include <QPaintEngine>
34#include <QPrinter>
35
36class QFile;
37class QTeXPaintEngine;
38
39class QTeXPaintDevice : public QPaintDevice
40{
41public:
42 enum Unit{pt, bp, mm, cm, in, ex, em};
44
45 QTeXPaintDevice(const QString& fileName, const QSize& s = QSize(), Unit u = pt);
47
48 virtual QPaintEngine * paintEngine () const;
50 void setColorMode(QPrinter::ColorMode mode);
52 void setOutputMode(OutputMode mode);
54 void setUnit(Unit u);
56 void setSize(const QSize& s){d_size = s;};
58 void setDocumentMode(bool on = true);
60 void setEscapeTextMode(bool on = true);
62 void exportFontSizes(bool on = true);
64 void setTextHorizontalAlignment(Qt::Alignment alignment);
65
66protected:
67 virtual int metric ( PaintDeviceMetric ) const;
68
69private:
71 QSize d_size;
73};
74
75class QTeXPaintEngine : public QPaintEngine
76{
77public:
80 virtual bool begin(QPaintDevice*);
81 virtual bool end();
82 virtual void updateState( const QPaintEngineState & ) {};
83 virtual void drawEllipse(const QRectF &);
84 virtual QPaintEngine::Type type() const {return QPaintEngine::User;};
85 virtual void drawPoints ( const QPointF * points, int pointCount );
86 virtual void drawLines ( const QLineF * , int );
87 virtual void drawPath ( const QPainterPath & path );
88 virtual void drawPolygon ( const QPointF * , int , PolygonDrawMode );
89 virtual void drawTextItem ( const QPointF & , const QTextItem & );
90 virtual void drawRects ( const QRectF * , int );
91 virtual void drawPixmap ( const QRectF &, const QPixmap &, const QRectF &);
92 virtual void drawImage(const QRectF &, const QImage &, const QRectF &, Qt::ImageConversionFlags);
93
97 void setGrayScale(bool on = true){d_gray_scale = on;};
100 void setDocumentMode(bool on = true){d_document_mode = on;};
102 void setEscapeTextMode(bool on = true){d_escape_text = on;};
103 void exportFontSizes(bool on = true){d_font_size = on;};
104 void setTextHorizontalAlignment(Qt::Alignment alignment){d_horizontal_alignment = alignment;};
105
106private:
110 QString unit();
111 double unitFactor();
112 double resFactorX();
113 double resFactorY();
114
115 QString pgfPoint(const QPointF& p);
116 QString tikzPoint(const QPointF& p);
117
118 QPointF convertPoint(const QPointF& p);
119 QString color(const QColor& col);
120 QString defineColor(const QColor& c, const QString& name);
121
122 QString pgfPen(const QPen& pen);
123 QString tikzPen(const QPen& pen);
124
125 QString pgfBrush(const QBrush& brush);
126 QString tikzBrush(const QBrush& brush);
127
128 QString beginScope();
129 QString endScope();
130
131 QString clipPath();
132 bool changedClipping();
133
134 QString path(const QPainterPath & path);
135 QString pgfPath(const QPainterPath & path);
136 QString tikzPath(const QPainterPath & path);
137
138 QString drawShape(Shape shape, const QString & path);
139 QString drawPgfShape(Shape shape, const QString & path);
140 QString drawTikzShape(Shape shape, const QString & path);
141
143 void drawPixmap(const QPixmap &pix, const QRectF &p);
144 void writeToFile(const QString& s);
145 QString indentString(const QString& s);
147 bool addNewBrushColor();
148 bool addNewPatternColor();
149 bool addNewPenColor();
150
151 QFile *file;
153 QString fname;
161 QPainterPath d_clip_path;
165};
166#endif
Definition: QTeXEngine.h:40
void setEscapeTextMode(bool on=true)
Enables/Disables escaping of special characters in texts.
Definition: QTeXPaintDevice.cpp:75
QSize d_size
Size in pixels.
Definition: QTeXEngine.h:71
QTeXPaintEngine * engine
Definition: QTeXEngine.h:72
QTeXPaintDevice(const QString &fileName, const QSize &s=QSize(), Unit u=pt)
Definition: QTeXPaintDevice.cpp:34
void setSize(const QSize &s)
Set size.
Definition: QTeXEngine.h:56
void setDocumentMode(bool on=true)
Enables/Disables document tags.
Definition: QTeXPaintDevice.cpp:70
virtual QPaintEngine * paintEngine() const
Definition: QTeXPaintDevice.cpp:50
void setOutputMode(OutputMode mode)
Set output mode (Tikz or Pgf)
Definition: QTeXPaintDevice.cpp:60
OutputMode
Definition: QTeXEngine.h:43
@ Tikz
Definition: QTeXEngine.h:43
@ Pgf
Definition: QTeXEngine.h:43
void setColorMode(QPrinter::ColorMode mode)
Set color mode (Color or GrayScale)
Definition: QTeXPaintDevice.cpp:55
void setTextHorizontalAlignment(Qt::Alignment alignment)
Set horizontal alignment.
Definition: QTeXPaintDevice.cpp:85
Unit
Definition: QTeXEngine.h:42
@ in
Definition: QTeXEngine.h:42
@ ex
Definition: QTeXEngine.h:42
@ pt
Definition: QTeXEngine.h:42
@ bp
Definition: QTeXEngine.h:42
@ em
Definition: QTeXEngine.h:42
@ mm
Definition: QTeXEngine.h:42
@ cm
Definition: QTeXEngine.h:42
void exportFontSizes(bool on=true)
Enables/Disables exporting of font sizes.
Definition: QTeXPaintDevice.cpp:80
virtual int metric(PaintDeviceMetric) const
Definition: QTeXPaintDevice.cpp:90
void setUnit(Unit u)
Set length unit.
Definition: QTeXPaintDevice.cpp:65
~QTeXPaintDevice()
Definition: QTeXPaintDevice.cpp:45
Definition: QTeXEngine.h:76
QString endScope()
Definition: QTeXPaintEngine.cpp:989
virtual void drawImage(const QRectF &, const QImage &, const QRectF &, Qt::ImageConversionFlags)
Definition: QTeXPaintEngine.cpp:378
void exportFontSizes(bool on=true)
Definition: QTeXEngine.h:103
QString clipPath()
Definition: QTeXPaintEngine.cpp:421
void setTextHorizontalAlignment(Qt::Alignment alignment)
Definition: QTeXEngine.h:104
double resFactorX()
Definition: QTeXPaintEngine.cpp:735
virtual void drawPolygon(const QPointF *, int, PolygonDrawMode)
Definition: QTeXPaintEngine.cpp:162
QString tikzBrush(const QBrush &brush)
Definition: QTeXPaintEngine.cpp:452
bool d_font_size
Definition: QTeXEngine.h:160
QString fname
Name of the output file.
Definition: QTeXEngine.h:153
void setOutputMode(QTeXPaintDevice::OutputMode mode)
Set output syntax.
Definition: QTeXEngine.h:99
bool addNewPenColor()
Definition: QTeXPaintEngine.cpp:1075
Shape
Definition: QTeXEngine.h:107
@ Line
Definition: QTeXEngine.h:107
@ Path
Definition: QTeXEngine.h:107
@ Ellipse
Definition: QTeXEngine.h:107
@ Rect
Definition: QTeXEngine.h:107
@ Points
Definition: QTeXEngine.h:107
@ Polygon
Definition: QTeXEngine.h:107
@ Polyline
Definition: QTeXEngine.h:107
QColor d_current_color
Definition: QTeXEngine.h:162
QString color(const QColor &col)
Definition: QTeXPaintEngine.cpp:761
virtual void drawPixmap(const QRectF &, const QPixmap &, const QRectF &)
Definition: QTeXPaintEngine.cpp:383
QPointF convertPoint(const QPointF &p)
Definition: QTeXPaintEngine.cpp:706
void setGrayScale(bool on=true)
Enables/Disables gray scale output.
Definition: QTeXEngine.h:97
void setEscapeTextMode(bool on=true)
Enables/Disables escaping of special characters in texts.
Definition: QTeXEngine.h:102
QString indentString(const QString &s)
Definition: QTeXPaintEngine.cpp:963
bool addNewBrushColor()
Returns true if a new color command should be added.
Definition: QTeXPaintEngine.cpp:1066
QString pgfBrush(const QBrush &brush)
Definition: QTeXPaintEngine.cpp:573
QTeXPaintEngine(const QString &, QTeXPaintDevice::Unit u=QTeXPaintDevice::pt)
Definition: QTeXPaintEngine.cpp:36
double unitFactor()
Definition: QTeXPaintEngine.cpp:711
virtual void drawRects(const QRectF *, int)
Definition: QTeXPaintEngine.cpp:274
QFile * file
Definition: QTeXEngine.h:151
bool d_pgf_mode
Definition: QTeXEngine.h:155
QString tikzPoint(const QPointF &p)
Definition: QTeXPaintEngine.cpp:753
QString pgfPoint(const QPointF &p)
Definition: QTeXPaintEngine.cpp:745
virtual void drawEllipse(const QRectF &)
Definition: QTeXPaintEngine.cpp:289
bool addNewPatternColor()
Definition: QTeXPaintEngine.cpp:1053
QPainterPath d_clip_path
Definition: QTeXEngine.h:161
QString unit()
Definition: QTeXPaintEngine.cpp:1085
virtual void drawPoints(const QPointF *points, int pointCount)
Definition: QTeXPaintEngine.cpp:117
bool emptyStringOperation()
Returns true if draw operation has NoBrush and NoPen.
Definition: QTeXPaintEngine.cpp:1028
QString pgfPath(const QPainterPath &path)
Definition: QTeXPaintEngine.cpp:636
QString tikzPath(const QPainterPath &path)
Definition: QTeXPaintEngine.cpp:671
int d_pixmap_index
Definition: QTeXEngine.h:154
void setUnit(QTeXPaintDevice::Unit u)
Set length unit.
Definition: QTeXEngine.h:95
QString beginScope()
Definition: QTeXPaintEngine.cpp:972
virtual bool begin(QPaintDevice *)
Definition: QTeXPaintEngine.cpp:54
virtual void drawPath(const QPainterPath &path)
Definition: QTeXPaintEngine.cpp:312
virtual bool end()
Definition: QTeXPaintEngine.cpp:98
QString tikzPen(const QPen &pen)
Definition: QTeXPaintEngine.cpp:866
Qt::Alignment d_horizontal_alignment
Definition: QTeXEngine.h:164
virtual void drawLines(const QLineF *, int)
Definition: QTeXPaintEngine.cpp:147
QString drawTikzShape(Shape shape, const QString &path)
Definition: QTeXPaintEngine.cpp:366
void writeToFile(const QString &s)
Definition: QTeXPaintEngine.cpp:997
bool d_open_scope
Definition: QTeXEngine.h:156
void setDocumentMode(bool on=true)
Definition: QTeXEngine.h:100
QString drawPgfShape(Shape shape, const QString &path)
Definition: QTeXPaintEngine.cpp:320
double resFactorY()
Definition: QTeXPaintEngine.cpp:740
QColor d_pattern_color
Definition: QTeXEngine.h:162
virtual void updateState(const QPaintEngineState &)
Definition: QTeXEngine.h:82
QString drawShape(Shape shape, const QString &path)
Definition: QTeXPaintEngine.cpp:358
bool d_gray_scale
Definition: QTeXEngine.h:157
QString defineColor(const QColor &c, const QString &name)
Definition: QTeXPaintEngine.cpp:436
~QTeXPaintEngine()
Definition: QTeXEngine.h:79
QString pgfPen(const QPen &pen)
Definition: QTeXPaintEngine.cpp:778
bool changedClipping()
Definition: QTeXPaintEngine.cpp:1038
virtual QPaintEngine::Type type() const
Definition: QTeXEngine.h:84
bool d_escape_text
Definition: QTeXEngine.h:159
QTeXPaintDevice::Unit d_unit
Definition: QTeXEngine.h:163
virtual void drawTextItem(const QPointF &, const QTextItem &)
Definition: QTeXPaintEngine.cpp:186
bool d_document_mode
Definition: QTeXEngine.h:158
QString path(const QPainterPath &path)
Definition: QTeXPaintEngine.cpp:625