OpendTect  6.6
uifunctiondisplay.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: Apr 2008
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "uitoolsmod.h"
15 #include "uigraphicsview.h"
16 #include "draw.h"
17 
18 class uiAxisHandler;
19 class uiGraphicsItem;
21 class uiGraphicsScene;
22 class uiLineItem;
23 class uiPolygonItem;
24 class uiPolyLineItem;
25 class uiRectItem;
26 class uiTextItem;
27 
39 public:
40 
41  struct Setup
42  {
43  Setup()
44  : xrg_(mUdf(float),mUdf(float))
45  , yrg_(mUdf(float),mUdf(float))
46  , y2rg_(mUdf(float),mUdf(float))
47  , bgcol_(Color::White())
48  , ycol_(200,160,140)
49  , y2col_(140,160,200)
50  , ywidth_(2)
51  , y2width_(2)
52  , canvaswidth_(400)
53  , canvasheight_(250)
54  , border_(20,20,20,10)
55  , annotx_(true)
56  , annoty_(true)
57  , annoty2_(true)
58  , noxaxis_(false)
59  , noyaxis_(false)
60  , noy2axis_(false)
61  , noxgridline_(false)
62  , noygridline_(false)
63  , noy2gridline_(false)
64  , pointsz_(0)
65  , ptsnaptol_(0.01)
66  , editable_(false)
67  , curvzvaly_(1)
68  , curvzvaly2_(0)
69  , fillbelow_(false)
70  , fillbelowy2_(false)
71  , drawscattery1_(false)
72  , drawscattery2_(false)
73  , markerstyley1_(MarkerStyle2D::Square,3,
74  ycol_)
75  , markerstyley2_(MarkerStyle2D::Square,3,
76  y2col_)
77  , markerfilly1_(false)
78  , markerfilly2_(false)
79  , drawborder_(false)
80  , fixdrawrg_(true)
81  , borderstyle_(OD::LineStyle())
82  , closepolygon_(true)
83  , drawliney_(true)
84  , useyscalefory2_(false)
85  , xannotinint_(false)
86  , yannotinint_(false)
87  , drawliney2_(true) {}
88 
92  mDefSetupMemb(Color,bgcol)
93  mDefSetupMemb(Color,ycol)
94  mDefSetupMemb(Color,y2col)
95  mDefSetupMemb(int,ywidth)
96  mDefSetupMemb(int,y2width)
97  mDefSetupMemb(int,canvaswidth)
98  mDefSetupMemb(int,canvasheight)
99  mDefSetupMemb(uiBorder,border)
100  mDefSetupMemb(int,curvzvaly)
101  mDefSetupMemb(int,curvzvaly2)
102  mDefSetupMemb(bool,annotx)
103  mDefSetupMemb(bool,annoty)
104  mDefSetupMemb(bool,annoty2)
105  mDefSetupMemb(bool,noxaxis)
106  mDefSetupMemb(bool,noyaxis)
107  mDefSetupMemb(bool,noy2axis)
108  mDefSetupMemb(bool,noxgridline)
109  mDefSetupMemb(bool,noygridline)
110  mDefSetupMemb(bool,noy2gridline)
111  mDefSetupMemb(int,pointsz)
112  mDefSetupMemb(bool,editable)
113  mDefSetupMemb(bool,fillbelow)
114  mDefSetupMemb(bool,fillbelowy2)
115  mDefSetupMemb(bool,drawliney)
116  mDefSetupMemb(bool,drawliney2)
117  mDefSetupMemb(bool,drawscattery1)
118  mDefSetupMemb(bool,drawscattery2)
119  mDefSetupMemb(MarkerStyle2D,markerstyley1)
120  mDefSetupMemb(MarkerStyle2D,markerstyley2)
121  mDefSetupMemb(bool,markerfilly1)
122  mDefSetupMemb(bool,markerfilly2)
123  mDefSetupMemb(bool,closepolygon)
124  mDefSetupMemb(bool,drawborder)
125  mDefSetupMemb(bool,useyscalefory2)
126  mDefSetupMemb(OD::LineStyle,borderstyle)
127  mDefSetupMemb(float,ptsnaptol)
128  mDefSetupMemb(bool,fixdrawrg)
129  mDefSetupMemb(bool,xannotinint)
130  mDefSetupMemb(bool,yannotinint)
131 
132  Setup& drawline( bool yn )
133  { drawliney_ = drawliney2_ = yn; return *this; }
134  Setup& drawgridlines( bool yn )
135  { noxgridline_ = noygridline_ = noy2gridline_ = !yn;
136  return *this; }
137  Setup& drawscatter( bool yn )
138  { drawscattery1_ = drawscattery2_ = yn; return *this; }
139  Setup& annot( bool yn )
140  { annotx_ = annoty_ = annoty2_ = yn; return *this; }
141  Setup& axes( bool yn )
142  { noxaxis_ = noyaxis_ = noy2axis_ = !yn; return *this; }
143 
144  };
145 
148 
149  void setTitle(const uiString&);
150  void setVals(const float* xvals,
151  const float* yvals,int sz);
153  const float* yvals,int sz);
155  void setY2Vals(const float* xvals,
156  const float* yvals,int sz);
158  const float* yvals,int sz);
160  void setMarkValue(float,bool is_x);
161  void setMark2Value(float,bool is_x);
162  void setEmpty();
163 
164  const TypeSet<float>& xVals() const { return xvals_; }
165  const TypeSet<float>& yVals() const { return yvals_; }
166  uiAxisHandler* xAxis() { return xax_; }
167  uiAxisHandler* yAxis( bool y2) { return y2 ? y2ax_ : yax_; }
168  const uiAxisHandler* xAxis() const { return xax_; }
169  const uiAxisHandler* yAxis( bool y2) const
170  { return y2 ? y2ax_ : yax_; }
171  Setup& setup() { return setup_; }
172 
173  Geom::Point2D<float> getFuncXY(int xpix,bool y2) const;
175  bool y2) const;
176 
177  int size() const { return xvals_.size(); }
178 
181  int selPt() const { return selpt_; }
182 
183  void gatherInfo(bool y2=false);
184  void draw();
185 
186  void dump(od_ostream&,bool y2) const;
187 
188 protected:
189 
194  uiGraphicsItem* ypolyitem_;
195  uiGraphicsItem* y2polyitem_;
208 
217  int selpt_;
219 
224  void addPoint(const uiPoint&);
225 
226  void cleanUp();
227  void setUpAxis(bool y2);
230  void drawY2Curve(const TypeSet<uiPoint>&,bool havy2);
232  bool y2=false);
234  uiLineItem*&);
235  void drawBorder();
237  bool setSelPt();
238  void reSized( CallBacker* );
240  void getAxisRanges(const TypeSet<float>& vals,
241  const Interval<float>& setuprg,
242  Interval<float>&) const;
243 
244  virtual void drawData();
245 };
246 
247 
uiFunctionDisplay::drawMarkLines
void drawMarkLines()
uiFunctionDisplay::yAxis
uiAxisHandler * yAxis(bool y2)
Definition: uifunctiondisplay.h:167
uiFunctionDisplay::drawBorder
void drawBorder()
OD::LineStyle
Definition: draw.h:118
uiFunctionDisplay::drawMarkLine
void drawMarkLine(uiAxisHandler *, float, Color, uiLineItem *&)
uiFunctionDisplay::getXYFromPix
Geom::Point2D< float > getXYFromPix(const Geom::Point2D< int > &pix, bool y2) const
uiFunctionDisplay::ypolylineitem_
uiPolyLineItem * ypolylineitem_
Definition: uifunctiondisplay.h:198
uiFunctionDisplay::ymarkeritems_
uiGraphicsItemGroup * ymarkeritems_
Definition: uifunctiondisplay.h:201
uiFunctionDisplay::xmarkline2item_
uiLineItem * xmarkline2item_
Definition: uifunctiondisplay.h:205
uiLineItem
Definition: uigraphicsitemimpl.h:110
uiBorder
Definition: uigeom.h:78
uiFunctionDisplay::drawY2Curve
void drawY2Curve(const TypeSet< uiPoint > &, bool havy2)
uiFunctionDisplay::yAxis
const uiAxisHandler * yAxis(bool y2) const
Definition: uifunctiondisplay.h:169
uiFunctionDisplay::xvals_
TypeSet< float > xvals_
Definition: uifunctiondisplay.h:209
uiFunctionDisplay::drawData
virtual void drawData()
uiFunctionDisplay::drawMarker
void drawMarker(const TypeSet< uiPoint > &, bool y2=false)
uiFunctionDisplay::xAxis
uiAxisHandler * xAxis()
Definition: uifunctiondisplay.h:166
uiFunctionDisplay::ymarkline2item_
uiLineItem * ymarkline2item_
Definition: uifunctiondisplay.h:206
uiFunctionDisplay::mouseRelease
void mouseRelease(CallBacker *)
uiFunctionDisplay::mousePress
void mousePress(CallBacker *)
uiFunctionDisplay::size
int size() const
Definition: uifunctiondisplay.h:177
uiFunctionDisplay::getPointSet
void getPointSet(TypeSet< uiPoint > &, bool y2)
uiFunctionDisplay::setEmpty
void setEmpty()
clears all
uiFunctionDisplay::ymarkline2val_
float ymarkline2val_
Definition: uifunctiondisplay.h:216
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
uiFunctionDisplay::setup_
Setup setup_
Definition: uifunctiondisplay.h:190
Setup::Setup
Setup()
uiFunctionDisplay::getAxisRanges
void getAxisRanges(const TypeSet< float > &vals, const Interval< float > &setuprg, Interval< float > &) const
uiPolyLineItem
Definition: uigraphicsitemimpl.h:214
uiFunctionDisplay::setup
Setup & setup()
Definition: uifunctiondisplay.h:171
uiGraphicsView
Definition: uigraphicsview.h:51
Setup::mDefSetupMemb
mDefSetupMemb(int, method)
uiFunctionDisplay::xmarklineval_
float xmarklineval_
Definition: uifunctiondisplay.h:213
uiFunctionDisplay::y2polyitem_
uiGraphicsItem * y2polyitem_
Definition: uifunctiondisplay.h:195
uiFunctionDisplay::y2yvals_
TypeSet< float > y2yvals_
Definition: uifunctiondisplay.h:212
uiAxisHandler
Handles an axis on a plot.
Definition: uiaxishandler.h:51
uiFunctionDisplay::xax_
uiAxisHandler * xax_
Definition: uifunctiondisplay.h:191
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
uiFunctionDisplay::setY2Vals
void setY2Vals(const float *xvals, const float *yvals, int sz)
mODTextTranslationClass
#define mODTextTranslationClass(clss)
Definition: uistring.h:40
uiFunctionDisplay::y2polygonitem_
uiPolygonItem * y2polygonitem_
Definition: uifunctiondisplay.h:197
uiFunctionDisplay::selpt_
int selpt_
Definition: uifunctiondisplay.h:217
uiFunctionDisplay::setUpAxis
void setUpAxis(bool y2)
uiFunctionDisplay::y2ax_
uiAxisHandler * y2ax_
Definition: uifunctiondisplay.h:193
uiFunctionDisplay::gatherInfo
void gatherInfo(bool y2=false)
uiFunctionDisplay::xVals
const TypeSet< float > & xVals() const
Definition: uifunctiondisplay.h:164
uiFunctionDisplay::ypolyitem_
uiGraphicsItem * ypolyitem_
Definition: uifunctiondisplay.h:194
uiFunctionDisplay::reSized
void reSized(CallBacker *)
uiFunctionDisplay::setMarkValue
void setMarkValue(float, bool is_x)
uiFunctionDisplay::borderrectitem_
uiRectItem * borderrectitem_
Definition: uifunctiondisplay.h:200
uiFunctionDisplay::draw
void draw()
Setup
Definition: ceemdalgo.h:161
uiFunctionDisplay::uiFunctionDisplay
mODTextTranslationClass(uiFunctionDisplay) public uiFunctionDisplay(uiParent *, const Setup &)
uiFunctionDisplay::xmarklineitem_
uiLineItem * xmarklineitem_
Definition: uifunctiondisplay.h:203
uiPolygonItem
Definition: uigraphicsitemimpl.h:192
uiFunctionDisplay::titleitem_
uiTextItem * titleitem_
Definition: uifunctiondisplay.h:207
Notifier< uiFunctionDisplay >
uiFunctionDisplay::saveImageAs
void saveImageAs(CallBacker *)
uiFunctionDisplay::mouseDClick
void mouseDClick(CallBacker *)
uiFunctionDisplay::ymarklineitem_
uiLineItem * ymarklineitem_
Definition: uifunctiondisplay.h:204
uiFunctionDisplay::xAxis
const uiAxisHandler * xAxis() const
Definition: uifunctiondisplay.h:168
uiFunctionDisplay::y2xvals_
TypeSet< float > y2xvals_
Definition: uifunctiondisplay.h:211
draw.h
uiFunctionDisplay::mousedown_
bool mousedown_
Definition: uifunctiondisplay.h:218
uiFunctionDisplay::setY2Vals
void setY2Vals(const Interval< float > &, const float *yvals, int sz)
Undef values are filtered out.
uiFunctionDisplay::y2polylineitem_
uiPolyLineItem * y2polylineitem_
Definition: uifunctiondisplay.h:199
uiFunctionDisplay::setMark2Value
void setMark2Value(float, bool is_x)
uiFunctionDisplay::drawYCurve
void drawYCurve(const TypeSet< uiPoint > &)
MarkerStyle2D
Definition: draw.h:60
uiFunctionDisplay::yax_
uiAxisHandler * yax_
Definition: uifunctiondisplay.h:192
MarkerStyle2D::Square
@ Square
Definition: draw.h:63
uiRectItem
Definition: uigraphicsitemimpl.h:255
Geom::Point2D< float >
uiFunctionDisplay::yVals
const TypeSet< float > & yVals() const
Definition: uifunctiondisplay.h:165
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
uiFunctionDisplay::y2markeritems_
uiGraphicsItemGroup * y2markeritems_
Definition: uifunctiondisplay.h:202
uiFunctionDisplay::getFuncXY
Geom::Point2D< float > getFuncXY(int xpix, bool y2) const
uiFunctionDisplay::dump
void dump(od_ostream &, bool y2) const
uiFunctionDisplay::pointSelected
Notifier< uiFunctionDisplay > pointSelected
Definition: uifunctiondisplay.h:179
uiFunctionDisplay::addPoint
void addPoint(const uiPoint &)
uiFunctionDisplay::ymarklineval_
float ymarklineval_
Definition: uifunctiondisplay.h:214
uiFunctionDisplay::setVals
void setVals(const Interval< float > &, const float *yvals, int sz)
Undef values are filtered out.
mUdf
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
uiFunctionDisplay::xmarkline2val_
float xmarkline2val_
Definition: uifunctiondisplay.h:215
uiGraphicsScene
Definition: uigraphicsscene.h:39
uiFunctionDisplay::setTitle
void setTitle(const uiString &)
uiFunctionDisplay::setVals
void setVals(const float *xvals, const float *yvals, int sz)
uiFunctionDisplay::pointChanged
Notifier< uiFunctionDisplay > pointChanged
Definition: uifunctiondisplay.h:180
uiFunctionDisplay
displays a function of (X,Y) pairs on a canvas - optionally a Y2.
Definition: uifunctiondisplay.h:38
uiFunctionDisplay::setSelPt
bool setSelPt()
uiParent
Definition: uiparent.h:26
uiFunctionDisplay::mouseMove
void mouseMove(CallBacker *)
uiGraphicsItemGroup
Definition: uigraphicsitem.h:165
uiFunctionDisplay::selPt
int selPt() const
Definition: uifunctiondisplay.h:181
Interval< float >
Color
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer,...
Definition: color.h:26
od_ostream
OD class for stream write common access to the user log file, or std::cout in other than od_main.
Definition: od_ostream.h:26
uiFunctionDisplay::ypolygonitem_
uiPolygonItem * ypolygonitem_
Definition: uifunctiondisplay.h:196
Color::White
static Color White()
Definition: color.h:90
uiFunctionDisplay::cleanUp
void cleanUp()
uiFunctionDisplay::~uiFunctionDisplay
~uiFunctionDisplay()
uiTextItem
Definition: uigraphicsitemimpl.h:276
uiFunctionDisplay::yvals_
TypeSet< float > yvals_
Definition: uifunctiondisplay.h:210
TypeSet< float >
uigraphicsview.h

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