OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ossimGeoAnnotationMultiPolyLineObject Class Reference

#include <ossimGeoAnnotationMultiPolyLineObject.h>

Inheritance diagram for ossimGeoAnnotationMultiPolyLineObject:
ossimGeoAnnotationObject ossimAnnotationObject ossimObject ossimReferenced

Public Member Functions

 ossimGeoAnnotationMultiPolyLineObject ()
 
 ossimGeoAnnotationMultiPolyLineObject (const vector< ossimPolyLine > &multiPolyLine, ossim_uint8 r=255, ossim_uint8 g=255, ossim_uint8 b=255, ossim_uint8 thickness=1)
 
 ossimGeoAnnotationMultiPolyLineObject (const ossimGeoAnnotationMultiPolyLineObject &rhs)
 
virtual ossimObjectdup () const
 
virtual void transform (ossimImageGeometry *projection)
 
virtual void applyScale (double x, double y)
 
virtual void draw (ossimRgbImage &anImage) const
 
virtual bool intersects (const ossimDrect &rect) const
 
virtual ossimAnnotationObjectgetNewClippedObject (const ossimDrect &rect) const
 
virtual std::ostream & print (std::ostream &out) const
 Generic print method. More...
 
virtual void getBoundingRect (ossimDrect &rect) const
 
virtual void addPoint (ossim_uint32 polygonIndex, const ossimGpt &pt)
 
virtual void setMultiPolyLine (const vector< ossimPolyLine > &multiPoly)
 
virtual void computeBoundingRect ()
 
virtual bool isPointWithin (const ossimDpt &imagePoint) const
 
virtual void setColor (ossim_uint8 r, ossim_uint8 g, ossim_uint8 b)
 
virtual void setThickness (ossim_uint8 thickness)
 
void setDatum (const ossimDatum *datum)
 
const ossimDatumgetDatum () const
 
const std::vector< ossimPolyLine > & getMultiPolyLine () const
 
std::vector< ossimPolyLine > & getMultiPolyLine ()
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 Saves the current state of this object. More...
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 Method to the load (recreate) the state of an object from a keyword list. More...
 
- Public Member Functions inherited from ossimGeoAnnotationObject
 ossimGeoAnnotationObject (unsigned char r=255, unsigned char g=255, unsigned char b=255, long thickness=1)
 
 ossimGeoAnnotationObject (const ossimGeoAnnotationObject &rhs)
 
- Public Member Functions inherited from ossimAnnotationObject
virtual ~ossimAnnotationObject ()
 
 ossimAnnotationObject (ossim_uint8 r=255, ossim_uint8 g=255, ossim_uint8 b=255, ossim_uint8 thickness=1)
 
virtual void applyScale (const ossimDpt &scale)
 
virtual ossimDrect getBoundingRect () const
 
void getColor (ossim_uint8 &r, ossim_uint8 &g, ossim_uint8 &b) const
 
ossim_uint8 getThickness () const
 
virtual ossimString getName () const
 
virtual void setName (const ossimString &name)
 
ossim_uint32 getId () const
 
virtual ossim_uint32 setId ()
 
- Public Member Functions inherited from ossimObject
 ossimObject ()
 
virtual ~ossimObject ()
 
virtual ossimString getShortName () const
 
virtual ossimString getLongName () const
 
virtual ossimString getDescription () const
 
virtual ossimString getClassName () const
 
virtual RTTItypeid getType () const
 
virtual bool canCastTo (ossimObject *obj) const
 
virtual bool canCastTo (const RTTItypeid &id) const
 
virtual bool canCastTo (const ossimString &parentClassName) const
 
virtual bool isEqualTo (const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
 
virtual void accept (ossimVisitor &visitor)
 
- Public Member Functions inherited from ossimReferenced
 ossimReferenced ()
 
 ossimReferenced (const ossimReferenced &)
 
ossimReferencedoperator= (const ossimReferenced &)
 
void ref () const
 increment the reference count by one, indicating that this object has another pointer which is referencing it. More...
 
void unref () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
void unref_nodelete () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
int referenceCount () const
 

Protected Member Functions

virtual ~ossimGeoAnnotationMultiPolyLineObject ()
 
void allocateProjectedPolyLine ()
 
- Protected Member Functions inherited from ossimGeoAnnotationObject
virtual ~ossimGeoAnnotationObject ()
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 

Protected Attributes

std::vector< ossimPolyLinetheMultiPolyLine
 
ossimDrect theBoundingRect
 
const ossimDatumtheDatum
 
ossimRefPtr< ossimAnnotationMultiPolyLineObjecttheProjectedPolyLineObject
 
- Protected Attributes inherited from ossimAnnotationObject
ossim_uint8 theRed
 
ossim_uint8 theGreen
 
ossim_uint8 theBlue
 
ossim_uint8 theThickness
 
ossimString theName
 
ossim_uint32 theId
 

Additional Inherited Members

- Static Public Member Functions inherited from ossimAnnotationObject
static ossim_uint32 getNextId ()
 
static void restIdCounter ()
 
- Static Protected Attributes inherited from ossimAnnotationObject
static ossim_uint32 theIdCounter = 0
 

Detailed Description

Definition at line 21 of file ossimGeoAnnotationMultiPolyLineObject.h.

Constructor & Destructor Documentation

◆ ossimGeoAnnotationMultiPolyLineObject() [1/3]

ossimGeoAnnotationMultiPolyLineObject::ossimGeoAnnotationMultiPolyLineObject ( )

Definition at line 23 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References allocateProjectedPolyLine(), ossimDrect::makeNan(), and theBoundingRect.

Referenced by dup().

24  :
30 {
33 }
void makeNan()
Definition: ossimDrect.h:388
ossimRefPtr< ossimAnnotationMultiPolyLineObject > theProjectedPolyLineObject
static ossimDatumFactory * instance()
ossimGeoAnnotationObject(unsigned char r=255, unsigned char g=255, unsigned char b=255, long thickness=1)

◆ ossimGeoAnnotationMultiPolyLineObject() [2/3]

ossimGeoAnnotationMultiPolyLineObject::ossimGeoAnnotationMultiPolyLineObject ( const vector< ossimPolyLine > &  multiPolyLine,
ossim_uint8  r = 255,
ossim_uint8  g = 255,
ossim_uint8  b = 255,
ossim_uint8  thickness = 1 
)

Definition at line 35 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References allocateProjectedPolyLine(), ossimDrect::makeNan(), and theBoundingRect.

41  :
42  ossimGeoAnnotationObject(r, g, b, thickness),
43  theMultiPolyLine(multiPoly),
47 {
50 }
void makeNan()
Definition: ossimDrect.h:388
ossimRefPtr< ossimAnnotationMultiPolyLineObject > theProjectedPolyLineObject
static ossimDatumFactory * instance()
ossimGeoAnnotationObject(unsigned char r=255, unsigned char g=255, unsigned char b=255, long thickness=1)

◆ ossimGeoAnnotationMultiPolyLineObject() [3/3]

ossimGeoAnnotationMultiPolyLineObject::ossimGeoAnnotationMultiPolyLineObject ( const ossimGeoAnnotationMultiPolyLineObject rhs)

◆ ~ossimGeoAnnotationMultiPolyLineObject()

ossimGeoAnnotationMultiPolyLineObject::~ossimGeoAnnotationMultiPolyLineObject ( )
protectedvirtual

Definition at line 67 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References theProjectedPolyLineObject.

68 {
70 }
ossimRefPtr< ossimAnnotationMultiPolyLineObject > theProjectedPolyLineObject

Member Function Documentation

◆ addPoint()

void ossimGeoAnnotationMultiPolyLineObject::addPoint ( ossim_uint32  polygonIndex,
const ossimGpt pt 
)
virtual

Definition at line 165 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References theMultiPolyLine, and theProjectedPolyLineObject.

167 {
168  if(polygonIndex < theMultiPolyLine.size())
169  {
170  theMultiPolyLine[polygonIndex].addPoint(pt);
171 
172  // we will have to reset the projected polygon
174  }
175 }
ossimRefPtr< ossimAnnotationMultiPolyLineObject > theProjectedPolyLineObject

◆ allocateProjectedPolyLine()

void ossimGeoAnnotationMultiPolyLineObject::allocateProjectedPolyLine ( )
protected

◆ applyScale()

void ossimGeoAnnotationMultiPolyLineObject::applyScale ( double  x,
double  y 
)
virtual

Implements ossimAnnotationObject.

Definition at line 72 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References ossimNotify(), and ossimNotifyLevel_NOTICE.

73 {
75  << "ossimGeoAnnotationPolyLineObject::applyScale NOT IMPLEMENTED!!!!"
76  << endl;
77 }
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ computeBoundingRect()

void ossimGeoAnnotationMultiPolyLineObject::computeBoundingRect ( )
virtual

◆ draw()

void ossimGeoAnnotationMultiPolyLineObject::draw ( ossimRgbImage anImage) const
virtual

Implements ossimAnnotationObject.

Definition at line 152 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References ossimAnnotationMultiPolyLineObject::draw(), theProjectedPolyLineObject, and ossimRefPtr< T >::valid().

153 {
155  {
157  }
158 }
virtual void draw(ossimRgbImage &anImage) const
bool valid() const
Definition: ossimRefPtr.h:75
ossimRefPtr< ossimAnnotationMultiPolyLineObject > theProjectedPolyLineObject

◆ dup()

ossimObject * ossimGeoAnnotationMultiPolyLineObject::dup ( ) const
virtual

◆ getBoundingRect()

void ossimGeoAnnotationMultiPolyLineObject::getBoundingRect ( ossimDrect rect) const
virtual

◆ getDatum()

const ossimDatum * ossimGeoAnnotationMultiPolyLineObject::getDatum ( ) const

Definition at line 230 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References theDatum.

231 {
232  return theDatum;
233 }

◆ getMultiPolyLine() [1/2]

const std::vector< ossimPolyLine > & ossimGeoAnnotationMultiPolyLineObject::getMultiPolyLine ( ) const

Definition at line 236 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References theMultiPolyLine.

237 {
238  return theMultiPolyLine;
239 }

◆ getMultiPolyLine() [2/2]

std::vector< ossimPolyLine > & ossimGeoAnnotationMultiPolyLineObject::getMultiPolyLine ( )

Definition at line 242 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References theMultiPolyLine.

243 {
244  return theMultiPolyLine;
245 }

◆ getNewClippedObject()

ossimAnnotationObject * ossimGeoAnnotationMultiPolyLineObject::getNewClippedObject ( const ossimDrect rect) const
virtual

Will allocate a new object that is clipped to the passed. in rect. Look at derived classes to see if the object is actually clipped or not. A new object is returned if it clips to the rect else NULL should be returned it doesn't clip.

Implements ossimAnnotationObject.

Definition at line 142 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References dup(), ossimNotify(), and ossimNotifyLevel_NOTICE.

144 {
146  << "ossimGeoAnnotationMultiPolyObject::getNewClippedObject "
147  << "NOT IMPLEMENTED" << endl;
148 
149  return (ossimAnnotationObject*)(dup());
150 }
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ intersects()

bool ossimGeoAnnotationMultiPolyLineObject::intersects ( const ossimDrect rect) const
virtual

Implements ossimAnnotationObject.

Definition at line 134 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References ossimNotify(), and ossimNotifyLevel_NOTICE.

135 {
137  << "ossimGeoAnnotationMultiPolyObject::intersects NOT IMPLEMENTED"
138  << endl;
139  return false;
140 }
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ isPointWithin()

bool ossimGeoAnnotationMultiPolyLineObject::isPointWithin ( const ossimDpt imagePoint) const
virtual

This method allows you to pick an object. It will return true or false if the point falls somewhere on an object. Look at derived classes for further information.

Reimplemented from ossimAnnotationObject.

Definition at line 195 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References ossimAnnotationMultiPolyLineObject::isPointWithin(), theProjectedPolyLineObject, and ossimRefPtr< T >::valid().

196 {
198  {
199  return theProjectedPolyLineObject->isPointWithin(imagePoint);
200  }
201 
202  return false;
203 }
bool valid() const
Definition: ossimRefPtr.h:75
virtual bool isPointWithin(const ossimDpt &imagePoint) const
ossimRefPtr< ossimAnnotationMultiPolyLineObject > theProjectedPolyLineObject

◆ loadState()

bool ossimGeoAnnotationMultiPolyLineObject::loadState ( const ossimKeywordlist kwl,
const char *  prefix = 0 
)
virtual

Method to the load (recreate) the state of an object from a keyword list.

Return true if ok or false on error.

Reimplemented from ossimGeoAnnotationObject.

Definition at line 271 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References ossimPolyLine::addPoint(), ossimString::c_str(), ossimPolyLine::clear(), ossimKeywordlist::find(), ossimKeywordlist::getNumberOfSubstringKeys(), ossimGeoAnnotationObject::loadState(), ossimPolyLine::size(), status, theMultiPolyLine, ossimString::toString(), x, and y.

273 {
274  //---
275  // Base class state must be called first to pick up colors...
276  //---
277  bool status = ossimGeoAnnotationObject::loadState(kwl, prefix);
278 
279  ossim_uint32 index = 0;
280  ossimString copyPrefix = prefix;
281  ossim_uint32 count = kwl.getNumberOfSubstringKeys(copyPrefix+
282  "v[0-9]");
283 
284  ossim_uint32 numberOfMatches = 0;
285  const ossim_uint32 MAX_INDEX = count + 100;
286  ossimPolyLine pl;
287 
288  while(numberOfMatches < count)
289  {
290  ossimString key = "v";
291  key += ossimString::toString(index);
292 
293  const char* lookup = kwl.find(prefix, key.c_str());
294  if (lookup)
295  {
296  ++numberOfMatches;
297  ossimDpt dpt;
298  ossimString x,y;
299  std::istringstream is(lookup);
300  is >> x >> y;
301  pl.addPoint(ossimDpt(x.toDouble(), y.toDouble()));
302  }
303 
304  if (pl.size() == 2)
305  {
306  theMultiPolyLine.push_back(pl);
307  pl.clear();
308  }
309 
310  ++index;
311 
312  if (index > MAX_INDEX) // Avoid infinite loop...
313  {
314  break;
315  }
316  }
317 
318  return status;
319 }
ossim_uint32 x
ossim_uint32 getNumberOfSubstringKeys(const ossimString &regularExpression) const
ossim_uint32 y
const char * find(const char *key) const
static ossimString toString(bool aValue)
Numeric to string methods.
ossim_uint32 size()
unsigned int ossim_uint32
void addPoint(const ossimDpt &pt)
return status
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string&#39;s contents...
Definition: ossimString.h:396
std::basic_istringstream< char > istringstream
Class for char input memory streams.
Definition: ossimIosFwd.h:32

◆ print()

std::ostream & ossimGeoAnnotationMultiPolyLineObject::print ( std::ostream &  out) const
virtual

Generic print method.

Derived classes should re-implement as they see fit.

Returns
std::ostream&

Reimplemented from ossimAnnotationObject.

Definition at line 126 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References ossimNotify(), ossimNotifyLevel_INFO, and theMultiPolyLine.

127 {
129  << "ossimGeoAnnotationMultiPolyLineObject::print\n"
130  << "Poly line size: " << theMultiPolyLine.size() << endl;
131  return out;
132 }
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ saveState()

bool ossimGeoAnnotationMultiPolyLineObject::saveState ( ossimKeywordlist kwl,
const char *  prefix = 0 
) const
virtual

Saves the current state of this object.

Reimplemented from ossimGeoAnnotationObject.

Definition at line 247 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References ossimKeywordlist::add(), ossimString::c_str(), ossimPolyLine::getNumberOfVertices(), ossimGeoAnnotationObject::saveState(), theMultiPolyLine, ossimString::toString(), ossimDpt::x, and ossimDpt::y.

249 {
250  ossim_uint32 vIdx = 0;
251 
252  for(ossim_uint32 i = 0; i < theMultiPolyLine.size(); ++i)
253  {
255  for(ossim_uint32 j = 0; j < pl.getNumberOfVertices(); ++j)
256  {
257  ossimDpt dpt = pl[j];
259  os << setprecision(15) << dpt.x << " " << dpt.y << endl;
260 
261  ossimString key = "v";
262  key += ossimString::toString(vIdx);
263  kwl.add(prefix, key.c_str(), os.str().c_str());
264  ++vIdx;
265  }
266  }
267 
268  return ossimGeoAnnotationObject::saveState(kwl, prefix);
269 }
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
Definition: ossimIosFwd.h:35
double y
Definition: ossimDpt.h:165
static ossimString toString(bool aValue)
Numeric to string methods.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Saves the current state of this object.
ossim_uint32 getNumberOfVertices() const
Definition: ossimPolyLine.h:70
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
unsigned int ossim_uint32
double x
Definition: ossimDpt.h:164
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string&#39;s contents...
Definition: ossimString.h:396

◆ setColor()

void ossimGeoAnnotationMultiPolyLineObject::setColor ( ossim_uint8  r,
ossim_uint8  g,
ossim_uint8  b 
)
virtual

Reimplemented from ossimAnnotationObject.

Definition at line 205 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References ossimAnnotationObject::setColor(), theProjectedPolyLineObject, and ossimRefPtr< T >::valid().

Referenced by ossimVpfAnnotationFeatureInfo::buildEdgFeature(), and ossimVpfAnnotationFeatureInfo::setDrawingFeaturesToAnnotation().

208 {
211  {
213  }
214 }
bool valid() const
Definition: ossimRefPtr.h:75
ossimRefPtr< ossimAnnotationMultiPolyLineObject > theProjectedPolyLineObject
virtual void setColor(ossim_uint8 r, ossim_uint8 g, ossim_uint8 b)

◆ setDatum()

void ossimGeoAnnotationMultiPolyLineObject::setDatum ( const ossimDatum datum)

Definition at line 225 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References theDatum.

226 {
227  theDatum = datum;
228 }

◆ setMultiPolyLine()

void ossimGeoAnnotationMultiPolyLineObject::setMultiPolyLine ( const vector< ossimPolyLine > &  multiPoly)
virtual

Definition at line 177 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References theMultiPolyLine, and theProjectedPolyLineObject.

179 {
180  theMultiPolyLine = multiPoly;
182 }
ossimRefPtr< ossimAnnotationMultiPolyLineObject > theProjectedPolyLineObject

◆ setThickness()

void ossimGeoAnnotationMultiPolyLineObject::setThickness ( ossim_uint8  thickness)
virtual

◆ transform()

void ossimGeoAnnotationMultiPolyLineObject::transform ( ossimImageGeometry projection)
virtual

Add the projection interface to all geographically defined objects.

Implements ossimGeoAnnotationObject.

Definition at line 79 of file ossimGeoAnnotationMultiPolyLineObject.cpp.

References allocateProjectedPolyLine(), ossimAnnotationMultiPolyLineObject::getMultiPolyLine(), ossimDpt::hasNans(), ossimGpt::latd(), ossimGpt::lond(), ossim::nan(), theDatum, theMultiPolyLine, theProjectedPolyLineObject, and ossimImageGeometry::worldToLocal().

80 {
81  if(!projection)
82  {
83  return;
84  }
85 
87 
88  //---
89  // NOTE:
90  // allocateProjectedPolygon() will set theProjectedPolyLineObject to 0 if
91  // theMultiPolyLine is empty (theMultiPolyLine.size() == 0). So check
92  // before accessing pointer to avoid a core dump.
93  //---
95  {
96  return;
97  }
98 
99  std::vector<ossimPolyLine>& multiPolyLine =
101  ossimGpt tempPoint(0,0, ossim::nan(), theDatum);
102 
103  for(std::vector<ossimPolyLine>::size_type polyI = 0;
104  polyI < theMultiPolyLine.size();
105  ++polyI)
106  {
107  ossimPolyLine polyLine;
108 
109  ossim_uint32 numberOfVertices =
110  theMultiPolyLine[polyI].getNumberOfVertices();
111  for(ossim_uint32 pointI = 0; pointI < numberOfVertices; ++pointI)
112  {
113  tempPoint.latd(theMultiPolyLine[polyI][pointI].lat);
114  tempPoint.lond(theMultiPolyLine[polyI][pointI].lon);
115  ossimDpt temp;
116  projection->worldToLocal(tempPoint, temp);
117  if(!temp.hasNans())
118  {
119  multiPolyLine[polyI].addPoint(temp);
120  }
121  }
122  multiPolyLine[polyI].roundToIntegerBounds(true);
123  }
124 }
double nan()
Method to return ieee floating point double precision NAN.
Definition: ossimCommon.h:135
ossimRefPtr< ossimAnnotationMultiPolyLineObject > theProjectedPolyLineObject
const std::vector< ossimPolyLine > & getMultiPolyLine() const
unsigned int ossim_uint32
bool hasNans() const
Definition: ossimDpt.h:67
bool worldToLocal(const ossimGpt &world_pt, ossimDpt &local_pt) const
Exposes the 3D world-to-local image coordinate reverse projection.

Member Data Documentation

◆ theBoundingRect

ossimDrect ossimGeoAnnotationMultiPolyLineObject::theBoundingRect
protected

◆ theDatum

const ossimDatum* ossimGeoAnnotationMultiPolyLineObject::theDatum
protected

Definition at line 84 of file ossimGeoAnnotationMultiPolyLineObject.h.

Referenced by getDatum(), setDatum(), and transform().

◆ theMultiPolyLine

std::vector<ossimPolyLine> ossimGeoAnnotationMultiPolyLineObject::theMultiPolyLine
protected

◆ theProjectedPolyLineObject

ossimRefPtr<ossimAnnotationMultiPolyLineObject> ossimGeoAnnotationMultiPolyLineObject::theProjectedPolyLineObject
protected

The documentation for this class was generated from the following files: