libkpl  5.0
A Library for Graphical Presentation of Data Sets and Functions
psgraph.h
1 //
2 // C++ Interface: psgraph
3 //
4 // Description:
5 //
6 //
7 // Author: Werner Stille <kpl@werner-stille.de>, (C) 2017
8 //
9 // Copyright: See COPYING file that comes with this distribution
10 //
11 //
12 #ifndef PSGRAPH_H
13 #define PSGRAPH_H
14 
15 #include <QPointF>
16 #include <QSizeF>
17 #include "textitem.h"
18 
19 class QGraphicsItem;
20 class QTextStream;
21 class ArcItem;
22 class ArrayItem;
23 class Array3DItem;
24 class ArrowItem;
25 class EllipseItem;
26 class FrameItem;
27 class FunItem;
28 class Fun3DItem;
29 class ImageItem;
30 class LegendItem;
31 class LineItem;
32 class ParFunItem;
33 class RectItem;
34 class ScaleBarItem;
35 class ScaledItem;
36 class SplineItem;
37 class TextItem;
38 class ThreeDItem;
39 
45 class Q_DECL_EXPORT PSGraph
46 {
47 public:
56  PSGraph(QTextStream* stream, const QList<QGraphicsItem*>& list,
57  const QSizeF& size, bool landscape = false, bool eps = true);
67  PSGraph(QTextStream* stream, const QSizeF& size,
68  const QPointF& topRight = QPointF(),
69  const QPointF& bottomLeft = QPointF(), bool landscape = false,
70  bool eps = true);
72  ~PSGraph();
85  void drawArray(const double* x, const double* y, double fx, double fy, int n,
87  double xOff = 0, double yOff = 0, bool clip = true);
92  void drawItems(const QList<QGraphicsItem*>& list);
100  void drawText(const QString& text, double x, double y,
103  void finish();
108  void setColorData(unsigned color);
113  void setDir(double dir);
119  double setRelSize(double m_relSize);
121  static const double pts;
122 
123 protected:
133  void cm2r(double xcm, double ycm, double fx, double fy, double* xu,
134  double* yu) const;
139  void draw3D(ThreeDItem* item);
144  void drawArc(ArcItem* item);
149  void drawArray(ArrayItem* item);
154  void drawArray3D(Array3DItem* item);
159  void drawArrow(ArrowItem* item);
164  void drawEllipse(EllipseItem* item);
177  void drawErrorBars(const double* x, const double* y, const double* errors,
178  double fx, double fy, int n, double xOff = 0,
179  double yOff = 0, bool clip = true);
184  void drawFrame(FrameItem* item);
189  void drawFunc(FunItem* item);
194  void drawFunc3D(Fun3DItem* item);
199  void drawImage(ImageItem* item);
204  void drawLegend(LegendItem* item);
209  void drawLine(LineItem* item);
214  void drawParFunc(ParFunItem* item);
219  void drawRect(RectItem* item);
224  void drawScaleBar(ScaleBarItem* item);
229  void drawSpline(SplineItem* item);
234  void drawText(TextItem* item);
241  void labelX(const QString& text, int exp, bool xTop);
248  void labelY(const QString& text, int exp, bool yRight);
256  void prolog(bool landscape, bool eps,
257  const QPointF& topRight = QPointF(),
258  const QPointF& bottomLeft = QPointF());
263  void psStr(const QString& text);
265  void resetDashOffset();
275  void scale(double xMin, double xMax, double yMin, double yMax,
276  bool logX = false, bool logY = false);
281  void setColorFrame(unsigned color);
286  void setColorGrid(unsigned color);
291  void setProperties(ScaledItem* item);
296  void setSymbol(KplItem::Symbol symbol);
304  void window(double x0, double width, double y0, double height);
305  bool m_logX, m_logY;
306  KplItem::Symbol m_symbol;
307  double m_x0, m_y0, m_width, m_height, m_xMin, m_yMin, m_xMax, m_yMax,
308  m_relSize;
309  QTextStream* ts;
310  QSizeF m_size;
311 };
312 
313 #endif
Parametric function item class.
Definition: parfunitem.h:32
FillStyle
Fill styles.
Definition: kplitem.h:45
Symbol
Symbol types.
Definition: kplitem.h:83
Alignment
Text alignment.
Definition: textitem.h:33
No brush pattern.
Definition: kplitem.h:46
Rectangle item class.
Definition: rectitem.h:28
PS graphics class.
Definition: psgraph.h:45
Legend item class.
Definition: legenditem.h:36
Scale bar item class.
Definition: scalebaritem.h:29
Text item class.
Definition: textitem.h:29
Arrow item class.
Definition: arrowitem.h:31
Aligns at left side.
Definition: textitem.h:34
Function item class.
Definition: funitem.h:39
Spline item class.
Definition: splineitem.h:28
Ellipse item class.
Definition: ellipseitem.h:28
3D arrayitem class.
Definition: array3ditem.h:29
Image item class.
Definition: imageitem.h:29
3D function item class.
Definition: fun3ditem.h:28
Scaled item class.
Definition: scaleditem.h:24
3D item class.
Definition: threeditem.h:30
Line item class.
Definition: lineitem.h:30
Arc item class.
Definition: arcitem.h:28
Frame item class.
Definition: frameitem.h:33
Array item class.
Definition: arrayitem.h:36
static const double pts
Points per cm.
Definition: psgraph.h:121