utiles_v2017/CartoElements.h

108 lines
2.1 KiB
C++

#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<double[3]> 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);
};