Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
VTK
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Alex W.
VTK
Commits
094c3929
Commit
094c3929
authored
3 years ago
by
Mathieu Westphal (Kitware)
Browse files
Options
Downloads
Patches
Plain Diff
Adding a CreateImageReader2FromExtension method
parent
6084b266
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
IO/Image/Testing/Python/TestTIFFReader.py
+1
-1
1 addition, 1 deletion
IO/Image/Testing/Python/TestTIFFReader.py
IO/Image/vtkImageReader2Factory.cxx
+57
-0
57 additions, 0 deletions
IO/Image/vtkImageReader2Factory.cxx
IO/Image/vtkImageReader2Factory.h
+17
-1
17 additions, 1 deletion
IO/Image/vtkImageReader2Factory.h
with
75 additions
and
2 deletions
IO/Image/Testing/Python/TestTIFFReader.py
+
1
−
1
View file @
094c3929
...
...
@@ -5,7 +5,7 @@ VTK_DATA_ROOT = vtkGetDataRoot()
# Image pipeline
createReader
=
vtk
.
vtkImageReader2Factory
()
reader
=
createReader
.
CreateImageReader2
(
""
+
str
(
VTK_DATA_ROOT
)
+
"
/Data/beach.
tif
"
)
reader
=
createReader
.
CreateImageReader2
FromExtension
(
"
tif
"
)
reader
.
SetFileName
(
""
+
str
(
VTK_DATA_ROOT
)
+
"
/Data/beach.tif
"
)
# "beach.tif" image contains ORIENTATION tag which is
# ORIENTATION_TOPLEFT (row 0 top, col 0 lhs) type. The TIFF
...
...
This diff is collapsed.
Click to expand it.
IO/Image/vtkImageReader2Factory.cxx
+
57
−
0
View file @
094c3929
...
...
@@ -34,6 +34,8 @@
// until after the AvailableReaders singleton has been destroyed.
#include
"vtkFilteringInformationKeyManager.h"
#include
<sstream>
vtkStandardNewMacro
(
vtkImageReader2Factory
);
class
vtkImageReader2FactoryCleanup
...
...
@@ -112,6 +114,61 @@ vtkImageReader2* vtkImageReader2Factory::CreateImageReader2(const char* path)
return
nullptr
;
}
vtkImageReader2
*
vtkImageReader2Factory
::
CreateImageReader2FromExtension
(
const
char
*
extension
)
{
vtkImageReader2Factory
::
InitializeReaders
();
vtkImageReader2
*
ret
;
vtkCollection
*
collection
=
vtkCollection
::
New
();
vtkObjectFactory
::
CreateAllInstance
(
"vtkImageReaderObject"
,
collection
);
vtkObject
*
object
;
// first try the current registered object factories to see
// if one of them can
for
(
collection
->
InitTraversal
();
(
object
=
collection
->
GetNextItemAsObject
());)
{
if
(
object
)
{
ret
=
vtkImageReader2
::
SafeDownCast
(
object
);
if
(
ret
)
{
const
char
*
extensions
=
ret
->
GetFileExtensions
();
if
(
vtkImageReader2Factory
::
CheckExtensionIsInExtensions
(
extension
,
extensions
))
{
return
ret
;
}
}
}
}
// get rid of the collection
collection
->
Delete
();
vtkCollectionSimpleIterator
sit
;
for
(
vtkImageReader2Factory
::
AvailableReaders
->
InitTraversal
(
sit
);
(
ret
=
vtkImageReader2Factory
::
AvailableReaders
->
GetNextImageReader2
(
sit
));)
{
const
char
*
extensions
=
ret
->
GetFileExtensions
();
if
(
vtkImageReader2Factory
::
CheckExtensionIsInExtensions
(
extension
,
extensions
))
{
return
ret
->
NewInstance
();
}
}
return
nullptr
;
}
bool
vtkImageReader2Factory
::
CheckExtensionIsInExtensions
(
const
char
*
extension
,
const
char
*
extensions
)
{
auto
iss
=
std
::
istringstream
{
extensions
};
std
::
string
localExtension
;
while
(
iss
>>
localExtension
)
{
if
(
localExtension
==
std
::
string
(
extension
)
||
localExtension
==
"."
+
std
::
string
(
extension
))
{
return
true
;
}
}
return
false
;
}
void
vtkImageReader2Factory
::
InitializeReaders
()
{
if
(
vtkImageReader2Factory
::
AvailableReaders
)
...
...
This diff is collapsed.
Click to expand it.
IO/Image/vtkImageReader2Factory.h
+
17
−
1
View file @
094c3929
...
...
@@ -57,18 +57,34 @@ public:
/**
* open the image file, it is the callers responsibility to call
* Delete on the returned object.
If no reader is found, null
* Delete on the returned object. If no reader is found, null
ptr
* is returned.
*/
VTK_NEWINSTANCE
static
vtkImageReader2
*
CreateImageReader2
(
const
char
*
path
);
/**
* Create a vtkImageReader2 from a (dotted or not) file extension.
* If mulitple readers support the same extension, only one reader
* will be returned.
* It is the callers responsibility to call Delete on the returned object.
* If no reader is found, nullptr is returned.
*/
VTK_NEWINSTANCE
static
vtkImageReader2
*
CreateImageReader2FromExtension
(
const
char
*
extension
);
/**
* The caller must allocate the vtkImageReader2Collection and pass in the
* pointer to this method.
*/
static
void
GetRegisteredReaders
(
vtkImageReader2Collection
*
);
/*
* An utility method to check if a (dotted or not) file extension is present
* in a list a whitespace separated list of dotted file extensions
*/
static
bool
CheckExtensionIsInExtensions
(
const
char
*
extension
,
const
char
*
extensions
);
protected:
vtkImageReader2Factory
();
~
vtkImageReader2Factory
()
override
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment