#pragma once #include "base_head.h" #include "cartoBaseDef.h" #include "garray.h" #ifndef CartoBaseElements_H #define CartoBaseElements_H class CartoEntity; //clases internas de cartobase---------------------------------------------- class UTILES_EXPORT CartoBaseEntity { public: int id; //indice a objeto int type; //tipo de entidad int idPaintp; //inide a propiedades int flagsUser; //flags para uso de usuario int flagsInt; //flags para uso interno int ref; //referencia unica por elemento //tamaņo--------- int mima[2]; //indice a punto maximo y minimo (el elemento esta contenido entre dichos puntos) int ia; //indice a informacion adicional CartoBaseEntity() { id = -1; idPaintp = -1; flagsInt = 0; } }; //entidad interna de putno class UTILES_EXPORT CartoBasePoint { public: double pts[3];//coordenadas del punto CartoBasePoint(){ pts[0]=pts[1]=pts[2]=0; } }; //entidad interna de linea class UTILES_EXPORT CartoBaseLine { public: int ini; //inidce a punto inicio int n; //numero de puntos del lineal CartoBaseLine() { n = 0; ini = -1; } }; //entidad interna de propiedades de pintado class UTILES_EXPORT CartoBasePaintedProps { public: int color; //indice a color int peso; //grosor o tamaņo de letra (segun entidad) int prioridad; //prioridad de pintado int flags; //flags internos 0x1 (visto para los clear) CartoBasePaintedProps() { color = -1; peso = 1; flags = 0; } }; //entidad interna de color class UTILES_EXPORT CartoBaseColor { public: int color; int flags; //flags internos 0x1 (visto para los clear) CartoBaseColor() { color = 0; flags = 0; } }; //entidad base de informacion class CartoBase; class UTILES_EXPORT CartoBaseInfoEntity: public SetPtsR { public: //funciones externas CartoBasePoint* (*fpto)(CartoBaseInfoEntity *c); CartoBaseLine* (*fline)(CartoBaseInfoEntity *c); int i_entity; CartoBase* ptr; CartoBaseInfoEntity(); virtual bool isValid(); //dice si es valido o no la entidad de informacion virtual CartoBaseInfoEntity next(); //devuelve entidad siguiente virtual CartoBaseInfoEntity prev(); //devuelve entidad anterior //acceso a informacion interna virtual CartoBasePoint* pto(); virtual CartoBaseEntity* entity(); virtual CartoBaseLine* line(); virtual CartoBasePaintedProps* paintp(); virtual CartoBaseColor* color(); virtual CartoEntity* getCopy(CartoEntity *buf=NULL); //funciones SetPts-------------------------- virtual double* getPto(int i); virtual int getNumberPtos(); void* getIa(); double getLong(); double disMedLines(SetPtsR *line2, double l_avan, double *desv=NULL); double disMedLines(SetPtsR *line2, double *desv=NULL); double DisPtoLine(double*p, int* idpto=NULL, double *lamb=NULL, BOOL usa_z=FALSE); SetPtsW *GetNPrimePtos(SetPtsW *ldst, int nptos, double dis, BOOL avanza); bool DivLine(SetPtsW* ldst1, SetPtsW* ldst2, int ip, double lamb); double *GetPtoDis(double dis, double *dst, double *distTot); double *PtInLine(int ip, double lamb, double *pp); double DplineSeg(double* s1, double *s2,int *n=NULL, double *lamd1=NULL,double *lamb2=NULL); }; //calse coleccion de entidades class UTILES_EXPORT SetEntities { public: virtual CartoBaseInfoEntity getEntity(int i)=0; virtual int getNumberEntities()=0; }; //clase de filtrado de entidades class UTILES_EXPORT FilterEntities { public: virtual bool IsSeletedEntity(CartoBaseInfoEntity *e)=0; }; //array de entidades class UTILES_EXPORT EntitiesArray: public Cgarray, public SetEntities, public SetPtsR { public: virtual CartoBaseInfoEntity getEntity(int i); virtual int getNumberEntities(); virtual double* getPto(int i); virtual int getNumberPtos(); EntitiesArray* filter(EntitiesArray* dst, FilterEntities* filter); bool exportShp(char* path, int type = CartoBaseTypes::Ndef); }; //entidad de informacion punto class UTILES_EXPORT CartoBaseInfoPto { public: static CartoBasePoint* pto(CartoBaseInfoEntity*c); }; //entidad de informacion linea class UTILES_EXPORT CartoBaseInfoLine { public: static CartoBasePoint* pto(CartoBaseInfoEntity*c); static CartoBaseLine* line(CartoBaseInfoEntity*c); }; //clase constructor de entidades info class UTILES_EXPORT CartoBaseInfoBuilder { public: static CartoBaseInfoEntity get(int i, CartoBase* ptr); static CartoEntity* get(int type); }; #endif