OpendTect  6.3
vissurvscene.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: Kristofer Tingdahl
8  Date: 4-11-2002
9 ________________________________________________________________________
10 
11 
12 -*/
13 
14 #include "vissurveymod.h"
15 #include "visscene.h"
16 #include "bufstring.h"
17 #include "keyboardevent.h"
18 #include "mouseevent.h"
19 #include "trckeyzsampling.h"
20 #include "trckeyvalue.h"
21 #include "position.h"
22 
23 class MouseCursor;
24 class TaskRunner;
25 class FontData;
26 class ZAxisTransform;
27 template <class T> class Selector;
28 
29 namespace ZDomain { class Info; }
30 
31 namespace visBase
32 {
33  class Annotation;
34  class MarkerSet;
35  class PolygonSelection;
36  class SceneColTab;
37  class TopBotImage;
38  class Transformation;
39  class VisualObject;
40 }
41 
42 namespace visSurvey
43 {
44 
76 public:
77  static Scene* create()
78  mCreateDataObj(Scene);
79 
80  virtual void removeAll();
81  virtual void addObject(visBase::DataObject*);
89  virtual int size() const;
90  virtual int getFirstIdx(const DataObject*) const;
91  virtual int getFirstIdx(int did) const
92  { return visBase::Scene::getFirstIdx(did); }
93  visBase::DataObject* getObject(int);
94  const visBase::DataObject* getObject(int) const;
95 
96  void addUTMObject(visBase::VisualObject*);
97  void addInlCrlZObject(visBase::DataObject*);
98  virtual void removeObject(int idx);
99 
100  void setTrcKeyZSampling(const TrcKeyZSampling&);
101  const TrcKeyZSampling& getTrcKeyZSampling() const { return tkzs_; }
102  void showAnnotText(bool);
103  bool isAnnotTextShown() const;
104  void showAnnotScale(bool);
105  bool isAnnotScaleShown() const;
106  void showAnnotGrid(bool);
107  bool isAnnotGridShown() const;
108  void showAnnot(bool);
109  bool isAnnotShown() const;
110  void setAnnotText(int dim,const uiString&);
111  void setAnnotFont(const FontData&);
112  const FontData& getAnnotFont() const;
113  void setAnnotScale(const TrcKeyZSampling&);
114  const TrcKeyZSampling& getAnnotScale() const;
115  void savePropertySettings();
116 
117  visBase::PolygonSelection* getPolySelection() { return polyselector_; }
118  void setPolygonSelector(visBase::PolygonSelection*);
119  const Selector<Coord3>* getSelector() const;
120  visBase::SceneColTab* getSceneColTab() { return scenecoltab_; }
121  void setSceneColTab(visBase::SceneColTab*);
122 
128  Coord3 getMousePos(bool displayspace) const;
129  TrcKeyValue getMousePos() const;
130  BufferString getMousePosValue() const;
131  BufferString getMousePosString() const;
132  const MouseCursor* getMouseCursor() const;
133  void passMouseCursor(const MouseCursor&);
134  const KeyboardEvent& getKeyboardEvent() const { return kbevent_; }
135  const MouseEvent& getMouseEvent() const { return mouseevent_; }
136  void setEventHandled();
137 
138  void objectMoved(CallBacker*);
139 
140  void setFixedZStretch(float);
146  float getFixedZStretch() const;
147 
148  void setTempZStretch(float);
149  float getTempZStretch() const;
150 
151  void setZScale(float);
156  float getZScale() const;
160  float getApparentVelocity(float zstretch) const;
161  /*<!Velocity Unit depends on display depth in
162  feet setting. */
163 
164  const mVisTrans* getTempZStretchTransform() const;
165  const mVisTrans* getInlCrl2DisplayTransform() const;
166  const mVisTrans* getUTM2DisplayTransform() const;
167  void setZAxisTransform(ZAxisTransform*,TaskRunner*);
168  ZAxisTransform* getZAxisTransform();
169  const ZAxisTransform* getZAxisTransform() const;
170 
171  bool isRightHandSystem() const;
172 
173  void setZDomainInfo(const ZDomain::Info&);
174  const ZDomain::Info& zDomainInfo() const;
175  void getAllowedZDomains(BufferString&) const;
176 
177  // Convenience
178  const char* zDomainKey() const;
179  uiString zDomainUserName() const;
180  const char* zDomainUnitStr(bool withparens=false) const;
181  int zDomainUserFactor() const;
182  const char* zDomainID() const;
183 
184  void setAnnotColor(const Color&);
185  const Color getAnnotColor() const;
186  void setMarkerPos(const TrcKeyValue&,int sceneid);
187  void setMarkerSize(float );
188  float getMarkerSize() const;
189  const Color& getMarkerColor() const;
190  void setMarkerColor(const Color&);
191 
192  void createTopBotImage(bool istop);
193  visBase::TopBotImage* getTopBotImage(bool istop);
194 
195  Coord3 getTopBottomIntersection(
196  const visBase::EventInfo&,
197  bool outerface,bool ignoreocclusion) const;
198  Coord3 getTopBottomSurveyPos(
199  const visBase::EventInfo&, bool outerface,
200  bool ignoreocclusion,bool inlcrlspace=true,
201  BufferString* topbotstr=0 ) const;
202 
203  void setMoreObjectsToDoHint(bool yn);
204  bool getMoreObjectsToDoHint() const;
205 
206  void selectPosModeManipObj(int selid);
207 
208  void fillPar(IOPar&) const;
209  virtual bool usePar(const IOPar&);
210 
211  static const char* sKeyZStretch();
212 
213 protected:
214  ~Scene();
215 
216  void setup();
217  void updateAnnotationText();
218  void updateTransforms(const TrcKeyZSampling&);
219  void mouseCB(CallBacker*);
220  void keyPressCB(CallBacker*);
221  visBase::MarkerSet* createMarkerSet() const;
222  void mouseCursorCB(CallBacker*);
223  static const Color& cDefaultMarkerColor();
224 
225  void togglePosModeManipObjSel();
226  void selChangeCB(CallBacker*);
227 
231 
233 
237 
239 
245 
248  int getImageFromPar(const IOPar&,const char*,
250 
257 
259 
261  float zscale_;
266 
268  bool usepar_;
271 
272  static const char* sKeyShowAnnot();
273  static const char* sKeyShowScale();
274  static const char* sKeyShowGrid();
275  static const char* sKeyAnnotFont();
276  static const char* sKeyAnnotColor();
277  static const char* sKeyMarkerColor();
278  static const char* sKeyShowCube();
279  static const char* sKeyZAxisTransform();
280  static const char* sKeyAppAllowShading();
281  static const char* sKeyTopImageID();
282  static const char* sKeyBotImageID();
283 };
284 
285 } // namespace visSurvey
Definition: visobject.h:32
#define mExpClass(module)
Definition: commondefs.h:157
Definition: trckeyvalue.h:25
Coord3 xytmousepos_
Definition: vissurvscene.h:251
virtual int getFirstIdx(int id) const
RefMan< visBase::Transformation > utm2disptransform_
Definition: vissurvscene.h:236
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
Selector< Coord3 > * coordselector_
Definition: vissurvscene.h:243
Definition of a mouse cursor, can be either a predefined shape (from the enum, or a file...
Definition: mousecursor.h:24
visBase::Annotation * annot_
Definition: vissurvscene.h:240
A lock of a type that (hopefully) suits your needs. To use it, you need the Locker class...
Definition: threadlock.h:51
visBase::SceneColTab * scenecoltab_
Definition: vissurvscene.h:244
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
BufferString mouseposval_
Definition: vissurvscene.h:253
const MouseEvent & getMouseEvent() const
Definition: vissurvscene.h:135
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
bool spacebarwaspressed_
Definition: vissurvscene.h:230
DataObject is the base class off all objects that are used in Visualization and ought to be shared in...
Definition: visdata.h:59
Notifier< Scene > sceneboundingboxupdated
Definition: vissurvscene.h:127
Keyboard event.
Definition: keyboardevent.h:22
visBase::PolygonSelection * polyselector_
Definition: vissurvscene.h:242
IOPar & infopar_
Definition: vissurvscene.h:256
Definition: uistring.h:88
visBase::PolygonSelection * getPolySelection()
Definition: vissurvscene.h:117
Data needed to make an actual font.
Definition: fontdata.h:18
Used for displaying a polyline, preview for a random line created throught well path.
Definition: visarrowdisplay.h:18
visBase::SceneColTab * getSceneColTab()
Definition: vissurvscene.h:120
ZAxisTransform * datatransform_
Definition: vissurvscene.h:238
Class to help setup a callback handling.
Definition: notify.h:121
3D point or vector
Definition: commontypes.h:57
RefMan< visBase::Transformation > inlcrlscale_
Definition: vissurvscene.h:235
const MouseCursor * mousecursor_
Definition: vissurvscene.h:255
void removeAll()
MouseEvent mouseevent_
Definition: vissurvscene.h:263
Definition: vispolygonselection.h:37
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
Class that can execute a task.
Definition: task.h:193
Notifier< Scene > mouseposchange
Definition: vissurvscene.h:123
Threads::Lock updatelock_
Definition: vissurvscene.h:270
#define mVisTrans
Definition: visdata.h:25
TrcKey mousetrckey_
Definition: vissurvscene.h:252
Notifier< Scene > mousecursorchange
Definition: vissurvscene.h:124
const KeyboardEvent & getKeyboardEvent() const
Definition: vissurvscene.h:134
visBase::TopBotImage * topimg_
Definition: vissurvscene.h:246
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:32
Notifier< Scene > keypressed
Definition: vissurvscene.h:125
KeyboardEvent kbevent_
Definition: vissurvscene.h:262
Notifier< Scene > mouseclicked
Definition: vissurvscene.h:126
float zscale_
Definition: vissurvscene.h:261
Database for 3D objects.
Definition: vissurvscene.h:74
int posmodemanipdeselobjid_
Definition: vissurvscene.h:229
RefMan< visBase::Transformation > inlcrlrotation_
Definition: vissurvscene.h:234
Interface for classes that select on basis of a key.
Definition: selector.h:23
TrcKeyZSampling tkzs_
Definition: vissurvscene.h:264
TypeSet< int > hoveredposmodemanipobjids_
Definition: vissurvscene.h:228
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
const TrcKeyZSampling & getTrcKeyZSampling() const
Definition: vissurvscene.h:101
RefMan< visBase::Transformation > tempzstretchtrans_
Definition: vissurvscene.h:232
virtual int getFirstIdx(int did) const
Definition: vissurvscene.h:91
Definition: visannot.h:40
bool usepar_
Definition: vissurvscene.h:268
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
ZDomain::Info * zdomaininfo_
Definition: vissurvscene.h:260
Definition: visscenecoltab.h:25
static uiHor3DInterpol * create(uiParent *)
TrcKeyZSampling annotscale_
Definition: vissurvscene.h:265
Definition: vistopbotimage.h:26
BufferString mouseposstr_
Definition: vissurvscene.h:254
bool ctshownusepar_
Definition: vissurvscene.h:267
float curzstretch_
Definition: vissurvscene.h:258
Definition: visevent.h:40
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
Annotation is a simple wireframe box with text on its axis.
Definition: visannot.h:50
visBase::TopBotImage * botimg_
Definition: vissurvscene.h:247
#define mCreateDataObj(clss)
Definition: visdata.h:210
Represents a unique trace position in one of the surveys that OpendTect is managing.
Definition: trckey.h:26
Base class for z-axis transforms.
Definition: zaxistransform.h:35
MarkerSet is a set of basic pickmarker with a constant size on screen. Size and shape are settable...
Definition: vismarkerset.h:33
Definition: mouseevent.h:72
visBase::MarkerSet * markerset_
Definition: vissurvscene.h:241
bool moreobjectstodo_
Definition: vissurvscene.h:269
Information of z-domain.
Definition: zdomain.h:96
Definition: zdomain.h:18

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