OpendTect  6.6
viscoord.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  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 -*/
14 #include "visbasemod.h"
15 #include "callback.h"
16 #include "positionlist.h"
17 #include "thread.h"
18 #include "visdata.h"
19 #include "visosg.h"
20 
21 
22 class UTMPosition;
23 
24 namespace Geometry { class PosIdHolder; }
25 
26 namespace osg { class Array; }
27 
28 
29 namespace visBase
30 {
31 class Transformation;
32 class Normals;
33 
34 class CoordinatesOsgImpl;
35 
45 {
46 public:
47 
49  static Coordinates* create()
51  friend class CoordinatesBuilder;
52  friend class CoordListAdapter;
53 
54  void setDisplayTransformation(const mVisTrans*);
60  const mVisTrans* getDisplayTransformation() const;
61 
62  void copyFrom(const Coordinates&);
63 
64  int nextID(int previd) const;
67  int size(bool includedelete=false) const;
68  int addPos(const Coord3&);
69  Coord3 getPos(int,bool scenespace=false) const;
70  bool isDefined(int) const;
71  void setPos(int,const Coord3&);
72  void setPositions(const TypeSet<Coord3>&);
73  void setPositions(const Coord3*,int sz,int start,
74  bool scenespace=false);
75  void insertPos(int,const Coord3&);
76  void removePos(int, bool keepidxafter=true );
77  void removeAfter(int);
78  void setAllPositions(const Coord3& pos,int sz,int start);
79 
80  void setAllZ(const float*,int sz,bool dotransf);
81 
82  osg::Array* osgArray() { return osgcoords_; }
83  const osg::Array* osgArray() const { return osgcoords_; }
84 
85  void setEmpty();
86  bool isEmpty() const { return size()==0; }
87  void dirty() const;
88 
89 protected:
90 
92 
93  void setPosWithoutLock(int, const Coord3&,bool scenespace);
96  int getFreeIdx();
100 
104 
105  osg::Array* osgcoords_;
106  friend class SetOrGetCoordinates;
107 };
108 
109 
111 {
112 public:
114 
115  virtual int size() const;
116  virtual bool setSize(int,bool cpdata);
117 
118  virtual void setCoord(int,const float*);
119  virtual void getCoord(int,float*) const;
120 
121  virtual void setNormal(int,const float*);
122  virtual void getNormal(int,float*) const;
123 
124  virtual void setTCoord(int,const float*);
125  virtual void getTCoord(int,float*) const;
126 
127 protected:
129 
132 };
133 
134 
139 {
140 public:
142 
143  int nextID(int) const;
144  int add(const Coord3&);
145  Coord3 get(int) const;
146  void set(int,const Coord3&);
147  void remove(int);
148  bool isDefined(int) const;
149  void addValue(int,const Coord3&);
150  int size() const { return coords_.size(); }
151  void remove(const TypeSet<int>&);
152 
153  Coordinates* getCoordinates() { return &coords_; }
154 
155 protected:
156  virtual ~CoordListAdapter();
158 
159 };
160 
161 };
162 
visBase::CoinFloatVertexAttribList::CoinFloatVertexAttribList
CoinFloatVertexAttribList(Coordinates &, Normals *)
visosg.h
Coord3
A cartesian coordinate in 3D space.
Definition: coord.h:72
visBase::CoinFloatVertexAttribList::getCoord
virtual void getCoord(int, float *) const
visBase::CoinFloatVertexAttribList::~CoinFloatVertexAttribList
~CoinFloatVertexAttribList()
visBase::CoinFloatVertexAttribList::setCoord
virtual void setCoord(int, const float *)
Threads::Mutex
Is a lock that allows a thread to have exlusive rights to something.
Definition: thread.h:45
visBase::Coordinates::isEmpty
bool isEmpty() const
Definition: viscoord.h:86
visBase::Coordinates::setEmpty
void setEmpty()
visBase::CoordListAdapter::remove
void remove(const TypeSet< int > &)
May contain duplicates.
visBase::CoordListAdapter::remove
void remove(int)
visBase::CoinFloatVertexAttribList::normals_
Normals * normals_
Definition: viscoord.h:130
visBase::CoordListAdapter::CoordListAdapter
CoordListAdapter(Coordinates &)
Geometry
Definition: arraytesselator.h:21
visBase
Definition: visannot.h:43
FloatVertexAttribList
Base class for vertex attribute list.
Definition: positionlist.h:24
visBase::CoordListAdapter::size
int size() const
Definition: viscoord.h:150
visBase::CoordListAdapter::getCoordinates
Coordinates * getCoordinates()
Definition: viscoord.h:153
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
visBase::Coordinates::getFreeIdx
int getFreeIdx()
visBase::CoinFloatVertexAttribList::setTCoord
virtual void setTCoord(int, const float *)
osg
Open Scene Graph.
Definition: visannot.h:29
visBase::DataObject
DataObject is the base class off all objects that are used in Visualization and ought to be shared in...
Definition: visdata.h:63
visBase::Coordinates::~Coordinates
~Coordinates()
visBase::CoordListAdapter::get
Coord3 get(int) const
callback.h
visBase::CoordListAdapter
Definition: viscoord.h:139
visBase::Coordinates::osgArray
const osg::Array * osgArray() const
Definition: viscoord.h:83
visBase::CoordListAdapter::isDefined
bool isDefined(int) const
visBase::Coordinates::dirty
void dirty() const
visBase::Coordinates::mutex_
Threads::Mutex mutex_
Definition: viscoord.h:102
visBase::CoinFloatVertexAttribList::getTCoord
virtual void getTCoord(int, float *) const
visBase::CoordListAdapter::set
void set(int, const Coord3 &)
visBase::CoinFloatVertexAttribList::setSize
virtual bool setSize(int, bool cpdata)
visBase::Coordinates::transformation_
const visBase::Transformation * transformation_
Definition: viscoord.h:103
Notifier
Class to help setup a callback handling.
Definition: notify.h:126
visBase::Coordinates::setPosWithoutLock
void setPosWithoutLock(int, const Coord3 &, bool scenespace)
visBase::Coordinates::unusedcoords_
TypeSet< int > unusedcoords_
Definition: viscoord.h:101
mVisTrans
#define mVisTrans
Definition: visdata.h:28
visdata.h
visBase::CoordListAdapter::add
int add(const Coord3 &)
Return new id, or -1 if unsuccessful.
visBase::Coordinates::getPositions
void getPositions(TypeSet< Coord3 > &) const
visBase::CoordListAdapter::coords_
Coordinates & coords_
Definition: viscoord.h:157
visBase::CoinFloatVertexAttribList::size
virtual int size() const
positionlist.h
visBase::CoordListAdapter::~CoordListAdapter
virtual ~CoordListAdapter()
mCreateDataObj
#define mCreateDataObj(clss)
Definition: visdata.h:214
visBase::CoinFloatVertexAttribList::setNormal
virtual void setNormal(int, const float *)
visBase::Coordinates::create
static Coordinates * create()
Definition: viscoord.h:49
visBase::CoinFloatVertexAttribList::getNormal
virtual void getNormal(int, float *) const
Coord3List
Interface for a list of Coord3 with automatically maintained IDs.
Definition: positionlist.h:72
visBase::CoordListAdapter::nextID
int nextID(int) const
visBase::Coordinates
A set of coordinates. The coordinates will be transformed by the transformation before given to Coin,...
Definition: viscoord.h:45
visBase::Coordinates::osgcoords_
osg::Array * osgcoords_
Definition: viscoord.h:105
thread.h
visBase::CoinFloatVertexAttribList::coords_
Coordinates & coords_
Definition: viscoord.h:131
visBase::Normals
Definition: visnormals.h:32
visBase::CoinFloatVertexAttribList
Definition: viscoord.h:111
visBase::Coordinates::change
Notifier< Coordinates > change
Definition: viscoord.h:48
visBase::CoordListAdapter::addValue
void addValue(int, const Coord3 &)
Adds value to existing value at id.
TypeSet
Sets of (small) copyable elements.
Definition: commontypes.h:29

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