|
libkpl
5.0
A Library for Graphical Presentation of Data Sets and Functions
|
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 =
"",
90 const QString& textY =
"",
const QString& header =
"",
91 double relSize = 1,
int numDigX = -1,
int numDigY = -1,
92 int minTicX = 5,
int minTicY = 2,
int expX = 0,
int expY = 0,
93 double xMin = 0,
double yMin = 0,
double xTic = 5,
double yTic = 2,
94 bool collapsed =
false,
bool visible =
true,
double xOffset = 0,
95 double yOffset = 0,
bool xBottom =
true,
bool xTop =
false,
96 bool yLeft =
true,
bool yRight =
false);
113 FrameItem(
const KConfigGroup* plo,
double x0 = 4,
double y0 = 3,
114 double width = 15,
double height = 10,
unsigned colorFrame = 0,
115 unsigned colorGrid = 0,
GridMode gridMode = AxesWithLabels);
132 static void autoScale(
double& xMin,
double& xMax,
double& tick,
int& minTic,
133 int& numDig,
double xmi,
double xma,
double f,
144 void autoScale(
double xmi,
double xma,
double fx,
double ymi,
double yma,
162 double& fx,
double& fy);
168 inline unsigned colorGrid()
const {
return m_colorGrid; };
170 inline int expX()
const {
return m_expX; };
172 inline int expY()
const {
return m_expY; };
176 inline QString
header()
const {
return m_header; };
178 inline double height()
const {
return m_height; };
182 inline bool logX()
const {
return m_logX; };
184 inline bool logY()
const {
return m_logY; };
204 inline int minTicX()
const {
return m_minTicX; };
206 inline int minTicY()
const {
return m_minTicY; };
208 inline double normX()
const {
return m_normX; };
210 inline double normY()
const {
return m_normY; };
212 inline int numDigX()
const {
return m_numDigX; };
214 inline int numDigY()
const {
return m_numDigY; };
216 virtual void paint(QPainter* painter,
const QStyleOptionGraphicsItem* option,
217 QWidget* widget = 0);
234 inline void setExpX(
int expX) { m_expX = expX; m_normX = pow(10, expX); };
239 inline void setExpY(
int expY) { m_expY = expY; m_normY = pow(10, expY); };
249 inline void setHeight(
double height) { m_height = height; };
254 inline void setLogX(
bool logX) { m_logX = logX; };
259 inline void setLogY(
bool logY) { m_logY = logY; };
264 inline void setMinTicX(
int minTicX) { m_minTicX = minTicX; };
269 inline void setMinTicY(
int minTicY) { m_minTicY = minTicY; };
274 inline void setNumDigX(
int numDigX) { m_numDigX = numDigX; };
279 inline void setNumDigY(
int numDigY) { m_numDigY = numDigY; };
289 inline void setHeader(
const QString& text) { m_header = text; };
294 inline void setTextX(
const QString& text) { m_textX = text; };
299 inline void setTextY(
const QString& text) { m_textY = text; };
304 inline void setWidth(
double width) { m_width = width; };
309 inline void setX0(
double x0) { m_x0 = x0; };
314 inline void setXBottom(
bool xBottom) { m_xBottom = xBottom; };
319 inline void setXMax(
double xMax) { m_xMax = xMax; };
324 inline void setXMin(
double xMin) { m_xMin = xMin; };
329 inline void setXOffset(
double xOffset) { m_xOffset = xOffset; };
334 inline void setXTic(
double xTic) { m_xTic = xTic; };
339 inline void setXTop(
bool xTop) { m_xTop = xTop; };
344 inline void setY0(
double y0) { m_y0 = y0; };
349 inline void setYLeft(
bool yLeft) { m_yLeft = yLeft; };
354 inline void setYMax(
double yMax) { m_yMax = yMax; };
359 inline void setYMin(
double yMin) { m_yMin = yMin; };
364 inline void setYOffset(
double yOffset) { m_yOffset = yOffset; };
369 inline void setYRight(
bool yRight) { m_yRight = yRight; };
374 inline void setYTic(
double yTic) { m_yTic = yTic; };
378 inline QString
textX()
const {
return m_textX; };
380 inline QString
textY()
const {
return m_textY; };
382 virtual int type()
const {
return Type; };
398 static inline bool valid(
double v,
bool log =
false)
399 {
return (v == v) && (fabs(v) <= 1e300) && ((!log) || (v > 0)); };
406 bool valid(
double x,
double y)
const;
408 inline double width()
const {
return m_width; };
415 inline double x0()
const {
return m_x0; };
417 inline bool xBottom()
const {
return m_xBottom; };
419 inline double xMax()
const {
return m_xMax; };
421 inline double xMin()
const {
return m_xMin; };
423 inline double xOffset()
const {
return m_xOffset; };
425 inline double xTic()
const {
return m_xTic; };
427 inline bool xTop()
const {
return m_xTop; };
428 inline double y0()
const {
return m_y0; };
430 inline bool yLeft()
const {
return m_yLeft; };
432 inline bool yRight()
const {
return m_yRight; };
434 inline double yMax()
const {
return m_yMax; };
436 inline double yMin()
const {
return m_yMin; };
438 inline double yOffset()
const {
return m_yOffset; };
440 inline double yTic()
const {
return m_yTic; };
452 void drawText(QPainter* painter,
const QString& text,
double x,
double y,
460 double incLog(
double& x,
double f)
const;
471 int number(
double v,
int numDig, QString& label)
const;
485 double tick(
double tic,
bool log)
const;
486 bool m_logX, m_logY, m_xBottom, m_xTop, m_yLeft, m_yRight, m_collapsed;
487 int m_numDigX, m_numDigY, m_minTicX, m_minTicY, m_expX, m_expY;
489 unsigned m_colorFrame, m_colorGrid;
490 double m_x0, m_y0, m_width, m_height, m_xMin, m_xMax, m_yMin, m_yMax, m_xTic,
491 m_yTic, m_xOffset, m_yOffset, m_normX, m_normY, xminl, xmaxl, yminl, ymaxl;
492 QString m_textX, m_textY, m_header;
493 mutable QRectF bRect;
495 QTransform md, m_inv, m_matrix;
void writePlo(KConfigGroup *plo) const
Writes into plot file.
int numDigY() const
Returns number of digits for y axis.
Definition: frameitem.h:214
void setMinTicX(int minTicX)
Sets number of intervals between major tics of x axis.
Definition: frameitem.h:264
void drawText(QPainter *painter, const QString &text, double x, double y, TextItem::Alignment alignment, double dir=0) const
Plots text.
void setYOffset(double yOffset)
Sets y offset.
Definition: frameitem.h:364
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
Updates position.
QPointF steps() const
Returns user units steps for one pixel steps.
double xOffset() const
Returns offset for first major x tick.
Definition: frameitem.h:423
int minTicX() const
Returns number of intervals between major tics of x axis.
Definition: frameitem.h:204
int numDigX() const
Returns number of digits for x axis.
Definition: frameitem.h:212
@ Axes
Axes with tics and without labels.
Definition: frameitem.h:39
bool valid(double x, double y) const
Checks coordinates for validity.
void setXTic(double xTic)
Sets x tick distance.
Definition: frameitem.h:334
Kpl item class.
Definition: kplitem.h:42
unsigned colorGrid() const
Returns color for grids and tics.
Definition: frameitem.h:168
bool xBottom() const
Returns true for x axis labels on bottom side.
Definition: frameitem.h:417
void autoScale(bool autoNorm=true)
Calculates and sets the scaling parameters.
void setYRight(bool yRight)
Sets right side label mode.
Definition: frameitem.h:369
void setExpY(int expY)
Sets exponent of y normalization factor.
Definition: frameitem.h:239
void paintCond(QPainter *painter) const
Paints or calculates bounding area.
double height() const
Returns height in cm.
Definition: frameitem.h:178
void setXOffset(double xOffset)
Sets x offset.
Definition: frameitem.h:329
bool yRight() const
Returns true for y axis labels on right side.
Definition: frameitem.h:432
double incLog(double &x, double f) const
Increment logarithm for next major axis tick.
bool logX() const
Returns true for logarithmic x axis.
Definition: frameitem.h:182
int expX() const
Returns logarithm of normalization factor for x axis.
Definition: frameitem.h:170
unsigned colorFrame() const
Returns color for frame and labels.
Definition: frameitem.h:166
double tick(double tic, bool log) const
Calculates actual distance between major tics.
double normY() const
Returns normalization factor for y values.
Definition: frameitem.h:210
@ FrameOnly
Only rectangular frame.
Definition: frameitem.h:38
void setProperties(const QTransform &m)
Sets properties according to transformation matrix.
GridMode
Grid mode.
Definition: frameitem.h:37
bool yLeft() const
Returns true for y axis labels on left side.
Definition: frameitem.h:430
void setMinTicY(int minTicY)
Sets number of intervals between major tics of y axis.
Definition: frameitem.h:269
void setTextX(const QString &text)
Sets x axis text.
Definition: frameitem.h:294
bool collapsed() const
Returns collapse state for list view.
Definition: frameitem.h:180
void setXMin(double xMin)
Sets lower x data limit.
Definition: frameitem.h:324
virtual QRectF boundingRect() const
Calculates bounding rectangle.
double normX() const
Returns normalization factor for x values.
Definition: frameitem.h:208
void setColorGrid(unsigned color)
Sets color for grids and tics.
Definition: frameitem.h:229
double xMin() const
Returns x value of left data window margin in user units.
Definition: frameitem.h:421
void setX0(double x0)
Sets left page margin.
Definition: frameitem.h:309
void setWidth(double width)
Sets width.
Definition: frameitem.h:304
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=0)
Paints item.
double yTic() const
Returns distance between major tics of y axis.
Definition: frameitem.h:440
@ Grid
Grid without labels.
Definition: frameitem.h:41
QPointF rectPos() const
Returns position in cm units.
bool xTop() const
Returns true for x axis labels on top side.
Definition: frameitem.h:427
void setNumDigX(int numDigX)
Sets number of digits for x axis.
Definition: frameitem.h:274
void setY0(double y0)
Sets bottom page margin.
Definition: frameitem.h:344
double yOffset() const
Returns offset for first major y tick.
Definition: frameitem.h:438
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="", const QString &textY="", const QString &header="", 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 setXMax(double xMax)
Sets upper x data limit.
Definition: frameitem.h:319
QPointF mapToUser(const QPointF &p) const
Maps from pixel to user coordinates.
QPointF mapFromUser(const QPointF &p) const
Maps from user to pixel coordinates.
void updatePos(QPointF p)
Sets position.
int minTicY() const
Returns number of intervals between major tics of y axis.
Definition: frameitem.h:206
void setXTop(bool xTop)
Sets top side label mode.
Definition: frameitem.h:339
void setYTic(double yTic)
Sets y tick distance.
Definition: frameitem.h:374
void setProperties()
Sets properties according to transformation matrix.
double xTic() const
Returns distance between major tics of x axis.
Definition: frameitem.h:425
void setLogX(bool logX)
Sets logarithmic mode of x axis.
Definition: frameitem.h:254
void setYMin(double yMin)
Sets lower y data limit.
Definition: frameitem.h:359
virtual int type() const
Returns specific QGraphicsItem type number.
Definition: frameitem.h:382
GridMode gridMode() const
Returns grid mode.
Definition: frameitem.h:174
double width() const
Returns width in cm.
Definition: frameitem.h:408
int number(double v, int numDig, QString &label) const
Prepares number label.
double xMax() const
Returns x value of right data window margin in user units.
Definition: frameitem.h:419
void setXBottom(bool xBottom)
Sets bottom side label mode.
Definition: frameitem.h:314
void toggleCollapsed()
Toggles collapse state.
Definition: frameitem.h:384
bool calcAutoScale(bool autoNorm, const QList< QGraphicsItem * > &items, double &fx, double &fy)
Calculates scaling parameters for a frame item and all its child items.
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.
void setLogY(bool logY)
Sets logarithmic mode of y axis.
Definition: frameitem.h:259
int expY() const
Returns logarithm of normalization factor for y axis.
Definition: frameitem.h:172
double yMin() const
Returns y value of lower data window margin in user units.
Definition: frameitem.h:436
void setYLeft(bool yLeft)
Sets left side label mode.
Definition: frameitem.h:349
static bool valid(double v, bool log=false)
Checks a double value for validity.
Definition: frameitem.h:398
double yMax() const
Returns y value of upper data window margin in user units.
Definition: frameitem.h:434
void setGridMode(GridMode gridMode)
Sets grid mode.
Definition: frameitem.h:244
bool logY() const
Returns true for logarithmic y axis.
Definition: frameitem.h:184
virtual ~FrameItem()
Destructor.
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.
QString textX() const
Returns x axis text.
Definition: frameitem.h:378
void setHeight(double height)
Sets height.
Definition: frameitem.h:249
void update()
Applies changes and forces redrawing.
QRectF mapToUser(const QRectF &rect) const
Maps from pixel to user coordinates.
void setColorFrame(unsigned color)
Sets color for frame and labels.
Definition: frameitem.h:224
Alignment
Text alignment.
Definition: textitem.h:33
void setHeader(const QString &text)
Sets heading text.
Definition: frameitem.h:289
QString textY() const
Returns y axis text.
Definition: frameitem.h:380
void autoScale(double xmi, double xma, double fx, double ymi, double yma, double fy)
Calculates and sets the scaling parameters.
Frame item class.
Definition: frameitem.h:34
QRectF clipRect() const
Returns clipping rectangle.
Definition: frameitem.h:164
void setExpX(int expX)
Sets exponent of x normalization factor.
Definition: frameitem.h:234
void setNumDigY(int numDigY)
Sets number of digits for y axis.
Definition: frameitem.h:279
@ AxesWithLabels
Axes with tics and labels.
Definition: frameitem.h:40
void setYMax(double yMax)
Sets upper y data limit.
Definition: frameitem.h:354
void setTextY(const QString &text)
Sets y axis text.
Definition: frameitem.h:299
double x0() const
Returns left page margin in cm.
Definition: frameitem.h:415
QString header() const
Returns heading text.
Definition: frameitem.h:176
FrameItem(const FrameItem &a)
Copy constructor.