#ifndef MODGMT_MAP_H #define MODGMT_MAP_H #include #include "common.h" class GMTBlob: public ObjectBase { GMTBlob()=delete; protected: std::shared_ptr data; GMTBlob(const GMTBlob& b)=default; GMTBlob(GMTBlob&& b)=default; GMTBlob(const GMTBlob* p):data(p->data) {} GMTBlob(std::string* s):data(s) {} public: // Pure virtual overrides bool Print() const override { COUT(NORMAL)<size(); return reinterpret_cast(data->data()); } // Data access const std::string* pValue() const {return data.get();} }; class GMTMap: public GMTBlob { protected: int32_t bblx,bbly,bbrx,bbry; GMTMap(const GMTMap* p):GMTBlob(p),bblx(p->bblx),bbly(p->bbly),bbrx(p->bbrx),bbry(p->bbry) {}; GMTMap(std::string* s, int nbblx, int nbbly, int nbbrx, int nbbry):GMTBlob(s),bblx(nbblx),bbly(nbbly),bbrx(nbbrx),bbry(nbbry) {}; public: int32_t Bblx() const {return bblx;} int32_t Bbly() const {return bbly;} int32_t Bbrx() const {return bbrx;} int32_t Bbry() const {return bbry;} }; class ObjectGMTMapPDF: public GMTMap { ObjectGMTMapPDF(const ObjectGMTMapPDF* p):GMTMap(p) {}; public: ObjectGMTMapPDF(std::string* s, int nbblx, int nbbly, int nbbrx, int nbbry):GMTMap(s,nbblx,nbbly,nbbrx,nbbry) {}; // Pure virtual overrides ObjectBase* Copy() const override {return new ObjectGMTMapPDF(this);} std::string Type() const override {return "GMTMapPDF";} }; class ObjectGMTMap: public GMTMap { ObjectGMTMap(const ObjectGMTMap* p):GMTMap(p) {}; public: ObjectGMTMap(std::string* s, int nbblx, int nbbly, int nbbrx, int nbbry):GMTMap(s,nbblx,nbbly,nbbrx,nbbry) {}; // Pure virtual overrides ObjectBase* Copy() const override {return new ObjectGMTMap(this);} std::string Type() const override {return "GMTMap";} }; class ObjectGMTImage: public GMTBlob { ObjectGMTImage(const ObjectGMTImage* p):GMTBlob(p) {}; public: ObjectGMTImage(std::string* s):GMTBlob(s) {}; // Pure virtual overrides ObjectBase* Copy() const override {return new ObjectGMTImage(this);} std::string Type() const override {return "GMTImage";} }; // Convertor to search object template class SearchObject { public: using ValueType=const Object*; template ValueType Convert(const ObjectBase* ob, bool* res, std::string& err, Args... args) { OBType gp(ob); switch(gp.Error()) { case(OBTypeErr::OK): return gp; case(OBTypeErr::NULLPTR): {err="Can't convert zero ObjectBase pointer to something meaningfull"; break;} case(OBTypeErr::TYPEMISMATCH): {err=ob->Type()+" is not correct: type mismatch"; break;} } *res=false; return nullptr; } }; // Convertor to search GMTMap objects using SearchGMTMap=SearchObject; using SearchGMTMapPDF=SearchObject; // Creating eps map from set of layers const ObjectBase* GMT_Map(const ObjectList* input); // Converting map to pdf const ObjectBase* GMT_Convert2PDF(const ObjectList* input); // Converting map to png const ObjectBase* GMT_Convert2PNG(const ObjectList* input); // Converting map to jpeg const ObjectBase* GMT_Convert2JPG(const ObjectList* input); #endif