OpendTect  6.3
uiaxishandler.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Bert
8  Date: Mar 2008
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "uitoolsmod.h"
14 #include "draw.h"
15 #include "bufstringset.h"
16 #include "namedobj.h"
17 #include "uigeom.h"
18 #include "uistring.h"
19 #include "fontdata.h"
20 
21 class uiGraphicsScene;
22 class uiLineItem;
23 class uiTextItem;
24 class uiAHPlotAnnotSet;
25 template <class T> class LineParameters;
26 
51 {
52 public:
53 
54  struct Setup
55  {
56  Setup( uiRect::Side s, int w=0, int h=0 )
57  : side_(s)
58  , noaxisline_(false)
59  , noaxisannot_(false)
60  , nogridline_(false)
61  , showauxannot_(false)
62  , auxlinestyle_(OD::LineStyle(OD::LineStyle::Dot))
63  , annotinside_(false)
64  , annotinint_(false)
65  , fixedborder_(false)
66  , ticsz_(2)
67  , width_(w)
68  , height_(h)
69  , maxnrchars_(0)
70  , specialvalue_(0.0f)
71  , islog_(false)
72  , zval_(4)
73  , nmcolor_(Color::NoColor())
74  , fontdata_(FontData(10))
75  {}
76 
78  mDefSetupMemb(int,width)
79  mDefSetupMemb(int,height)
80  mDefSetupMemb(bool,islog)
81  mDefSetupMemb(bool,noaxisline)
82  mDefSetupMemb(bool,noaxisannot)
83  mDefSetupMemb(bool,nogridline)
84  mDefSetupMemb(bool,annotinside)
85  mDefSetupMemb(bool,annotinint)
86  mDefSetupMemb(bool,fixedborder)
87  mDefSetupMemb(bool,showauxannot)
88  mDefSetupMemb(int,ticsz)
90  mDefSetupMemb(OD::LineStyle,style)
91  mDefSetupMemb(OD::LineStyle,gridlinestyle)
92  mDefSetupMemb(OD::LineStyle,auxlinestyle)
93  mDefSetupMemb(OD::LineStyle,auxhllinestyle)
94  mDefSetupMemb(uiString,caption)
95  mDefSetupMemb(int,maxnrchars)
96  mDefSetupMemb(float,specialvalue)
97  mDefSetupMemb(int,zval)
98  mDefSetupMemb(Color,nmcolor)
99  mDefSetupMemb(FontData,fontdata)
100 
101  Setup& noannot( bool yn )
102  { noaxisline_ = noaxisannot_ = nogridline_ = yn;
103  return *this; }
104 
105  void setShowSpecialValue( bool yn, float newval=0.0f )
106  { specialvalue_ = yn ? newval : mUdf(float); }
107  bool showSpecialValue() const
108  { return !mIsUdf(specialvalue_); }
109  };
110 
112  ~uiAxisHandler();
113 
114  void setCaption(const uiString&);
115  uiString getCaption() const { return setup_.caption_; }
116  void setBorder(const uiBorder&);
117  void setIsLog(bool yn);
118  void setBegin( const uiAxisHandler* ah )
119  { beghndlr_ = ah; newDevSize();}
120  void setEnd( const uiAxisHandler* ah )
121  { endhndlr_ = ah; newDevSize();}
122 
123  void setRange(const StepInterval<float>&,float* axstart=0);
124  void setBounds(Interval<float>);
125 
126  float getVal(int pix) const;
127  float getRelPos(float absval) const;
128  int getPix(float absval) const;
129  int getPix(double abvsval) const;
130  int getPix(int) const;
131  int getRelPosPix(float relpos) const;
133  { auxannots_ = pos; }
134 
135  const Setup& setup() const { return setup_; }
136  Setup& setup() { return setup_; }
137  StepInterval<float> range() const { return datarg_; }
138  float annotStart() const { return annotstart_; }
139  bool isHor() const { return uiRect::isHor(setup_.side_); }
140  int pixToEdge(bool withborder=true) const;
141  int pixBefore() const;
142  int pixAfter() const;
143  Interval<int> pixRange() const;
144 
146  void newDevSize();
147  void updateDevSize();
148  void setNewDevSize(int,int);
149  void updateScene();
150 
151  uiLineItem* getTickLine(int pix);
152  uiLineItem* getGridLine(int pix);
153  int getNrAnnotCharsForDisp() const;
154  void setVisible(bool);
155  void annotAtEnd(const uiString&);
156 
157 protected:
158 
163 
165  bool islog_;
167  float annotstart_;
169  int ticsz_;
170  int height_;
171  int width_;
175 
177  uiAHPlotAnnotSet& annots_;
179  float endpos_;
180  int devsz_;
181  int axsz_;
182  bool rgisrev_;
184  float rgwidth_;
185  float epsilon_;
187  int nrsteps_;
188 
189  int ticSz() const
190  { return setup_.noaxisannot_ ? 0 : ticsz_; }
191  int tickEndPix(bool farend) const;
192  void updateAxisLine();
193  bool reCalcAnnotation();
194  void updateName();
195 
196  friend class uiAHPlotAnnotSet;
197 
198 };
199 
201 mGlobal(uiTools) void setLine(uiLineItem&,const LineParameters<float>&,
202  const uiAxisHandler& xah,const uiAxisHandler& yah,
203  const Interval<float>* xvalrg = 0);
#define mExpClass(module)
Definition: commondefs.h:157
#define mIsUdf(val)
Use mIsUdf to check for undefinedness of simple types.
Definition: undefval.h:285
int ticsz_
Definition: uiaxishandler.h:169
float annotstart_
Definition: uiaxishandler.h:167
StepInterval< float > datarg_
Definition: uiaxishandler.h:166
Steepness and intercept.
Definition: linear.h:25
const uiAxisHandler * beghndlr_
Definition: uiaxishandler.h:173
#define mGlobal(module)
Definition: commondefs.h:160
int ticSz() const
Definition: uiaxishandler.h:189
StepInterval< float > range() const
Definition: uiaxishandler.h:137
uiTextItem * nameitm_
Definition: uiaxishandler.h:160
Handles an axis on a plot.
Definition: uiaxishandler.h:50
int axsz_
Definition: uiaxishandler.h:181
bool showSpecialValue() const
Definition: uiaxishandler.h:107
Definition: uistring.h:88
Data needed to make an actual font.
Definition: fontdata.h:18
float rgwidth_
Definition: uiaxishandler.h:184
FixedString LineStyle()
Definition: keystrs.h:80
void setLine(uiLineItem &, const LineParameters< float > &, const uiAxisHandler &xah, const uiAxisHandler &yah, const Interval< float > *xvalrg=0)
draws line not outside box defined by X and Y value ranges
void setEnd(const uiAxisHandler *ah)
Definition: uiaxishandler.h:120
float epsilon_
Definition: uiaxishandler.h:185
Setup & setup()
Definition: uiaxishandler.h:136
Setup setup_
Definition: uiaxishandler.h:164
bool isHor() const
Definition: uiaxishandler.h:139
int reqnrchars_
Definition: uiaxishandler.h:172
int height_
Definition: uiaxishandler.h:170
uiString getCaption() const
Definition: uiaxishandler.h:115
StepInterval< float > annotrg_
Definition: uiaxishandler.h:186
Setup(uiRect::Side s, int w=0, int h=0)
Definition: uiaxishandler.h:56
int nrsteps_
Definition: uiaxishandler.h:187
uiAHPlotAnnotSet & annots_
Definition: uiaxishandler.h:177
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:270
float endpos_
Definition: uiaxishandler.h:179
void setBegin(const uiAxisHandler *ah)
Definition: uiaxishandler.h:118
#define mDefSetupMemb(typ, memb)
Definition: commondefs.h:129
int pxsizeinotherdir_
Definition: uiaxishandler.h:176
uiLineItem * axislineitm_
Definition: uiaxishandler.h:162
const uiAxisHandler * endhndlr_
Definition: uiaxishandler.h:174
Definition: uigeom.h:76
int devsz_
Definition: uiaxishandler.h:180
const Setup & setup() const
Definition: uiaxishandler.h:135
int width_
Definition: uiaxishandler.h:171
void setAuxAnnot(const TypeSet< OD::PlotAnnotation > &pos)
Definition: uiaxishandler.h:132
uiTextItem * endannotitm_
Definition: uiaxishandler.h:161
uiGraphicsScene * scene_
Definition: uiaxishandler.h:159
float annotStart() const
Definition: uiaxishandler.h:138
OpendTect.
Definition: commontypes.h:25
uiBorder border_
Definition: uiaxishandler.h:168
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
Definition: uigraphicsitemimpl.h:277
bool islog_
Definition: uiaxishandler.h:165
Definition: uiaxishandler.h:54
bool ynmtxtvertical_
Definition: uiaxishandler.h:183
void setShowSpecialValue(bool yn, float newval=0.0f)
Definition: uiaxishandler.h:105
Side
Definition: uigeom.h:44
TypeSet< OD::PlotAnnotation > auxannots_
Definition: uiaxishandler.h:178
Definition: uigraphicsitemimpl.h:109
bool rgisrev_
Definition: uiaxishandler.h:182
Definition: uigraphicsscene.h:35

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017