00001 //this-sets-emacs-to-*-c++-*-mode 00002 #ifndef bgui_vtol_soview2D_h_ 00003 #define bgui_vtol_soview2D_h_ 00004 //-------------------------------------------------------------------------------- 00005 //: 00006 // \file 00007 // \brief A collection of vgui_soview2D objects that form views of vtol topology objects 00008 // \author 00009 // J.L. Mundy 00010 // 00011 // \verbatim 00012 // Modifications: 00013 // J.L. Mundy November 28, 2002 Initial version. 00014 // \endverbatim 00015 //-------------------------------------------------------------------------------- 00016 #include <vcl_vector.h> 00017 #include <vcl_iosfwd.h> 00018 #include <vsol/vsol_line_2d_sptr.h> 00019 #include <vdgl/vdgl_digital_curve_sptr.h> 00020 #include <vtol/vtol_edge_2d.h> 00021 #include <vtol/vtol_edge_2d_sptr.h> 00022 #include <vtol/vtol_face_2d_sptr.h> 00023 #include <vgui/vgui_soview2D.h> 00024 00025 //: vsol_point_2d 00026 // This view is essentially the same as a point the only difference 00027 // is style. Probably move to a geometry tableau later 00028 class bgui_vtol_soview2D_point : public vgui_soview2D_point 00029 { 00030 public: 00031 //: Constructor - creates a default vsol_point_2d view 00032 bgui_vtol_soview2D_point(){} 00033 00034 //: Print details about this vtol_point to the given stream. 00035 virtual vcl_ostream& print(vcl_ostream&) const; 00036 00037 //: Returns the type of this class ('bgui_vtol_soview2D_point'). 00038 vcl_string type_name() const { return "bgui_vtol_soview2D_point"; } 00039 }; 00040 00041 //: vdgl_dotted_digital_curve (maybe later move to a geometry tableau) 00042 // This one displays points 00043 class bgui_vtol_soview2D_dotted_digital_curve : public vgui_soview2D_group 00044 { 00045 public: 00046 //: Constructor - creates a default vdgl_digital_curve view 00047 bgui_vtol_soview2D_dotted_digital_curve() {;} 00048 00049 //: Constructor - creates a view of a vdgl_digital_curve 00050 bgui_vtol_soview2D_dotted_digital_curve(vdgl_digital_curve_sptr const& e); 00051 00052 //: Print details about this vdgl_digital_curve to the given stream. 00053 virtual vcl_ostream& print(vcl_ostream&) const; 00054 00055 //: Returns the type of this class ('bgui_vtol_soview2D_dotted_digital_curve'). 00056 vcl_string type_name() const { return "bgui_vtol_soview2D_dotted_digital_curve"; } 00057 }; 00058 00059 //: vdgl_digital_curve (maybe later move to a geometry tableau) 00060 class bgui_vtol_soview2D_digital_curve : public vgui_soview2D_linestrip 00061 { 00062 public: 00063 //: Constructor - creates a default vdgl_digital_curve view 00064 bgui_vtol_soview2D_digital_curve() {;} 00065 00066 //: Constructor - creates a view of a vdgl_digital_curve 00067 bgui_vtol_soview2D_digital_curve(vdgl_digital_curve_sptr const& e); 00068 00069 //: Print details about this vdgl_digital_curve to the given stream. 00070 virtual vcl_ostream& print(vcl_ostream&) const; 00071 00072 //: Returns the type of this class ('bgui_vtol_soview2D_digital_curve'). 00073 vcl_string type_name() const { return "bgui_vtol_soview2D_digital_curve"; } 00074 }; 00075 00076 //: vtol_vertex_2d 00077 // This view is essentially the same as a point the only difference 00078 // would be style, which we will tackle later 00079 class bgui_vtol_soview2D_vertex : public vgui_soview2D_point 00080 { 00081 public: 00082 //: Constructor - creates a default vertex_2d view 00083 bgui_vtol_soview2D_vertex(){} 00084 00085 //: Print details about this vtol_vertex_2d to the given stream. 00086 virtual vcl_ostream& print(vcl_ostream&) const; 00087 00088 //: Returns the type of this class ('bgui_vtol_soview2D_vertex'). 00089 vcl_string type_name() const { return "bgui_vtol_soview2D_vertex"; } 00090 }; 00091 00092 class bgui_vtol_soview2D_line_seg : public vgui_soview2D_lineseg 00093 { 00094 public: 00095 //: Constructor - creates a default edge_2d view 00096 bgui_vtol_soview2D_line_seg() {} 00097 00098 //: Constructor - creates a view of a given vtol_edge_2d 00099 bgui_vtol_soview2D_line_seg(vsol_line_2d_sptr const& seg); 00100 00101 //: Returns the type of this class ('bgui_vtol_soview2D_edge'). 00102 vcl_string type_name() const { return "bgui_vtol_soview2D_line_seg"; } 00103 }; 00104 00105 class bgui_vtol_soview2D_edge : public vgui_soview2D_linestrip 00106 { 00107 public: 00108 //: Constructor - creates a default edge_2d view 00109 bgui_vtol_soview2D_edge() {} 00110 00111 //: Constructor - creates a view of a given vtol_edge_2d 00112 bgui_vtol_soview2D_edge(vtol_edge_2d_sptr const& e); 00113 00114 //: Print details about this vtol_edge_2d to the given stream. 00115 virtual vcl_ostream& print(vcl_ostream&) const; 00116 00117 //: Returns the type of this class ('bgui_vtol_soview2D_edge'). 00118 vcl_string type_name() const { return "bgui_vtol_soview2D_edge"; } 00119 }; 00120 00121 class bgui_vtol_soview2D_edge_group : public vgui_soview2D_group 00122 { 00123 public: 00124 //: Constructor - creates a default vtol_edge_2d_group view 00125 bgui_vtol_soview2D_edge_group() {} 00126 00127 //: Constructor - creates a view of a vtol_edge_2d group 00128 bgui_vtol_soview2D_edge_group(vcl_vector<vtol_edge_2d_sptr>& edges); 00129 00130 //: Print details about this vtol_edge_2d group to the given stream. 00131 virtual vcl_ostream& print(vcl_ostream&) const; 00132 00133 //: Returns the type of this class ('bgui_vtol_soview2D_edge_group'). 00134 vcl_string type_name() const { return "bgui_vtol_soview2D_edge_group"; } 00135 }; 00136 00137 class bgui_vtol_soview2D_face : public vgui_soview2D_group 00138 { 00139 public: 00140 //: Constructor - creates a default vtol_face_2d view 00141 bgui_vtol_soview2D_face() {} 00142 00143 //: Constructor - creates a view of a vtol_face_2d 00144 bgui_vtol_soview2D_face(vtol_face_2d_sptr const& f); 00145 00146 //: Print details about this vtol_face_2d to the given stream. 00147 virtual vcl_ostream& print(vcl_ostream&) const; 00148 00149 //: Returns the type of this class ('bgui_vtol_soview2D_face'). 00150 vcl_string type_name() const { return "bgui_vtol_soview2D_face"; } 00151 }; 00152 00153 #endif // bgui_vtol_soview2D_h_