Chemical Data Processing Library C++ API - Version 1.2.0
QtRenderer2D.hpp
Go to the documentation of this file.
1 /*
2  * QtRenderer2D.hpp
3  *
4  * This file is part of the Chemical Data Processing Toolkit
5  *
6  * Copyright (C) 2003 Thomas Seidel <thomas.seidel@univie.ac.at>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public License
19  * along with this library; see the file COPYING. If not, write to
20  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21  * Boston, MA 02111-1307, USA.
22  */
23 
29 #ifndef CDPL_VIS_QTRENDERER2D_HPP
30 #define CDPL_VIS_QTRENDERER2D_HPP
31 
32 #include <memory>
33 
34 #include "CDPL/Vis/APIPrefix.hpp"
35 #include "CDPL/Vis/Renderer2D.hpp"
36 
37 
38 class QPainter;
39 class QPolygonF;
40 class QPainterPath;
41 
42 
43 namespace CDPL
44 {
45 
46  namespace Vis
47  {
48 
57  {
58 
59  public:
64  QtRenderer2D(QPainter& painter);
65 
66  QtRenderer2D(const QtRenderer2D&) = delete;
67 
72 
73  QtRenderer2D& operator=(const QtRenderer2D&) = delete;
74 
75  void saveState();
76  void restoreState();
77 
78  void setTransform(const Math::Matrix3D& xform);
79  void transform(const Math::Matrix3D& xform);
80 
81  void setPen(const Pen& pen);
82  void setBrush(const Brush& brush);
83  void setFont(const Font& font);
84 
85  void drawRectangle(double x1, double y1, double x2, double y2);
86  void drawPolygon(const Math::Vector2DArray& points);
87  void drawLine(double x1, double y1, double x2, double y2);
88  void drawPolyline(const Math::Vector2DArray& points);
90  void drawPoint(double x, double y);
91  void drawText(double x, double y, const std::string& txt);
92  void drawEllipse(double x, double y, double width, double height);
93  void drawPath(const Path2D& path);
94 
95  void setClipPath(const Path2D& path);
96  void clearClipPath();
97 
98  private:
99  void convertToQPolygon(const Math::Vector2DArray&);
100 
101  QPainter& qPainter;
102  std::unique_ptr<QPolygonF> qPolygon;
103  std::unique_ptr<QPainterPath> qPainterPath;
104  };
105  } // namespace Vis
106 } // namespace CDPL
107 
108 #endif // CDPL_VIS_QTRENDERER2D_HPP
Definition of the class CDPL::Vis::Renderer2D.
Definition of the preprocessor macro CDPL_VIS_API.
#define CDPL_VIS_QT_API
Tells the compiler/linker which classes, functions and variables are part of the library API.
Specifies the fill pattern and fill color of shapes.
Definition: Brush.hpp:50
Specifies a font for drawing text.
Definition: Font.hpp:54
Provides a container for painting operations, enabling arbitrary graphical shapes to be constructed a...
Definition: Path2D.hpp:78
Specifies how to draw lines and outlines of shapes.
Definition: Pen.hpp:53
Implements the Renderer2D interface on top of the Qt Toolkit.
Definition: QtRenderer2D.hpp:57
void transform(const Math::Matrix3D &xform)
Multiplies the current affine transformation matrix by xform.
void setTransform(const Math::Matrix3D &xform)
Sets the applied affine transformation matrix to xform.
void saveState()
Saves the current renderer state.
void drawPolyline(const Math::Vector2DArray &points)
Draws the polyline defined by points.
QtRenderer2D(QPainter &painter)
Constructs a renderer object which uses the QPainter instance painter for its drawing operations.
void restoreState()
Restores the last renderer state saved by a call to saveState().
void drawLineSegments(const Math::Vector2DArray &points)
Draws the sequence of disjoint line segments defined by points.
QtRenderer2D & operator=(const QtRenderer2D &)=delete
void setPen(const Pen &pen)
Sets the pen to be used in subsequent drawing operations.
void drawEllipse(double x, double y, double width, double height)
Draws an ellipse with the given width and height around the center position (x, y).
void drawPath(const Path2D &path)
Draws the given path.
void drawLine(double x1, double y1, double x2, double y2)
Draws a line segment from (x1, y1) to (x2, y2).
void clearClipPath()
Disables clipping.
void drawPolygon(const Math::Vector2DArray &points)
Draws the polygon defined by points.
void drawRectangle(double x1, double y1, double x2, double y2)
Draws an axis aligned rectangle of the specified width and height whose upper-left corner is located ...
void setBrush(const Brush &brush)
Sets the brush to be used in subsequent drawing operations.
QtRenderer2D(const QtRenderer2D &)=delete
void drawPoint(double x, double y)
Draws a point at the position (x, y).
void drawText(double x, double y, const std::string &txt)
Draws the specified text at the position (x, y).
void setFont(const Font &font)
Sets the font to be used in subsequent text drawing operations.
~QtRenderer2D()
Destructor.
void setClipPath(const Path2D &path)
An interface that provides methods for low level 2D drawing operations.
Definition: Renderer2D.hpp:86
VectorArray< Vector2D > Vector2DArray
An array of Math::Vector2D objects.
Definition: VectorArray.hpp:79
CMatrix< double, 3, 3 > Matrix3D
A bounded 3x3 matrix holding floating point values of type double.
Definition: Matrix.hpp:1849
The namespace of the Chemical Data Processing Library.