00001
00002
00003 #ifndef Tile_h
00004 #define Tile_h
00005
00006 #include <cstddef>
00007 #include <string>
00008 #include <iostream>
00009
00010 #include "Node.h"
00011
00012 #include "Serializable.h"
00013
00014
00015 using namespace std;
00016
00017 namespace BIE {
00018
00019 class Node;
00020
00021
00028 class Tile: public Serializable {
00029
00030 friend class Node;
00031
00032 protected:
00034 Node * node;
00035
00037 Tile() { node = NULL; }
00038
00039 public:
00041 virtual Tile* New() = 0;
00042 virtual ~Tile() {};
00044 virtual void setup(double, double, double, double) = 0;
00046 virtual void corners(double&, double&, double&, double&) = 0;
00048 virtual double X(double, double) = 0;
00050 virtual double Y(double, double) = 0;
00052 virtual double measure(double, double) = 0;
00054 virtual bool InTile(double, double) = 0;
00056 Node* GetNode() { return node; }
00058 virtual void print(ostream & outputstream) = 0;
00060 virtual void printforplot(ostream & outputstream) = 0;
00062 virtual bool overlapsWith(Tile *) = 0;
00063
00065 virtual string toString() = 0;
00066
00067
00068 private:
00069 friend class boost::serialization::access;
00070 template<class Archive>
00071 void serialize(Archive & ar, const unsigned int version) {
00072 this->pre_serialize(ar, version);
00073 try {
00074 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable);
00075 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00076 }
00077 try {
00078 ar & BOOST_SERIALIZATION_NVP(node);
00079 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00080 }
00081 this->post_serialize(ar, version);
00082 }
00083
00084 };
00085
00086 }
00087 BIE_CLASS_EXPORT_KEY(BIE::Tile)
00088 #endif