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
28class QIODevice;
29class QTextStream;
30
36class Q_DECL_EXPORT ArrayItem : public ScaledItem
37{
38public:
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);
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
318protected:
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.
double ** data() const
Returns pointer to internal array.
Definition: arrayitem.h:140
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
bool internal() const
Returns true for internal stored array data.
Definition: arrayitem.h:160
DecimalCharacter decimalCharacter() const
Returns decimal symbol of floating point numbers.
Definition: arrayitem.h:142
void setDashOffset()
Sets offset for dashed lines.
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.
static double ** copyArray(double **data, int nCols, int nRows)
Copies array storage.
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
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
const QUrl & url() const
Returns URL of data file.
Definition: arrayitem.h:309
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