contrib/gel/gst/gst_vertex_2d.h
Go to the documentation of this file.
00001 // This is gel/gst/gst_vertex_2d.h
00002 #ifndef gst_vertex_2d_h_
00003 #define gst_vertex_2d_h_
00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00005 #pragma interface
00006 #endif
00007 //:
00008 // \file
00009 // \author crossge@crd.ge.com
00010 
00011 #include <vcl_iosfwd.h>
00012 #include <vbl/vbl_ref_count.h>
00013 
00014 class gst_vertex_2d : public vbl_ref_count
00015 {
00016  public:
00017 
00018   // default constructor
00019   gst_vertex_2d() {}
00020 
00021   // useful constructor
00022   gst_vertex_2d(double x, double y) : vbl_ref_count(), x_(x), y_(y) {}
00023 
00024   // copy constructor
00025   gst_vertex_2d( const gst_vertex_2d &v) : vbl_ref_count(), x_(v.get_x()), y_(v.get_y()) {}
00026 
00027   // destructor
00028   ~gst_vertex_2d() {}
00029 
00030   // getters
00031   double get_x() const { return x_; }
00032   double get_y() const { return y_; }
00033 
00034   // setters
00035   void set_x(double x) { x_= x; }
00036   void set_y(double y) { y_= y; }
00037   void set(double x, double y) { x_=x; y_=y; }
00038 
00039   // operators
00040   friend inline bool operator==(const gst_vertex_2d& a, const gst_vertex_2d& b);
00041 
00042  protected:
00043 
00044   // members
00045   double x_, y_;
00046 };
00047 
00048 // operators
00049 bool operator==(const gst_vertex_2d& a, const gst_vertex_2d& b)
00050 { return a.x_== b.x_ && a.y_== b.y_; }
00051 
00052 vcl_ostream &operator <<( vcl_ostream &os, const gst_vertex_2d &v);
00053 
00054 #endif // gst_vertex_2d_h_