OpendTect  6.6
uiwelldahdisplay.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: Bruno
8  Date: Sept 2010
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "uiwellmod.h"
15 #include "uigraphicsview.h"
16 #include "uigraphicsitem.h"
17 #include "uiaxishandler.h"
18 #include "draw.h"
19 #include "survinfo.h"
20 #include "welldisp.h"
21 #include "welldata.h"
22 #include "welld2tmodel.h"
23 #include "welltrack.h"
24 #include "survinfo.h"
25 
26 namespace Well { class DahObj; class Marker; class D2TModel; }
27 
28 class uiTextItem;
29 class uiLineItem;
30 class uiPolyLineItem;
31 class uiPolygonItem;
32 class uiGraphicsScene;
33 
34 #define mDefZPos(zpos)\
35 if ( zdata_.zistime_ && zdata_.d2T() && track() )\
36  zpos = d2T()->getTime( zpos, *track() )*SI().zDomain().userFactor();\
37 else if ( !zdata_.zistime_ && track() )\
38  zpos = track() ? (float) zdata_.track()->getPos( zpos ).z : 0;
39 
40 #define mDefZPosInLoop(val) \
41  float zpos = val;\
42  float fac = 1.f; \
43  if( !zdata_.zistime_ && SI().depthsInFeet() ) \
44  fac = mToFeetFactorF; \
45  if ( zdata_.zistime_ && zdata_.d2T() && track() )\
46  zpos = d2T()->getTime( zpos, *track() )*SI().zDomain().userFactor();\
47  else if ( !zdata_.zistime_ && track() )\
48  zpos = track() ? (float) zdata_.track()->getPos( zpos ).z*fac : 0; \
49  if ( !ld1_->yax_.range().includes( zpos, true ) )\
50  continue;
51 
58 public:
59  mStruct(uiWell) Setup
60  {
61  Setup()
62  : nrmarkerchars_(2)
63  , pickls_(OD::LineStyle::Solid,1,Color(0,200,0))
64  , border_(5)
65  , noxannot_(false)
66  , noyannot_(false)
67  , annotinside_(false)
68  , samexaxisrange_(false)
69  , symetricalxaxis_(false)
70  , drawcurvenames_(false)
71  , xannotinpercents_(false)
72  {}
73 
74  mDefSetupMemb(uiBorder,border)
75  mDefSetupMemb(int,nrmarkerchars)
77  mDefSetupMemb(int,axisticsz)
78  mDefSetupMemb(bool,noxannot)
79  mDefSetupMemb(bool,noyannot)
80  mDefSetupMemb(bool,annotinside)
81  mDefSetupMemb(bool,drawcurvenames)
82  mDefSetupMemb(bool,samexaxisrange)
83  mDefSetupMemb(bool,symetricalxaxis)
84  mDefSetupMemb(bool,xannotinpercents)
85  };
86 
89 
90  mStruct(uiWell) DahObjData : public CallBacker
91  {
92  virtual ~DahObjData() { delete xaxprcts_; }
93 
94  //Set these
95  void setData(const Well::DahObj* d) { dahobj_ = d; }
96  bool hasData() const { return dahobj_; }
97  bool xrev_;
98  int zoverlayval_;
99  float cliprate_;
100  Color col_;
101  bool drawascurve_;
102  int curvesz_;
103  bool drawaspoints_;
104  int pointsz_;
105 
106  //Get these
107  Interval<float> zrg_;
108  Interval<float> valrg_;
109  uiAxisHandler xax_;
110  uiAxisHandler* xaxprcts_;
111  uiAxisHandler yax_;
112 
113  virtual void getInfoForDah(float dah,BufferString&) const;
114  void plotAxis();
115 
116  protected:
117  DahObjData(uiGraphicsScene&,bool,
118  const uiWellDahDisplay::Setup&);
119 
120  const Well::DahObj* dahobj_;
121  uiGraphicsItemSet curveitms_;
122  uiPolyLineItem* curvepolyitm_;
123 
124  friend class uiWellDahDisplay;
125  };
126 
127  mStruct(uiWell) Data
128  {
129  Data( const Well::Data* wd )
130  : zrg_(mUdf(float),mUdf(float))
131  , zistime_(SI().zIsTime())
132  , dispzinft_(SI().depthsInFeet())
133  , wd_(wd)
134  { if ( wd_ ) wd_->ref(); }
135  ~Data()
136  { if ( wd_ ) wd_->unRef(); }
137 
138  void copyFrom(const uiWellDahDisplay::Data& d)
139  {
140  if ( &d == this )
141  return;
142 
143  zrg_ = d.zrg_;
144  zistime_ = d.zistime_;
145  dispzinft_ = d.dispzinft_;
146  if ( wd_ )
147  wd_->unRef();
148  wd_ = d.wd_;
149  if ( wd_ )
150  wd_->ref();
151  }
152  const Well::D2TModel* d2T() const { return wd_ ? wd_->d2TModel() : 0;}
153  const Well::Track* track() const {return wd_ ? &wd_->track() : 0; }
154  const Well::MarkerSet* mrks() const {return wd_ ? &wd_->markers() : 0;}
155 
156  Interval<float> zrg_;
157  bool dispzinft_;
158  bool zistime_;
159  const Well::Data* wd_;
160  };
161 
162  mStruct(uiWell) PickData
163  {
164  PickData( float dah, Color c=Color::NoColor() )
165  : dah_(dah), color_(c), val_(mUdf(float)) {}
166 
167  bool operator ==( const PickData& pd ) const
168  { return mIsEqual(pd.dah_,dah_,1e-4); }
169 
170  float dah_;
171  Color color_;
172  //setup color
173  float val_; //this will be a point if defined,
174  //a line otherwise
175  };
176 
177  void setData(const Data& data);
179  { zdata_.zrg_ = zrg; dataChanged();}
180 
181  const Data& zData() { return zdata_; }
183  Well::DisplayProperties::Markers& markerDisp() { return mrkdisp_; }
184 
185  void reDraw() { gatherInfo(); draw(); }
187 
188  DahObjData& dahObjData( bool first )
189  { return first ? *ld1_ : *ld2_; }
190 protected:
191 
192  DahObjData* ld1_;
193  DahObjData* ld2_;
198 
199  mStruct(uiWell) MarkerDraw
200  {
201  MarkerDraw( const Well::Marker& mrk )
202  : mrk_(mrk)
203  {}
204  ~MarkerDraw();
205 
206  const Well::Marker& mrk_;
207  OD::LineStyle ls_;
208  uiTextItem* txtitm_;
209  uiLineItem* lineitm_;
210  };
211 
213  MarkerDraw* getMarkerDraw(const Well::Marker&);
214  Well::DisplayProperties::Markers mrkdisp_;
215 
216  const Well::D2TModel* d2T() const { return zdata_.d2T(); }
217  const Well::Track* track() const { return zdata_.track(); }
218  const Well::MarkerSet* markers() const { return zdata_.mrks(); }
219 
220  virtual void draw();
221  virtual void drawCurve(bool);
222  void drawMarkers();
223  void drawZPicks();
224 
226  virtual void gatherInfo();
227  virtual void gatherDataInfo(bool);
228  void setAxisRanges(bool);
229 
230  void dataChanged();
231  void init(CallBacker*);
233 
234  friend class uiWellDisplay;
235  friend class uiWellDisplayControl;
236 };
237 
238 
uiWellDahDisplay::gatherDataInfo
virtual void gatherDataInfo(bool)
OD::LineStyle
Definition: draw.h:118
uiWellDahDisplay::reDrawAnnots
void reDrawAnnots()
Definition: uiwelldahdisplay.h:186
uiWellDahDisplay::markers
const Well::MarkerSet * markers() const
Definition: uiwelldahdisplay.h:218
uiWellDahDisplay::zpicks_
TypeSet< PickData > zpicks_
Definition: uiwelldahdisplay.h:196
uiWellDahDisplay::setAxisRelations
void setAxisRelations()
sKey::Color
FixedString Color()
Definition: keystrs.h:45
uiWellDahDisplay::drawCurve
virtual void drawCurve(bool)
uiWellDahDisplay::init
void init(CallBacker *)
uiWellDahDisplay::ld2_
DahObjData * ld2_
Definition: uiwelldahdisplay.h:193
uiLineItem
Definition: uigraphicsitemimpl.h:110
Well::Data
The holder of all data concerning a certain well.
Definition: welldata.h:121
Color::NoColor
static Color NoColor()
Definition: color.h:79
uiBorder
Definition: uigeom.h:78
uiWellDahDisplay::dahObjData
DahObjData & dahObjData(bool first)
Definition: uiwelldahdisplay.h:188
uiWellDahDisplay::track
const Well::Track * track() const
Definition: uiwelldahdisplay.h:217
ObjectSet< MarkerDraw >
uiaxishandler.h
mIsEqual
#define mIsEqual(x, y, eps)
Definition: commondefs.h:67
uiWellDahDisplay::markerdraws_
ObjectSet< MarkerDraw > markerdraws_
Definition: uiwelldahdisplay.h:210
welld2tmodel.h
uiWellDahDisplay
Well depth/distance along hole display.
Definition: uiwelldahdisplay.h:57
uiWellDahDisplay::zPicks
TypeSet< PickData > & zPicks()
Definition: uiwelldahdisplay.h:182
uiWellDahDisplay::gatherInfo
virtual void gatherInfo()
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
welldata.h
Well::Marker
Marker, should be attached to Strat level.
Definition: wellmarker.h:35
uiPolyLineItem
Definition: uigraphicsitemimpl.h:214
uiWellDahDisplay::zpickitms_
uiGraphicsItemSet zpickitms_
Definition: uiwelldahdisplay.h:197
uiGraphicsView
Definition: uigraphicsview.h:51
OD::LineStyle::Solid
@ Solid
Definition: draw.h:121
uiWellDahDisplay::ld1_
DahObjData * ld1_
Definition: uiwelldahdisplay.h:192
uiWellDahDisplay::draw
virtual void draw()
mDefSetupMemb
#define mDefSetupMemb(typ, memb)
Definition: commondefs.h:154
uiAxisHandler
Handles an axis on a plot.
Definition: uiaxishandler.h:51
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
sKey::Setup
FixedString Setup()
Definition: keystrs.h:139
uiWellDahDisplay::markerDisp
Well::DisplayProperties::Markers & markerDisp()
Definition: uiwelldahdisplay.h:183
Repos::Data
@ Data
Definition: repos.h:24
uiWellDahDisplay::dataChanged
void dataChanged()
operator==
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:81
mODTextTranslationClass
#define mODTextTranslationClass(clss)
Definition: uistring.h:40
uiWellDahDisplay::reSized
void reSized(CallBacker *)
uiWellDahDisplay::setAxisRanges
void setAxisRanges(bool)
uiWellDahDisplay::d2T
const Well::D2TModel * d2T() const
Definition: uiwelldahdisplay.h:216
uiGraphicsItemSet
Definition: uigraphicsitem.h:152
Well::Track
Well track.
Definition: welltrack.h:29
Well
Definition: directionalsurvey.h:20
uiWellDahDisplay::setZRange
void setZRange(Interval< float > zrg)
Definition: uiwelldahdisplay.h:178
uiWellDahDisplay::drawZPicks
void drawZPicks()
mStruct
#define mStruct(module)
Definition: commondefs.h:182
uigraphicsitem.h
SI
const SurveyInfo & SI()
Well::MarkerSet
Set of Markers.
Definition: wellmarker.h:76
Setup
Definition: ceemdalgo.h:161
uiPolygonItem
Definition: uigraphicsitemimpl.h:192
uiWellDahDisplay::mrkdisp_
Well::DisplayProperties::Markers mrkdisp_
Definition: uiwelldahdisplay.h:214
uiWellDahDisplay::zData
const Data & zData()
Definition: uiwelldahdisplay.h:181
draw.h
uiWellDahDisplay::zdata_
Data zdata_
Definition: uiwelldahdisplay.h:194
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
sKey::Marker
FixedString Marker()
Definition: keystrs.h:98
survinfo.h
uiWellDahDisplay::~uiWellDahDisplay
~uiWellDahDisplay()
uiWellDahDisplay::drawMarkers
void drawMarkers()
uiWellDisplayControl
Definition: uiwelldisplaycontrol.h:25
uiWellDahDisplay::setData
void setData(const Data &data)
welldisp.h
mUdf
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
uiGraphicsScene
Definition: uigraphicsscene.h:39
uiParent
Definition: uiparent.h:26
uiWellDahDisplay::reDraw
void reDraw()
Definition: uiwelldahdisplay.h:185
Interval< float >
Color
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer,...
Definition: color.h:26
uiWellDahDisplay::uiWellDahDisplay
mODTextTranslationClass(uiWellDahDisplay) public uiWellDahDisplay(uiParent *, const Setup &)
Well::D2TModel
Depth to time model.
Definition: welld2tmodel.h:34
welltrack.h
uiWellDisplay
Well display.
Definition: uiwelldisplay.h:35
uiWellDahDisplay::setup_
Setup setup_
Definition: uiwelldahdisplay.h:195
uiWellDahDisplay::getMarkerDraw
MarkerDraw * getMarkerDraw(const Well::Marker &)
uiTextItem
Definition: uigraphicsitemimpl.h:276
TypeSet< PickData >
uigraphicsview.h
Well::DahObj
Depth/Distance along hole object.
Definition: welldahobj.h:28

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