QtiPlot  0.9.8.2
ScaleEngine.h
Go to the documentation of this file.
1 /***************************************************************************
2  File : ScaleEngine.h
3  Project : QtiPlot
4  --------------------------------------------------------------------
5  Copyright : (C) 2007 by Ion Vasilief
6  Email (use @ for *) : ion_vasilief*yahoo.fr
7  Description : Extensions to QwtScaleEngine and QwtScaleTransformation
8 
9  ***************************************************************************/
10 
11 /***************************************************************************
12  * *
13  * This program is free software; you can redistribute it and/or modify *
14  * it under the terms of the GNU General Public License as published by *
15  * the Free Software Foundation; either version 2 of the License, or *
16  * (at your option) any later version. *
17  * *
18  * This program is distributed in the hope that it will be useful, *
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
21  * GNU General Public License for more details. *
22  * *
23  * You should have received a copy of the GNU General Public License *
24  * along with this program; if not, write to the Free Software *
25  * Foundation, Inc., 51 Franklin Street, Fifth Floor, *
26  * Boston, MA 02110-1301 USA *
27  * *
28  ***************************************************************************/
29 #ifndef SCALE_ENGINE_H
30 #define SCALE_ENGINE_H
31 
32 #include <qwt_scale_engine.h>
33 #include <qwt_scale_map.h>
34 #include <float.h>
35 
36 class ScaleEngine;
37 
38 class ScaleTransformation: public QwtScaleTransformation
39 {
40 public:
42 
43  ScaleTransformation(const ScaleEngine *engine):QwtScaleTransformation(Other), d_engine(engine){};
44  virtual double xForm(double x, double, double, double p1, double p2) const;
45  virtual double invXForm(double x, double s1, double s2, double p1, double p2) const;
46  QwtScaleTransformation* copy() const;
47 
48 protected:
49  QwtScaleTransformation* newScaleTransformation() const;
52 };
53 
54 class ScaleEngine: public QwtScaleEngine
55 {
56 public:
58  double left_break = -DBL_MAX, double right_break = DBL_MAX);
59  QwtScaleTransformation* transformation() const;
60  virtual QwtScaleDiv divideScale(double x1, double x2, int maxMajSteps,
61  int maxMinSteps, double stepSize = 0.0) const;
62  virtual void autoScale (int maxNumSteps, double &x1, double &x2, double &stepSize) const;
63 
64  double axisBreakLeft() const;
65  double axisBreakRight() const;
66  void setBreakRegion(double from, double to){d_break_left = from; d_break_right = to;};
67 
68  int breakWidth() const;
69  void setBreakWidth(int width){d_break_width = width;};
70 
71  int breakPosition() const;
72  void setBreakPosition(int pos){d_break_pos = pos;};
73 
74  double stepBeforeBreak() const;
75  void setStepBeforeBreak(double step){d_step_before = step;};
76 
77  double stepAfterBreak() const;
78  void setStepAfterBreak(double step){d_step_after = step;};
79 
80  int minTicksBeforeBreak() const;
81  void setMinTicksBeforeBreak(int ticks){d_minor_ticks_before = ticks;};
82 
83  int minTicksAfterBreak() const;
84  void setMinTicksAfterBreak(int ticks){d_minor_ticks_after = ticks;};
85 
86  bool log10ScaleAfterBreak() const;
88 
91 
92  bool hasBreak() const;
93  void clone(const ScaleEngine *engine);
94 
95  bool hasBreakDecoration() const;
96  void drawBreakDecoration(bool draw){d_break_decoration = draw;};
97 
98 private:
99 
100  QwtScaleEngine *newScaleEngine() const;
101 
116 };
117 
118 #endif
int minTicksBeforeBreak() const
Definition: ScaleEngine.cpp:278
const ScaleEngine * d_engine
The scale engine that generates the transformation.
Definition: ScaleEngine.h:51
double d_step_before
Scale increment before and after break.
Definition: ScaleEngine.h:107
int minTicksAfterBreak() const
Definition: ScaleEngine.cpp:283
void drawBreakDecoration(bool draw)
Definition: ScaleEngine.h:96
bool log10ScaleAfterBreak() const
Definition: ScaleEngine.cpp:288
ScaleTransformation::Type type() const
Definition: ScaleEngine.cpp:273
void setBreakRegion(double from, double to)
Definition: ScaleEngine.h:66
bool d_break_decoration
If true draw the break decoration.
Definition: ScaleEngine.h:115
void clone(const ScaleEngine *engine)
Definition: ScaleEngine.cpp:298
QwtScaleTransformation * copy() const
Definition: ScaleEngine.cpp:185
int d_break_pos
Position of axis break (% of axis length)
Definition: ScaleEngine.h:105
Definition: ScaleEngine.h:41
Definition: ScaleEngine.h:41
ScaleEngine(ScaleTransformation::Type type=ScaleTransformation::Linear, double left_break=-DBL_MAX, double right_break=DBL_MAX)
Definition: ScaleEngine.cpp:224
double axisBreakLeft() const
Definition: ScaleEngine.cpp:243
double d_break_left
Definition: ScaleEngine.h:103
QwtScaleEngine * newScaleEngine() const
Definition: ScaleEngine.cpp:407
virtual void autoScale(int maxNumSteps, double &x1, double &x2, double &stepSize) const
Definition: ScaleEngine.cpp:375
QwtScaleTransformation * newScaleTransformation() const
Definition: ScaleEngine.cpp:190
int breakPosition() const
Definition: ScaleEngine.cpp:258
bool hasBreak() const
Definition: ScaleEngine.cpp:238
bool d_log10_scale_after
Log10 scale after break.
Definition: ScaleEngine.h:111
void setStepAfterBreak(double step)
Definition: ScaleEngine.h:78
virtual double invXForm(double x, double s1, double s2, double p1, double p2) const
Definition: ScaleEngine.cpp:42
void setBreakWidth(int width)
Definition: ScaleEngine.h:69
int d_minor_ticks_before
Minor ticks before and after break.
Definition: ScaleEngine.h:109
int d_break_width
Width of the axis break in pixels.
Definition: ScaleEngine.h:113
Definition: ScaleEngine.h:41
Definition: ScaleEngine.h:41
Definition: ScaleEngine.h:41
ScaleTransformation::Type d_type
Definition: ScaleEngine.h:102
ScaleTransformation(const ScaleEngine *engine)
Definition: ScaleEngine.h:43
void setBreakPosition(int pos)
Definition: ScaleEngine.h:72
double d_step_after
Definition: ScaleEngine.h:107
QwtScaleTransformation * transformation() const
Definition: ScaleEngine.cpp:37
double stepAfterBreak() const
Definition: ScaleEngine.cpp:268
double stepBeforeBreak() const
Definition: ScaleEngine.cpp:263
void setStepBeforeBreak(double step)
Definition: ScaleEngine.h:75
Definition: ScaleEngine.h:41
bool hasBreakDecoration() const
Definition: ScaleEngine.cpp:293
virtual QwtScaleDiv divideScale(double x1, double x2, int maxMajSteps, int maxMinSteps, double stepSize=0.0) const
Definition: ScaleEngine.cpp:315
Definition: ScaleEngine.h:38
void setType(ScaleTransformation::Type type)
Definition: ScaleEngine.h:90
void setMinTicksBeforeBreak(int ticks)
Definition: ScaleEngine.h:81
void setLog10ScaleAfterBreak(bool on)
Definition: ScaleEngine.h:87
int d_minor_ticks_after
Definition: ScaleEngine.h:109
Definition: ScaleEngine.h:54
int breakWidth() const
Definition: ScaleEngine.cpp:253
double d_break_right
Definition: ScaleEngine.h:103
Type
Definition: ScaleEngine.h:41
void setMinTicksAfterBreak(int ticks)
Definition: ScaleEngine.h:84
Definition: ScaleEngine.h:41
virtual double xForm(double x, double, double, double p1, double p2) const
Definition: ScaleEngine.cpp:104
double axisBreakRight() const
Definition: ScaleEngine.cpp:248