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  };
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; };
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
Array item class.
Definition: arrayitem.h:37
void setColErr(int colErr)
Sets error column index.
Definition: arrayitem.h:232
bool errorBars() const
Returns true for plotting error bars.
Definition: arrayitem.h:145
void setData(double **data)
Sets array pointer.
static void freeArray(double ***data)
Deallocates array storage.
static int readLines(QTextStream &t, int nCols, double ***data, DecimalCharacter decimalChar=Point)
Reads double values from a text stream into an array.
virtual ~ArrayItem()
Destructor.
int colY() const
Returns y column index.
Definition: arrayitem.h:125
void setUrl(const QUrl &url)
Sets URL.
Definition: arrayitem.h:297
void limits(double &xMin, double &xMax, double &yMin, double &yMax) const
Calculates minimum and maximum values.
void setColY(int colY)
Sets y column index.
Definition: arrayitem.h:242
void exponent(int &expX, int &expY, double &fx, double &fy) const
Calculates normalization factors.
void setRowStart(int rowStart)
Sets start row index.
Definition: arrayitem.h:292
ArrayItem(const KConfigGroup *plo, const QUrl &urlPlo, unsigned color=0, int colX=0, int colY=0, int colErr=0, bool errorBars=false, Symbol symbol=OpenCircle, QGraphicsItem *parent=0)
Constructor.
DecimalCharacter
Decimal character.
Definition: arrayitem.h:43
@ Point
Decimal point.
Definition: arrayitem.h:44
@ Comma
Decimal comma.
Definition: arrayitem.h:45
int colErr() const
Returns y error column index.
Definition: arrayitem.h:121
void setErrorBars(bool errorBars)
Sets error bars plotting.
Definition: arrayitem.h:265
static int readFile(QIODevice *device, int &nCols, double ***data, DecimalCharacter decimalChar=Point)
Reads double values from an I/O device into an array.
int numRows() const
Returns number of rows.
Definition: arrayitem.h:172
ArrayItem(const ArrayItem &a)
Copy constructor.
void setColX(int colX)
Sets x column index.
Definition: arrayitem.h:237
DecimalCharacter decimalCharacter() const
Returns decimal symbol of floating point numbers.
Definition: arrayitem.h:142
void setDashOffset()
Sets offset for dashed lines.
static double ** copyArray(double **data, int nCols, int nRows)
Copies array storage.
void setRange(int rowStart, int n)
Sets and limits the start row index and the number of points to be plotted.
int numCols() const
Returns number of columns.
Definition: arrayitem.h:170
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=0)
Paints item.
void adjustCols(int colX, int colY, int colErr)
Sets and limits the column indices.
int count() const
Returns number of data points to be plotted.
Definition: arrayitem.h:135
void setNumRows(int nRows)
Sets number of rows.
Definition: arrayitem.h:280
virtual int readFile()
Reads double values from the URL.
virtual QPainterPath shape() const
Returns the shape of the plot item.
int rowStart() const
Returns start row index.
Definition: arrayitem.h:227
virtual QRectF boundingRect() const
Calculates bounding rectangle.
static int readFile(QString *text, int &nCols, double ***data, DecimalCharacter decimalChar=Point)
Reads double values from a string into an array.
void paintCond(QPainter *painter) const
Paints or calculates bounding area.
static void translate(QString &line, DecimalCharacter decimalChar)
Translates exponent and decimal symbols.
ArrayItem(unsigned color, int colX=0, int colY=0, int colErr=0, bool errorBars=false, Symbol symbol=OpenCircle, DecimalCharacter decimalChar=Point, const QUrl &url=QUrl(), double fx=1, double fy=1, QGraphicsItem *parent=0, int n=0, int rowStart=0, FillStyle fillStyle=NoBrush, double xOffset=0, double yOffset=0, bool visible=true, bool internal=false, double relSize=1)
Constructor.
int readFile(QString *text)
Reads double values from a string.
void setDecimalCharacter(DecimalCharacter decimalChar)
Sets decimal character.
Definition: arrayitem.h:259
void setInternal(bool internal)
Sets storage mode.
Definition: arrayitem.h:270
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
int colX() const
Returns x column index.
Definition: arrayitem.h:123
static int readFile(const QUrl &url, int &nCols, double ***data, DecimalCharacter decimalChar=Point)
Reads double values from a file into an array.
void writePlo(KConfigGroup *plo, const QUrl &urlPlo, bool absolute) const
Writes into plot file.
void adjustCols()
Limits the column indices.
Definition: arrayitem.h:117
ArrayItem()
Constructor.
virtual int type() const
Returns specific QGraphicsItem type number.
Definition: arrayitem.h:307
void setNumCols(int nCols)
Sets number of columns.
Definition: arrayitem.h:275
void setCount(int n)
Sets number of data points.
Definition: arrayitem.h:247
FillStyle
Fill styles.
Definition: kplitem.h:45
Symbol
Symbol types.
Definition: kplitem.h:83
Scaled item class.
Definition: scaleditem.h:25