#pragma once#include<Eigen/Dense>#include<Eigen/Sparse>#include<QString>#include<QSharedPointer>#include<vtkPolyData.h>#include<vtkSmartPointer.h>#include<vtkTransform.h>#include<itkImage.h>#include<vnl/vnl_vector.h>usingPixelType=float;usingImageType=itk::Image<PixelType,3>;namespaceshapeworks{classStudioMesh;usingMeshHandle=std::shared_ptr<StudioMesh>;usingMeshList=std::vector<MeshHandle>;classStudioMesh{public:StudioMesh();~StudioMesh();QStringget_dimension_string();vtkSmartPointer<vtkPolyData>get_poly_data();vnl_vector<double>get_center_transform();voidset_poly_data(vtkSmartPointer<vtkPolyData>poly_data);voidset_error_message(std::stringerror_message);std::stringget_error_message();voidapply_feature_map(std::stringname,ImageType::Pointerimage);voidapply_scalars(MeshHandlemesh);voidinterpolate_scalars_to_mesh(std::stringname,vnl_vector<double>positions,Eigen::VectorXfscalar_values);private:// metadataintdimensions_[3];vnl_vector<double>center_transform_;// the polydatavtkSmartPointer<vtkPolyData>poly_data_;// error message if the polydata didn't loadstd::stringerror_message_;};}