1 // This is gel/vdgl/vdgl_edgel.h
2 #ifndef vdgl_edgel_h
3 #define vdgl_edgel_h
4 //:
5 // \file
6 // \brief Represents a 2D image edgel
7 //
8 // \author
9 //    Geoff Cross
10 
11 #include <iostream>
12 #include <iosfwd>
13 #ifdef _MSC_VER
14 #  include <vcl_msvc_warnings.h>
15 #endif
16 #include <vgl/vgl_point_2d.h>
17 
18 class vdgl_edgel
19 {
20  public:
21 
22   // Constructors/Destructor---------------------------------------------------
23   vdgl_edgel() = default;
24   vdgl_edgel( const double x, const double y, const double grad= -1, const double theta= 0 );
25   ~vdgl_edgel() = default;
26 
27   // Operators-----------------------------------------------------------------
28 
29   vdgl_edgel& operator=(const vdgl_edgel& that);
30 
31   friend bool operator==( const vdgl_edgel &e1, const vdgl_edgel &e2);
32   friend std::ostream& operator<<(std::ostream& s, const vdgl_edgel& p);
33 
34   // Data Access---------------------------------------------------------------
35 
36   // getters
get_pt()37   inline vgl_point_2d<double> get_pt() const { return p_; }
get_x()38   inline double get_x() const { return p_.x(); }
get_y()39   inline double get_y() const { return p_.y(); }
get_grad()40   inline double get_grad() const { return grad_; }
get_theta()41   inline double get_theta() const { return theta_; }
x()42   inline double x() const { return p_.x(); }
y()43   inline double y() const { return p_.y(); }
44 
45   // setters
set_x(const double x)46   inline void set_x( const double x) { p_.set(x,p_.y()); }
set_y(const double y)47   inline void set_y( const double y) { p_.set(p_.x(),y); }
set_grad(const double grad)48   inline void set_grad( const double grad) { grad_= grad; }
set_theta(const double theta)49   inline void set_theta( const double theta) { theta_= theta; }
50 
51   // INTERNALS-----------------------------------------------------------------
52  protected:
53   // Data Members--------------------------------------------------------------
54 
55   vgl_point_2d<double> p_;
56   double grad_;
57   double theta_;
58 };
59 
60 bool operator==( const vdgl_edgel &e1, const vdgl_edgel &e2);
61 std::ostream& operator<<(std::ostream& s, const vdgl_edgel& p);
62 
63 #endif // vdgl_edgel_h
64