OpendTect  6.6
viswell.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: Nanne Hemstra
8  Date: October 2003
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 
15 #include "visbasemod.h"
16 #include "color.h"
17 #include "fontdata.h"
18 #include "ranges.h"
19 #include "scaler.h"
20 #include "visobject.h"
21 
22 class TaskRunner;
23 class VisColorTab;
24 class ZAxisTransform;
25 
26 namespace OD { class LineStyle; }
27 
28 namespace osgGeo { class WellLog; }
29 
30 namespace visBase
31 {
32 
33 class PolyLine3D;
34 class PolyLine;
35 class PolyLineBase;
36 class Text2;
37 class Text;
38 class Transformation;
39 class MarkerSet;
40 
41 
45 {
46 public:
47 
48  typedef std::pair<Coord3,float> Coord3Value;
49 
50  static Well* create()
52 
53  enum Side { Left=0, Right, Center };
54 
55  enum LogStyle { Welllog, Seismic, Logtube };
56 
57  mStruct(visBase) BasicParams
58  {
59  BasicParams(){}
60  BufferString name_;
61  Color col_;
62  int size_;
63  };
64 
65  //Well
66  mStruct(visBase) TrackParams : public BasicParams
67  {
68  TrackParams()
69  {}
70  Coord3* toppos_;
71  Coord3* botpos_;
72  bool isdispabove_;
73  bool isdispbelow_;
74  FontData font_;
75  bool nmsizedynamic_;
76  };
77 
78  void setTrack(const TypeSet<Coord3>&);
79  void setWellName(const TrackParams&);
80  void showWellTopName(bool);
81  void showWellBotName(bool);
82  bool wellTopNameShown() const;
83  bool wellBotNameShown() const;
84  const PolyLine* getTrack() const { return track_; }
85 
86  //Markers
87  mStruct(visBase) MarkerParams : public BasicParams
88  {
89  MarkerParams()
90  {}
91  int shapeint_;
92  int cylinderheight_;
93  FontData font_;
94  Color namecol_;
95  Coord3* pos_;
96  bool nmsizedynamic_;
97  };
98 
99  void setMarkerSetParams(const MarkerParams&);
100  void addMarker(const MarkerParams&);
101 
102  bool canShowMarkers() const;
103  void showMarkers(bool);
104  int markerScreenSize() const;
105  bool markersShown() const;
106  void showMarkerName(bool);
107  bool markerNameShown() const;
108  const visBase::Text2* getMarkerNames() const { return markernames_; }
111 
112  //logs
113  mStruct(visBase) LogParams : public BasicParams
114  {
115  LogParams()
116  {}
117  float cliprate_;
118  bool isdatarange_;
119  bool islinedisplayed_;
120  bool islogarithmic_;
121  bool issinglcol_;
122  bool isleftfilled_;
123  bool isrightfilled_;
124  bool isblock_;
125  int logwidth_;
126  int logidx_;
127  Well::Side side_;
128  Interval<float> range_;
129  Interval<float> valrange_;
130  bool sclog_;
131  bool iscoltabflipped_;
132 
133  int filllogidx_;
134  const char* fillname_;
135  Interval<float> fillrange_;
136  Interval<float> valfillrange_;
137  const char* seqname_;
138 
139  int repeat_;
140  float ovlap_;
141  Color seiscolor_;
142  LogStyle style_;
143  };
144 
145  const OD::LineStyle& lineStyle() const;
147 
148  void initializeData(const LogParams&,int);
149  float getValue(const TypeSet<Coord3Value>&,int,bool,
150  const LinScaler&) const;
151  Coord3 getPos(const TypeSet<Coord3Value>&,int) const;
152  void setLogColor(const Color&,Side);
153  const Color& logColor(Side) const;
154  const Color& logFillColor(int) const;
155  void clearLog(Side);
156 
158  bool logLineDisplayed(Side) const;
159  void setLogWidth(float,Side);
160  float getLogWidth(Side) const;
162  int getLogLineWidth() const;
163  void showLogs(bool);
164  void showLog(bool,Side);
165  bool logsShown() const;
166  void showLogName(bool);
167  bool logNameShown() const;
168  void setLogStyle(int,Side);
169  void setLogFill(bool,Side);
170  void setLogBlock(bool,int);
171  void setOverlapp(float,Side);
172  void setRepeat( int,Side );
173  void removeLogs();
175  void setLogFillColorTab(const LogParams&,Side);
176 
179  void setPixelDensity(float);
180  float getPixelDensity() const { return pixeldensity_;}
182 
183  void setLogData(const TypeSet<Coord3Value>& crdvals,
184  const TypeSet<Coord3Value>& crdvalsF,
185  const LogParams& lp, bool isFilled );
186  void setLogTubeDisplay(Side side,bool yn);
187 
188  void fillPar(IOPar&) const;
189  bool usePar(const IOPar& par);
191 
192  static const char* linestylestr();
193  static const char* showwelltopnmstr();
194  static const char* showwellbotnmstr();
195  static const char* showmarkerstr();
196  static const char* markerszstr();
197  static const char* showmarknmstr();
198  static const char* showlogsstr();
199  static const char* showlognmstr();
200  static const char* logwidthstr();
201 
203  const visBase::MarkerSet* getMarkerSet() const { return markerset_; }
204  bool hasLog(Side side) const;
205  bool hasTube(Side side) const;
207  bool getLogOsgData(LogStyle style,Side side,
208  TypeSet<Coord3>&coords,
209  TypeSet<Color>& colors,
210  TypeSet<TypeSet<int> >& pss,
211  TypeSet<Coord3>& normals,
212  bool path) const;
213  void getLogStyle(Side,int&) const;
214  unsigned int getRepeat(Side side) const;
215  float getRepeatStep(Side side) const;
216  const Text2* getWellTopText() const { return welltoptxt_; }
217  const Text2* getWellBottomText() const{ return wellbottxt_; }
218 
219 
220 protected:
221 
223 
224  ~Well();
227  osgGeo::WellLog* leftlogdisplay_;
228  osgGeo::WellLog* rightlogdisplay_;
229 
234 
236  bool showlogs_;
237 
240  int voiidx_;
241  bool displaytube_[2];
242  bool displaylog_[2];
244 
245 private:
246 
247  void updateText(Text* vistxt,const char* txt,
248  const Coord3* pos,
249  const FontData& fnt,
250  bool sizedynamic = true);
251 
252  void getLinScale(const LogParams&,
253  LinScaler&,
254  bool isFill = true);
256  Interval<float>&, float&, float&, bool);
257  void updateMakerSize(float sizefactor);
259  float sizefactor);
260  osgGeo::WellLog* getLogDisplay(Side) const;
261 
262 };
263 
264 } // namespace visBase
265 
visBase::Well::setOverlapp
void setOverlapp(float, Side)
visBase::Well::hasTube
bool hasTube(Side side) const
visBase::Well::Welllog
@ Welllog
Definition: viswell.h:55
Coord3
A cartesian coordinate in 3D space.
Definition: coord.h:72
visBase::Well::addMarker
void addMarker(const MarkerParams &)
OD::LineStyle
Definition: draw.h:118
visBase::Well::getTrack
const PolyLine * getTrack() const
Definition: viswell.h:84
visBase::Well::setLogTubeDisplay
void setLogTubeDisplay(Side side, bool yn)
visBase::Well::getWellBottomText
const Text2 * getWellBottomText() const
Definition: viswell.h:217
visBase::Well::setLogData
void setLogData(const TypeSet< Coord3Value > &crdvals, const TypeSet< Coord3Value > &crdvalsF, const LogParams &lp, bool isFilled)
visBase::Well::showwelltopnmstr
static const char * showwelltopnmstr()
visBase::Well::getMarkerNames
const visBase::Text2 * getMarkerNames() const
Definition: viswell.h:108
visBase::Well::markerset_
MarkerSet * markerset_
Definition: viswell.h:226
visBase::Well::getLogLineWidth
int getLogLineWidth() const
visBase::Well::setMarkerScreenSize
void setMarkerScreenSize(int)
visBase::Well::getMarkerSet
const visBase::MarkerSet * getMarkerSet() const
for pdf3d
Definition: viswell.h:203
visBase::Well::setPixelDensity
void setPixelDensity(float)
visBase::Well::logColor
const Color & logColor(Side) const
visBase::Well::leftlogdisplay_
osgGeo::WellLog * leftlogdisplay_
Definition: viswell.h:227
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
visBase::Well::transformZIfNeeded
void transformZIfNeeded(Coord3 &) const
visBase::Well::updateText
void updateText(Text *vistxt, const char *txt, const Coord3 *pos, const FontData &fnt, bool sizedynamic=true)
visBase::Well::getLogOsgData
bool getLogOsgData(LogStyle style, Side side, TypeSet< Coord3 > &coords, TypeSet< Color > &colors, TypeSet< TypeSet< int > > &pss, TypeSet< Coord3 > &normals, bool path) const
visBase
Definition: visannot.h:43
visBase::Well::wellbottxt_
Text2 * wellbottxt_
Definition: viswell.h:231
visBase::Well::fillPar
void fillPar(IOPar &) const
visBase::Well::setLogBlock
void setLogBlock(bool, int)
OD
OpendTect.
Definition: commontypes.h:28
visBase::Well::~Well
~Well()
visBase::Well::getLogStyle
void getLogStyle(Side, int &) const
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
visBase::Well::setLogFillColorTab
void setLogFillColorTab(const LogParams &, Side)
visBase::Well::getRepeatStep
float getRepeatStep(Side side) const
visBase::Well::voiidx_
int voiidx_
Definition: viswell.h:240
visBase::Well::showlognmstr
static const char * showlognmstr()
visBase::Well::showwellbotnmstr
static const char * showwellbotnmstr()
visBase::Well::showWellBotName
void showWellBotName(bool)
visBase::Well::LogStyle
LogStyle
Definition: viswell.h:55
visBase::Well::logLineDisplayed
bool logLineDisplayed(Side) const
visBase::MarkerSet
MarkerSet is a set of basic pickmarker with a constant size on screen. Size and shape are settable.
Definition: vismarkerset.h:36
visBase::Well::getLogWidth
float getLogWidth(Side) const
visBase::Well::Side
Side
Definition: viswell.h:53
visBase::Well::linestylestr
static const char * linestylestr()
visBase::Well::showmarknmstr
static const char * showmarknmstr()
visBase::Well::track_
PolyLine * track_
Definition: viswell.h:225
visBase::Well::usePar
bool usePar(const IOPar &par)
visBase::Well::welltoptxt_
Text2 * welltoptxt_
Definition: viswell.h:230
visBase::Well::getValue
float getValue(const TypeSet< Coord3Value > &, int, bool, const LinScaler &) const
scaler.h
visBase::Well::getWellTopText
const Text2 * getWellTopText() const
Definition: viswell.h:216
visBase::Text
Definition: vistext.h:33
visBase::Well::setRepeat
void setRepeat(int, Side)
File::Text
@ Text
Definition: file.h:122
visobject.h
visBase::Well::getPixelDensity
float getPixelDensity() const
Definition: viswell.h:180
visBase::Well::setMarkerSetParams
struct(visBase) MarkerParams void setMarkerSetParams(const MarkerParams &)
visBase::Well::removeLogs
void removeLogs()
visBase::Well::setLogWidth
void setLogWidth(float, Side)
visBase::Well::setTrack
struct(visBase) TrackParams void setTrack(const TypeSet< Coord3 > &)
visBase::Well::showlogsstr
static const char * showlogsstr()
visBase::Well::logFillColor
const Color & logFillColor(int) const
LinScaler
Linear scaling.
Definition: scaler.h:58
ZAxisTransform
Base class for z-axis transforms.
Definition: zaxistransform.h:37
visBase::Well::setLogFill
void setLogFill(bool, Side)
visBase::Well::wellBotNameShown
bool wellBotNameShown() const
visBase::Well::setTrackProperties
void setTrackProperties(Color &, int)
Well
Definition: directionalsurvey.h:20
visBase::Well::getLinScaleRange
void getLinScaleRange(const LinScaler &, Interval< float > &, float &, float &, bool)
visBase::Well::showWellTopName
void showWellTopName(bool)
visBase::Well::lognames_
BufferStringSet lognames_
Definition: viswell.h:243
visBase::Well::wellTopNameShown
bool wellTopNameShown() const
mStruct
#define mStruct(module)
Definition: commondefs.h:182
visBase::Well::setZAxisTransform
void setZAxisTransform(ZAxisTransform *, TaskRunner *)
visBase::Well::setLogLineWidth
void setLogLineWidth(int, Side)
visBase::Well::markerszstr
static const char * markerszstr()
visBase::Well::logsShown
bool logsShown() const
TaskRunner
Class that can execute a task.
Definition: task.h:170
visBase::Well::lineStyle
struct(visBase) LogParams const OD::LineStyle & lineStyle() const
visBase::Well::logwidthstr
static const char * logwidthstr()
visBase::Well::setDisplayTransformation
void setDisplayTransformation(const visBase::Transformation *)
visBase::Well::initializeData
void initializeData(const LogParams &, int)
visBase::Well::getDisplayTransformation
const visBase::Transformation * getDisplayTransformation() const
visBase::Well::showMarkers
void showMarkers(bool)
visBase::Well::create
static Well * create()
Definition: viswell.h:50
visBase::Well::showmarkers_
bool showmarkers_
Definition: viswell.h:235
visBase::Well::setLineStyle
void setLineStyle(const OD::LineStyle &)
mVisTrans
#define mVisTrans
Definition: visdata.h:28
visBase::Well::getPos
Coord3 getPos(const TypeSet< Coord3Value > &, int) const
visBase::Well::markernames_
Text2 * markernames_
Definition: viswell.h:232
visBase::Well::logNameShown
bool logNameShown() const
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
visBase::Well::showMarkerName
void showMarkerName(bool)
visBase::VisualObjectImpl
Definition: visobject.h:72
visBase::Well::showlogs_
bool showlogs_
Definition: viswell.h:236
visBase::Well::pixeldensity_
float pixeldensity_
Definition: viswell.h:238
visBase::Well::getRepeat
unsigned int getRepeat(Side side) const
visBase::Well::transformation_
const visBase::Transformation * transformation_
Definition: viswell.h:233
visBase::Well::markerNameShown
bool markerNameShown() const
osgGeo
A collection of geoscientific extensions to OpenSceneGraph.
Definition: visannot.h:38
mCreateDataObj
#define mCreateDataObj(clss)
Definition: visdata.h:214
visBase::Well::setLogColor
void setLogColor(const Color &, Side)
color.h
visBase::Well::setLogStyle
void setLogStyle(int, Side)
sKey::LineStyle
FixedString LineStyle()
Definition: keystrs.h:89
sKey::Well
FixedString Well()
Definition: keystrs.h:187
fontdata.h
visBase::Well::updateMakerSize
void updateMakerSize(float sizefactor)
visBase::Well::markerScreenSize
int markerScreenSize() const
FontData
Data needed to make an actual font.
Definition: fontdata.h:20
visBase::Well::rightlogdisplay_
osgGeo::WellLog * rightlogdisplay_
Definition: viswell.h:228
visBase::Well::showLogName
void showLogName(bool)
visBase::Well::setWellName
void setWellName(const TrackParams &)
visBase::PolyLine
Definition: vispolyline.h:36
visBase::Well::markersize_
int markersize_
Definition: viswell.h:190
visBase::Well::markersShown
bool markersShown() const
ranges.h
visBase::Well::getLinScale
void getLinScale(const LogParams &, LinScaler &, bool isFill=true)
Interval< float >
visBase::Well::getLogName
BufferString getLogName(Side side) const
Color
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer,...
Definition: color.h:26
visBase::Well::showLog
void showLog(bool, Side)
OD::Right
@ Right
Definition: oduicommon.h:64
visBase::Well::showmarkerstr
static const char * showmarkerstr()
visBase::Well::showLogs
void showLogs(bool)
visBase::Well::hasLog
bool hasLog(Side side) const
OD::Left
@ Left
Definition: oduicommon.h:63
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
visBase::Text2
Definition: vistext.h:93
visBase::Well::removeAllMarkers
void removeAllMarkers()
visBase::Well::Coord3Value
std::pair< Coord3, float > Coord3Value
Definition: viswell.h:48
visBase::Well::canShowMarkers
bool canShowMarkers() const
visBase::Well::getLogDisplay
osgGeo::WellLog * getLogDisplay(Side) const
visBase::Well::clearLog
void clearLog(Side)
TypeSet< Coord3 >
visBase::Well::setLogLineDisplayed
void setLogLineDisplayed(bool, Side)
visBase::Well::updateMakerNamePosition
void updateMakerNamePosition(Side side, float sizefactor)
visBase::Well::zaxistransform_
ZAxisTransform * zaxistransform_
Definition: viswell.h:239

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