----------------------------------------------------------------------------
| 103 | |
| 104 | //---------------------------------------------------------------------------- |
| 105 | vtkImageReader2* vtkImageReader2Factory::CreateImageReader2FromExtension(const char* extension) |
| 106 | { |
| 107 | vtkImageReader2Factory::InitializeReaders(); |
| 108 | vtkImageReader2* ret; |
| 109 | vtkNew<vtkCollection> collection; |
| 110 | vtkObjectFactory::CreateAllInstance("vtkImageReaderObject", collection); |
| 111 | |
| 112 | // first try the current registered object factories to see |
| 113 | // if one of them can |
| 114 | for (collection->InitTraversal(); vtkObject* object = collection->GetNextItemAsObject();) |
| 115 | { |
| 116 | ret = vtkImageReader2::SafeDownCast(object); |
| 117 | if (ret) |
| 118 | { |
| 119 | const char* extensions = ret->GetFileExtensions(); |
| 120 | if (vtkImageReader2Factory::CheckExtensionIsInExtensions(extension, extensions)) |
| 121 | { |
| 122 | return ret; |
| 123 | } |
| 124 | } |
| 125 | } |
| 126 | |
| 127 | // Then try all available readers |
| 128 | vtkCollectionSimpleIterator sit; |
| 129 | for (vtkImageReader2Factory::AvailableReaders->InitTraversal(sit); |
| 130 | (ret = vtkImageReader2Factory::AvailableReaders->GetNextImageReader2(sit));) |
| 131 | { |
| 132 | const char* extensions = ret->GetFileExtensions(); |
| 133 | if (vtkImageReader2Factory::CheckExtensionIsInExtensions(extension, extensions)) |
| 134 | { |
| 135 | return ret->NewInstance(); |
| 136 | } |
| 137 | } |
| 138 | return nullptr; |
| 139 | } |
| 140 | |
| 141 | //---------------------------------------------------------------------------- |
| 142 | bool vtkImageReader2Factory::CheckExtensionIsInExtensions( |
no test coverage detected