OpendTect  6.3
visemobjdisplay.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: May 2004
9 ________________________________________________________________________
10 
11 -*/
12 
13 
14 #include "vissurveymod.h"
15 #include "bufstringset.h"
16 #include "draw.h"
17 #include "emposid.h"
18 #include "visobject.h"
19 #include "vissurvobj.h"
20 #include "emobject.h"
21 
22 class ZAxisTransform;
23 
24 namespace EM { class EMManager; class EMObject; }
25 namespace Geometry { class Element; }
26 namespace visBase
27 {
28  class DataObjectGroup;
29  class DrawStyle;
30  class TextureChannel2RGBA;
31  class MarkerSet;
32 }
33 
34 namespace visSurvey
35 {
37 {
40 
42  {
43  Threads::Locker locker( lock_ );
44  emcallbackdata_ += data;
45  }
46 
47  const EM::EMObjectCallbackData* getCallBackData( int idx ) const
48  {
49  if ( idx<emcallbackdata_.size() )
50  return emcallbackdata_[idx];
51  return 0;
52  }
53 
54  void clearData()
55  {
56  Threads::Locker locker( lock_ );
57  deepErase( emcallbackdata_ );
58  }
59 
60  int size() const { return emcallbackdata_.size(); }
61 };
62 
63 
64 class MPEEditor;
65 class EdgeLineSetDisplay;
66 
67 
69  , public visSurvey::SurveyObject
71 public:
72  const mVisTrans* getDisplayTransformation() const;
73  void setDisplayTransformation(const mVisTrans*);
74  void setSceneEventCatcher( visBase::EventCatcher* );
76  { return false; }
78  { return zaxistransform_; }
79 
80  virtual bool setEMObject(const EM::ObjectID&,TaskRunner*);
81  EM::ObjectID getObjectID() const;
82  virtual bool updateFromEM(TaskRunner*);
83  virtual void updateFromMPE();
84 
85  virtual void showPosAttrib( int attr, bool yn);
88  bool showsPosAttrib( int attr ) const;
92  const uiString& errMsg() const { return errmsg_; }
93 
94  DBKey getDBKey() const;
95  BufferStringSet displayedSections() const;
96 
97  virtual void setOnlyAtSectionsDisplay(bool yn);
98  virtual bool displayedOnlyAtSections() const;
99 
100  virtual void turnOnSelectionMode(bool);
101  bool allowMaterialEdit() const { return true; }
102  const OD::LineStyle* lineStyle() const;
103  void setLineStyle(const OD::LineStyle&);
104 
105  bool hasColor() const;
106  void setColor(Color);
107  Color getColor() const;
108 
109  bool allowsPicks() const { return true; }
110 
111  void getObjectInfo(BufferString&) const;
113  IOPar& iop ) const
114  { return SurveyObject::getMousePosInfo(ei,iop);}
115  virtual void getMousePosInfo(const visBase::EventInfo&,
116  Coord3&,
117  BufferString& val,
118  BufferString& info) const;
119  MPEEditor* getEditor();
120  void enableEditing(bool yn);
121  bool isEditingEnabled() const;
122 
123  virtual EM::SectionID getSectionID(int visid) const = 0;
124  EM::SectionID getSectionID(const TypeSet<int>* path) const;
125 
126  EM::PosID getPosAttribPosID(int attrib,
127  const TypeSet<int>& path,
128  const Coord3& clickeddisplaypos) const;
129 
130  virtual bool canRemoveSelection() const { return true; }
131  virtual bool removeSelections(TaskRunner*);
132  virtual void clearSelections();
133  virtual void updateAuxData() {}
134 
135  virtual bool setChannels2RGBA(visBase::TextureChannel2RGBA*);
136  virtual visBase::TextureChannel2RGBA* getChannels2RGBA();
137 
138  virtual void fillPar(IOPar&) const;
139  virtual bool usePar(const IOPar&);
140 
141  NotifierAccess* getMovementNotifier() { return &hasmoved; }
143 
144  void lock(bool yn);
145  NotifierAccess* getLockNotifier() { return &locknotifier;}
146  virtual void doOtherObjectsMoved(
148  int whichobj ) =0;
149  virtual void setPixelDensity(float dpi);
150  const visBase::MarkerSet* getSeedMarkerSet() const;
151 
152 protected:
153  EMObjectDisplay();
154  ~EMObjectDisplay();
155  virtual void removeEMStuff();
156 
157  virtual void removeSectionDisplay(const EM::SectionID&) = 0;
158  virtual bool addSection(const EM::SectionID&,TaskRunner*)=0;
159 
160  virtual EM::PosID findClosestNode(const Coord3&) const;
161  virtual void emChangeCB(CallBacker*);
162  virtual void clickCB(CallBacker*);
163  virtual void updatePosAttrib(int attrib);
164  void polygonFinishedCB(CallBacker*);
165 
166  virtual void updateSelections();
167  virtual void handleEmChange(const EM::EMObjectCallbackData&);
168 
169 
172 
176 
178 
181 
186 
189  //set in usePar,
190  //should be nil when given
191  //to channels_.
192 
194 
196  mutable bool nontexturecolisset_;
201 
203  bool ctrldown_;
208 
209 
210 
211  static const char* sKeyEarthModelID();
212  static const char* sKeyResolution();
213  static const char* sKeyEdit();
214  static const char* sKeyOnlyAtSections();
215  static const char* sKeyLineStyle();
216  static const char* sKeySections();
217  static const char* sKeyPosAttrShown();
218 
219 
220 private:
221  void unSelectAll();
222  void updateLockedSeedsColor();
223 };
224 
225 } // namespace visSurvey
bool burstalertison_
Definition: visemobjdisplay.h:202
od_int16 SectionID
Definition: emposid.h:23
#define mExpClass(module)
Definition: commondefs.h:157
od_int32 ObjectID
Definition: emposid.h:22
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
Locks the lock, shutting out access from other threads if needed.
Definition: threadlock.h:83
EM::EMObject * emobject_
Definition: visemobjdisplay.h:183
A lock of a type that (hopefully) suits your needs. To use it, you need the Locker class...
Definition: threadlock.h:51
Definition: visemobjdisplay.h:68
TypeSet< EM::SubID > selectionids_
Definition: visemobjdisplay.h:206
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
Is an identifier for each position in the earthmodel.
Definition: emposid.h:35
MPEEditor * editor_
Definition: visemobjdisplay.h:187
Interface class for Notifier. See comments there.
Definition: notify.h:20
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
Definition: draw.h:119
TypeSet< int > parposattrshown_
Definition: visemobjdisplay.h:180
visBase::EventCatcher * eventcatcher_
Definition: visemobjdisplay.h:175
virtual void updateAuxData()
Definition: visemobjdisplay.h:133
Definition: visdrawstyle.h:30
Color nontexturecol_
Definition: visemobjdisplay.h:195
const EM::EMObjectCallbackData * getCallBackData(int idx) const
Definition: visemobjdisplay.h:47
NotifierAccess * getMovementNotifier()
Definition: visemobjdisplay.h:141
DBKey parmid_
Definition: visemobjdisplay.h:184
Definition: uistring.h:88
visBase::DrawStyle * drawstyle_
Definition: visemobjdisplay.h:197
Set of BufferString objects.
Definition: bufstringset.h:25
Used for displaying a polyline, preview for a random line created throught well path.
Definition: visarrowdisplay.h:18
Definition: vismpeeditor.h:46
ZAxisTransform * zaxistransform_
Definition: visemobjdisplay.h:174
Definition: vistexturechannel2rgba.h:33
Class to help setup a callback handling.
Definition: notify.h:121
size_type size() const
Definition: objectset.h:48
ObjectSet< visBase::MarkerSet > posattribmarkers_
Definition: visemobjdisplay.h:177
bool allowsPicks() const
Definition: visemobjdisplay.h:109
3D point or vector
Definition: commontypes.h:57
bool enableedit_
Definition: visemobjdisplay.h:199
VisualObjectImpl
Definition: visobject.h:123
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
Class that can execute a task.
Definition: task.h:193
#define mVisTrans
Definition: visdata.h:25
Manages the loaded/half loaded EM objects in OpendTect.
Definition: emmanager.h:42
const mVisTrans * transformation_
Definition: visemobjdisplay.h:173
EM::EMManager & em_
Definition: visemobjdisplay.h:182
virtual bool canRemoveSelection() const
Definition: visemobjdisplay.h:130
ObjectSet< Selector< Coord3 > > selectors_
Definition: visemobjdisplay.h:204
ObjectSet< const EM::EMObjectCallbackData > emcallbackdata_
Definition: visemobjdisplay.h:38
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
Notifier< EMObjectDisplay > locknotifier
Definition: visemobjdisplay.h:171
Definition: visannot.h:40
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
BufferString errmsg_
Definition: horizontracker.h:117
Base class for all EarthModel objects.
Definition: emobject.h:117
BufferStringSet parsections_
Definition: visemobjdisplay.h:185
void getMousePosInfo(const visBase::EventInfo &ei, IOPar &iop) const
Definition: visemobjdisplay.h:112
EM object callback data.
Definition: emobject.h:42
Earth Model objects like horizons, faults, fault-sticks and bodies.
Definition: embody.h:23
Base class for all &#39;Display&#39; objects.
Definition: vissurvobj.h:54
TypeSet< int > posattribs_
Definition: visemobjdisplay.h:179
const ZAxisTransform * getZAxisTransform() const
Definition: visemobjdisplay.h:77
Definition: visevent.h:40
bool allowMaterialEdit() const
Definition: visemobjdisplay.h:101
visBase::TextureChannel2RGBA * channel2rgba_
Definition: visemobjdisplay.h:188
bool ctrldown_
Definition: visemobjdisplay.h:203
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
Notifier< EMObjectDisplay > hasmoved
Definition: visemobjdisplay.h:170
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
EMChangeData emchangedata_
Definition: visemobjdisplay.h:207
Threads::Lock lock_
Definition: visemobjdisplay.h:39
virtual bool setZAxisTransform(ZAxisTransform *, TaskRunner *)
Definition: visemobjdisplay.h:75
Definition: visemobjdisplay.h:36
Base class for z-axis transforms.
Definition: zaxistransform.h:35
void clearData()
Definition: visemobjdisplay.h:54
Notifier< EMObjectDisplay > changedisplay
Definition: visemobjdisplay.h:142
bool restoresessupdate_
Definition: visemobjdisplay.h:200
bool nontexturecolisset_
Definition: visemobjdisplay.h:196
int size() const
Definition: visemobjdisplay.h:60
TypeSet< EM::SectionID > addsectionids_
Definition: visemobjdisplay.h:193
MarkerSet is a set of basic pickmarker with a constant size on screen. Size and shape are settable...
Definition: vismarkerset.h:33
Definition: arraytesselator.h:19
Definition: visevent.h:83
void addCallBackData(const EM::EMObjectCallbackData *data)
Definition: visemobjdisplay.h:41
bool displayonlyatsections_
Definition: visemobjdisplay.h:198
const uiString & errMsg() const
Definition: visemobjdisplay.h:92
void deepErase(ObjectSet< T > &os)
empty the ObjectSet deleting all objects pointed to.
Definition: objectset.h:122
NotifierAccess * getLockNotifier()
Definition: visemobjdisplay.h:145

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