OpendTect  6.3
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 ________________________________________________________________________
10 
11 -*/
12 
13 #include "uitoolsmod.h"
14 #include "uigraphicsview.h"
15 #include "draw.h"
16 
17 class uiAxisHandler;
18 class uiGraphicsItem;
20 class uiGraphicsScene;
21 class uiLineItem;
22 class uiPolygonItem;
23 class uiPolyLineItem;
24 class uiRectItem;
25 class uiTextItem;
26 template <class T> class DataDistribution;
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_(0,0,150)
49  , y2col_(0,200,0)
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_(OD::MarkerStyle2D::Square,3,
74  ycol_)
75  , markerstyley2_(OD::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(OD::MarkerStyle2D,markerstyley1)
120  mDefSetupMemb(OD::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);
152  void setVals(const Interval<float>&,
153  const float* yvals,int sz);
155  void setY2Vals(const float* xvals,
156  const float* yvals,int sz);
158  void setY2Vals(const Interval<float>&,
159  const float* yvals,int sz);
160  void setY2Vals(const DataDistribution<float>&,
161  bool limitspikes=true);
162  void setMarkValue(float,bool is_x);
163  void setMark2Value(float,bool is_x);
164  void setEmpty();
165 
166  const TypeSet<float>& xVals() const { return xvals_; }
167  const TypeSet<float>& yVals() const { return yvals_; }
168  uiAxisHandler* xAxis() { return xax_; }
169  uiAxisHandler* yAxis( bool y2) { return y2 ? y2ax_ : yax_; }
170  const uiAxisHandler* xAxis() const { return xax_; }
171  const uiAxisHandler* yAxis( bool y2) const
172  { return y2 ? y2ax_ : yax_; }
173  Setup& setup() { return setup_; }
174 
175  Geom::Point2D<float> getFuncXY(int xpix,bool y2) const;
176  Geom::Point2D<float> getXYFromPix(const Geom::Point2D<int>& pix,
177  bool y2) const;
178 
179  int size() const { return xvals_.size(); }
180 
183  int selPt() const { return selpt_; }
184 
185  void gatherInfo(bool y2=false);
186  void draw();
187 
188  void dump(od_ostream&,bool y2) const;
189 
190 protected:
191 
196  uiGraphicsItem* ypolyitem_;
197  uiGraphicsItem* y2polyitem_;
210 
219  int selpt_;
221 
222  void mousePress(CallBacker*);
223  void mouseRelease(CallBacker*);
224  void mouseMove(CallBacker*);
225  void mouseDClick(CallBacker*);
226  void addPoint(const uiPoint&);
227 
228  void cleanUp();
229  void setUpAxis(bool y2);
230  void getPointSet(TypeSet<uiPoint>&,bool y2);
231  void drawYCurve(const TypeSet<uiPoint>&);
232  void drawY2Curve(const TypeSet<uiPoint>&,bool havy2);
233  void drawMarker(const TypeSet<uiPoint>&,
234  bool y2=false);
235  void drawMarkLine(uiAxisHandler*,float,Color,
236  uiLineItem*&);
237  void drawBorder();
238  void drawMarkLines();
239  bool setSelPt();
240  void reSized( CallBacker* );
241  void saveImageAs( CallBacker* );
242  void getAxisRanges(const TypeSet<float>& vals,
243  const Interval<float>& setuprg,
244  Interval<float>&) const;
245 };
const uiAxisHandler * xAxis() const
Definition: uifunctiondisplay.h:170
uiLineItem * ymarkline2item_
Definition: uifunctiondisplay.h:208
#define mExpClass(module)
Definition: commondefs.h:157
uiPolyLineItem * ypolylineitem_
Definition: uifunctiondisplay.h:200
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
float ymarkline2val_
Definition: uifunctiondisplay.h:218
int selPt() const
Definition: uifunctiondisplay.h:183
OD class for stream write common access to the user log file, or std::cout in batch progs...
Definition: od_ostream.h:25
FixedString Setup()
Definition: keystrs.h:113
Setup & setup()
Definition: uifunctiondisplay.h:173
const uiAxisHandler * yAxis(bool y2) const
Definition: uifunctiondisplay.h:171
Definition: draw.h:67
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
Definition: draw.h:119
uiPolygonItem * y2polygonitem_
Definition: uifunctiondisplay.h:199
Definition: uigraphicsitemimpl.h:197
const TypeSet< float > & yVals() const
Definition: uifunctiondisplay.h:167
TypeSet< float > xvals_
Definition: uifunctiondisplay.h:211
float xmarklineval_
Definition: uifunctiondisplay.h:215
int selpt_
Definition: uifunctiondisplay.h:219
Handles an axis on a plot.
Definition: uiaxishandler.h:50
uiGraphicsItemGroup * ymarkeritems_
Definition: uifunctiondisplay.h:203
Setup setup_
Definition: uifunctiondisplay.h:192
uiAxisHandler * y2ax_
Definition: uifunctiondisplay.h:195
Definition: uistring.h:88
Definition: uiparent.h:24
uiAxisHandler * xAxis()
Definition: uifunctiondisplay.h:168
uiGraphicsItem * y2polyitem_
Definition: uifunctiondisplay.h:197
TypeSet< float > y2yvals_
Definition: uifunctiondisplay.h:214
uiAxisHandler * xax_
Definition: uifunctiondisplay.h:193
int size() const
Definition: uifunctiondisplay.h:179
uiGraphicsItem * ypolyitem_
Definition: uifunctiondisplay.h:196
uiLineItem * ymarklineitem_
Definition: uifunctiondisplay.h:206
Definition: uigraphicsitem.h:154
uiRectItem * borderrectitem_
Definition: uifunctiondisplay.h:202
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:270
Definition: draw.h:63
uiTextItem * titleitem_
Definition: uifunctiondisplay.h:209
displays a function of (X,Y) pairs on a canvas - optionally a Y2.
Definition: uifunctiondisplay.h:37
Definition: uigraphicsitemimpl.h:259
#define mDefSetupMemb(typ, memb)
Definition: commondefs.h:129
uiLineItem * xmarklineitem_
Definition: uifunctiondisplay.h:205
bool mousedown_
Definition: uifunctiondisplay.h:220
uiAxisHandler * yax_
Definition: uifunctiondisplay.h:194
Definition: uigeom.h:76
Definition: uigraphicsitemimpl.h:219
TypeSet< float > y2xvals_
Definition: uifunctiondisplay.h:213
static Color White()
Definition: color.h:85
uiPolygonItem * ypolygonitem_
Definition: uifunctiondisplay.h:198
Definition: uigraphicsview.h:49
uiGraphicsItemGroup * y2markeritems_
Definition: uifunctiondisplay.h:204
Notifier< uiFunctionDisplay > pointChanged
Definition: uifunctiondisplay.h:182
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
uiPolyLineItem * y2polylineitem_
Definition: uifunctiondisplay.h:201
Sharable data distribution. Sampling defaults to 0 step 1.
Definition: datadistribution.h:42
Definition: uigraphicsitemimpl.h:277
uiAxisHandler * yAxis(bool y2)
Definition: uifunctiondisplay.h:169
const TypeSet< float > & xVals() const
Definition: uifunctiondisplay.h:166
Notifier< uiFunctionDisplay > pointSelected
Definition: uifunctiondisplay.h:181
uiLineItem * xmarkline2item_
Definition: uifunctiondisplay.h:207
TypeSet< float > yvals_
Definition: uifunctiondisplay.h:212
float ymarklineval_
Definition: uifunctiondisplay.h:216
Definition: uigraphicsitemimpl.h:109
float xmarkline2val_
Definition: uifunctiondisplay.h:217
Definition: uigraphicsscene.h:35

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