OpendTect  6.6
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  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "uitoolsmod.h"
15 #include "draw.h"
16 #include "bufstringset.h"
17 #include "namedobj.h"
18 #include "uigeom.h"
19 #include "uistring.h"
20 #include "fontdata.h"
21 
22 class uiGraphicsScene;
23 class uiLineItem;
24 class uiTextItem;
25 class uiAHPlotAnnotSet;
26 template <class T> class LineParameters;
27 
51 {
52 public:
53 
54  struct Setup
55  {
56  Setup( uiRect::Side s, int w=0, int h=0 )
57  : side_(s)
58  , width_(w)
59  , height_(h)
60  , islog_(false)
61  , noaxisline_(false)
62  , noaxisannot_(false)
63  , nogridline_(false)
64  , annotinside_(false)
65  , annotinint_(false)
66  , fixedborder_(false)
67  , showauxannot_(false)
68  , ticsz_(2)
69  , maxnrchars_(0)
70  , specialvalue_(0.0f)
71  , zval_(0)
72  , nmcolor_(Color::NoColor())
73  , fontdata_(FontData(10))
74  {
75  gridlinestyle_.color_ = Color(200,200,200);
76  auxlinestyle_.type_ = OD::LineStyle::Dot;
77  }
78 
80  mDefSetupMemb(int,width)
81  mDefSetupMemb(int,height)
82  mDefSetupMemb(bool,islog)
83  mDefSetupMemb(bool,noaxisline)
84  mDefSetupMemb(bool,noaxisannot)
85  mDefSetupMemb(bool,nogridline)
86  mDefSetupMemb(bool,annotinside)
87  mDefSetupMemb(bool,annotinint)
88  mDefSetupMemb(bool,fixedborder)
89  mDefSetupMemb(bool,showauxannot)
90  mDefSetupMemb(int,ticsz)
92  mDefSetupMemb(OD::LineStyle,style)
93  mDefSetupMemb(OD::LineStyle,gridlinestyle)
94  mDefSetupMemb(OD::LineStyle,auxlinestyle)
95  mDefSetupMemb(OD::LineStyle,auxhllinestyle)
96  mDefSetupMemb(uiString,caption)
97  mDefSetupMemb(int,maxnrchars)
98  mDefSetupMemb(float,specialvalue)
99  mDefSetupMemb(int,zval)
100  mDefSetupMemb(Color,nmcolor)
101  mDefSetupMemb(FontData,fontdata)
102 
103  Setup& noannot( bool yn )
104  { noaxisline_ = noaxisannot_ = nogridline_ = yn;
105  return *this; }
106 
107  void setShowSpecialValue( bool yn, float newval=0.0f )
108  { specialvalue_ = yn ? newval : mUdf(float); }
109  bool showSpecialValue() const
110  { return !mIsUdf(specialvalue_); }
111  };
112 
115 
116  void setCaption(const uiString&);
117  uiString getCaption() const { return setup_.caption_; }
118  void setBorder(const uiBorder&);
119  void setIsLog(bool yn);
120  void setBegin( const uiAxisHandler* ah )
121  { beghndlr_ = ah; newDevSize();}
122  void setEnd( const uiAxisHandler* ah )
123  { endhndlr_ = ah; newDevSize();}
124 
125  void setRange(const StepInterval<float>&,float* axstart=0);
127 
128  float getVal(int pix) const;
129  float getRelPos(float absval) const;
130  int getPix(float absval) const;
131  int getPix(double abvsval) const;
132  int getPix(int) const;
133  int getRelPosPix(float relpos) const;
135  { auxannots_ = pos; }
136 
137  const Setup& setup() const { return setup_; }
138  Setup& setup() { return setup_; }
139  StepInterval<float> range() const { return datarg_; }
140  float annotStart() const { return annotstart_; }
141  bool isHor() const { return uiRect::isHor(setup_.side_); }
142  int pixToEdge(bool withborder=true) const;
143  int pixBefore() const;
144  int pixAfter() const;
146 
148  void newDevSize();
149  void updateDevSize();
150  void setNewDevSize(int,int);
151  void updateScene();
152 
156  void setVisible(bool);
157  void annotAtEnd(const uiString&);
158 
159 protected:
160 
165 
167  bool islog_;
169  float annotstart_;
171  int ticsz_;
172  int height_;
173  int width_;
177 
179  uiAHPlotAnnotSet& annots_;
181  float endpos_;
182  int devsz_;
183  int axsz_;
184  bool rgisrev_;
186  float rgwidth_;
187  float epsilon_;
189  int nrsteps_;
190 
191  int ticSz() const
192  { return setup_.noaxisannot_ ? 0 : ticsz_; }
193  int tickEndPix(bool farend) const;
196  void updateName();
197 
198  friend class uiAHPlotAnnotSet;
199 
200 };
201 
204  const uiAxisHandler* xah,const uiAxisHandler* yah,
205  const Interval<float>* xvalrg = 0);
206 
207 
uiAxisHandler::getPix
int getPix(float absval) const
uiAxisHandler::range
StepInterval< float > range() const
Definition: uiaxishandler.h:139
uiAxisHandler::getRelPosPix
int getRelPosPix(float relpos) const
sKey::Color
FixedString Color()
Definition: keystrs.h:45
uiAxisHandler::pxsizeinotherdir_
int pxsizeinotherdir_
Definition: uiaxishandler.h:178
uistring.h
uiAxisHandler::getCaption
uiString getCaption() const
Definition: uiaxishandler.h:117
uiLineItem
Definition: uigraphicsitemimpl.h:110
uiBorder
Definition: uigeom.h:78
mGlobal
#define mGlobal(module)
Definition: commondefs.h:180
uiAxisHandler::annotStart
float annotStart() const
Definition: uiaxishandler.h:140
uiAxisHandler::nrsteps_
int nrsteps_
Definition: uiaxishandler.h:189
uiRect::Side
Side
Definition: uigeom.h:45
uiAxisHandler::getVal
float getVal(int pix) const
OD::LineStyle::Dot
@ Dot
Definition: draw.h:121
uiAxisHandler::axsz_
int axsz_
Definition: uiaxishandler.h:183
mIsUdf
#define mIsUdf(val)
Use mIsUdf to check for undefinedness of simple types.
Definition: undefval.h:289
uiAxisHandler::annots_
uiAHPlotAnnotSet & annots_
Definition: uiaxishandler.h:179
uiAxisHandler::pixRange
Interval< int > pixRange() const
Call this when appropriate.
OD
OpendTect.
Definition: commontypes.h:28
uiAxisHandler::ynmtxtvertical_
bool ynmtxtvertical_
Definition: uiaxishandler.h:185
uiAxisHandler::setBounds
void setBounds(Interval< float >)
makes annot 'nice'
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
namedobj.h
uiAxisHandler::setup
const Setup & setup() const
Definition: uiaxishandler.h:137
uiAxisHandler::setIsLog
void setIsLog(bool yn)
Setup::mDefSetupMemb
mDefSetupMemb(int, method)
uiAxisHandler::setBegin
void setBegin(const uiAxisHandler *ah)
Definition: uiaxishandler.h:120
uiAxisHandler::~uiAxisHandler
~uiAxisHandler()
uiAxisHandler::auxannots_
TypeSet< PlotAnnotation > auxannots_
Definition: uiaxishandler.h:180
uiAxisHandler
Handles an axis on a plot.
Definition: uiaxishandler.h:51
uiAxisHandler::tickEndPix
int tickEndPix(bool farend) const
uiAxisHandler::pixToEdge
int pixToEdge(bool withborder=true) const
uiAxisHandler::axislineitm_
uiLineItem * axislineitm_
Definition: uiaxishandler.h:164
uiAxisHandler::Setup
Definition: uiaxishandler.h:55
uiAxisHandler::border_
uiBorder border_
Definition: uiaxishandler.h:170
uiAxisHandler::setup
Setup & setup()
Definition: uiaxishandler.h:138
uiAxisHandler::height_
int height_
Definition: uiaxishandler.h:172
uiAxisHandler::ticSz
int ticSz() const
Definition: uiaxishandler.h:191
uiAxisHandler::Setup::showSpecialValue
bool showSpecialValue() const
Definition: uiaxishandler.h:109
setLine
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
StepInterval< float >
uiAxisHandler::pixBefore
int pixBefore() const
uiAxisHandler::setBorder
void setBorder(const uiBorder &)
uiAxisHandler::annotstart_
float annotstart_
Definition: uiaxishandler.h:169
uiAxisHandler::rgisrev_
bool rgisrev_
Definition: uiaxishandler.h:184
uiAxisHandler::uiAxisHandler
uiAxisHandler(uiGraphicsScene *, const Setup &)
uiAxisHandler::updateAxisLine
void updateAxisLine()
uiAxisHandler::newDevSize
void newDevSize()
uiAxisHandler::updateScene
void updateScene()
uiAxisHandler::devsz_
int devsz_
Definition: uiaxishandler.h:182
uiAxisHandler::endhndlr_
const uiAxisHandler * endhndlr_
Definition: uiaxishandler.h:176
LineParameters
Steepness and intercept.
Definition: linear.h:26
uiAxisHandler::endpos_
float endpos_
Definition: uiaxishandler.h:181
uiAxisHandler::Setup::Setup
Setup(uiRect::Side s, int w=0, int h=0)
Definition: uiaxishandler.h:56
uiAxisHandler::isHor
bool isHor() const
Definition: uiaxishandler.h:141
uiAxisHandler::datarg_
StepInterval< float > datarg_
Definition: uiaxishandler.h:168
uiAxisHandler::getNrAnnotCharsForDisp
int getNrAnnotCharsForDisp() const
uiAxisHandler::rgwidth_
float rgwidth_
Definition: uiaxishandler.h:186
uiAxisHandler::getPix
int getPix(int) const
draw.h
uiAxisHandler::setVisible
void setVisible(bool)
uiAxisHandler::getTickLine
uiLineItem * getTickLine(int pix)
uiAxisHandler::setCaption
void setCaption(const uiString &)
uiAxisHandler::setAuxAnnot
void setAuxAnnot(const TypeSet< PlotAnnotation > &pos)
Definition: uiaxishandler.h:134
uiAxisHandler::setNewDevSize
void setNewDevSize(int, int)
resized by yourself
bufstringset.h
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
uiAxisHandler::islog_
bool islog_
Definition: uiaxishandler.h:167
uiAxisHandler::ticsz_
int ticsz_
Definition: uiaxishandler.h:171
uiAxisHandler::getPix
int getPix(double abvsval) const
uiAxisHandler::width_
int width_
Definition: uiaxishandler.h:173
mUdf
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
uiGraphicsScene
Definition: uigraphicsscene.h:39
uiAxisHandler::endannotitm_
uiTextItem * endannotitm_
Definition: uiaxishandler.h:163
uiAxisHandler::beghndlr_
const uiAxisHandler * beghndlr_
Definition: uiaxishandler.h:175
uiAxisHandler::scene_
uiGraphicsScene * scene_
Definition: uiaxishandler.h:161
uiAxisHandler::getRelPos
float getRelPos(float absval) const
sKey::LineStyle
FixedString LineStyle()
Definition: keystrs.h:89
fontdata.h
uigeom.h
uiAxisHandler::updateDevSize
void updateDevSize()
resized from sceme
uiAxisHandler::epsilon_
float epsilon_
Definition: uiaxishandler.h:187
FontData
Data needed to make an actual font.
Definition: fontdata.h:20
uiAxisHandler::updateName
void updateName()
uiAxisHandler::setEnd
void setEnd(const uiAxisHandler *ah)
Definition: uiaxishandler.h:122
uiAxisHandler::annotAtEnd
void annotAtEnd(const uiString &)
uiAxisHandler::setup_
Setup setup_
Definition: uiaxishandler.h:166
uiAxisHandler::pixAfter
int pixAfter() const
Interval< float >
uiAxisHandler::nameitm_
uiTextItem * nameitm_
Definition: uiaxishandler.h:162
uiAxisHandler::reqnrchars_
int reqnrchars_
Definition: uiaxishandler.h:174
Color
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer,...
Definition: color.h:26
uiAxisHandler::reCalcAnnotation
bool reCalcAnnotation()
uiAxisHandler::Setup::mDefSetupMemb
mDefSetupMemb(uiRect::Side, side) mDefSetupMemb(int
uiAxisHandler::getGridLine
uiLineItem * getGridLine(int pix)
uiAxisHandler::Setup::setShowSpecialValue
void setShowSpecialValue(bool yn, float newval=0.0f)
Definition: uiaxishandler.h:107
uiTextItem
Definition: uigraphicsitemimpl.h:276
uiAxisHandler::annotrg_
StepInterval< float > annotrg_
Definition: uiaxishandler.h:188
TypeSet< PlotAnnotation >
uiAxisHandler::setRange
void setRange(const StepInterval< float > &, float *axstart=0)

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