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.

278 lines
11 KiB
C++

#include <afx.h>
#include "stdafx.h"
#include "vtkInterface.h"
#include "SigmaView.h"
#include "Util.h"
KevVtkDataNode::KevVtkDataNode()
{
m_sceneParameter = nullptr;
}
static void CopyVtkParameters(const VtkSceneParameterSettings& src, KevVtkSceneParameter& dest)
{
// general
dest.m_showAxies = src.m_showAxies;
dest.m_showScalarBar = src.m_showScalarBar;
dest.m_showMeshLinearExtrusion = src.m_showMeshLinearExtrusion;
dest.m_ShowCoordinateGridLine = src.m_ShowCoordinateGridLine;
dest.m_ShowMeshEdgeColorGradient = src.m_ShowMeshEdgeColorGradient;
dest.m_zScale = src.m_zScale;
// background
dest.m_background_color_r = src.m_background_color_r;
dest.m_background_color_g = src.m_background_color_g;
dest.m_background_color_b = src.m_background_color_b;
// camera
dest.m_camera_distance = src.m_camera_distance;
dest.m_camera_position_x = src.m_camera_position_x;
dest.m_camera_position_y = src.m_camera_position_y;
dest.m_camera_position_z = src.m_camera_position_z;
dest.m_camera_focalPoint_x = src.m_camera_focalPoint_x;
dest.m_camera_focalPoint_y = src.m_camera_focalPoint_y;
dest.m_camera_focalPoint_z = src.m_camera_focalPoint_z;
dest.m_camera_viewUp_x = src.m_camera_viewUp_x;
dest.m_camera_viewUp_y = src.m_camera_viewUp_y;
dest.m_camera_viewUp_z = src.m_camera_viewUp_z;
dest.m_camera_azimuth = src.m_camera_azimuth;
dest.m_camera_elevation = src.m_camera_elevation;
dest.m_camera_roll = src.m_camera_roll;
dest.m_camera_viewAngle = src.m_camera_viewAngle;
dest.m_camera_clippingRange_0 = src.m_camera_clippingRange_0;
dest.m_camera_clippingRange_1 = src.m_camera_clippingRange_1;
// actor
dest.m_actor_ambientColor_r = src.m_actor_ambientColor_r;
dest.m_actor_ambientColor_g = src.m_actor_ambientColor_g;
dest.m_actor_ambientColor_b = src.m_actor_ambientColor_b;
dest.m_actor_diffuseColor_r = src.m_actor_diffuseColor_r;
dest.m_actor_diffuseColor_g = src.m_actor_diffuseColor_g;
dest.m_actor_diffuseColor_b = src.m_actor_diffuseColor_b;
dest.m_actor_specularColor_r = src.m_actor_specularColor_r;
dest.m_actor_specularColor_g = src.m_actor_specularColor_g;
dest.m_actor_specularColor_b = src.m_actor_specularColor_b;
dest.m_actor_ambient = src.m_actor_ambient;
dest.m_actor_diffuse = src.m_actor_diffuse;
dest.m_actor_specular = src.m_actor_specular;
// light
dest.m_light_mode = src.m_light_mode;
dest.m_light_intensity = src.m_light_intensity;
dest.m_light_color_r = src.m_light_color_r;
dest.m_light_color_g = src.m_light_color_g;
dest.m_light_color_b = src.m_light_color_b;
dest.m_light_ambientColor_r = src.m_light_ambientColor_r;
dest.m_light_ambientColor_g = src.m_light_ambientColor_g;
dest.m_light_ambientColor_b = src.m_light_ambientColor_b;
dest.m_light_diffuseColor_r = src.m_light_diffuseColor_r;
dest.m_light_diffuseColor_g = src.m_light_diffuseColor_g;
dest.m_light_diffuseColor_b = src.m_light_diffuseColor_b;
dest.m_light_specularColor_r = src.m_light_specularColor_r;
dest.m_light_specularColor_g = src.m_light_specularColor_g;
dest.m_light_specularColor_b = src.m_light_specularColor_b;
dest.m_light_position_x = src.m_light_position_x;
dest.m_light_position_y = src.m_light_position_y;
dest.m_light_position_z = src.m_light_position_z;
dest.m_light_focalPoint_x = src.m_light_focalPoint_x;
dest.m_light_focalPoint_y = src.m_light_focalPoint_y;
dest.m_light_focalPoint_z = src.m_light_focalPoint_z;
dest.m_light_azimuth = src.m_light_azimuth;
dest.m_light_elevation = src.m_light_elevation;
// vtk mesh edge color
dest.m_mesh_edge_color_r = src.m_mesh_edge_color_r;
dest.m_mesh_edge_color_g = src.m_mesh_edge_color_g;
dest.m_mesh_edge_color_b = src.m_mesh_edge_color_b;
dest.m_mesh_edge_mode = src.m_mesh_edge_mode;
dest.m_singularValueFilterFlag = src.m_singularValueFilterFlag;
dest.m_singularThreshold = src.m_singularThreshold;
dest.m_zMaxScale = src.m_zMaxScale;
dest.m_thickness = src.m_thickness;
dest.m_wellMode = src.m_wellMode;
dest.m_wellColumnHeight = src.m_wellColumnHeight;
dest.m_wellColumnRadius = src.m_wellColumnRadius;
dest.m_wellColumnColor = src.m_wellColumnColor;
dest.m_wellColumnNameColor = src.m_wellColumnNameColor;
dest.m_wellColumnNameSize = src.m_wellColumnNameSize;
dest.m_wellColumnNameGap = src.m_wellColumnNameGap;
dest.m_faultModeEnum = src.m_faultModeEnum;
if (src.m_wellTypeColors != nullptr)
{
CString wellTypeColors(CW2A(src.m_wellTypeColors));
dest.m_wellTypeColors = std::string(wellTypeColors.GetString());
}
dest.m_wellColumnThrough = src.m_wellColumnThrough;
dest.m_wellSymbalRadius = src.m_wellSymbalRadius;
}
static void CopyVtkParameters(const KevVtkSceneParameter& src, VtkSceneParameterSettings& dest)
{
// general
dest.m_showAxies = src.m_showAxies;
dest.m_showScalarBar = src.m_showScalarBar;
dest.m_showMeshLinearExtrusion = src.m_showMeshLinearExtrusion;
dest.m_ShowCoordinateGridLine = src.m_ShowCoordinateGridLine;
dest.m_ShowMeshEdgeColorGradient = src.m_ShowMeshEdgeColorGradient;
dest.m_zScale = src.m_zScale;
// background
dest.m_background_color_r = src.m_background_color_r;
dest.m_background_color_g = src.m_background_color_g;
dest.m_background_color_b = src.m_background_color_b;
// camera
dest.m_camera_distance = src.m_camera_distance;
dest.m_camera_position_x = src.m_camera_position_x;
dest.m_camera_position_y = src.m_camera_position_y;
dest.m_camera_position_z = src.m_camera_position_z;
dest.m_camera_focalPoint_x = src.m_camera_focalPoint_x;
dest.m_camera_focalPoint_y = src.m_camera_focalPoint_y;
dest.m_camera_focalPoint_z = src.m_camera_focalPoint_z;
dest.m_camera_viewUp_x = src.m_camera_viewUp_x;
dest.m_camera_viewUp_y = src.m_camera_viewUp_y;
dest.m_camera_viewUp_z = src.m_camera_viewUp_z;
dest.m_camera_azimuth = src.m_camera_azimuth;
dest.m_camera_elevation = src.m_camera_elevation;
dest.m_camera_roll = src.m_camera_roll;
dest.m_camera_viewAngle = src.m_camera_viewAngle;
dest.m_camera_clippingRange_0 = src.m_camera_clippingRange_0;
dest.m_camera_clippingRange_1 = src.m_camera_clippingRange_1;
// actor
dest.m_actor_ambientColor_r = src.m_actor_ambientColor_r;
dest.m_actor_ambientColor_g = src.m_actor_ambientColor_g;
dest.m_actor_ambientColor_b = src.m_actor_ambientColor_b;
dest.m_actor_diffuseColor_r = src.m_actor_diffuseColor_r;
dest.m_actor_diffuseColor_g = src.m_actor_diffuseColor_g;
dest.m_actor_diffuseColor_b = src.m_actor_diffuseColor_b;
dest.m_actor_specularColor_r = src.m_actor_specularColor_r;
dest.m_actor_specularColor_g = src.m_actor_specularColor_g;
dest.m_actor_specularColor_b = src.m_actor_specularColor_b;
dest.m_actor_ambient = src.m_actor_ambient;
dest.m_actor_diffuse = src.m_actor_diffuse;
dest.m_actor_specular = src.m_actor_specular;
// light
dest.m_light_mode = src.m_light_mode;
dest.m_light_intensity = src.m_light_intensity;
dest.m_light_color_r = src.m_light_color_r;
dest.m_light_color_g = src.m_light_color_g;
dest.m_light_color_b = src.m_light_color_b;
dest.m_light_ambientColor_r = src.m_light_ambientColor_r;
dest.m_light_ambientColor_g = src.m_light_ambientColor_g;
dest.m_light_ambientColor_b = src.m_light_ambientColor_b;
dest.m_light_diffuseColor_r = src.m_light_diffuseColor_r;
dest.m_light_diffuseColor_g = src.m_light_diffuseColor_g;
dest.m_light_diffuseColor_b = src.m_light_diffuseColor_b;
dest.m_light_specularColor_r = src.m_light_specularColor_r;
dest.m_light_specularColor_g = src.m_light_specularColor_g;
dest.m_light_specularColor_b = src.m_light_specularColor_b;
dest.m_light_position_x = src.m_light_position_x;
dest.m_light_position_y = src.m_light_position_y;
dest.m_light_position_z = src.m_light_position_z;
dest.m_light_focalPoint_x = src.m_light_focalPoint_x;
dest.m_light_focalPoint_y = src.m_light_focalPoint_y;
dest.m_light_focalPoint_z = src.m_light_focalPoint_z;
dest.m_light_azimuth = src.m_light_azimuth;
dest.m_light_elevation = src.m_light_elevation;
// vtk mesh edge color
dest.m_mesh_edge_color_r = src.m_mesh_edge_color_r;
dest.m_mesh_edge_color_g = src.m_mesh_edge_color_g;
dest.m_mesh_edge_color_b = src.m_mesh_edge_color_b;
dest.m_mesh_edge_mode = src.m_mesh_edge_mode;
dest.m_singularValueFilterFlag = src.m_singularValueFilterFlag;
dest.m_singularThreshold = src.m_singularThreshold;
dest.m_zMaxScale = src.m_zMaxScale;
dest.m_thickness = src.m_thickness;
dest.m_wellMode = src.m_wellMode;
dest.m_wellColumnHeight = src.m_wellColumnHeight;
dest.m_wellColumnRadius = src.m_wellColumnRadius;
dest.m_wellColumnColor = src.m_wellColumnColor;
dest.m_wellColumnNameColor = src.m_wellColumnNameColor;
dest.m_wellColumnNameSize = src.m_wellColumnNameSize;
dest.m_wellColumnNameGap = src.m_wellColumnNameGap;
dest.m_faultModeEnum = src.m_faultModeEnum;
CString wellTypeColors = CString(src.m_wellTypeColors.c_str());
dest.m_wellTypeColors = wellTypeColors.AllocSysString();
dest.m_wellColumnThrough = src.m_wellColumnThrough;
dest.m_wellSymbalRadius = src.m_wellSymbalRadius;
}
/**
* <20><>ȡ<EFBFBD><C8A1>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>
*
* \param pView ͼ<><CDBC>
* \param parameter <20><><EFBFBD><EFBFBD>
*/
extern "C" __declspec(dllexport)
KevVtkSceneParameter* Vtk_GetSceneParameter(CSigmaView* pView)
{
ASSERT(pView != nullptr);
if (pView->m_pDoc->m_pXy->vtkSceneParameterSettings)
{
auto* parameter = new KevVtkSceneParameter();
CopyVtkParameters(*(pView->m_pDoc->m_pXy->vtkSceneParameterSettings), *parameter);
return parameter;
}
return nullptr;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>
*
* \param pView ͼ<><CDBC>
* \param parameter <20><><EFBFBD><EFBFBD>
*/
extern "C" __declspec(dllexport)
void Vtk_SetSceneParameter(CSigmaView* pView, KevVtkSceneParameter* parameter)
{
ASSERT(pView != nullptr);
if (parameter != nullptr)
{
auto* settings = new VtkSceneParameterSettings();
CopyVtkParameters(*parameter, *settings);
pView->m_pDoc->m_pXy->vtkSceneParameterSettings.reset(settings);
}
else
{
pView->m_pDoc->m_pXy->vtkSceneParameterSettings.reset();
}
}
/**
* <20><>ȡ<EFBFBD><C8A1>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><E1B9A9> C# <20>õ<EFBFBD>
*
* \param pView ͼ<><CDBC>
* \param parameter <20><><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
* \return
*/
extern "C" __declspec(dllexport)
bool Vtk_GetSceneParameterDetails(CSigmaView* pView, VtkSceneParameterSettings& parameter)
{
ASSERT(pView != nullptr);
auto& settings = pView->m_pDoc->m_pXy->vtkSceneParameterSettings;
if (settings)
{
parameter = *settings;
return true;
}
return false;
}