NorMIT-nav  2023.01.05-dev+develop.0da12
An IGT application
cxXMLPolyDataMeshReader.cpp
Go to the documentation of this file.
1 /*=========================================================================
2 This file is part of CustusX, an Image Guided Therapy Application.
3 
4 Copyright (c) SINTEF Department of Medical Technology.
5 All rights reserved.
6 
7 CustusX is released under a BSD 3-Clause license.
8 
9 See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details.
10 =========================================================================*/
11 
13 
14 #include "cxMesh.h"
15 #include <ctkPluginContext.h>
16 #include "cxErrorObserver.h"
17 #include <vtkXMLPolyDataReader.h>
18 #include "cxTypeConversions.h"
19 #include <vtkPolyData.h>
20 
21 namespace cx {
22 
23 bool XMLPolyDataMeshReader::readInto(DataPtr data, QString filename)
24 {
25  return this->readInto(boost::dynamic_pointer_cast<Mesh>(data), filename);
26 }
27 
28 bool XMLPolyDataMeshReader::readInto(MeshPtr mesh, QString filename)
29 {
30  if (!mesh)
31  return false;
32  vtkPolyDataPtr raw = this->loadVtkPolyData(filename);
33  if(!raw)
34  return false;
35  mesh->setVtkPolyData(raw);
36  return true;
37 }
38 
39 std::vector<DataPtr> XMLPolyDataMeshReader::read(const QString &filename)
40 {
41  std::vector<DataPtr> retval;
42  MeshPtr mesh = boost::dynamic_pointer_cast<Mesh>(this->createData(Mesh::getTypeName(), filename));
43 
44  vtkPolyDataPtr raw = this->loadVtkPolyData(filename);
45  if(!raw)
46  return retval;
47  mesh->setVtkPolyData(raw);
48 
49  retval.push_back(mesh);
50  return retval;
51 }
52 
54 {
55  vtkXMLPolyDataReaderPtr reader = vtkXMLPolyDataReaderPtr::New();
56  reader->SetFileName(cstring_cast(fileName));
57 
58  if (!ErrorObserver::checkedRead(reader, fileName))
59  return vtkPolyDataPtr();
60 
61  vtkPolyDataPtr polyData = reader->GetOutput();
62  return polyData;
63 }
64 
65 DataPtr XMLPolyDataMeshReader::read(const QString& uid, const QString& filename)
66 {
67  MeshPtr mesh(new Mesh(uid));
68  this->readInto(mesh, filename);
69  return mesh;
70 }
71 
73 {
74  return Mesh::getTypeName();
75 }
76 
78  FileReaderWriterImplService("XMLPolyDataMeshReader", Mesh::getTypeName(), "", "vtp", patientModelService)
79 {
80 }
81 
82 bool XMLPolyDataMeshReader::canRead(const QString &type, const QString &filename)
83 {
84  QString fileType = QFileInfo(filename).suffix();
85  return ( fileType.compare("vtp", Qt::CaseInsensitive) == 0);
86 }
87 
88 }
89 
91 {
92  return "";
93 }
94 
95 bool cx::XMLPolyDataMeshReader::canWrite(const QString &type, const QString &filename) const
96 {
97  return false;
98 }
cxXMLPolyDataMeshReader.h
cx
Namespace for all CustusX production code.
Definition: cx_dev_group_definitions.h:13
cx::XMLPolyDataMeshReader::read
virtual DataPtr read(const QString &uid, const QString &filename)
Definition: cxXMLPolyDataMeshReader.cpp:65
cx::XMLPolyDataMeshReader::canRead
virtual bool canRead(const QString &type, const QString &filename)
Definition: cxXMLPolyDataMeshReader.cpp:82
cstring_cast
cstring_cast_Placeholder cstring_cast(const T &val)
Definition: cxTypeConversions.h:69
cx::XMLPolyDataMeshReader::canWrite
bool canWrite(const QString &type, const QString &filename) const
Definition: cxXMLPolyDataMeshReader.cpp:95
cx::Mesh::getTypeName
static QString getTypeName()
Definition: cxMesh.h:67
cx::MeshPtr
boost::shared_ptr< class Mesh > MeshPtr
Definition: cxForwardDeclarations.h:48
cxErrorObserver.h
cx::XMLPolyDataMeshReader::readInto
virtual bool readInto(DataPtr data, QString path)
Definition: cxXMLPolyDataMeshReader.cpp:23
cx::XMLPolyDataMeshReader::canReadDataType
virtual QString canReadDataType() const
Definition: cxXMLPolyDataMeshReader.cpp:72
cx::PatientModelServicePtr
boost::shared_ptr< class PatientModelService > PatientModelServicePtr
Definition: cxLogicManager.h:25
cxTypeConversions.h
cx::DataPtr
boost::shared_ptr< class Data > DataPtr
Definition: cxRegistrationApplicator.h:22
cx::XMLPolyDataMeshReader::loadVtkPolyData
virtual vtkPolyDataPtr loadVtkPolyData(QString filename)
Definition: cxXMLPolyDataMeshReader.cpp:53
vtkXMLPolyDataReaderPtr
vtkSmartPointer< class vtkXMLPolyDataReader > vtkXMLPolyDataReaderPtr
Definition: vtkForwardDeclarations.h:115
cx::vtkPolyDataPtr
vtkSmartPointer< vtkPolyData > vtkPolyDataPtr
Definition: cxCenterlineRegistration.h:42
cx::ErrorObserver::checkedRead
static bool checkedRead(vtkSmartPointer< vtkAlgorithm > reader, QString filename)
Definition: cxErrorObserver.h:60
cx::FileReaderWriterImplService
Definition: cxFileReaderWriterService.h:71
cx::XMLPolyDataMeshReader::XMLPolyDataMeshReader
XMLPolyDataMeshReader(PatientModelServicePtr patientModelService)
Definition: cxXMLPolyDataMeshReader.cpp:77
cx::Mesh
A mesh data set.
Definition: cxMesh.h:45
cx::FileReaderWriterImplService::createData
DataPtr createData(QString type, QString filename, QString name="") const
Definition: cxFileReaderWriterService.cpp:75
cxMesh.h
cx::XMLPolyDataMeshReader::canWriteDataType
QString canWriteDataType() const
Definition: cxXMLPolyDataMeshReader.cpp:90