You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

394 lines
7.9 KiB
C

1 month ago
#ifndef LIBRARY_VTKINTERFACE_H
#define LIBRARY_VTKINTERFACE_H
#include <list>
#include <map>
#include <memory>
#pragma region KevVtkDataDefine
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
*/
enum KevVtkDataType
{
UnknowDataType,
MeshDataType,
PointDataType,
CurveDataType,
ImageDataType,
1 month ago
WellDataType, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FaultMeshType, //<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>
MeshMaskType, //<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1 month ago
};
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
*/
enum KevVtkCurveType
{
UnknowCurveType,
Fault,//<2F>ϲ<EFBFBD>
Boundary,//<2F>߽<EFBFBD>
WorkArea,//<2F><><EFBFBD><EFBFBD>
MiniRight,//<2F><>Ȩ
Contour,//<2F><>ֵ<EFBFBD><D6B5>
};
/**
* @brief ѡ<EFBFBD><EFBFBD>ģʽ.
*/
enum KevVtkSelectMode
{
RectangleMode,//<2F><><EFBFBD><EFBFBD>
CircleMode,//Բ<><D4B2>
};
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
*/
enum KevVtkPropertyID
{
UnknowID = 0,
ActorAmbientColor,
ActorDiffusedColor,
ActorSpecularColor,
ActorAmbient,
ActorDiffused,
ActorSpecular,
};
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
*/
enum KevVtkWellType
{
UnknowWellType,
oil,
gas,
water,
};
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
*/
class KevVtkPointData
{
public:
KevVtkWellType m_wellType;
std::string m_name;
std::string m_layerName;
double m_x;
double m_y;
double m_z;
};
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
*/
class KevVtkCurveData
{
public:
std::string m_name;
std::string m_layerName;
double* x;
double* y;
double* z;
double* l;
long m_nPoint;
long m_num;
bool isClosed;//<2F>Ƿ<EFBFBD><C7B7>պ<EFBFBD>
};
/**
* @brief <EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
*/
class KevVtkColorItem
{
public:
double z;
unsigned char color[4];
bool gradient;
};
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
*/
class KevVtkMeshData
{
public:
KevVtkMeshData()
{
shadow_u = nullptr;
}
~KevVtkMeshData()
{
if (shadow_u != nullptr)
{
delete[]shadow_u;
shadow_u = nullptr;
}
for (auto it = m_colorList.begin(); it != m_colorList.end(); ++it)
{
KevVtkColorItem* ptr = static_cast<KevVtkColorItem*>(*it); // <20><> void* ת<><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
delete ptr; // <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
*it = nullptr; // <20><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ϊ nullptr
}
m_colorList.clear(); // <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
}
public:
double m_zMin;
double m_zMax;
double *origin_u;
double *shadow_u;
long n; ///< n<><6E>ʾά<CABE><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ2<CEAA><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ3
long *num; ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long numX; //X<><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
long numY; //X<><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
double x0;
double y0;
double dx;
double dy;
double *P0; ///< ԭ<><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double *delt; ///< <20><><EFBFBD><EFBFBD>
double *range; ///< zֵ<7A><D6B5>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϊ<EFBFBD><CEAA>Ч
std::string m_layerName;
std::list<void*> m_colorList;
int64_t id{ -1 };
};
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
*/
class KepVtkMeshData
{
public:
KepVtkMeshData()
{
n = 2;
u = nullptr;
}
~KepVtkMeshData()
{
if (u != nullptr)
{
delete[] u;
u = nullptr;
}
for (auto it = m_colorList.begin(); it != m_colorList.end(); ++it)
{
KevVtkColorItem* ptr = static_cast<KevVtkColorItem*>(*it); // <20><> void* ת<><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
delete ptr; // <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
*it = nullptr; // <20><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ϊ nullptr
}
m_colorList.clear(); // <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
}
public:
double x0;
double y0;
double dx;
double dy;
long numX; //X<><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
long numY; //X<><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
double m_zMin;
double m_zMax;
long n; ///< n<><6E>ʾά<CABE><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ2<CEAA><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ3
long num[2]; ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double P0[2]; ///< ԭ<><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double delt[2]; ///< <20><><EFBFBD><EFBFBD>
double range[2]; ///< zֵ<7A><D6B5>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϊ<EFBFBD><CEAA>Ч
double* u; ///< <20><><EFBFBD><EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD>
std::string m_layerName;
std::list<void*> m_colorList;
};
/**
* @brief ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
*/
class KevVtkImageData
{
public:
double m_x;
double m_y;
double m_width;
double m_height;
std::string m_fileName;
std::string m_layerName;
};
/**
* @brief <EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
*/
class KevVtkSceneParameter
{
public:
~KevVtkSceneParameter()
{
}
//general
bool m_showAxies;
bool m_showScalarBar;
bool m_showMeshLinearExtrusion;
bool m_ShowCoordinateGridLine;
bool m_ShowMeshEdgeColorGradient;
int m_zScale;
//background
double m_background_color_r;
double m_background_color_g;
double m_background_color_b;
//camera
double m_camera_distance;
double m_camera_position_x;
double m_camera_position_y;
double m_camera_position_z;
double m_camera_focalPoint_x;
double m_camera_focalPoint_y;
double m_camera_focalPoint_z;
double m_camera_viewUp_x;
double m_camera_viewUp_y;
double m_camera_viewUp_z;
double m_camera_azimuth;
double m_camera_elevation;
double m_camera_roll;
double m_camera_viewAngle;
double m_camera_clippingRange_0;
double m_camera_clippingRange_1;
//actor
double m_actor_ambientColor_r;
double m_actor_ambientColor_g;
double m_actor_ambientColor_b;
double m_actor_diffuseColor_r;
double m_actor_diffuseColor_g;
double m_actor_diffuseColor_b;
double m_actor_specularColor_r;
double m_actor_specularColor_g;
double m_actor_specularColor_b;
double m_actor_ambient;
double m_actor_diffuse;
double m_actor_specular;
//light
int m_light_mode;
double m_light_intensity;
double m_light_color_r;
double m_light_color_g;
double m_light_color_b;
double m_light_ambientColor_r;
double m_light_ambientColor_g;
double m_light_ambientColor_b;
double m_light_diffuseColor_r;
double m_light_diffuseColor_g;
double m_light_diffuseColor_b;
double m_light_specularColor_r;
double m_light_specularColor_g;
double m_light_specularColor_b;
double m_light_position_x;
double m_light_position_y;
double m_light_position_z;
double m_light_focalPoint_x;
double m_light_focalPoint_y;
double m_light_focalPoint_z;
double m_light_azimuth;
double m_light_elevation;
//vtk mesh edge color
double m_mesh_edge_color_r;
double m_mesh_edge_color_g;
double m_mesh_edge_color_b;
int32_t m_mesh_edge_mode = 0;
//<2F><><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD>
bool m_singularValueFilterFlag = false;
int32_t m_singularThreshold = 65;
// <20><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>
double m_zMaxScale = 100.0;
// ҵ<><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int32_t m_thickness = 100;
/**** <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> ***/
int32_t m_wellMode = 0; // <20><>ʾģʽ
double m_wellColumnHeight = 100.0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double m_wellColumnRadius = 10; // <20><>ס<EFBFBD>
uint32_t m_wellColumnColor = 0xffffffff; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
uint32_t m_wellColumnNameColor = 0xffffffff; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
int32_t m_wellColumnNameSize = 15; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
1 month ago
int32_t m_wellColumnNameGap = 10; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1 month ago
int32_t m_faultModeEnum = 0; // <20><><EFBFBD><EFBFBD>ʾģʽ
1 month ago
int32_t m_wellSymbalRadius{25}; //<2F><>ͷ<EFBFBD>
bool m_wellColumnThrough{false};
std::string m_wellTypeColors; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>Ϊ<EFBFBD><CEAA> C++ <20><EFBFBD><E1B9B9><EFBFBD>ܹ<EFBFBD>ֱ<EFBFBD><D6B1>ӳ<EFBFBD>䵽 C# <20><EFBFBD><EFBFBD><E5A3AC><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD> BSTR <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>ʹ<EFBFBD><CAB9> CString <20>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
1 month ago
};
/**
* @BRIEF@END.vtkͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
* ÿ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񡢵<EFBFBD>ߡ<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>ڵ<EFBFBD><EFBFBD>¿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڵ<EFBFBD>
* ÿ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD>л<EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>״̬
* ÿ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>άͼ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
*/
class KevVtkDataNode
{
public:
bool m_checked;
bool m_hide;
bool m_bCreateVtkObject;
bool m_bWellLayer;
bool m_bFaultLayer;
bool m_bBorderLayer;
std::string m_layerName;
KevVtkSceneParameter* m_sceneParameter;
//data
std::list<KevVtkPointData*> m_pointList;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::list<KevVtkCurveData*> m_curveList;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::list<KevVtkCurveData*> m_closedFaultVtkCurveList;//˫<>߶ϲ<DFB6><CFB2><EFBFBD><EFBFBD><EFBFBD>
1 month ago
std::list<KevVtkCurveData*> m_closedBoundaryVtkCurveList;//<2F>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1 month ago
std::list<KevVtkCurveData*> m_singleFaultVtkCurveList;//<2F><><EFBFBD>߶ϲ<DFB6><CFB2><EFBFBD><EFBFBD><EFBFBD>
std::list<void*> m_closedFaultCCurveList;//<2F>պ϶ϲ<CFB6><CFB2><EFBFBD>pCurveָ<65><D6B8><EFBFBD>б<EFBFBD>
std::list<void*> m_closedBoundaryList;//<2F>պϱ߽<CFB1><DFBD><EFBFBD>pCurveָ<65><D6B8><EFBFBD>б<EFBFBD>
std::list<KevVtkMeshData*> m_meshList;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::list<KevVtkImageData*> m_imageList;//ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::list<KevVtkDataNode*> m_childList;//<2F><><EFBFBD><EFBFBD><EFBFBD>ݽڵ<DDBD><DAB5>б<EFBFBD>
//actor
std::list<void*> m_meshActor;//<2F><><EFBFBD><EFBFBD>
std::list<void*> m_linearExtrusionActorList;//ȹ<><C8B9>
std::list<void*> m_linearExtrusionPlaneActorList;//ˮƽȹ<C6BD><C8B9>
std::list<void*> m_AxesActorsList;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::list<void*> m_pointActorList;//<2F><>Ȧ<EFBFBD><C8A6><EFBFBD><EFBFBD>
std::list<void*> m_textActorList;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::list<void*> m_curveActorList;//<2F><><EFBFBD><EFBFBD>
std::list<void*> m_imageActorList;//ͼ<><CDBC>
public:
KevVtkDataNode();
};
class VtkWellCurveVertex
{
public:
double m_x;
double m_y;
double m_z;
double m_depth;
int m_type;//<2F><><EFBFBD><EFBFBD>ڵ㣬<DAB5><EFBFBD><E2BEAE><EFBFBD>߽ڵ<DFBD>
int m_dataState;
std::string m_layerName;
std::map<std::string, double> m_loggingData;
};
//class VtkWellData
//{
//public:
// std::string wellId;
// std::string wellName;
// std::list<VtkWellCurveVertex*> vertexList;
// std::map<std::string, std::string> m_loggingName;
//};
#pragma endregion
#endif // !LIBRARY_KEVVTKDATA_H