OpendTect  6.3
vishorizondisplay.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 "visemobjdisplay.h"
16 #include "coltabmapper.h"
17 #include "coltabsequence.h"
18 #include "factory.h"
19 #include "uistring.h"
20 
21 namespace visBase
22 {
23  class HorizonSection;
24  class HorizonTextureHandler;
25  class MarkerSet;
26  class PointSet;
27  class TextureChannel2RGBA;
28  class VertexShape;
29  class PolyLine;
30 }
31 
32 
33 namespace visSurvey
34 {
35 
38 
39  friend class HorizonPathIntersector;
40 
41 public:
45  "HorizonDisplay",
46  toUiString(sFactoryKeyword()))
47 
48  void setDisplayTransformation(const mVisTrans*);
49  void setSceneEventCatcher(visBase::EventCatcher*);
50 
51  void enableTextureInterpolation(bool);
53  { return enabletextureinterp_; }
55  { return true; }
56 
57  bool setZAxisTransform(ZAxisTransform*,TaskRunner*);
58 
59  visBase::Material* getMaterial();
60  void setIntersectLineMaterial(visBase::Material*);
61 
62  bool setEMObject(const EM::ObjectID&,TaskRunner*);
63  bool updateFromEM(TaskRunner*);
64  void updateFromMPE();
65 
66  StepInterval<int> geometryRowRange() const;
67  StepInterval<int> geometryColRange() const;
68  visBase::HorizonSection* getHorizonSection(const EM::SectionID&);
69  TypeSet<EM::SectionID> getSectionIDs() const { return sids_; }
70 
71  void useTexture(bool yn,bool trigger=false);
72  bool usesTexture() const;
73  bool showsTexture() const;
74  bool canShowTexture() const;
75 
76  void setOnlyAtSectionsDisplay(bool yn);
77  bool displayedOnlyAtSections() const;
78 
79  void displaySurfaceData(int attrib,int auxdatanr);
80 
81  virtual bool canHaveMultipleAttribs() const;
82 
83  virtual bool canHaveMultipleTextures() const { return true; }
84  virtual int nrTextures(int attrib) const;
85  virtual void selectTexture(int attrib,int textureidx);
86  virtual int selectedTexture(int attrib) const;
87 
88  SurveyObject::AttribFormat getAttributeFormat(int attrib) const;
90  { return Both2DAnd3D; }
91 
92  int nrAttribs() const;
93  bool addAttrib();
94  bool canAddAttrib(int nrattribstoadd=1) const;
95  bool removeAttrib(int attrib);
96  bool canRemoveAttrib() const;
97  bool swapAttribs(int attrib0,int attrib1);
98  void setAttribTransparency(int,unsigned char);
99  unsigned char getAttribTransparency(int) const;
100  void enableAttrib(int attrib,bool yn);
101  bool isAttribEnabled(int attrib) const;
102  bool hasSingleColorFallback() const { return true; }
103  Color getColor() const;
104 
105  void allowShading(bool);
106  const Attrib::SelSpec* getSelSpec(int channel,int version=0) const;
107  const TypeSet<Attrib::SelSpec>* getSelSpecs(int attrib) const;
108  void setSelSpecs(int attrib,
109  const TypeSet<Attrib::SelSpec>&);
110  void setDepthAsAttrib(int);
111  void setDisplayDataPackIDs(int attrib,
112  const TypeSet<DataPack::ID>&);
113  DataPack::ID getDataPackID(int attrib) const;
114  DataPack::ID getDisplayedDataPackID(int attrib) const;
116  { return DataPackMgr::FlatID(); }
117 
118  bool allowMaterialEdit() const { return true; }
119  bool hasColor() const { return true; }
120  bool usesColor() const;
121 
122  EM::SectionID getSectionID(int visid) const;
123 
124  void getRandomPos(DataPointSet&,TaskRunner*) const;
125  void getRandomPosCache(int,DataPointSet&) const;
126  void setRandomPosData( int,const DataPointSet*,
127  TaskRunner*);
128 
129  void setLineStyle(const OD::LineStyle&);
132  bool hasStoredAttrib(int attrib) const;
133  bool hasDepth(int attrib) const;
134 
135  int nrResolutions() const;
136  BufferString getResolutionName(int) const;
137  int getResolution() const;
138  bool displaysSurfaceGrid() const;
139  void displaysSurfaceGrid(bool);
140  void setResolution(int,TaskRunner*);
143  bool allowsPicks() const { return true; }
145  IOPar& i ) const
146  { return EMObjectDisplay::getMousePosInfo(e,i);}
147  void getMousePosInfo(const visBase::EventInfo& pos,
148  Coord3&,
149  BufferString& val,
150  BufferString& info) const;
151  float calcDist(const Coord3&) const;
152  float maxDist() const;
153 
154  const ColTab::Sequence& getColTabSequence(int attr) const;
155  bool canSetColTabSequence() const;
156  void setColTabSequence(int attr,
157  const ColTab::Sequence&,TaskRunner*);
158  const ColTab::Mapper& getColTabMapper(int) const;
159  void setColTabMapper(int,const ColTab::Mapper&,
160  TaskRunner*);
161 
162  Coord3 getTranslation() const;
163  void setTranslation(const Coord3&);
164 
165  bool setChannels2RGBA(visBase::TextureChannel2RGBA*);
166  visBase::TextureChannel2RGBA* getChannels2RGBA();
167  const visBase::TextureChannel2RGBA* getChannels2RGBA() const;
168 
169  bool canBDispOn2DViewer() const { return true; }
170  bool isVerticalPlane() const { return false;}
171 
172  void setAttribShift(int channel,
173  const TypeSet<float>& shifts);
177  const ObjectSet<visBase::VertexShape>& getIntersectionLines() const;
178 
179  void displayIntersectionLines(bool);
180  bool displaysIntersectionLines() const;
181  const visBase::HorizonSection* getSection(int id) const;
182 
183  static HorizonDisplay* getHorizonDisplay(const DBKey&);
184 
185  void doOtherObjectsMoved(
187  int whichobj );
188  virtual void setPixelDensity(float);
189 
190  void setSectionDisplayRestore(bool);
191  BufferString getSectionName(int secidx) const;
192 
193  void selectParent(const TrcKey&);
194  void selectChildren();
195  void showParentLine(bool);
196  void showSelections(bool);
197  void showLocked(bool);
198  bool lockedShown() const;
199  virtual void clearSelections();
200  void updateAuxData();
201 
202  void showPosAttrib(int attr,bool yn);
203 
204  void fillPar(IOPar&) const;
205  bool usePar(const IOPar&);
206 
207 private:
208  ~HorizonDisplay();
209  void removeEMStuff();
210 
211  EM::PosID findClosestNode(const Coord3&) const;
212  void createDisplayDataPacks(
213  int attrib,const DataPointSet*);
214 
215  void removeSectionDisplay(const EM::SectionID&);
216  visBase::VisualObject* createSection(const EM::SectionID&) const;
217  bool addSection(const EM::SectionID&,TaskRunner*);
218  void emChangeCB(CallBacker*);
219  int getChannelIndex(const char* nm) const;
220  void updateIntersectionLines(
222  int whichobj );
223  void updateSectionSeeds(
225  int whichobj );
226  void otherObjectsMoved(
228  int whichobj );
229  void updateSingleColor();
230 
231  void calculateLockedPoints();
232  void initSelectionDisplay(bool erase);
233  virtual void updateSelections();
234  void updateLockedPointsColor();
235  void handleEmChange(const EM::EMObjectCallbackData&);
239 
243 
245  {
247  ~IntersectionData();
248  void addLine(const TypeSet<Coord3>&);
249  void clear();
250 
251  void setPixelDensity(float);
252  void setDisplayTransformation(const mVisTrans*);
253  void updateDataTransform(const TrcKeyZSampling&,
254  ZAxisTransform*);
255  void setSceneEventCatcher(visBase::EventCatcher*);
256  void setMaterial(visBase::Material*);
257  RefMan<visBase::VertexShape> setLineStyle(const OD::LineStyle&);
258  //Returns old line if replaced
259 
260 
264  int voiid_;
265  int objid_;
266  };
267 
268  IntersectionData* getOrCreateIntersectionData(
271 
272  void traverseLine(const TrcKeyPath&,
273  const TypeSet<Coord>&,
274  const Interval<float>& zrg,
276  IntersectionData&) const;
279  void drawHorizonOnZSlice(const TrcKeyZSampling&,
280  const EM::SectionID&,
281  IntersectionData&) const;
282 
283  bool isValidIntersectionObject(
285  int& objidx,int objid) const;
291  //One per object we intersect with
292 
295 
300 
303 
307 
311 
320  bool showlock_;
322 
326 
328 
329  static const char* sKeyTexture();
330  static const char* sKeyShift();
331  static const char* sKeyResolution();
332  static const char* sKeyRowRange();
333  static const char* sKeyColRange();
334  static const char* sKeyIntersectLineMaterialID();
335  static const char* sKeySurfaceGrid();
336  static const char* sKeySectionID();
337  static const char* sKeyZValues();
338 };
339 
340 } // namespace visSurvey
Definition: visobject.h:32
bool usestexture_
Definition: vishorizondisplay.h:308
od_int16 SectionID
Definition: emposid.h:23
#define mExpClass(module)
Definition: commondefs.h:157
od_int32 ObjectID
Definition: emposid.h:22
bool showlock_
Definition: vishorizondisplay.h:320
TypeSet< EM::SectionID > getSectionIDs() const
Definition: vishorizondisplay.h:69
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
Definition: vishorizonsection.h:45
ZAxisTransform * zaxistransform_
Definition: vishorizondisplay.h:263
int voiid_
Definition: vishorizondisplay.h:264
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
Set of data points with group selection.
Definition: datapointset.h:47
TypeSet< ConstRefMan< ColTab::Mapper > > coltabmappers_
Definition: vishorizondisplay.h:304
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
A series of color control points able to give an (interpolated) color for every position [0...
Definition: coltabsequence.h:37
ObjectSet< visBase::HorizonTextureHandler > oldhortexhandlers_
Definition: vishorizondisplay.h:327
Is an identifier for each position in the earthmodel.
Definition: emposid.h:35
bool hasSingleColorFallback() const
Definition: vishorizondisplay.h:102
bool enabletextureinterp_
Definition: vishorizondisplay.h:306
TypeSet< BufferString > secnames_
Definition: vishorizondisplay.h:241
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
Definition: draw.h:119
ObjectSet< TypeSet< Attrib::SelSpec > > as_
Definition: vishorizondisplay.h:312
Definition: vispointset.h:23
ObjectSet< visBase::HorizonSection > sections_
Definition: vishorizondisplay.h:240
virtual bool canHaveMultipleTextures() const
Definition: vishorizondisplay.h:83
void clear(std::ios &)
ObjectSet< TypeSet< float > > shifts_
Definition: vishorizondisplay.h:316
#define mDefaultFactoryInstantiation(baseclss, clss, keywrd, usernm)
Definition: factory.h:287
TypeSet< ConstRefMan< ColTab::Sequence > > coltabsequences_
Definition: vishorizondisplay.h:305
visBase::Material * intersectionlinematerial_
Definition: vishorizondisplay.h:294
BoolTypeSet enabled_
Definition: vishorizondisplay.h:314
Maps data values to color sequence positions: [0,1].
Definition: coltabmapper.h:33
Used for displaying a polyline, preview for a random line created throught well path.
Definition: visarrowdisplay.h:18
bool allowshading_
Definition: vishorizondisplay.h:236
static ID FlatID()
Flat (N1xN2) data: 4.
Definition: vistexturechannel2rgba.h:33
visBase::PointSet * selections_
Definition: vishorizondisplay.h:296
ManagedObjectSet< IntersectionData > intersectiondata_
Definition: vishorizondisplay.h:290
visBase::VertexShape * parentline_
Definition: vishorizondisplay.h:299
bool displayintersectionlines_
Definition: vishorizondisplay.h:318
Set of pointers to objects.
Definition: commontypes.h:28
Definition: groupedid.h:40
int curtextureidx_
Definition: vishorizondisplay.h:310
Definition: commontypes.h:35
3D point or vector
Definition: commontypes.h:57
bool isVerticalPlane() const
Definition: vishorizondisplay.h:170
TypeSet< StepInterval< int > > olddisplayedcolranges_
Definition: vishorizondisplay.h:325
Definition: vishorizondisplay.h:36
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
StepInterval< int > parrowrg_
Definition: vishorizondisplay.h:301
Class that can execute a task.
Definition: task.h:193
bool canEnableTextureInterpolation() const
Definition: vishorizondisplay.h:54
char resolution_
Definition: vishorizondisplay.h:309
Threads::Lock updatelock_
Definition: vishorizondisplay.h:321
#define mVisTrans
Definition: visdata.h:25
TypeSet< EM::SectionID > sids_
Definition: vishorizondisplay.h:242
TypeSet< int > curshiftidx_
Definition: vishorizondisplay.h:315
bool validtexture_
Definition: vishorizondisplay.h:317
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:32
Pol2D3D
Definition: commontypes.h:35
bool allowMaterialEdit() const
Definition: vishorizondisplay.h:118
Definition: vismaterial.h:36
Pol2D3D getAllowedDataType() const
Definition: vishorizondisplay.h:89
Coord3 translationpos_
Definition: vishorizondisplay.h:238
mVisTrans * translation_
Definition: vishorizondisplay.h:237
bool allowsPicks() const
Definition: vishorizondisplay.h:143
uiString toUiString(const DBKey &ky)
Definition: dbkey.h:117
float maxintersectionlinethickness_
Definition: vishorizondisplay.h:293
bool canBDispOn2DViewer() const
Definition: vishorizondisplay.h:169
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
bool hasColor() const
Definition: vishorizondisplay.h:119
visBase::VertexShape * line_
Definition: vishorizondisplay.h:261
bool textureInterpolationEnabled() const
Definition: vishorizondisplay.h:52
void getMousePosInfo(const visBase::EventInfo &e, IOPar &i) const
Definition: vishorizondisplay.h:144
Definition: visannot.h:40
StepInterval< int > parcolrg_
Definition: vishorizondisplay.h:302
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
visBase::PointSet * sectionlockedpts_
Definition: vishorizondisplay.h:298
bool displaysurfacegrid_
Definition: vishorizondisplay.h:319
int objid_
Definition: vishorizondisplay.h:265
EM object callback data.
Definition: emobject.h:42
Base class for all &#39;Display&#39; objects.
Definition: vissurvobj.h:54
Definition: visevent.h:40
AttribFormat
Definition: vissurvobj.h:178
Specifies an attribute selection (ID or output number of NN).
Definition: attribsel.h:43
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
Definition: vishorizondisplay.h:244
visBase::PointSet * lockedpts_
Definition: vishorizondisplay.h:297
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
Definition: groupedid.h:41
Represents a unique trace position in one of the surveys that OpendTect is managing.
Definition: trckey.h:26
TypeSet< EM::SectionID > oldsectionids_
Definition: vishorizondisplay.h:323
TypeSet< StepInterval< int > > olddisplayedrowranges_
Definition: vishorizondisplay.h:324
Definition: visshape.h:73
Base class for z-axis transforms.
Definition: zaxistransform.h:35
ObjectSet where the objects contained are owned by this set.
Definition: manobjectset.h:49
virtual DataPackMgr::ID getDataPackMgrID() const
Definition: vishorizondisplay.h:115
MarkerSet is a set of basic pickmarker with a constant size on screen. Size and shape are settable...
Definition: vismarkerset.h:33
Definition: visevent.h:83
visBase::MarkerSet * markerset_
Definition: vishorizondisplay.h:262
ObjectSet< TypeSet< DataPack::ID > > dispdatapackids_
Definition: vishorizondisplay.h:313
Definition: ptrman.h:200

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