137 lines
4.2 KiB
C++
137 lines
4.2 KiB
C++
#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 <map>
|
|
/*
|
|
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<CartoBaseEntity> _entities;//entidades
|
|
Cgarray<CartoBasePoint> _points;//coordenadas
|
|
Cgarray<CartoBaseLine> _lines;//lineas
|
|
Cgarray<CartoBasePaintedProps> _paintedProps;//propiedades de pintado
|
|
Cgarray<CartoBaseColor> _colors;
|
|
std::map<int, int> 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)
|
|
|
|
|
|
//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<int> ind;
|
|
|
|
virtual CartoBaseInfoEntity getEntity( int i );
|
|
|
|
virtual int getNumberEntities();
|
|
};
|
|
#endif |