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 
36 class QFile;
37 class QTeXPaintEngine;
38 
39 class QTeXPaintDevice : public QPaintDevice
40 {
41 public:
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 
66 protected:
67  virtual int metric ( PaintDeviceMetric ) const;
68 
69 private:
71  QSize d_size;
73 };
74 
75 class QTeXPaintEngine : public QPaintEngine
76 {
77 public:
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 
106 private:
109  bool emptyStringOperation();
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;
164  Qt::Alignment d_horizontal_alignment;
165 };
166 #endif
Definition: QTeXEngine.h:42
bool d_font_size
Definition: QTeXEngine.h:160
virtual int metric(PaintDeviceMetric) const
Definition: QTeXPaintDevice.cpp:90
void setUnit(Unit u)
Set length unit.
Definition: QTeXPaintDevice.cpp:65
Definition: QTeXEngine.h:42
QPointF convertPoint(const QPointF &p)
Definition: QTeXPaintEngine.cpp:706
QString drawTikzShape(Shape shape, const QString &path)
Definition: QTeXPaintEngine.cpp:366
Shape
Definition: QTeXEngine.h:107
Definition: QTeXEngine.h:42
QString defineColor(const QColor &c, const QString &name)
Definition: QTeXPaintEngine.cpp:436
void setSize(const QSize &s)
Set size.
Definition: QTeXEngine.h:56
QString tikzPath(const QPainterPath &path)
Definition: QTeXPaintEngine.cpp:671
Definition: QTeXEngine.h:42
QSize d_size
Size in pixels.
Definition: QTeXEngine.h:71
void setDocumentMode(bool on=true)
Enables/Disables document tags.
Definition: QTeXPaintDevice.cpp:70
QFile * file
Definition: QTeXEngine.h:151
QString tikzPoint(const QPointF &p)
Definition: QTeXPaintEngine.cpp:753
QString pgfPath(const QPainterPath &path)
Definition: QTeXPaintEngine.cpp:636
virtual void drawPoints(const QPointF *points, int pointCount)
Definition: QTeXPaintEngine.cpp:117
virtual void drawPolygon(const QPointF *, int, PolygonDrawMode)
Definition: QTeXPaintEngine.cpp:162
void setGrayScale(bool on=true)
Enables/Disables gray scale output.
Definition: QTeXEngine.h:97
virtual void drawLines(const QLineF *, int)
Definition: QTeXPaintEngine.cpp:147
void setTextHorizontalAlignment(Qt::Alignment alignment)
Set horizontal alignment.
Definition: QTeXPaintDevice.cpp:85
Qt::Alignment d_horizontal_alignment
Definition: QTeXEngine.h:164
Definition: QTeXEngine.h:107
QString unit()
Definition: QTeXPaintEngine.cpp:1085
bool changedClipping()
Definition: QTeXPaintEngine.cpp:1038
Definition: QTeXEngine.h:75
bool d_gray_scale
Definition: QTeXEngine.h:157
QPainterPath d_clip_path
Definition: QTeXEngine.h:161
virtual void drawPixmap(const QRectF &, const QPixmap &, const QRectF &)
Definition: QTeXPaintEngine.cpp:383
virtual QPaintEngine::Type type() const
Definition: QTeXEngine.h:84
double resFactorY()
Definition: QTeXPaintEngine.cpp:740
void setDocumentMode(bool on=true)
Definition: QTeXEngine.h:100
Definition: QTeXEngine.h:43
double resFactorX()
Definition: QTeXPaintEngine.cpp:735
QTeXPaintEngine(const QString &, QTeXPaintDevice::Unit u=QTeXPaintDevice::pt)
Definition: QTeXPaintEngine.cpp:36
void exportFontSizes(bool on=true)
Definition: QTeXEngine.h:103
QColor d_current_color
Definition: QTeXEngine.h:162
Unit
Definition: QTeXEngine.h:42
QTeXPaintDevice(const QString &fileName, const QSize &s=QSize(), Unit u=pt)
Definition: QTeXPaintDevice.cpp:34
QString path(const QPainterPath &path)
Definition: QTeXPaintEngine.cpp:625
QString tikzBrush(const QBrush &brush)
Definition: QTeXPaintEngine.cpp:452
virtual QPaintEngine * paintEngine() const
Definition: QTeXPaintDevice.cpp:50
virtual bool begin(QPaintDevice *)
Definition: QTeXPaintEngine.cpp:54
QString endScope()
Definition: QTeXPaintEngine.cpp:989
QString color(const QColor &col)
Definition: QTeXPaintEngine.cpp:761
double unitFactor()
Definition: QTeXPaintEngine.cpp:711
QString tikzPen(const QPen &pen)
Definition: QTeXPaintEngine.cpp:866
virtual void drawImage(const QRectF &, const QImage &, const QRectF &, Qt::ImageConversionFlags)
Definition: QTeXPaintEngine.cpp:378
Definition: QTeXEngine.h:107
bool emptyStringOperation()
Returns true if draw operation has NoBrush and NoPen.
Definition: QTeXPaintEngine.cpp:1028
QTeXPaintEngine * engine
Definition: QTeXEngine.h:72
void setEscapeTextMode(bool on=true)
Enables/Disables escaping of special characters in texts.
Definition: QTeXPaintDevice.cpp:75
QString pgfPoint(const QPointF &p)
Definition: QTeXPaintEngine.cpp:745
QString drawPgfShape(Shape shape, const QString &path)
Definition: QTeXPaintEngine.cpp:320
OutputMode
Definition: QTeXEngine.h:43
QString fname
Name of the output file.
Definition: QTeXEngine.h:153
QString beginScope()
Definition: QTeXPaintEngine.cpp:972
void setUnit(QTeXPaintDevice::Unit u)
Set length unit.
Definition: QTeXEngine.h:95
Definition: QTeXEngine.h:42
bool d_document_mode
Definition: QTeXEngine.h:158
Definition: QTeXEngine.h:39
void setOutputMode(OutputMode mode)
Set output mode (Tikz or Pgf)
Definition: QTeXPaintDevice.cpp:60
void exportFontSizes(bool on=true)
Enables/Disables exporting of font sizes.
Definition: QTeXPaintDevice.cpp:80
Definition: QTeXEngine.h:107
QTeXPaintDevice::Unit d_unit
Definition: QTeXEngine.h:163
virtual bool end()
Definition: QTeXPaintEngine.cpp:98
virtual void updateState(const QPaintEngineState &)
Definition: QTeXEngine.h:82
~QTeXPaintDevice()
Definition: QTeXPaintDevice.cpp:45
int d_pixmap_index
Definition: QTeXEngine.h:154
bool addNewBrushColor()
Returns true if a new color command should be added.
Definition: QTeXPaintEngine.cpp:1066
bool d_pgf_mode
Definition: QTeXEngine.h:155
QString indentString(const QString &s)
Definition: QTeXPaintEngine.cpp:963
QString clipPath()
Definition: QTeXPaintEngine.cpp:421
void setTextHorizontalAlignment(Qt::Alignment alignment)
Definition: QTeXEngine.h:104
Definition: QTeXEngine.h:43
bool d_open_scope
Definition: QTeXEngine.h:156
bool addNewPatternColor()
Definition: QTeXPaintEngine.cpp:1053
void writeToFile(const QString &s)
Definition: QTeXPaintEngine.cpp:997
Definition: QTeXEngine.h:107
virtual void drawPath(const QPainterPath &path)
Definition: QTeXPaintEngine.cpp:312
bool d_escape_text
Definition: QTeXEngine.h:159
Definition: QTeXEngine.h:42
bool addNewPenColor()
Definition: QTeXPaintEngine.cpp:1075
virtual void drawEllipse(const QRectF &)
Definition: QTeXPaintEngine.cpp:289
~QTeXPaintEngine()
Definition: QTeXEngine.h:79
virtual void drawRects(const QRectF *, int)
Definition: QTeXPaintEngine.cpp:274
QString pgfBrush(const QBrush &brush)
Definition: QTeXPaintEngine.cpp:573
virtual void drawTextItem(const QPointF &, const QTextItem &)
Definition: QTeXPaintEngine.cpp:186
Definition: QTeXEngine.h:107
void setEscapeTextMode(bool on=true)
Enables/Disables escaping of special characters in texts.
Definition: QTeXEngine.h:102
QString drawShape(Shape shape, const QString &path)
Definition: QTeXPaintEngine.cpp:358
void setOutputMode(QTeXPaintDevice::OutputMode mode)
Set output syntax.
Definition: QTeXEngine.h:99
void setColorMode(QPrinter::ColorMode mode)
Set color mode (Color or GrayScale)
Definition: QTeXPaintDevice.cpp:55
QString pgfPen(const QPen &pen)
Definition: QTeXPaintEngine.cpp:778
Definition: QTeXEngine.h:42
QColor d_pattern_color
Definition: QTeXEngine.h:162
Definition: QTeXEngine.h:107
Definition: QTeXEngine.h:107