Chemical Data Processing Library C++ API - Version 1.4.0
CairoRenderer2D.hpp
Go to the documentation of this file.
1 /*
2  * CairoRenderer2D.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_CAIRORENDERER2D_HPP
30 #define CDPL_VIS_CAIRORENDERER2D_HPP
31 
32 #include <vector>
33 
34 #include "CDPL/Vis/APIPrefix.hpp"
35 #include "CDPL/Vis/Renderer2D.hpp"
36 #include "CDPL/Vis/Pen.hpp"
37 #include "CDPL/Vis/Brush.hpp"
38 #include "CDPL/Vis/Font.hpp"
40 
41 
42 typedef struct _cairo cairo_t;
43 
44 
45 namespace CDPL
46 {
47 
48  namespace Vis
49  {
50 
57  {
58 
59  public:
66 
71 
72  void saveState();
73 
74  void restoreState();
75 
76  void setTransform(const Math::Matrix3D& xform);
77 
78  void transform(const Math::Matrix3D& xform);
79 
80  void setPen(const Pen& pen);
81 
82  void setBrush(const Brush& brush);
83 
84  void setFont(const Font& font);
85 
86  void drawRectangle(double x1, double y1, double x2, double y2);
87 
88  void drawPolygon(const Math::Vector2DArray& points);
89 
90  void drawLine(double x1, double y1, double x2, double y2);
91 
92  void drawPolyline(const Math::Vector2DArray& points);
93 
95 
96  void drawPoint(double x, double y);
97 
98  void drawText(double x, double y, const std::string& txt);
99 
100  void drawEllipse(double x, double y, double width, double height);
101 
102  void drawPath(const Path2D& path);
103 
104  void setClipPath(const Path2D& path);
105 
107 
108  private:
109  void fillPath() const;
110  void strokePath() const;
111 
112  typedef std::vector<Pen> PenStack;
113  typedef std::vector<Brush> BrushStack;
114  typedef std::vector<Font> FontStack;
115 
116  CairoPointer<cairo_t> cairoContext;
117  PenStack penStack;
118  BrushStack brushStack;
119  FontStack fontStack;
120  };
121  } // namespace Vis
122 } // namespace CDPL
123 
124 #endif // CDPL_VIS_CAIRORENDERER2D_HPP
Definition of class CDPL::Vis::Brush.
Definition of class CDPL::Vis::CairoPointer.
struct _cairo cairo_t
Definition: CairoPointer.hpp:35
Definition of class CDPL::Vis::Font.
Definition of class CDPL::Vis::Pen.
Definition of class CDPL::Vis::Renderer2D.
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
Implements the Vis::Renderer2D interface on top of the Cairo 2D Graphics Library.
Definition: CairoRenderer2D.hpp:57
void transform(const Math::Matrix3D &xform)
Right-multiplies the current affine transformation matrix by xform.
void drawPoint(double x, double y)
Draws a point at the position (x, y).
void restoreState()
Restores the last renderer state saved by a call to saveState().
void drawPath(const Path2D &path)
Draws the given path.
void drawPolyline(const Math::Vector2DArray &points)
Draws the polyline defined by points.
void drawLine(double x1, double y1, double x2, double y2)
Draws a line segment from (x1, y1) to (x2, y2).
void setPen(const Pen &pen)
Sets the pen to be used in subsequent drawing operations.
void drawPolygon(const Math::Vector2DArray &points)
Draws the polygon defined by points.
void drawLineSegments(const Math::Vector2DArray &points)
Draws the sequence of disjoint line segments defined by points.
void setFont(const Font &font)
Sets the font to be used in subsequent text drawing operations.
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.
void setClipPath(const Path2D &path)
Enables clipping and establishes a new clip region.
void drawText(double x, double y, const std::string &txt)
Draws the specified text at the position (x, y).
void setTransform(const Math::Matrix3D &xform)
Sets the applied affine transformation matrix to xform.
void clearClipPath()
Disables any currently active clipping region.
void saveState()
Saves the current renderer state.
CairoRenderer2D(const CairoPointer< cairo_t > &cairo_ctxt)
Constructs a CairoRenderer2D instance that operates on the Cairo drawing context specified by cairo_c...
void drawEllipse(double x, double y, double width, double height)
Draws an axis-aligned ellipse with the given width and height around the center position (x,...
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
Interface providing methods for low level 2D drawing operations.
Definition: Renderer2D.hpp:86
VectorArray< Vector2D > Vector2DArray
Array storing vectors of type Math::Vector2D.
Definition: VectorArray.hpp:82
CMatrix< double, 3, 3 > Matrix3D
Bounded 3×3 matrix holding floating-point values of type double.
Definition: Matrix.hpp:3504
The namespace of the Chemical Data Processing Library.