26#include <QGraphicsRectItem>
46 Type = UserType + Frame
85 FrameItem(
double x0 = 4,
double y0 = 3,
double width = 15,
86 double height = 10,
unsigned colorFrame = 0,
87 unsigned colorGrid = 0,
bool logX =
false,
bool logY =
false,
88 GridMode gridMode = AxesWithLabels,
double xMax = 15,
89 double yMax = 10,
const QString& textX = QString(),
90 const QString& textY = QString(),
91 const QString& header = QString(),
double relSize = 1,
92 int numDigX = -1,
int numDigY = -1,
int minTicX = 5,
93 int minTicY = 2,
int expX = 0,
int expY = 0,
double xMin = 0,
94 double yMin = 0,
double xTic = 5,
double yTic = 2,
95 bool collapsed =
false,
bool visible =
true,
double xOffset = 0,
96 double yOffset = 0,
bool xBottom =
true,
bool xTop =
false,
97 bool yLeft =
true,
bool yRight =
false);
114 FrameItem(
const KConfigGroup* plo,
double x0 = 4,
double y0 = 3,
115 double width = 15,
double height = 10,
unsigned colorFrame = 0,
116 unsigned colorGrid = 0,
GridMode gridMode = AxesWithLabels);
133 static void autoScale(
double& xMin,
double& xMax,
double& tick,
int& minTic,
134 int& numDig,
double xmi,
double xma,
double f,
145 void autoScale(
double xmi,
double xma,
double fx,
double ymi,
double yma,
163 double& fx,
double& fy);
169 inline unsigned colorGrid()
const {
return m_colorGrid; };
171 inline int expX()
const {
return m_expX; };
173 inline int expY()
const {
return m_expY; };
177 inline QString
header()
const {
return m_header; };
179 inline double height()
const {
return m_height; };
183 inline bool logX()
const {
return m_logX; };
185 inline bool logY()
const {
return m_logY; };
205 inline int minTicX()
const {
return m_minTicX; };
207 inline int minTicY()
const {
return m_minTicY; };
209 inline double normX()
const {
return m_normX; };
211 inline double normY()
const {
return m_normY; };
213 inline int numDigX()
const {
return m_numDigX; };
215 inline int numDigY()
const {
return m_numDigY; };
217 virtual void paint(QPainter* painter,
const QStyleOptionGraphicsItem* option,
218 QWidget* widget =
nullptr)
override;
235 inline void setExpX(
int expX) { m_expX = expX; m_normX = pow(10, expX); };
240 inline void setExpY(
int expY) { m_expY = expY; m_normY = pow(10, expY); };
250 inline void setHeight(
double height) { m_height = height; };
255 inline void setLogX(
bool logX) { m_logX = logX; };
260 inline void setLogY(
bool logY) { m_logY = logY; };
265 inline void setMinTicX(
int minTicX) { m_minTicX = minTicX; };
270 inline void setMinTicY(
int minTicY) { m_minTicY = minTicY; };
275 inline void setNumDigX(
int numDigX) { m_numDigX = numDigX; };
280 inline void setNumDigY(
int numDigY) { m_numDigY = numDigY; };
290 inline void setHeader(
const QString& text) { m_header = text; };
295 inline void setTextX(
const QString& text) { m_textX = text; };
300 inline void setTextY(
const QString& text) { m_textY = text; };
305 inline void setWidth(
double width) { m_width = width; };
310 inline void setX0(
double x0) { m_x0 = x0; };
315 inline void setXBottom(
bool xBottom) { m_xBottom = xBottom; };
320 inline void setXMax(
double xMax) { m_xMax = xMax; };
325 inline void setXMin(
double xMin) { m_xMin = xMin; };
330 inline void setXOffset(
double xOffset) { m_xOffset = xOffset; };
335 inline void setXTic(
double xTic) { m_xTic = xTic; };
340 inline void setXTop(
bool xTop) { m_xTop = xTop; };
345 inline void setY0(
double y0) { m_y0 = y0; };
350 inline void setYLeft(
bool yLeft) { m_yLeft = yLeft; };
355 inline void setYMax(
double yMax) { m_yMax = yMax; };
360 inline void setYMin(
double yMin) { m_yMin = yMin; };
365 inline void setYOffset(
double yOffset) { m_yOffset = yOffset; };
370 inline void setYRight(
bool yRight) { m_yRight = yRight; };
375 inline void setYTic(
double yTic) { m_yTic = yTic; };
379 inline QString
textX()
const {
return m_textX; };
381 inline QString
textY()
const {
return m_textY; };
383 virtual int type()
const override {
return Type; };
399 static inline bool valid(
double v,
bool log =
false)
400 {
return (v == v) && (fabs(v) <= 1e300) && ((!log) || (v > 0)); };
407 bool valid(
double x,
double y)
const;
409 inline double width()
const {
return m_width; };
416 inline double x0()
const {
return m_x0; };
418 inline bool xBottom()
const {
return m_xBottom; };
420 inline double xMax()
const {
return m_xMax; };
422 inline double xMin()
const {
return m_xMin; };
424 inline double xOffset()
const {
return m_xOffset; };
426 inline double xTic()
const {
return m_xTic; };
428 inline bool xTop()
const {
return m_xTop; };
429 inline double y0()
const {
return m_y0; };
431 inline bool yLeft()
const {
return m_yLeft; };
433 inline bool yRight()
const {
return m_yRight; };
435 inline double yMax()
const {
return m_yMax; };
437 inline double yMin()
const {
return m_yMin; };
439 inline double yOffset()
const {
return m_yOffset; };
441 inline double yTic()
const {
return m_yTic; };
453 void drawText(QPainter* painter,
const QString& text,
double x,
double y,
461 double incLog(
double& x,
double f)
const;
472 int number(
double v,
int numDig, QString& label)
const;
486 double tick(
double tic,
bool log)
const;
487 bool m_logX, m_logY, m_xBottom, m_xTop, m_yLeft, m_yRight, m_collapsed;
488 int m_numDigX, m_numDigY, m_minTicX, m_minTicY, m_expX, m_expY;
490 unsigned m_colorFrame, m_colorGrid;
491 double m_x0, m_y0, m_width, m_height, m_xMin, m_xMax, m_yMin, m_yMax, m_xTic,
492 m_yTic, m_xOffset, m_yOffset, m_normX, m_normY, xminl, xmaxl, yminl, ymaxl;
493 QString m_textX, m_textY, m_header;
494 mutable QRectF bRect;
496 QTransform md, m_inv, m_matrix;
Frame item class.
Definition frameitem.h:34
void setYMax(double yMax)
Sets upper y data limit.
Definition frameitem.h:355
void setYMin(double yMin)
Sets lower y data limit.
Definition frameitem.h:360
double incLog(double &x, double f) const
Increment logarithm for next major axis tick.
virtual int type() const override
Returns specific QGraphicsItem type number.
Definition frameitem.h:383
bool valid(double x, double y) const
Checks coordinates for validity.
QString textY() const
Returns y axis text.
Definition frameitem.h:381
void setXOffset(double xOffset)
Sets x offset.
Definition frameitem.h:330
void updatePos(QPointF p)
Sets position.
virtual ~FrameItem()
Destructor.
void autoScale(double xmi, double xma, double fx, double ymi, double yma, double fy)
Calculates and sets the scaling parameters.
QPointF steps() const
Returns user units steps for one pixel steps.
double normX() const
Returns normalization factor for x values.
Definition frameitem.h:209
int number(double v, int numDig, QString &label) const
Prepares number label.
void setWidth(double width)
Sets width.
Definition frameitem.h:305
double yMax() const
Returns y value of upper data window margin in user units.
Definition frameitem.h:435
bool collapsed() const
Returns collapse state for list view.
Definition frameitem.h:181
int minTicX() const
Returns number of intervals between major tics of x axis.
Definition frameitem.h:205
void setHeader(const QString &text)
Sets heading text.
Definition frameitem.h:290
int numDigY() const
Returns number of digits for y axis.
Definition frameitem.h:215
void setXBottom(bool xBottom)
Sets bottom side label mode.
Definition frameitem.h:315
virtual QRectF boundingRect() const override
Calculates bounding rectangle.
int expY() const
Returns logarithm of normalization factor for y axis.
Definition frameitem.h:173
void setColorFrame(unsigned color)
Sets color for frame and labels.
Definition frameitem.h:225
double width() const
Returns width in cm.
Definition frameitem.h:409
bool calcAutoScale(bool autoNorm, const QList< QGraphicsItem * > &items, double &fx, double &fy)
Calculates scaling parameters for a frame item and all its child items.
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
Updates position.
void setExpY(int expY)
Sets exponent of y normalization factor.
Definition frameitem.h:240
void setYTic(double yTic)
Sets y tick distance.
Definition frameitem.h:375
GridMode
Grid mode.
Definition frameitem.h:37
@ Axes
Axes with tics and without labels.
Definition frameitem.h:39
@ AxesWithLabels
Axes with tics and labels.
Definition frameitem.h:40
@ FrameOnly
Only rectangular frame.
Definition frameitem.h:38
@ Grid
Grid without labels.
Definition frameitem.h:41
QString textX() const
Returns x axis text.
Definition frameitem.h:379
FrameItem(double x0=4, double y0=3, double width=15, double height=10, unsigned colorFrame=0, unsigned colorGrid=0, bool logX=false, bool logY=false, GridMode gridMode=AxesWithLabels, double xMax=15, double yMax=10, const QString &textX=QString(), const QString &textY=QString(), const QString &header=QString(), double relSize=1, int numDigX=-1, int numDigY=-1, int minTicX=5, int minTicY=2, int expX=0, int expY=0, double xMin=0, double yMin=0, double xTic=5, double yTic=2, bool collapsed=false, bool visible=true, double xOffset=0, double yOffset=0, bool xBottom=true, bool xTop=false, bool yLeft=true, bool yRight=false)
Constructor.
void setYOffset(double yOffset)
Sets y offset.
Definition frameitem.h:365
void setXMin(double xMin)
Sets lower x data limit.
Definition frameitem.h:325
double normY() const
Returns normalization factor for y values.
Definition frameitem.h:211
double height() const
Returns height in cm.
Definition frameitem.h:179
void setTextY(const QString &text)
Sets y axis text.
Definition frameitem.h:300
void setNumDigY(int numDigY)
Sets number of digits for y axis.
Definition frameitem.h:280
int expX() const
Returns logarithm of normalization factor for x axis.
Definition frameitem.h:171
unsigned colorGrid() const
Returns color for grids and tics.
Definition frameitem.h:169
bool xTop() const
Returns true for x axis labels on top side.
Definition frameitem.h:428
void setXTop(bool xTop)
Sets top side label mode.
Definition frameitem.h:340
QString header() const
Returns heading text.
Definition frameitem.h:177
double yOffset() const
Returns offset for first major y tick.
Definition frameitem.h:439
void toggleCollapsed()
Toggles collapse state.
Definition frameitem.h:385
double xTic() const
Returns distance between major tics of x axis.
Definition frameitem.h:426
FrameItem(const FrameItem &a)
Copy constructor.
void setXTic(double xTic)
Sets x tick distance.
Definition frameitem.h:335
void drawText(QPainter *painter, const QString &text, double x, double y, TextItem::Alignment alignment, double dir=0) const
Plots text.
QPointF mapToUser(const QPointF &p) const
Maps from pixel to user coordinates.
void setYRight(bool yRight)
Sets right side label mode.
Definition frameitem.h:370
int numDigX() const
Returns number of digits for x axis.
Definition frameitem.h:213
double xMin() const
Returns x value of left data window margin in user units.
Definition frameitem.h:422
double x0() const
Returns left page margin in cm.
Definition frameitem.h:416
void autoScale(bool autoNorm=true)
Calculates and sets the scaling parameters.
bool yRight() const
Returns true for y axis labels on right side.
Definition frameitem.h:433
static void autoScale(double &xMin, double &xMax, double &tick, int &minTic, int &numDig, double xmi, double xma, double f, double c, bool log)
Calculates scaling parameters.
void update()
Applies changes and forces redrawing.
void setXMax(double xMax)
Sets upper x data limit.
Definition frameitem.h:320
void setProperties()
Sets properties according to transformation matrix.
QRectF mapToUser(const QRectF &rect) const
Maps from pixel to user coordinates.
bool logY() const
Returns true for logarithmic y axis.
Definition frameitem.h:185
void setHeight(double height)
Sets height.
Definition frameitem.h:250
void setTextX(const QString &text)
Sets x axis text.
Definition frameitem.h:295
double yTic() const
Returns distance between major tics of y axis.
Definition frameitem.h:441
double tick(double tic, bool log) const
Calculates actual distance between major tics.
void paintCond(QPainter *painter) const
Paints or calculates bounding area.
static bool valid(double v, bool log=false)
Checks a double value for validity.
Definition frameitem.h:399
void setLogY(bool logY)
Sets logarithmic mode of y axis.
Definition frameitem.h:260
QPointF mapFromUser(const QPointF &p) const
Maps from user to pixel coordinates.
unsigned colorFrame() const
Returns color for frame and labels.
Definition frameitem.h:167
double yMin() const
Returns y value of lower data window margin in user units.
Definition frameitem.h:437
void writePlo(KConfigGroup *plo) const
Writes into plot file.
void setMinTicX(int minTicX)
Sets number of intervals between major tics of x axis.
Definition frameitem.h:265
QPointF rectPos() const
Returns position in cm units.
bool yLeft() const
Returns true for y axis labels on left side.
Definition frameitem.h:431
void setYLeft(bool yLeft)
Sets left side label mode.
Definition frameitem.h:350
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=nullptr) override
Paints item.
double xOffset() const
Returns offset for first major x tick.
Definition frameitem.h:424
int minTicY() const
Returns number of intervals between major tics of y axis.
Definition frameitem.h:207
FrameItem(const KConfigGroup *plo, double x0=4, double y0=3, double width=15, double height=10, unsigned colorFrame=0, unsigned colorGrid=0, GridMode gridMode=AxesWithLabels)
Constructor.
bool xBottom() const
Returns true for x axis labels on bottom side.
Definition frameitem.h:418
GridMode gridMode() const
Returns grid mode.
Definition frameitem.h:175
void setProperties(const QTransform &m)
Sets properties according to transformation matrix.
void setY0(double y0)
Sets bottom page margin.
Definition frameitem.h:345
void setGridMode(GridMode gridMode)
Sets grid mode.
Definition frameitem.h:245
bool logX() const
Returns true for logarithmic x axis.
Definition frameitem.h:183
void setColorGrid(unsigned color)
Sets color for grids and tics.
Definition frameitem.h:230
QRectF clipRect() const
Returns clipping rectangle.
Definition frameitem.h:165
void setMinTicY(int minTicY)
Sets number of intervals between major tics of y axis.
Definition frameitem.h:270
void setLogX(bool logX)
Sets logarithmic mode of x axis.
Definition frameitem.h:255
void setX0(double x0)
Sets left page margin.
Definition frameitem.h:310
double xMax() const
Returns x value of right data window margin in user units.
Definition frameitem.h:420
void setNumDigX(int numDigX)
Sets number of digits for x axis.
Definition frameitem.h:275
void setExpX(int expX)
Sets exponent of x normalization factor.
Definition frameitem.h:235
Kpl item class.
Definition kplitem.h:42
Alignment
Text alignment.
Definition textitem.h:35