18 #ifndef ossimDrect_HEADER 19 #define ossimDrect_HEADER 66 theUlCorner(0.0, 0.0),
67 theUrCorner(0.0, 0.0),
68 theLrCorner(0.0, 0.0),
69 theLlCorner(0.0, 0.0),
77 theUlCorner(ul_corner),
78 theUrCorner(lr_corner.
x, ul_corner.
y),
79 theLrCorner(lr_corner),
80 theLlCorner(ul_corner.
x, lr_corner.
y),
86 const double& ul_corner_y,
87 const double& lr_corner_x,
88 const double& lr_corner_y,
91 theUlCorner(ul_corner_x, ul_corner_y),
92 theUrCorner(lr_corner_x, ul_corner_y),
93 theLrCorner(lr_corner_x, lr_corner_y),
94 theLlCorner(ul_corner_x, lr_corner_y),
100 theUlCorner(rect.ul()),
101 theUrCorner(rect.ur()),
102 theLrCorner(rect.lr()),
103 theLlCorner(rect.ll()),
104 theOrientMode(rect.orientMode())
112 ossimDrect(
const std::vector<ossimDpt>& points,
127 const double& size_x,
128 const double& size_y,
145 ul.
x+rect.
width()*scalar-1,
151 ul.
x+rect.
width()*scalar-1,
160 theUlCorner.y*scalar);
166 (ul.
x+width()*scalar-1),
167 (ul.
y+height()*scalar-1),
174 (ul.
x+width()*scalar-1),
175 (ul.
y-(height()*scalar-1)),
185 (theUlCorner.y*scalar));
191 (ul.
x+width()*scalar-1),
192 (ul.
y+height()*scalar-1),
198 (ul.
x+width()*scalar-1),
199 ul.
y-(height()*scalar-1),
205 (theUlCorner.y*scalar.
y));
211 (ul.
x+width()*scalar.
x - 1),
212 (ul.
y+height()*scalar.
y - 1),
219 (ul.
x+width()*scalar.
x - 1),
220 (ul.
y-(height()*scalar.
y - 1)),
229 (theUlCorner.y*scalar.
y));
235 (ul.
x+width()*scalar.
x-1),
236 (ul.
y+height()*scalar.
y-1),
241 (ul.
x+width()*scalar.
x-1),
242 (ul.
y-(height()*scalar.
y-1)),
248 (theUlCorner.y+shift.
y));
272 (theUlCorner.y-shift.
y));
296 (theUlCorner.y+shift.
y));
318 ossimIpt ul(ossim::round<int>(theUlCorner.x-shift.
x),
319 ossim::round<int>(theUlCorner.y-shift.
y));
348 if(mode == theOrientMode)
return *
this;
367 theOrientMode = mode;
373 double& maxx,
double& maxy)
const 375 minx = theUlCorner.x;
376 maxx = theUrCorner.x;
379 miny = theUlCorner.y;
380 maxy = theLrCorner.y;
384 maxy = theUlCorner.y;
385 miny = theLrCorner.y;
390 theUlCorner.makeNan();
391 theLlCorner.makeNan();
392 theLrCorner.makeNan();
393 theUrCorner.makeNan();
396 bool hasNans()
const{
return (theUlCorner.hasNans() ||
397 theLlCorner.hasNans() ||
398 theLrCorner.hasNans() ||
399 theUrCorner.hasNans());}
401 bool isNan()
const{
return (theUlCorner.hasNans() &&
402 theLlCorner.hasNans() &&
403 theLrCorner.hasNans() &&
404 theUrCorner.hasNans());}
408 return width()*height();
421 inline void set_ul(
const ossimDpt& pt);
427 inline void set_ur(
const ossimDpt& pt);
433 inline void set_lr(
const ossimDpt& pt);
439 inline void set_ll(
const ossimDpt& pt);
486 void initBoundingRect(
const std::vector<ossimDpt>& points);
493 bool pointWithin(
const ossimDpt& pt,
double epsilon=0.0)
const;
499 bool pointWithin(
const ossimFpt& pt,
double epsilon=0.0)
const;
505 bool intersects(
const ossimDrect& rect)
const;
534 void stretchToTileBoundary(
const ossimDpt& widthHeight);
569 const char* prefix=0)
const;
571 const char* prefix=0);
601 static long getCode(
const ossimDpt& aPoint,
785 return ((pt.
x >= (
ul().
x-epsilon)) &&
786 (pt.
x <= (
ur().
x+epsilon)) &&
787 (pt.
y >= (
ul().
y-epsilon)) &&
788 (pt.
y <= (
ll().
y+epsilon)));
790 return ((pt.
x >= (
ul().
x-epsilon)) &&
791 (pt.
x <= (
ur().
x+epsilon)) &&
792 (pt.
y <= (
ul().
y+epsilon)) &&
793 (pt.
y >= (
ll().
y-epsilon)));
803 return ((pt.
x >= (
ul().
x-epsilon)) &&
804 (pt.
x <= (
ur().
x+epsilon)) &&
805 (pt.
y >= (
ul().
y-epsilon)) &&
806 (pt.
y <= (
ll().
y+epsilon)));
808 return ((pt.
x >= (
ul().
x-epsilon)) &&
809 (pt.
x <= (
ur().
x+epsilon)) &&
810 (pt.
y <= (
ul().
y+epsilon)) &&
811 (pt.
y >= (
ll().
y-epsilon)));
void set_ul(const ossimDpt &pt)
void set_uly(ossim_float64 y)
bool pointWithin(const ossimDpt &pt, double epsilon=0.0) const
ossimRationalNumber operator-(ossim_int32 i, ossimRationalNumber &r)
void set_ulx(ossim_float64 x)
ossim_float64 width() const
bool operator!=(const ossimRefPtr< _Tp1 > &__a, const ossimRefPtr< _Tp2 > &__b) noexcept
bool operator==(const ossimDrect &rect) const
Represents serializable keyword/value map.
bool operator!=(const ossimDrect &rect) const
void set_ury(ossim_float64 y)
void combine(const std::string &left, const std::string &right, char separator, std::string &result)
const ossimDpt & ul() const
void set_llx(ossim_float64 x)
std::ostream & print(H5::H5File *file, std::ostream &out)
Print method.
ossimDrect combine(const ossimDrect &rect) const
ossimRationalNumber operator*(ossim_int32 i, ossimRationalNumber &r)
const ossimDrect & operator=(const ossimDrect &rect)
ossimCoordSysOrientMode orientMode() const
void set_urx(ossim_float64 x)
ostream & operator<<(ostream &out, const ossimAxes &axes)
void set_lry(ossim_float64 y)
void set_ll(const ossimDpt &pt)
ossimCohenSutherlandClipCodes
const ossimDrect & changeOrientationMode(ossimCoordSysOrientMode mode)
bool operator==(const ossimRefPtr< _Tp1 > &__a, const ossimRefPtr< _Tp2 > &__b) noexcept
ossim_float64 height() const
ossimCoordSysOrientMode theOrientMode
ossimDrect(const ossimDrect &rect)
void set_lly(ossim_float64 y)
ossimDpt midPoint() const
const ossimDpt & ur() const
void setOrientMode(ossimCoordSysOrientMode mode)
const ossimDpt & ll() const
ossimDrect(const double &ul_corner_x, const double &ul_corner_y, const double &lr_corner_x, const double &lr_corner_y, ossimCoordSysOrientMode mode=OSSIM_LEFT_HANDED)
void getBounds(double &minx, double &miny, double &maxx, double &maxy) const
void set_lr(const ossimDpt &pt)
void set_lrx(ossim_float64 x)
const ossimDpt & lr() const
int completely_within(extent_type extent1, extent_type extent2)
ossimRationalNumber operator+(ossim_int32 i, ossimRationalNumber &r)
ossimCoordSysOrientMode orientationMode() const
void set_ur(const ossimDpt &pt)
std::basic_ostream< char > ostream
Base class for char output streams.
friend ossimDrect operator*(double scalar, const ossimDrect &rect)
ossimDrect(const ossimDpt &ul_corner, const ossimDpt &lr_corner, ossimCoordSysOrientMode mode=OSSIM_LEFT_HANDED)