OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimAnnotationMultiPolyObject.h
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: See top level LICENSE.txt file.
4 //
5 // Author: Garrett Potts
6 // Description:
7 //
8 //*************************************************************************
9 // $Id: ossimAnnotationMultiPolyObject.h 17815 2010-08-03 13:23:14Z dburken $
10 #ifndef ossimAnnotationMultiPolyObject_HEADER
11 #define ossimAnnotationMultiPolyObject_HEADER
13 #include <ossim/base/ossimIpt.h>
15 
17 {
18 public:
20  ossimAnnotationMultiPolyObject(const vector<ossimPolygon>& multiPoly,
21  bool enableFill,
22  unsigned char r,
23  unsigned char g,
24  unsigned char b,
25  long thickness);
26 
28  : ossimAnnotationObject(rhs),
29  theMultiPolygon(rhs.theMultiPolygon),
30  theBoundingRect(rhs.theBoundingRect),
31  theFillEnabled(rhs.theFillEnabled)
32  {
33  }
34  virtual ossimObject* dup()const
35  {
36  return new ossimAnnotationMultiPolyObject(*this);
37  }
38  virtual void applyScale(double x,
39  double y);
40  virtual void draw(ossimRgbImage& anImage)const;
41  virtual bool intersects(const ossimDrect& rect)const;
42 
43  virtual ossimAnnotationObject* getNewClippedObject(const ossimDrect& rect)const;
44  virtual std::ostream& print(std::ostream& out)const;
45  virtual void getBoundingRect(ossimDrect& rect)const;
46  virtual void clear();
47  virtual void addPolygon(ossim_uint32 polygonIndex,
48  const ossimPolygon& poly)
49  {
50  if(polygonIndex < theMultiPolygon.size())
51  {
52  theMultiPolygon[polygonIndex] = poly;
53  }
54  }
55  virtual void addPoint(ossim_uint32 polygonIndex,
56  const ossimDpt& pt)
57  {
58  if(polygonIndex < theMultiPolygon.size())
59  {
60  theMultiPolygon[polygonIndex].addPoint(pt);
61  }
62  }
63 
64  virtual void setMultiPolygon(const vector<ossimPolygon>& multiPoly)
65  {
66  theMultiPolygon = multiPoly;
68  }
69  virtual void computeBoundingRect();
70  virtual bool isPointWithin(const ossimDpt& imagePoint)const;
71 
72  const std::vector<ossimPolygon>& getMultiPolygon()const{return theMultiPolygon;}
73  std::vector<ossimPolygon>& getMultiPolygon(){return theMultiPolygon;}
74  void setFillFlag(bool flag)
75  {
76  theFillEnabled = flag;
77  }
78 protected:
80  vector<ossimPolygon> theMultiPolygon;
83 
85 };
86 
87 #endif
ossim_uint32 x
virtual void draw(ossimRgbImage &anImage) const =0
#define OSSIMDLLEXPORT
virtual bool intersects(const ossimDrect &rect) const =0
ossim_uint32 y
ossimAnnotationMultiPolyObject(const ossimAnnotationMultiPolyObject &rhs)
virtual ossimAnnotationObject * getNewClippedObject(const ossimDrect &rect) const =0
virtual std::ostream & print(std::ostream &out) const
Generic print method.
virtual void addPolygon(ossim_uint32 polygonIndex, const ossimPolygon &poly)
virtual ossimDrect getBoundingRect() const
#define TYPE_DATA
Definition: ossimRtti.h:339
unsigned int ossim_uint32
const std::vector< ossimPolygon > & getMultiPolygon() const
virtual void setMultiPolygon(const vector< ossimPolygon > &multiPoly)
virtual void applyScale(double x, double y)=0
virtual void addPoint(ossim_uint32 polygonIndex, const ossimDpt &pt)
virtual bool isPointWithin(const ossimDpt &imagePoint) const
virtual void computeBoundingRect()=0
std::vector< ossimPolygon > & getMultiPolygon()
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23