#pragma once #include "base_head.h" #include "CartoBaseDef.h" class CartoBaseEntity; class CartoBasePaintedProps; class CartoBaseColor; //clases de elmentos de cartobase class UTILES_EXPORT CartoEntity : public SetPtsR { public: virtual int getType()//devuelve tipo de entidad { return CartoBaseTypes::Ndef; }; virtual int getnLines() { return 0; } virtual CartoEntity* set(CartoBaseInfoEntity *src) { return 0; } virtual int CopyInTo(CartoBase *src) { return -1; } virtual double* getPto(int i){return 0;} virtual int getNumberPtos(){return 0;} virtual double disMedLines(SetPtsR *line2, double *desv=NULL, BOOL usa_z = FALSE); }; class UTILES_EXPORT CartoComun: public CartoEntity { public: int flagsUser; int color; int peso; int id;//ide de entidad int ia; int idPropsP;//ide de propiedades de pintado al que se va a poner CartoComun() { flagsUser =0; color = 0; peso = 0; id = -1; ia=0; idPropsP = -1; } //auxiliary funcition bool setInfo(CartoBaseInfoEntity * info); CartoBaseEntity* get(CartoBaseEntity * dst); CartoBasePaintedProps* get(CartoBasePaintedProps * dst); CartoBaseColor* get(CartoBaseColor * dst); }; class UTILES_EXPORT CartoPto: public CartoComun { public: double pt[3]; CartoPto(){}; virtual int getType()//devuelve tipo de entidad { return CartoBaseTypes::Point; }; virtual CartoEntity* set(CartoBaseInfoEntity *src); virtual int CopyInTo(CartoBase *src); virtual double* getPto(int i); virtual int getNumberPtos(){return 1;} }; class UTILES_EXPORT CartoLine: public CartoComun, public SetPtsW { public: Cgarray pts; CartoLine(){}; virtual int getType()//devuelve tipo de entidad { return CartoBaseTypes::Line; }; virtual CartoEntity* set(CartoBaseInfoEntity *src); virtual int CopyInTo(CartoBase *src); virtual int getNumberPtos(){return pts.n;} virtual double* getPto(int i); virtual bool addPto(double* p); //funciones de geometria---------------------------------- void invert();//invierte el sentido de los pts double getLong(); double *GetPtoDis(double dis, double *dst, double *distTot = NULL); };