#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";} }; // Policy for get integer value class PInt { public: double operator()(double v, bool* suc) const {if(v!=floor(v)) *suc=false; return v;} }; // 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