libkpl  6.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) 2024 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 = nullptr,
84 int n = 0, 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 = nullptr);
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 override;
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 = nullptr) override;
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 override;
305 static void translate(QString& line, DecimalCharacter decimalChar);
307 virtual int type() const override { 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.
virtual QRectF boundingRect() const override
Calculates bounding rectangle.
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
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=nullptr) override
Paints item.
void adjustCols(int colX, int colY, int colErr)
Sets and limits the column indices.
virtual int type() const override
Returns specific QGraphicsItem type number.
Definition arrayitem.h:307
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
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=nullptr)
Constructor.
virtual int readFile()
Reads double values from the URL.
virtual QPainterPath shape() const override
Returns the shape of the plot item.
int rowStart() const
Returns start row index.
Definition arrayitem.h:227
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=nullptr, 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.
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.
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.
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