OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimIrect.h
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: See top level LICENSE.txt file.
4 //
5 // Author: David Burken
6 //
7 // Description:
8 //
9 // Contains class declaration for ossimIrect.
10 // Container class for four integer points representing a rectangle.
11 //
12 //*******************************************************************
13 // $Id: ossimIrect.h 22197 2013-03-12 02:00:55Z dburken $
14 
15 #ifndef ossimIrect_HEADER
16 #define ossimIrect_HEADER 1
17 #include <iosfwd>
18 #include <vector>
19 
20 #include <ossim/base/ossimIpt.h>
21 #include <ossim/base/ossimCommon.h>
22 
23 //***
24 // NOTE: A word on corner points...
25 //
26 // There is the concept of "pixel is area" and "pixel is point".
27 // - Pixel is area means the (x,y) pixel coordinate refers to the upper left
28 // corner of the pixel, NOT the center of the pixel.
29 // - Pixel is point means the (x,y) pixel coordinate refers to the center
30 // of the pixel, NOT the upper left corner.
31 //
32 // For the uniformity purposes, all pixel points should be in the
33 // "pixel is point" form; therefore, the (x,y) point should represent the
34 // CENTER of the pixel.
35 //***
36 
37 
38 //***
39 // Forward class declarations.
40 //***
41 class ossimDrect;
42 class ossimKeywordlist;
43 
44 //*******************************************************************
45 // CLASS: ossimIrect
46 //*******************************************************************
47 
49 {
50 public:
51  enum
52  {
53  UPPER_LEFT = 1,
54  LOWER_LEFT = 2,
55  LOWER_RIGHT = 4,
56  UPPER_RIGHT = 8
57  };
58 
60  :
61  theUlCorner(0, 0),
62  theUrCorner(0, 0),
63  theLrCorner(0, 0),
64  theLlCorner(0, 0),
65  theOrientMode(OSSIM_LEFT_HANDED)
66  {}
67 
68  ossimIrect(ossimIpt ul_corner,
69  ossimIpt lr_corner,
71  :
72  theUlCorner(ul_corner),
73  theUrCorner(lr_corner.x, ul_corner.y),
74  theLrCorner(lr_corner),
75  theLlCorner(ul_corner.x, lr_corner.y),
76  theOrientMode(mode)
77  {}
78 
79  ossimIrect(ossim_int32 ul_corner_x,
80  ossim_int32 ul_corner_y,
81  ossim_int32 lr_corner_x,
82  ossim_int32 lr_corner_y,
84  :
85  theUlCorner(ul_corner_x, ul_corner_y),
86  theUrCorner(lr_corner_x, ul_corner_y),
87  theLrCorner(lr_corner_x, lr_corner_y),
88  theLlCorner(ul_corner_x, lr_corner_y),
89  theOrientMode(mode)
90  {}
91 
92  ossimIrect(const ossimIrect& rect)
93  :
94  theUlCorner(rect.ul()),
95  theUrCorner(rect.ur()),
96  theLrCorner(rect.lr()),
97  theLlCorner(rect.ll()),
98  theOrientMode(rect.orientMode())
99  {}
100 
101  ossimIrect(const ossimDrect& rect);
102 
107  ossimIrect(const std::vector<ossimIpt>& points,
109 
110  ossimIrect(const ossimIpt& p1,
111  const ossimIpt& p2,
112  const ossimIpt& p3,
113  const ossimIpt& p4,
115 
117  ossimIrect(const ossimIpt& center,
118  ossim_uint32 size_x,
119  ossim_uint32 size_y,
121 
123  ~ossimIrect();
124 
125  inline const ossimIrect& operator= (const ossimIrect& rect);
126  const ossimIrect& operator= (const ossimDrect& rect);
127  inline bool operator!= (const ossimIrect& rect) const;
128  inline bool operator== (const ossimIrect& rect) const;
129 
130  friend ossimIrect operator*(double scalar, const ossimIrect& rect)
131  {
132  return ossimIrect((int)floor(rect.theUlCorner.x*scalar),
133  (int)floor(rect.theUlCorner.y*scalar),
134  (int)ceil(rect.theUlCorner.x*scalar+rect.width()*scalar-1),
135  (int)ceil(rect.theUlCorner.y*scalar+rect.height()*scalar-1),
136  rect.theOrientMode);
137  }
138 
140  {
141  *this = ossimIrect((theUlCorner.x*scalar),
142  (theUlCorner.y*scalar),
143  (theUlCorner.x*scalar+width()*scalar-1),
144  (theUlCorner.y*scalar+height()*scalar-1),
145  theOrientMode);
146  return *this;
147  }
148 
150  {
151  return ossimIrect((theUlCorner.x*scalar),
152  (theUlCorner.y*scalar),
153  (theUlCorner.x*scalar+width()*scalar-1),
154  (theUlCorner.y*scalar+height()*scalar-1),
155  theOrientMode);
156  }
157 
158  const ossimIrect& operator *=(double scalar)
159  {
160  *this = ossimIrect((int)floor(theUlCorner.x*scalar),
161  (int)floor(theUlCorner.y*scalar),
162  (int)ceil(theUlCorner.x*scalar+width()*scalar-1),
163  (int)ceil(theUlCorner.y*scalar+height()*scalar-1),
164  theOrientMode);
165  return *this;
166  }
167 
168  ossimIrect operator *(double scalar)const
169  {
170  return ossimIrect((int)floor(theUlCorner.x*scalar),
171  (int)floor(theUlCorner.y*scalar),
172  (int)ceil(theUlCorner.x*scalar+width()*scalar-1),
173  (int)ceil(theUlCorner.y*scalar+height()*scalar-1),
174  theOrientMode);
175  }
176 
177  const ossimIrect& operator *=(const ossimDpt& scalar)
178  {
179  *this = ossimIrect((int)floor(theUlCorner.x*scalar.x),
180  (int)floor(theUlCorner.y*scalar.y),
181  (int)ceil(theUlCorner.x*scalar.x+width()*scalar.x-1),
182  (int)ceil(theUlCorner.y*scalar.y+height()*scalar.y-1),
183  theOrientMode);
184  return *this;
185  }
186 
187  ossimIrect operator *(const ossimDpt& scalar)const
188  {
189  return ossimIrect((int)floor(theUlCorner.x*scalar.x),
190  (int)floor(theUlCorner.y*scalar.y),
191  (int)ceil(theUlCorner.x*scalar.x+width()*scalar.x-1),
192  (int)ceil(theUlCorner.y*scalar.y+height()*scalar.y-1),
193  theOrientMode);
194  }
195  const ossimIrect& operator +=(const ossimIpt& shift)
196  {
197  *this = ossimIrect(theUlCorner.x+shift.x,
198  theUlCorner.y+shift.y,
199  theLrCorner.x+shift.x,
200  theLrCorner.y+shift.y,
201  theOrientMode);
202  return *this;
203  }
204 
205  const ossimIrect& operator -=(const ossimIpt& shift)
206  {
207  *this = ossimIrect(theUlCorner.x-shift.x,
208  theUlCorner.y-shift.y,
209  theLrCorner.x-shift.x,
210  theLrCorner.y-shift.y,
211  theOrientMode);
212  return *this;
213  }
214 
215  ossimIrect operator +(const ossimIpt& shift)const
216  {
217  return ossimIrect(theUlCorner.x+shift.x,
218  theUlCorner.y+shift.y,
219  theLrCorner.x+shift.x,
220  theLrCorner.y+shift.y,
221  theOrientMode);
222  }
223 
224  ossimIrect operator -(const ossimIpt& shift)const
225  {
226  return ossimIrect(theUlCorner.x-shift.x,
227  theUlCorner.y-shift.y,
228  theLrCorner.x-shift.x,
229  theLrCorner.y-shift.y,
230  theOrientMode);
231  }
232 
233 
234  const ossimIrect& operator +=(const ossimDpt& shift)
235  {
236  *this = ossimIrect((int)floor(theUlCorner.x+shift.x),
237  (int)floor(theUlCorner.y+shift.y),
238  (int)ceil(theUlCorner.x+shift.x+width()-1),
239  (int)ceil(theUlCorner.y+shift.y+height()-1),
240  theOrientMode);
241  return *this;
242  }
243 
244  const ossimIrect& operator -=(const ossimDpt& shift)
245  {
246  *this = ossimIrect((int)floor(theUlCorner.x-shift.x),
247  (int)floor(theUlCorner.y-shift.y),
248  (int)ceil(theUlCorner.x-shift.x+width()-1),
249  (int)ceil(theUlCorner.y-shift.y+height()-1),
250  theOrientMode);
251  return *this;
252  }
253 
254  ossimIrect operator +(const ossimDpt& shift)const
255  {
256  return ossimIrect((int)floor(theUlCorner.x+shift.x),
257  (int)floor(theUlCorner.y+shift.y),
258  (int)ceil(theUlCorner.x+shift.x+width()-1),
259  (int)ceil(theUlCorner.y+shift.y+height()-1),
260  theOrientMode);
261  }
262 
263  ossimIrect operator -(const ossimDpt& shift)const
264  {
265  return ossimIrect((int)floor(theUlCorner.x-shift.x),
266  (int)floor(theUlCorner.y-shift.y),
267  (int)ceil(theUlCorner.x-shift.x+width()-1),
268  (int)ceil(theUlCorner.y-shift.y+height()-1),
269  theOrientMode);
270  return *this;
271  }
272 
273 
274  const ossimIpt& ul() const { return theUlCorner; }
275  const ossimIpt& ur() const { return theUrCorner; }
276  const ossimIpt& lr() const { return theLrCorner; }
277  const ossimIpt& ll() const { return theLlCorner; }
278 
280  {
281  // if we are already in the orientation then return
282  //
283  if(mode == theOrientMode) return *this;
284  if(mode == OSSIM_LEFT_HANDED)
285  {
286  // we must be right handed so change to left handed
287  *this = ossimIrect(theUlCorner.x,
288  theLlCorner.y,
289  theLrCorner.x,
290  theUlCorner.y,
292  }
293  else
294  {
295  // we must be left handed so change to RIGHT handed
296  *this = ossimIrect(theUlCorner.x,
297  theLlCorner.y,
298  theLrCorner.x,
299  theUlCorner.y,
301  }
302  theOrientMode = mode;
303 
304  return *this;
305  }
306  void getBounds(ossim_int32& minx, ossim_int32& miny,
307  ossim_int32& maxx, ossim_int32& maxy)const
308  {
309  minx = theUlCorner.x;
310  maxx = theLrCorner.x;
311  if(theOrientMode == OSSIM_LEFT_HANDED)
312  {
313  miny = theUlCorner.y;
314  maxy = theLrCorner.y;
315  }
316  else
317  {
318  maxy = theUlCorner.y;
319  miny = theLrCorner.y;
320  }
321  }
322 
327  void getCenter(ossimDpt& center_point) const;
328 
329  void makeNan()
330  {
331  theUlCorner.makeNan();
332  theLlCorner.makeNan();
333  theLrCorner.makeNan();
334  theUrCorner.makeNan();
335  }
336 
337  bool hasNans()const{ return (theUlCorner.hasNans() ||
338  theLlCorner.hasNans() ||
339  theLrCorner.hasNans() ||
340  theUrCorner.hasNans());}
341 
342  bool isNan()const{ return (theUlCorner.isNan() &&
343  theLlCorner.isNan() &&
344  theLrCorner.isNan() &&
345  theUrCorner.isNan());}
346 
347  //***
348  // This class supports both left and right-handed coordinate systems. For
349  // both, the positive x-axis extends to the "right".
350  //***
351  ossimCoordSysOrientMode orientMode() const { return theOrientMode; }
352  void setOrientMode(ossimCoordSysOrientMode mode) { theOrientMode = mode; }
353 
354  void stretchToTileBoundary(const ossimIpt& tileWidthHeight);
355 
369  ossimString toString()const;
370 
371 
386  bool toRect(const ossimString& rectString);
387 
388 
389  const ossimIrect& expand(const ossimIpt& padding);
390 
394  bool insureMinimumSize(const ossimIpt& width_height);
395 
397  {
398  return width()*height();
399  }
400 
405  inline void set_ul(const ossimIpt& pt);
406 
411  inline void set_ur(const ossimIpt& pt);
412 
417  inline void set_lr(const ossimIpt& pt);
418 
423  inline void set_ll(const ossimIpt& pt);
424 
428  inline void set_ulx(ossim_int32 x);
429 
433  inline void set_uly(ossim_int32 y);
434 
438  inline void set_urx(ossim_int32 x);
439 
443  inline void set_ury(ossim_int32 y);
444 
448  inline void set_lrx(ossim_int32 x);
449 
453  inline void set_lry(ossim_int32 y);
454 
458  inline void set_llx(ossim_int32 x);
459 
463  inline void set_lly(ossim_int32 y);
464 
469  inline bool pointWithin(const ossimIpt& pt) const;
470 
475  bool intersects(const ossimIrect& rect) const;
476 
481  bool completely_within(const ossimIrect& rect) const;
482 
483  ossimCoordSysOrientMode orientationMode()const{return theOrientMode;}
488  {
489  ossim_int32 h = theLlCorner.y - theUlCorner.y;
490  if (h < 0)
491  {
492  h = -h;
493  }
494  return static_cast<ossim_uint32>( h + 1 );
495  }
496 
501  {
502  ossim_int32 w = theLrCorner.x - theLlCorner.x;
503  if (w < 0)
504  {
505  w = -w;
506  }
507  return static_cast<ossim_uint32>( w + 1 );
508  }
509 
510  ossimIpt size() const { return ossimIpt(width(), height()); }
511 
512  ossimIrect clipToRect(const ossimIrect& rect)const;
513 
514  inline ossimIpt midPoint()const;
515 
516  void print(std::ostream& os) const;
517 
518  ossimIrect combine(const ossimIrect& rect)const;
519 
521  const ossimIrect& rect);
522 
523  bool saveState(ossimKeywordlist& kwl,
524  const char* prefix=0)const;
525  bool loadState(const ossimKeywordlist& kwl,
526  const char* prefix=0);
527 private:
528 
529  //***
530  // Private data members representing the rectangle corners.
531  //***
536 
538 };
539 
540 //*******************************************************************
541 // Inline Method: ossimIrect::operator=(ossimIrect)
542 //*******************************************************************
543 inline const ossimIrect& ossimIrect::operator=(const ossimIrect& rect)
544 {
545  if (this != &rect)
546  {
547  theUlCorner = rect.ul();
548  theUrCorner = rect.ur();
549  theLrCorner = rect.lr();
550  theLlCorner = rect.ll();
552 
553  if(rect.hasNans())
554  {
555  makeNan();
556  }
557  }
558 
559  return *this;
560 }
561 
562 //*******************************************************************
563 // Inline Method: ossimIrect::operator!=
564 //*******************************************************************
565 inline bool ossimIrect::operator!=(const ossimIrect& rect) const
566 {
567  return ( (theUlCorner != rect.ul()) ||
568  (theUrCorner != rect.ur()) ||
569  (theLrCorner != rect.lr()) ||
570  (theLlCorner != rect.ll()) ||
571  (theOrientMode != rect.theOrientMode));
572 }
573 
574 //*******************************************************************
575 // Inline Method: ossimIrect::operator==
576 //*******************************************************************
577 inline bool ossimIrect::operator==(const ossimIrect& rect) const
578 {
579  return ( (theUlCorner == rect.ul()) &&
580  (theUrCorner == rect.ur()) &&
581  (theLrCorner == rect.lr()) &&
582  (theLlCorner == rect.ll()) &&
583  (theOrientMode == rect.theOrientMode) );
584 }
585 
586 //*******************************************************************
587 // Inline Method: ossimIrect::set_ul
588 //*******************************************************************
589 inline void ossimIrect::set_ul(const ossimIpt& pt)
590 {
591  if(pt.hasNans())
592  {
593  makeNan();
594  }
595  else
596  {
597  theUlCorner = pt;
598  theUrCorner.y = pt.y;
599  theLlCorner.x = pt.x;
600  }
601 }
602 
603 //*******************************************************************
604 // Inline Method: ossimIrect::set_ur
605 //*******************************************************************
606 inline void ossimIrect::set_ur(const ossimIpt& pt)
607 {
608  if(pt.hasNans())
609  {
610  makeNan();
611  }
612  else
613  {
614  theUrCorner = pt;
615  theUlCorner.y = pt.y;
616  theLrCorner.x = pt.x;
617  }
618 }
619 
620 //*******************************************************************
621 // Inline Method: ossimIrect::set_lr
622 //*******************************************************************
623 inline void ossimIrect::set_lr(const ossimIpt& pt)
624 {
625  if(pt.hasNans())
626  {
627  makeNan();
628  }
629  else
630  {
631  theLrCorner = pt;
632  theUrCorner.x = pt.x;
633  theLlCorner.y = pt.y;
634  }
635 }
636 
637 //*******************************************************************
638 // Inline Method: ossimIrect::set_ll
639 //*******************************************************************
640 inline void ossimIrect::set_ll(const ossimIpt& pt)
641 {
642  if(pt.hasNans())
643  {
644  makeNan();
645  }
646  else
647  {
648  theLlCorner = pt;
649  theUlCorner.x = pt.x;
650  theLrCorner.y = pt.y;
651  }
652 }
653 
654 //*******************************************************************
655 // Inline Method: ossimIrect::set_ulx
656 //*******************************************************************
658 {
659  theUlCorner.x = x;
660  theLlCorner.x = x;
661 }
662 
663 //*******************************************************************
664 // Inline Method: ossimIrect::set_uly
665 //*******************************************************************
667 {
668  theUlCorner.y = y;
669  theUrCorner.y = y;
670 }
671 
672 //*******************************************************************
673 // Inline Method: ossimIrect::set_urx
674 //*******************************************************************
676 {
677  theUrCorner.x = x;
678  theLrCorner.x = x;
679 }
680 
681 //*******************************************************************
682 // Inline Method: ossimIrect::set_ury
683 //*******************************************************************
685 {
686  theUrCorner.y = y;
687  theUlCorner.y = y;
688 }
689 
690 //*******************************************************************
691 // Inline Method: ossimIrect::set_lrx
692 //*******************************************************************
694 {
695  theLrCorner.x = x;
696  theUrCorner.x = x;
697 }
698 
699 //*******************************************************************
700 // Inline Method: ossimIrect::set_lry
701 //*******************************************************************
703 {
704  theLrCorner.y = y;
705  theLlCorner.y = y;
706 }
707 
708 //*******************************************************************
709 // Inline Method: ossimIrect::set_llx
710 //*******************************************************************
712 {
713  theLlCorner.x = x;
714  theUlCorner.x = x;
715 }
716 
717 //*******************************************************************
718 // Inline Method: ossimIrect::set_lly
719 //*******************************************************************
721 {
722  theLlCorner.y = y;
723  theLrCorner.y = y;
724 }
725 
726 //*******************************************************************
727 // Inline Method: ossimIrect::pointWithin
728 //*******************************************************************
729 inline bool ossimIrect::pointWithin(const ossimIpt& pt) const
730 {
731  if(hasNans())
732  {
733  return false;
734  }
736  return ((pt.x >= ul().x) &&
737  (pt.x <= ur().x) &&
738  (pt.y >= ul().y) &&
739  (pt.y <= ll().y));
740  else
741  return ((pt.x >= ul().x) &&
742  (pt.x <= ur().x) &&
743  (pt.y <= ul().y) &&
744  (pt.y >= ll().y));
745 }
746 
747 //*******************************************************************
748 // Inline Method: ossimIrect::midPoint
749 //*******************************************************************
751 {
752  if(hasNans())
753  {
755  }
756  double x = (ul().x + ur().x + ll().x + lr().x) * 0.25;
757  double y = (ul().y + ur().y + ll().y + lr().y) * 0.25;
758 
759  return ossimIpt(ossim::round<int>(x),
760  ossim::round<int>(y));
761 }
762 
763 #endif
void set_uly(ossim_int32 y)
Definition: ossimIrect.h:666
ossim_uint32 x
ossimRationalNumber operator-(ossim_int32 i, ossimRationalNumber &r)
#define OSSIMDLLEXPORT
bool operator!=(const ossimIrect &rect) const
Definition: ossimIrect.h:565
bool operator!=(const ossimRefPtr< _Tp1 > &__a, const ossimRefPtr< _Tp2 > &__b) noexcept
Definition: ossimRefPtr.h:111
ossimIpt theUrCorner
Definition: ossimIrect.h:533
Represents serializable keyword/value map.
bool operator==(const ossimIrect &rect) const
Definition: ossimIrect.h:577
ossim_uint32 y
void combine(const std::string &left, const std::string &right, char separator, std::string &result)
double y
Definition: ossimDpt.h:165
ossim_uint32 height() const
Definition: ossimIrect.h:487
#define OSSIM_INT_NAN
const ossimIpt & ul() const
Definition: ossimIrect.h:274
std::ostream & print(H5::H5File *file, std::ostream &out)
Print method.
Definition: ossimH5Util.cpp:41
ossimRationalNumber operator*(ossim_int32 i, ossimRationalNumber &r)
const ossimIpt & ll() const
Definition: ossimIrect.h:277
ossimIpt size() const
Definition: ossimIrect.h:510
void setOrientMode(ossimCoordSysOrientMode mode)
Definition: ossimIrect.h:352
ossimIrect(ossimIpt ul_corner, ossimIpt lr_corner, ossimCoordSysOrientMode mode=OSSIM_LEFT_HANDED)
Definition: ossimIrect.h:68
ossimCoordSysOrientMode
void set_ul(const ossimIpt &pt)
Definition: ossimIrect.h:589
void getBounds(ossim_int32 &minx, ossim_int32 &miny, ossim_int32 &maxx, ossim_int32 &maxy) const
Definition: ossimIrect.h:306
ossimCoordSysOrientMode orientMode() const
Definition: ossimIrect.h:351
ostream & operator<<(ostream &out, const ossimAxes &axes)
Definition: ossimAxes.h:88
ossimIpt theLrCorner
Definition: ossimIrect.h:534
const ossimIrect & operator*=(ossim_int32 scalar)
Definition: ossimIrect.h:139
ossimCoordSysOrientMode orientationMode() const
Definition: ossimIrect.h:483
ossimIpt midPoint() const
Definition: ossimIrect.h:750
unsigned int ossim_uint32
const ossimIrect & operator=(const ossimIrect &rect)
Definition: ossimIrect.h:543
bool isNan() const
Definition: ossimIrect.h:342
ossimIrect(const ossimIrect &rect)
Definition: ossimIrect.h:92
const ossimIpt & lr() const
Definition: ossimIrect.h:276
ossimIpt theLlCorner
Definition: ossimIrect.h:535
bool operator==(const ossimRefPtr< _Tp1 > &__a, const ossimRefPtr< _Tp2 > &__b) noexcept
Definition: ossimRefPtr.h:101
ossim_uint32 width() const
Definition: ossimIrect.h:500
const ossimIpt & ur() const
Definition: ossimIrect.h:275
const ossimIrect & changeOrientationMode(ossimCoordSysOrientMode mode)
Definition: ossimIrect.h:279
void set_lrx(ossim_int32 x)
Definition: ossimIrect.h:693
ossimIrect operator*(ossim_int32 scalar) const
Definition: ossimIrect.h:149
ossimIpt theUlCorner
Definition: ossimIrect.h:532
void set_lr(const ossimIpt &pt)
Definition: ossimIrect.h:623
void set_ll(const ossimIpt &pt)
Definition: ossimIrect.h:640
void set_lry(ossim_int32 y)
Definition: ossimIrect.h:702
ossimCoordSysOrientMode theOrientMode
Definition: ossimIrect.h:537
void set_ury(ossim_int32 y)
Definition: ossimIrect.h:684
ossim_int32 y
Definition: ossimIpt.h:142
ossimIrect(ossim_int32 ul_corner_x, ossim_int32 ul_corner_y, ossim_int32 lr_corner_x, ossim_int32 lr_corner_y, ossimCoordSysOrientMode mode=OSSIM_LEFT_HANDED)
Definition: ossimIrect.h:79
void makeNan()
Definition: ossimIrect.h:329
void set_llx(ossim_int32 x)
Definition: ossimIrect.h:711
ossim_uint32 area() const
Definition: ossimIrect.h:396
double x
Definition: ossimDpt.h:164
bool hasNans() const
Definition: ossimIrect.h:337
ossim_int32 x
Definition: ossimIpt.h:141
bool hasNans() const
Definition: ossimIpt.h:58
int completely_within(extent_type extent1, extent_type extent2)
ossimRationalNumber operator+(ossim_int32 i, ossimRationalNumber &r)
void set_lly(ossim_int32 y)
Definition: ossimIrect.h:720
void set_ur(const ossimIpt &pt)
Definition: ossimIrect.h:606
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
void set_urx(ossim_int32 x)
Definition: ossimIrect.h:675
int ossim_int32
void set_ulx(ossim_int32 x)
Definition: ossimIrect.h:657
friend ossimIrect operator*(double scalar, const ossimIrect &rect)
Definition: ossimIrect.h:130
bool pointWithin(const ossimIpt &pt) const
Definition: ossimIrect.h:729