00001
00002
00003 #ifndef QuadGrid_h
00004 #define QuadGrid_h
00005
00006 #include <string>
00007
00008 #include "Serializable.h"
00009
00010
00011 #include "Tessellation.h"
00012
00013 namespace BIE {
00014
00015
00021 class QuadGrid : public Tessellation {
00022
00023 public:
00024
00036 QuadGrid(Tile * factory, double minx, double maxx,
00037 double miny, double maxy, int depth);
00038
00040 ~QuadGrid();
00041
00042 vector<int> GetRootTiles();
00043 vector<Node*> GetRootNodes();
00044
00045 private:
00046
00047
00048 int maxdepth;
00049
00051 Node * treeroot;
00052
00054 Tile * tilefactory;
00055
00057 void tessellate(Node **node, int depth, int tileid,
00058 double minx, double miny, double maxx, double maxy);
00059
00060
00061 protected:
00062 QuadGrid() {}
00063 private:
00064 friend class boost::serialization::access;
00065 template<class Archive>
00066 void serialize(Archive & ar, const unsigned int version) {
00067 this->pre_serialize(ar, version);
00068 try {
00069 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Tessellation);
00070 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00071 }
00072 try {
00073 ar & BOOST_SERIALIZATION_NVP(maxdepth);
00074 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00075 }
00076 try {
00077 ar & BOOST_SERIALIZATION_NVP(treeroot);
00078 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00079 }
00080 try {
00081 ar & BOOST_SERIALIZATION_NVP(tilefactory);
00082 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00083 }
00084 this->post_serialize(ar, version);
00085 }
00086
00087 };
00088
00089 }
00090 BIE_CLASS_TYPE_INFO(BIE::QuadGrid)
00091 BIE_CLASS_EXPORT_KEY(BIE::QuadGrid)
00092 #endif