NorMIT-nav  2023.01.05-dev+develop.0da12
An IGT application
cxPNGImageReader.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 
12 #include "cxPNGImageReader.h"
13 
14 #include <QFileInfo>
15 #include <vtkPNGReader.h>
16 #include <vtkImageData.h>
17 #include <ctkPluginContext.h>
18 #include "cxImage.h"
19 #include "cxPatientModelService.h"
20 
21 typedef vtkSmartPointer<class vtkPNGReader> vtkPNGReaderPtr;
22 namespace cx
23 {
24 
26  FileReaderWriterImplService("PNGImageReader" ,Image::getTypeName(), "", "png", patientModelService)
27 {
28 
29 }
30 
31 bool PNGImageReader::canRead(const QString &type, const QString &filename)
32 {
33  QString fileType = QFileInfo(filename).suffix();
34  return (fileType.compare("png", Qt::CaseInsensitive) == 0);
35 }
36 
37 bool PNGImageReader::readInto(DataPtr data, QString filename)
38 {
39  return this->readInto(boost::dynamic_pointer_cast<Image>(data), filename);
40 }
41 
42 bool PNGImageReader::readInto(ImagePtr image, QString filename)
43 {
44  if (!image)
45  return false;
46  vtkImageDataPtr raw = this->loadVtkImageData(filename);
47  if(!raw)
48  return false;
49  image->setVtkImageData(raw);
50  return true;
51 }
52 
54 {
55  return Image::getTypeName();
56 }
57 
58 DataPtr PNGImageReader::read(const QString& uid, const QString& filename)
59 {
60  ImagePtr image(new Image(uid, vtkImageDataPtr()));
61  this->readInto(image, filename);
62  return image;
63 }
64 
65 std::vector<DataPtr> PNGImageReader::read(const QString &filename)
66 {
67  std::vector<DataPtr> retval;
68  ImagePtr image = boost::dynamic_pointer_cast<Image>(this->createData(Image::getTypeName() , filename));
69 
70  vtkImageDataPtr raw = this->loadVtkImageData(filename);
71  if(!raw)
72  return retval;
73  image->setVtkImageData(raw);
74 
75  retval.push_back(image);
76  return retval;
77 
78 }
79 
81 {
82  vtkPNGReaderPtr pngReader = vtkPNGReaderPtr::New();
83  pngReader->SetFileName(filename.toStdString().c_str());
84  pngReader->Update();
85  return pngReader->GetOutput();
86 }
87 
88 }
89 
90 
92 {
93  return "";
94 }
95 
96 bool cx::PNGImageReader::canWrite(const QString &type, const QString &filename) const
97 {
98  return false;
99 }
cx::PNGImageReader::canWrite
bool canWrite(const QString &type, const QString &filename) const
Definition: cxPNGImageReader.cpp:96
cx::PNGImageReader::canReadDataType
virtual QString canReadDataType() const
Definition: cxPNGImageReader.cpp:53
cx
Namespace for all CustusX production code.
Definition: cx_dev_group_definitions.h:13
cx::PNGImageReader::read
virtual DataPtr read(const QString &uid, const QString &filename)
Definition: cxPNGImageReader.cpp:58
cxImage.h
cxPNGImageReader.h
cx::PNGImageReader::canWriteDataType
QString canWriteDataType() const
Definition: cxPNGImageReader.cpp:91
vtkImageDataPtr
vtkSmartPointer< class vtkImageData > vtkImageDataPtr
Definition: cxVideoConnectionWidget.h:30
cx::PNGImageReader::canRead
virtual bool canRead(const QString &type, const QString &filename)
Definition: cxPNGImageReader.cpp:31
cx::Image::getTypeName
static QString getTypeName()
Definition: cxImage.h:126
cx::PatientModelServicePtr
boost::shared_ptr< class PatientModelService > PatientModelServicePtr
Definition: cxLogicManager.h:25
cx::DataPtr
boost::shared_ptr< class Data > DataPtr
Definition: cxRegistrationApplicator.h:22
cxPatientModelService.h
cx::ImagePtr
boost::shared_ptr< class Image > ImagePtr
Definition: cxDicomWidget.h:27
cx::FileReaderWriterImplService
Definition: cxFileReaderWriterService.h:71
vtkPNGReaderPtr
vtkSmartPointer< class vtkPNGReader > vtkPNGReaderPtr
Definition: cxPNGImageReader.cpp:21
cx::PNGImageReader::readInto
virtual bool readInto(DataPtr data, QString path)
Definition: cxPNGImageReader.cpp:37
cx::Image
A volumetric data set.
Definition: cxImage.h:45
cx::PNGImageReader::PNGImageReader
PNGImageReader(PatientModelServicePtr patientModelService)
Definition: cxPNGImageReader.cpp:25
cx::FileReaderWriterImplService::createData
DataPtr createData(QString type, QString filename, QString name="") const
Definition: cxFileReaderWriterService.cpp:75
cx::PNGImageReader::loadVtkImageData
virtual vtkImageDataPtr loadVtkImageData(QString filename)
Definition: cxPNGImageReader.cpp:80