Chemical Data Processing Library C++ API - Version 1.2.0
Renderer2D.hpp
Go to the documentation of this file.
1 /*
2  * Renderer2D.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_RENDERER2D_HPP
30 #define CDPL_VIS_RENDERER2D_HPP
31 
32 #include <string>
33 
34 #include "CDPL/Vis/APIPrefix.hpp"
36 #include "CDPL/Math/Matrix.hpp"
37 
38 
39 namespace CDPL
40 {
41 
42  namespace Vis
43  {
44 
45  class Pen;
46  class Brush;
47  class Font;
48  class Path2D;
49 
86  {
87 
88  public:
92  virtual ~Renderer2D() {}
93 
102  virtual void saveState() = 0;
103 
108  virtual void restoreState() = 0;
109 
114  virtual void setTransform(const Math::Matrix3D& xform) = 0;
115 
120  virtual void transform(const Math::Matrix3D& xform) = 0;
121 
127  virtual void setPen(const Pen& pen) = 0;
128 
134  virtual void setBrush(const Brush& brush) = 0;
135 
141  virtual void setFont(const Font& font) = 0;
142 
156  virtual void drawRectangle(double x, double y, double width, double height) = 0;
157 
168  virtual void drawPolygon(const Math::Vector2DArray& points) = 0;
169 
181  virtual void drawLine(double x1, double y1, double x2, double y2) = 0;
182 
193  virtual void drawPolyline(const Math::Vector2DArray& points) = 0;
194 
205  virtual void drawLineSegments(const Math::Vector2DArray& points) = 0;
206 
216  virtual void drawPoint(double x, double y) = 0;
217 
230  virtual void drawEllipse(double x, double y, double width, double height) = 0;
231 
241  virtual void drawPath(const Path2D& path) = 0;
242 
254  virtual void drawText(double x, double y, const std::string& txt) = 0;
255 
256  /*
257  * \brief Enables clipping and establishes a new clip region.
258  *
259  * The set clip region will affect all drawing operations by effectively masking out any changes to the
260  * drawing surface that are outside of the specified region.
261  *
262  * \param path The path specifying the shape of the clip region.
263  */
264  virtual void setClipPath(const Path2D& path) = 0;
265 
269  virtual void clearClipPath() = 0;
270  };
271  } // namespace Vis
272 } // namespace CDPL
273 
274 #endif // CDPL_VIS_RENDERER2D_HPP
Definition of matrix data types.
Definition of the class CDPL::Math::VectorArray.
Definition of the preprocessor macro CDPL_VIS_API.
#define CDPL_VIS_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
An interface that provides methods for low level 2D drawing operations.
Definition: Renderer2D.hpp:86
virtual void setTransform(const Math::Matrix3D &xform)=0
Sets the applied affine transformation matrix to xform.
virtual void drawText(double x, double y, const std::string &txt)=0
Draws the specified text at the position (x, y).
virtual void drawLine(double x1, double y1, double x2, double y2)=0
Draws a line segment from (x1, y1) to (x2, y2).
virtual void setFont(const Font &font)=0
Sets the font to be used in subsequent text drawing operations.
virtual void drawPath(const Path2D &path)=0
Draws the given path.
virtual void drawPolyline(const Math::Vector2DArray &points)=0
Draws the polyline defined by points.
virtual void restoreState()=0
Restores the last renderer state saved by a call to saveState().
virtual void saveState()=0
Saves the current renderer state.
virtual void drawRectangle(double x, double y, double width, double height)=0
Draws an axis aligned rectangle of the specified width and height whose upper-left corner is located ...
virtual void drawLineSegments(const Math::Vector2DArray &points)=0
Draws the sequence of disjoint line segments defined by points.
virtual void drawEllipse(double x, double y, double width, double height)=0
Draws an ellipse with the given width and height around the center position (x, y).
virtual void drawPolygon(const Math::Vector2DArray &points)=0
Draws the polygon defined by points.
virtual void setBrush(const Brush &brush)=0
Sets the brush to be used in subsequent drawing operations.
virtual ~Renderer2D()
Virtual destructor.
Definition: Renderer2D.hpp:92
virtual void setPen(const Pen &pen)=0
Sets the pen to be used in subsequent drawing operations.
virtual void clearClipPath()=0
Disables clipping.
virtual void drawPoint(double x, double y)=0
Draws a point at the position (x, y).
virtual void setClipPath(const Path2D &path)=0
virtual void transform(const Math::Matrix3D &xform)=0
Multiplies the current affine transformation matrix by xform.
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.