libkpl  4.1
A Library for Graphical Presentation of Data Sets and Functions
kplscene.h
1 //
2 // C++ Interface: kplscene
3 //
4 // Description:
5 //
6 //
7 // Author: Werner Stille <tille@uni-freiburg.de>, (C) 2015
8 //
9 // Copyright: See COPYING file that comes with this distribution
10 //
11 //
12 #ifndef KPLSCENE_H
13 #define KPLSCENE_H
14 
15 #include <QSizeF>
16 #include <QGraphicsScene>
17 #include <KUrl>
18 #include <kdemacros.h>
19 #include "arrayitem.h"
20 #include "frameitem.h"
21 
22 class QPointF;
23 class QPrinter;
24 class QString;
25 class QTransform;
26 class FrameItem;
27 
35 class KDE_EXPORT KplScene : public QGraphicsScene
36 {
37  Q_OBJECT
38 public:
44  KplScene(const QSizeF& size = QSizeF(21, 14.8), QObject* parent = 0);
46  ~KplScene();
55  static bool framelike(int type);
63  void insertItem(QGraphicsItem* item, int z = -1);
69  QList<QGraphicsItem*> items(Qt::SortOrder order) const;
75  QPointF map(const QPointF& p) const;
81  QPointF mapInv(const QPointF& p) const;
83  inline const QTransform& matrix() const { return m_matrix; };
88  void print(QPrinter* printer);
117  bool readData(const KUrl& url,
119  bool autoPathHeader = false, bool autoNorm = true,
120  bool logX = false, bool logY = false, double x0 = 4,
121  double y0 = 3, double width = 15, double height = 10,
122  unsigned colorFrame = 0, unsigned colorGrid = 0,
123  unsigned colorData = 0,
125  const QString& xText = "x", const QString& yText = "y",
126  const QString& header = "", double relSize = 1, int colX = 0,
127  int colY = 1, int colErr = 2, bool errorBars = false,
135  bool readPlo(const KUrl& url, QWidget* window = 0);
156  static bool readPlo(const KUrl& url, QList<QGraphicsItem*>& list,
157  QWidget* window = 0, unsigned colorFrame = 0,
158  unsigned colorGrid = 0, unsigned colorData = 0,
160  double x0 = 4, double y0 = 3, double width = 15,
161  double height = 10,
163  int colX = 0, int colY = 0, int colErr = 0,
164  bool errorBars = false);
174  bool savePlo(const KUrl& url, bool absolute = true, char format = 'g',
175  int precision = 6) const;
186  static bool savePlo(const KUrl& url, const QList<QGraphicsItem*>& list,
187  bool absolute = true, char format = 'g',
188  int precision = 6);
197  bool savePS(const KUrl& url = KUrl(), bool landscape = false,
198  bool boundingBox = true, bool internalPS = true);
200  inline const QSizeF size() const { return m_size; };
202  void setDashOffset() const;
207  void setProperties(QGraphicsItem* item) const;
212  void setSize(const QSizeF& size);
218  QPointF steps(int z = -1) const;
223  void updatePos(QGraphicsItem* item);
224 
225 signals:
232  void mouseMoved(const QPointF& pos, const FrameItem* frame);
238  void mousePressed(const QPointF& pos, Qt::MouseButtons buttons);
243  void positionChanged(QGraphicsItem* item);
248  void previewCreated(const QString& filename);
249 
250 protected:
256  FrameItem* frame(int z = -1) const;
262  virtual void mouseMoveEvent(QGraphicsSceneMouseEvent* e);
267  virtual void mousePressEvent(QGraphicsSceneMouseEvent* e);
268  double m_sx, m_sy;
269  QTransform m_matrix, m_inv;
270  QSizeF m_size;
271 };
272 
273 #endif
GridMode
Grid mode.
Definition: frameitem.h:36
Symbol
Symbol types.
Definition: kplitem.h:85
QList< QGraphicsItem * > items() const
const QTransform & matrix() const
Returns matrix for transformation from cm to pixel units.
Definition: kplscene.h:83
const QSizeF size() const
Returns scene size in cm units.
Definition: kplscene.h:200
virtual void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
DecimalCharacter
Decimal character.
Definition: arrayitem.h:43
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
Open circle.
Definition: kplitem.h:103
Kpl graphics scene class.
Definition: kplscene.h:35
Axes with tics and labels.
Definition: frameitem.h:39
typedef MouseButtons
Solid line.
Definition: kplitem.h:104
Decimal point.
Definition: arrayitem.h:44
Frame item class.
Definition: frameitem.h:32