Go to the documentation of this file.00001
00002
00003 #if !defined(TAG_H_INCLUDED)
00004 #define TAG_H_INCLUDED 1
00005
00044
00045 #include <vector>
00046
00047 #include "Bounding_Box.hpp"
00048 #include "CV.hpp"
00049 #include "File.hpp"
00050 #include "SVG.hpp"
00051 #include "Map.hpp"
00052
00053 class Arc;
00054
00057 class Tag {
00058 public:
00060 std::vector<Arc*> arcs_;
00061
00063 double diagonal;
00064
00066 double world_diagonal;
00067
00069 bool initialized;
00070
00072 unsigned int hop_count;
00073
00075 unsigned int id;
00076
00078 Map map;
00079
00081 double twist;
00082
00084 bool visible;
00085
00087 unsigned int visit;
00088
00090 double x;
00091
00093 double y;
00094
00096 double z;
00097
00099 bool updated;
00100
00101 public:
00102 Tag(unsigned int id, Map map);
00103
00104 void arc_append(Arc *arc);
00105 void bounding_box_update(BoundingBox *bounding_box);
00106
00107 void initialize(double angle, double x, double y, double diagonal,
00108 unsigned int visit);
00109
00110 void svg_write(SVG *svg);
00111 void write(File out_file);
00112 void update_via_arc(Arc *arc, CV_Image image, unsigned int sequence_number);
00113
00114
00115 static int equal(Tag *tag1, Tag *tag2);
00116 static bool less(Tag *tag1, Tag *tag2);
00117 static Tag * read(File in_file, Map map);
00118 };
00119
00122 class TagHeight {
00123 public:
00125 double world_diagonal;
00126
00128 unsigned int first_id;
00129
00131 unsigned int last_id;
00132
00134 double z;
00135
00136 public:
00137 static bool less(TagHeight *tag_height1, TagHeight *tag_height2);
00138 static TagHeight *xml_read(File in_file);
00139
00140 private:
00141 TagHeight() {}
00142 };
00143
00144
00145
00146
00147 #endif // !defined(TAG_H_INCLUDED)