00001
00002
00003 #ifndef UniversalTessellation_h
00004 #define UniversalTessellation_h
00005
00006 #include <string>
00007 #include <algorithm>
00008
00009 #include "Serializable.h"
00010
00011
00012 #include "Tessellation.h"
00013 #include "RecordInputStream.h"
00014 #include "Tile.h"
00015
00016 namespace BIE {
00017 class SquareTile;
00018
00019
00025 class UniversalTessellation : public Tessellation
00026 {
00027
00028 public:
00029
00034 static double MinX;
00035 static double MaxX;
00036 static double MinY;
00037 static double MaxY;
00039
00040
00042 UniversalTessellation();
00043
00044
00046 UniversalTessellation(double minx, double miny, double maxx, double maxy);
00047
00049 ~UniversalTessellation();
00050
00052 vector<int> GetRootTiles();
00053
00055 vector<Node*> GetRootNodes();
00056
00057
00059 virtual void FindAll(double x, double y, vector<int> &found);
00060
00061
00062 private:
00064 SquareTile * tilefactory;
00065 Node* treeroot;
00066
00068 void initialize(double, double, double, double);
00069
00071 void findall(double, double, vector<int>&, Node*);
00072
00073
00074 private:
00075 friend class boost::serialization::access;
00076 template<class Archive>
00077 void serialize(Archive & ar, const unsigned int version) {
00078 this->pre_serialize(ar, version);
00079 try {
00080 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Tessellation);
00081 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00082 }
00083 try {
00084 ar & BOOST_SERIALIZATION_NVP(tilefactory);
00085 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00086 }
00087 try {
00088 ar & BOOST_SERIALIZATION_NVP(treeroot);
00089 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00090 }
00091 this->post_serialize(ar, version);
00092 }
00093
00094 };
00095
00096 }
00097 BIE_CLASS_TYPE_INFO(BIE::UniversalTessellation)
00098 BIE_CLASS_EXPORT_KEY(BIE::UniversalTessellation)
00099 #endif