#pragma once #ifndef CartoBase_h #define CartoBase_h #include "base_head.h" #include "CartoBaseDef.h" #include "CartoBaseElements.h" #include "CartoElements.h" #include "IaDataTable.h" #include /* hacer el memoryclear guardar dbf ia */ class Cb_file; class UTILES_EXPORT CartoBase: public SetEntities, public SetPtsR, public DataIaCartoBase { //clases amigo----------------- friend class CartoBaseInfoEntity; friend class CartoBaseInfoPto; friend class CartoBaseInfoLine; friend class CartoBaseInfoBuilder; friend class CartoPto; friend class CartoLine; friend class CartoBaseTopologyManager; private: //info interna------------------------------- int ref;//referencia para el siguiente elemento CartoBasePaintedProps _defaultpaintedProps; CartoBaseColor _defaultColor; //array de informacion de entidades Cgarray _entities;//entidades Cgarray _points;//coordenadas Cgarray _lines;//lineas Cgarray _paintedProps;//propiedades de pintado Cgarray _colors; std::map refIndex;//indexado por referencias; //datos de ia----------------------------------------- char iaName[12];//nombre columna ia tipo IntIa int typeIA;//indica el tipo de informacion asociada que se utilizara public: IaDataTable dataIa; DataIaCartoBase *iaEx; enum TypedataIa { NIa=0,//sin informacion asociada IntIa,//usa solo un entero por entidad como ia con nombre de columna iaName DtIa,//usa la dataIa para almacenar info asociada ExIa//informacion asociada externa }; CartoBase(void); ~CartoBase(void); //funciones----------------------------------------------------------------- CartoBaseInfoEntity get(int i);//acceso a entidad iesima (modo lectura) CartoBaseInfoEntity getRef(int r);//acceso a entidad con referencia r (modo lectura) bool compruebaPts(); //aņade elementos bool add(CartoEntity& element); bool add(CartoBase& cad); bool remove(int i);//pone marca de flag de borrado (pero sigue siendo accesible) bool removeRef(int r); bool FastClear();//solo borra entidades y rehace las referencias bool clear();//limpia elementos borrados y ajusta memoria bool MemClear();//limpia memoria de todos los arrays EntitiesArray* filter(EntitiesArray* dst, FilterEntities *filter); virtual bool leer(char *path); virtual bool grabar(char *path); virtual bool leer(Cb_file *f); virtual bool grabar(Cb_file *f); int addDefaultPaintedProps();//crea unas propiedades de pintado como las por defecto bool importShp(char* path);//importa shp bool exportShp(char* path);//exporta a shp (todos los tipos que cuinciden con la primera) bool ptosExportShp(char* path); bool linesExportShp(char* path); void del();//limpia toda la carto (sin liberar memoria) //funciones de ia------------------------------------------------------------------- void* getIa(int refEnt);//devuelve informacion asociada externa de la entidad refEnt int getTypeIA(){return typeIA;}//devuelve el tipo de ia que tiene actualmente void setExIa(DataIaCartoBase* ia);//setea un ia externo int getEntityRef(int ientity);//devuelve la referencia void setNameIa(char *name);//pone el nombre de la col //funciones por ser SetEntities virtual CartoBaseInfoEntity getEntity(int i); virtual int getNumberEntities(); //funciones por ser SetPts virtual double* getPto(int i); virtual int getNumberPtos(); //funciones auxiliares------------ int getNexRef(){return ref;}; //funciones DataIaCartoBase virtual bool IaGetSize( int *ncolm ); virtual bool IaGetColm( int icol, char* name, BYTE *type, int *size, int*ndecimal ); virtual bool IaGetVal( int refEnt, int icol, int* v ); virtual bool IaFinW(){return true;} private: int add(CartoBaseEntity* src); int add(CartoBasePoint* src); int add(CartoBaseLine* src); int add(CartoBasePaintedProps* src); int add(CartoBaseColor* src); bool fexportShp(char* path, int type = CartoBaseTypes::Ndef); void indexRef(bool buscaRepes=false);//indexa referencias void iniIndexRef();//crea indexado void reIndexRef(); }; class FiterCartoBase: public SetEntities { public: CartoBase* cb; Cgarray ind; virtual CartoBaseInfoEntity getEntity( int i ); virtual int getNumberEntities(); }; #endif