libkpl  5.0
A Library for Graphical Presentation of Data Sets and Functions
arrayitem.h
1 /***************************************************************************
2  arrayitem.h - description
3  -------------------
4 
5  This file is a part of kpl - a program for graphical presentation of
6  data sets and functions.
7 
8  begin : Sat Aug 28 1999
9  copyright : (C) 2017 by Werner Stille
10  email : kpl@werner-stille.de
11  ***************************************************************************/
12 
13 /***************************************************************************
14  * *
15  * This program is free software; you can redistribute it and/or modify *
16  * it under the terms of the GNU General Public License as published by *
17  * the Free Software Foundation; either version 2 of the License, or *
18  * (at your option) any later version. *
19  * *
20  ***************************************************************************/
21 
22 #ifndef ARRAYITEM_H
23 #define ARRAYITEM_H
24 
25 #include <QUrl>
26 #include "scaleditem.h"
27 
28 class QIODevice;
29 class QTextStream;
30 
36 class Q_DECL_EXPORT ArrayItem : public ScaledItem
37 {
38 public:
46  Settings
47  };
49  enum {
50  Type = UserType + Array
55  };
57  ArrayItem();
80  ArrayItem(unsigned color, int colX = 0, int colY = 0, int colErr = 0,
81  bool errorBars = false, Symbol symbol = OpenCircle,
82  DecimalCharacter decimalChar = Point, const QUrl& url = QUrl(),
83  double fx = 1, double fy = 1, QGraphicsItem* parent = 0, int n = 0,
84  int rowStart = 0, FillStyle fillStyle = NoBrush,
85  double xOffset = 0, double yOffset = 0, bool visible = true,
86  bool internal = false, double relSize = 1);
91  ArrayItem(const ArrayItem& a);
104  ArrayItem(const KConfigGroup* plo, const QUrl& urlPlo, unsigned color = 0,
105  int colX = 0, int colY = 0, int colErr = 0, bool errorBars = false,
106  Symbol symbol = OpenCircle, QGraphicsItem* parent = 0);
108  virtual ~ArrayItem();
115  void adjustCols(int colX, int colY, int colErr);
117  inline void adjustCols() { adjustCols(m_colX, m_colY, m_colErr); };
119  virtual QRectF boundingRect() const;
121  inline int colErr() const { return m_colErr; };
123  inline int colX() const { return m_colX; };
125  inline int colY() const { return m_colY; };
133  static double** copyArray(double **data, int nCols, int nRows);
135  inline int count() const { return m_count; };
140  inline double** data() const { return m_data; };
143  { return m_decimalCharacter; };
145  inline bool errorBars() const { return m_errorBars; };
153  void exponent(int& expX, int& expY, double& fx, double& fy) const;
158  static void freeArray(double*** data);
160  inline bool internal() const { return m_internal; };
168  void limits(double& xMin, double& xMax, double& yMin, double& yMax) const;
170  inline int numCols() const { return m_numCols; };
172  inline int numRows() const { return m_numRows; };
174  virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option,
175  QWidget* widget = 0);
180  virtual int readFile();
189  static int readFile(const QUrl& url, int& nCols, double*** data,
190  DecimalCharacter decimalChar = Point);
199  static int readFile(QIODevice* device, int& nCols, double*** data,
200  DecimalCharacter decimalChar = Point);
209  static int readFile(QString* text, int& nCols, double*** data,
210  DecimalCharacter decimalChar = Point);
215  int readFile(QString* text);
224  static int readLines(QTextStream& t, int nCols, double*** data,
225  DecimalCharacter decimalChar = Point);
227  inline int rowStart() const { return m_rowStart; };
232  inline void setColErr(int colErr) { m_colErr = colErr; };
237  inline void setColX(int colX) { m_colX = colX; };
242  inline void setColY(int colY) { m_colY = colY; };
247  inline void setCount(int n) { m_count = n; };
249  void setDashOffset();
254  void setData(double** data);
259  inline void setDecimalCharacter(DecimalCharacter decimalChar)
260  { m_decimalCharacter = decimalChar; };
265  inline void setErrorBars(bool errorBars) { m_errorBars = errorBars; };
270  inline void setInternal(bool internal) { m_internal = internal; };
275  inline void setNumCols(int nCols) { m_numCols = nCols; };
280  inline void setNumRows(int nRows) { m_numRows = nRows; };
287  void setRange(int rowStart, int n);
292  inline void setRowStart(int rowStart) { m_rowStart = rowStart; };
297  inline void setUrl(const QUrl& url) { m_url = url; };
299  virtual QPainterPath shape() const;
305  static void translate(QString& line, DecimalCharacter decimalChar);
307  virtual int type() const { return Type; };
309  inline const QUrl& url() const { return m_url; };
316  void writePlo(KConfigGroup* plo, const QUrl& urlPlo, bool absolute) const;
317 
318 protected:
324  void paintCond(QPainter* painter) const;
325  bool m_internal, m_errorBars;
326  int m_colX, m_colY, m_colErr, m_rowStart, m_count, m_numRows, m_numCols;
327  DecimalCharacter m_decimalCharacter;
328  double** m_data;
329  QUrl m_url;
330 };
331 
332 #endif
void translate(qreal dx, qreal dy)
FillStyle
Fill styles.
Definition: kplitem.h:45
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)=0
int colX() const
Returns x column index.
Definition: arrayitem.h:123
Symbol
Symbol types.
Definition: kplitem.h:83
void setColErr(int colErr)
Sets error column index.
Definition: arrayitem.h:232
void setData(int key, const QVariant &value)
void setDecimalCharacter(DecimalCharacter decimalChar)
Sets decimal character.
Definition: arrayitem.h:259
static bool limits(double &xMin, double &xMax, const double *values, int n)
Calculates minimum and maximum values of an array.
void setNumRows(int nRows)
Sets number of rows.
Definition: arrayitem.h:280
void setUrl(const QUrl &url)
Sets URL.
Definition: arrayitem.h:297
void adjustCols()
Limits the column indices.
Definition: arrayitem.h:117
static void exponent(double a, int &iExp, double &f)
Calculates normalization factor.
virtual int type() const
Returns specific QGraphicsItem type number.
Definition: arrayitem.h:307
void setCount(int n)
Sets number of data points.
Definition: arrayitem.h:247
DecimalCharacter
Decimal character.
Definition: arrayitem.h:43
void setColX(int colX)
Sets x column index.
Definition: arrayitem.h:237
void setNumCols(int nCols)
Sets number of columns.
Definition: arrayitem.h:275
int colErr() const
Returns y error column index.
Definition: arrayitem.h:121
int colY() const
Returns y column index.
Definition: arrayitem.h:125
Decimal comma.
Definition: arrayitem.h:45
int rowStart() const
Returns start row index.
Definition: arrayitem.h:227
int numRows() const
Returns number of rows.
Definition: arrayitem.h:172
int count() const
Returns number of data points to be plotted.
Definition: arrayitem.h:135
void setColY(int colY)
Sets y column index.
Definition: arrayitem.h:242
void setErrorBars(bool errorBars)
Sets error bars plotting.
Definition: arrayitem.h:265
virtual QRectF boundingRect() const =0
double ** data() const
Returns pointer to internal array.
Definition: arrayitem.h:140
const QUrl & url() const
Returns URL of data file.
Definition: arrayitem.h:309
virtual QPainterPath shape() const
DecimalCharacter decimalCharacter() const
Returns decimal symbol of floating point numbers.
Definition: arrayitem.h:142
void writePlo(KConfigGroup *plo, bool visible) const
Writes into plot file.
Decimal point.
Definition: arrayitem.h:44
Scaled item class.
Definition: scaleditem.h:24
bool errorBars() const
Returns true for plotting error bars.
Definition: arrayitem.h:145
void setInternal(bool internal)
Sets storage mode.
Definition: arrayitem.h:270
int numCols() const
Returns number of columns.
Definition: arrayitem.h:170
Array item class.
Definition: arrayitem.h:36
void setRowStart(int rowStart)
Sets start row index.
Definition: arrayitem.h:292