![]() |
ACloudViewer
3.9.4
A Modern Library for 3D Data Processing
|
Generic file I/O filter. More...
#include <FileIOFilter.h>

Classes | |
| struct | FilterInfo |
| struct | LoadParameters |
| Generic loading parameters. More... | |
| struct | SaveParameters |
| Generic saving parameters. More... | |
Public Types | |
| enum | FilterFeature { NoFeatures = 0x0000 , Import = 0x00001 , Export = 0x0002 , BuiltIn = 0x0004 , DynamicInfo = 0x0008 } |
| using | Shared = QSharedPointer< FileIOFilter > |
| Shared type. More... | |
| using | FilterContainer = std::vector< FileIOFilter::Shared > |
| Type of a I/O filters container. More... | |
Public Member Functions | |
| virtual | ~FileIOFilter ()=default |
| bool | importSupported () const |
| Returns whether this I/O filter can import files. More... | |
| bool | exportSupported () const |
| Returns whether this I/O filter can export files. More... | |
| const QStringList & | getFileFilters (bool onImport) const |
| Returns the file filter(s) for this I/O filter. More... | |
| QString | getDefaultExtension () const |
| Returns the default file extension. More... | |
| virtual CC_FILE_ERROR | loadFile (const QString &filename, ccHObject &container, LoadParameters ¶meters) |
| Loads one or more entities from a file. More... | |
| virtual CC_FILE_ERROR | saveToFile (ccHObject *entity, const QString &filename, const SaveParameters ¶meters) |
| Saves an entity (or a group of) to a file. More... | |
| virtual bool | canSave (CV_CLASS_ENUM type, bool &multiple, bool &exclusive) const |
| Returns whether this I/O filter can save the specified type of entity. More... | |
| virtual void | unregister () |
| Called when the filter is unregistered. More... | |
Static Public Member Functions | |
| static QStringList | ImportFilterList () |
| static ccHObject * | LoadFromFile (const QString &filename, LoadParameters ¶meters, Shared filter, CC_FILE_ERROR &result) |
| Loads one or more entities from a file with a known filter. More... | |
| static ccHObject * | LoadFromFile (const QString &filename, LoadParameters ¶meters, CC_FILE_ERROR &result, const QString &fileFilter=QString()) |
| Loads one or more entities from a file with known type. More... | |
| static CC_FILE_ERROR | SaveToFile (ccHObject *entities, const QString &filename, const SaveParameters ¶meters, Shared filter) |
| static CC_FILE_ERROR | SaveToFile (ccHObject *entities, const QString &filename, const SaveParameters ¶meters, const QString &fileFilter) |
| static bool | HandleGlobalShift (const CCVector3d &P, CCVector3d &Pshift, bool &preserveCoordinateShift, LoadParameters &loadParameters, bool useInputCoordinatesShiftIfPossible=false) |
| Shortcut to the ecvGlobalShiftManager mechanism specific for files. More... | |
| static void | DisplayErrorMessage (CC_FILE_ERROR err, const QString &action, const QString &filename) |
| Displays (to console) the message corresponding to a given error code. More... | |
| static bool | CheckForSpecialChars (const QString &filename) |
| Returns whether special characters are present in the input string. More... | |
| static void | ResetSesionCounter () |
| static unsigned | IncreaseSesionCounter () |
| static void | Register (Shared filter) |
| Registers a new filter. More... | |
| static Shared | GetFilter (const QString &fileFilter, bool onImport) |
| Returns the filter corresponding to the given 'file filter'. More... | |
| static Shared | FindBestFilterForExtension (const QString &ext) |
| Returns the best filter (presumably) to open a given file extension. More... | |
| static const FilterContainer & | GetFilters () |
| Returns the set of all registered filters. More... | |
| static void | UnregisterAll () |
| Unregisters all filters. More... | |
Protected Member Functions | |
| FileIOFilter (const FilterInfo &info) | |
| void | setImportExtensions (const QStringList &extensions) |
| void | setImportFileFilterStrings (const QStringList &filterStrings) |
| void | setExportFileFilterStrings (const QStringList &filterStrings) |
Static Protected Attributes | |
| static constexpr float | DEFAULT_PRIORITY = 25.0f |
Generic file I/O filter.
Gives static access to file loader. Must be implemented by any specific I/O filter.
Definition at line 46 of file FileIOFilter.h.
| using FileIOFilter::FilterContainer = std::vector<FileIOFilter::Shared> |
Type of a I/O filters container.
Definition at line 284 of file FileIOFilter.h.
| using FileIOFilter::Shared = QSharedPointer<FileIOFilter> |
Shared type.
Definition at line 97 of file FileIOFilter.h.
| Enumerator | |
|---|---|
| NoFeatures | |
| Import | |
| Export | |
| BuiltIn | |
| DynamicInfo | |
Definition at line 299 of file FileIOFilter.h.
|
virtualdefault |
|
explicitprotected |
Definition at line 52 of file FileIOFilter.cpp.
References DynamicInfo, and FileIOFilter::FilterInfo::features.
|
inlinevirtual |
Returns whether this I/O filter can save the specified type of entity.
| type | entity type |
| multiple | whether the filter can save multiple instances of this entity at once |
| exclusive | whether the filter can only save this type of entity if selected or if it can be mixed with other types |
Reimplemented in RDBFilter, LASFilter, LasIOFilter, LASFWFFilter, FBXFilter, E57Filter, DRCFilter, SimpleBinFilter, MascaretFilter, MAFilter, HeightProfileFilter, SinusxFilter, SalomeHydroFilter, PVFilter, PovFilter, PNFilter, VTKFilter, STLFilter, PlyFilter, OFFFilter, ObjFilter, ImageFileFilter, DxfFilter, DepthMapFileFilter, BinFilter, AsciiFilter, PcdFilter, and IoAbstractLoader.
Definition at line 158 of file FileIOFilter.h.
References type.
|
static |
Returns whether special characters are present in the input string.
Definition at line 505 of file FileIOFilter.cpp.
References filename.
Referenced by IcmFilter::LoadCalibratedImages(), DxfFilter::loadFile(), IcmFilter::loadFile(), FBXFilter::loadFile(), DxfFilter::saveToFile(), FBXFilter::saveToFile(), and DepthMapFileFilter::saveToFile().
|
static |
Displays (to console) the message corresponding to a given error code.
| err | error code |
| action | "saving", "reading", etc. |
| filename | corresponding file |
Definition at line 425 of file FileIOFilter.cpp.
References CC_FERR_BAD_ARGUMENT, CC_FERR_BAD_ENTITY_TYPE, CC_FERR_BROKEN_DEPENDENCY_ERROR, CC_FERR_CANCELED_BY_USER, CC_FERR_CONSOLE_ERROR, CC_FERR_FILE_WAS_WRITTEN_BY_UNKNOWN_PLUGIN, CC_FERR_MALFORMED_FILE, CC_FERR_NO_ERROR, CC_FERR_NO_LOAD, CC_FERR_NO_SAVE, CC_FERR_NOT_ENOUGH_MEMORY, CC_FERR_NOT_IMPLEMENTED, CC_FERR_READING, CC_FERR_THIRD_PARTY_LIB_EXCEPTION, CC_FERR_THIRD_PARTY_LIB_FAILURE, CC_FERR_UNKNOWN_FILE, CC_FERR_WRITING, CC_FERR_WRONG_FILE_TYPE, CVLog::Error(), filename, and CVLog::Warning().
Referenced by cloudViewer::io::AutoReadEntity(), cloudViewer::io::AutoWriteEntity(), LoadFromFile(), and SaveToFile().
| bool FileIOFilter::exportSupported | ( | ) | const |
Returns whether this I/O filter can export files.
Definition at line 65 of file FileIOFilter.cpp.
References Export, and FileIOFilter::FilterInfo::features.
|
static |
Returns the best filter (presumably) to open a given file extension.
Definition at line 228 of file FileIOFilter.cpp.
References s_ioFilters.
Referenced by cloudViewer::io::AutoReadEntity(), cloudViewer::io::AutoWriteEntity(), IcmFilter::loadFile(), PovFilter::loadFile(), and LoadFromFile().
| QString FileIOFilter::getDefaultExtension | ( | ) | const |
Returns the default file extension.
Definition at line 77 of file FileIOFilter.cpp.
References FileIOFilter::FilterInfo::defaultExtension.
| const QStringList & FileIOFilter::getFileFilters | ( | bool | onImport | ) | const |
Returns the file filter(s) for this I/O filter.
E.g. 'ASCII file (*.asc)'
| onImport | whether the requested filters are for import or export |
Definition at line 69 of file FileIOFilter.cpp.
References FileIOFilter::FilterInfo::exportFileFilterStrings, and FileIOFilter::FilterInfo::importFileFilterStrings.
|
static |
Returns the filter corresponding to the given 'file filter'.
Definition at line 212 of file FileIOFilter.cpp.
References s_ioFilters.
Referenced by LoadFromFile(), CommandLoadLASFWF::process(), ccCommandLineParser::saveClouds(), ccCommandLineParser::saveMeshes(), and SaveToFile().
|
static |
Returns the set of all registered filters.
Definition at line 224 of file FileIOFilter.cpp.
References s_ioFilters.
Referenced by cloudViewer::io::AutoReadEntity(), cloudViewer::io::AutoWriteEntity(), define_qcc_io(), CommandChangeOutputFormat::getFileFormatFilter(), and cvSelectionExporter::saveObjectToFileWithDialog().
|
static |
Shortcut to the ecvGlobalShiftManager mechanism specific for files.
| [in] | P | sample point (typically the first loaded) |
| [out] | Pshift | global shift |
| [out] | preserveCoordinateShift | whether shift sould be preserved on save |
| [in] | loadParameters | loading parameters |
| [in] | useInputCoordinatesShiftIfPossible | whether to use the input 'PShift' vector if possible |
Definition at line 509 of file FileIOFilter.cpp.
References FileIOFilter::LoadParameters::coordinatesShift, FileIOFilter::LoadParameters::coordinatesShiftEnabled, ecvGlobalShiftManager::Handle(), FileIOFilter::LoadParameters::preserveShiftOnSave, and FileIOFilter::LoadParameters::shiftHandlingMode.
Referenced by FromFbxMesh(), GetGlobalShift(), STLFilter::loadASCIIFile(), STLFilter::loadBinaryFile(), LoadCloud(), AsciiFilter::loadCloudFromFormatedAsciiStream(), ObjFilter::loadFile(), OFFFilter::loadFile(), PTXFilter::loadFile(), VTKFilter::loadFile(), SalomeHydroFilter::loadFile(), SinusxFilter::loadFile(), SimpleBinFilter::loadFile(), LASFWFFilter::loadFile(), LASFilter::loadFile(), LoadScan(), and vertex_cb().
|
static |
Get a list of all the available importer filter strings for use in a drop down menu. Includes "All (*.)" as the first item in the list.
Definition at line 241 of file FileIOFilter.cpp.
References s_ioFilters.
| bool FileIOFilter::importSupported | ( | ) | const |
Returns whether this I/O filter can import files.
Definition at line 61 of file FileIOFilter.cpp.
References FileIOFilter::FilterInfo::features, and Import.
|
static |
Indicates to the I/O filters that a new loading/saving action has started
Definition at line 142 of file FileIOFilter.cpp.
References s_sessionCounter.
Referenced by cloudViewer::io::AutoReadEntity(), and LoadFromFile().
|
inlinevirtual |
Loads one or more entities from a file.
This method must be implemented by children classes.
| filename | file to load |
| container | container to store loaded entities |
| parameters | generic loading parameters |
Reimplemented in IoAbstractLoader, STEPFilter, RDBFilter, LASFilter, LasIOFilter, LASFWFFilter, FBXFilter, E57Filter, DRCFilter, SimpleBinFilter, PDMSFilter, SoiFilter, SinusxFilter, SalomeHydroFilter, PVFilter, PovFilter, PNFilter, IcmFilter, BundlerFilter, VTKFilter, STLFilter, PTXFilter, PlyFilter, OFFFilter, ObjFilter, ImageFileFilter, DxfFilter, BinFilter, AsciiFilter, PcdFilter, PhotoScanFilter, and CSVMatrixFilter.
Definition at line 124 of file FileIOFilter.h.
References CC_FERR_NOT_IMPLEMENTED, and filename.
|
static |
Loads one or more entities from a file with known type.
Shortcut to the other version of FileIOFilter::LoadFromFile
| filename | filename | |
| parameters | generic loading parameters | |
| [out] | result | file error code |
| fileFilter | input filter 'file filter' (if empty, the best I/O filter will be guessed from the file extension) |
Definition at line 334 of file FileIOFilter.cpp.
References CC_FERR_CONSOLE_ERROR, CVLog::Error(), filename, FindBestFilterForExtension(), GetFilter(), LoadFromFile(), and result.
|
static |
Loads one or more entities from a file with a known filter.
Shortcut to FileIOFilter::loadFile
| filename | filename | |
| parameters | generic loading parameters | |
| filter | input filter | |
| [out] | result | file error code |
Definition at line 253 of file FileIOFilter.cpp.
References CC_FERR_CONSOLE_ERROR, CC_FERR_NO_ERROR, DisplayErrorMessage(), e, CVLog::Error(), filename, ccHObject::getChild(), ccHObject::getChildrenNumber(), ccObject::getName(), IncreaseSesionCounter(), CVLog::Print(), ccHObject::removeAllChildren(), result, FileIOFilter::LoadParameters::sessionStart, ccObject::setBaseName(), ccObject::setFullPath(), ccObject::setName(), and CVLog::Warning().
Referenced by MainWindow::addToDB(), define_qcc_io(), JsonRPCPlugin::execute(), ccCommandLineParser::importFile(), ccGuiPythonInstance::loadFile(), PhotoScanFilter::loadFile(), IcmFilter::loadFile(), PovFilter::loadFile(), MainWindow::loadFile(), LoadFromFile(), and ReadCloud().
|
static |
Registers a new filter.
Definition at line 167 of file FileIOFilter.cpp.
References s_ioFilters, and CVLog::Warning().
Referenced by ccPluginManager::loadPlugins().
|
static |
Indicates to the I/O filters that a new loading/saving session has started (for "Apply all" buttons for instance)
Definition at line 140 of file FileIOFilter.cpp.
References s_sessionCounter.
Referenced by MainWindow::addToDB(), cloudViewer::io::AutoReadEntity(), cloudViewer::io::AutoWriteEntity(), and masc::Tools::LoadFile().
|
static |
Saves an entity (or a group of) to a specific file thanks to a given filter Shortcut to the other version of FileIOFilter::SaveToFile
| entities | entity to save (can be a group of other entities) |
| filename | filename |
| parameters | saving parameters |
| fileFilter | output filter 'file filter' |
Definition at line 408 of file FileIOFilter.cpp.
References CC_FERR_BAD_ARGUMENT, CC_FERR_UNKNOWN_FILE, CVLog::Error(), filename, GetFilter(), and SaveToFile().
|
static |
Saves an entity (or a group of) to a specific file thanks to a given filter Shortcut to FileIOFilter::saveFile
| entities | entity to save (can be a group of other entities) |
| filename | filename |
| parameters | saving parameters |
| filter | output filter |
Definition at line 377 of file FileIOFilter.cpp.
References CC_FERR_BAD_ARGUMENT, CC_FERR_CONSOLE_ERROR, CC_FERR_NO_ERROR, DisplayErrorMessage(), filename, CVLog::Print(), result, and CVLog::Warning().
Referenced by define_qcc_io(), ccCommandLineParser::exportEntity(), cvSelectionExporter::saveObjectToFileWithDialog(), SaveToFile(), and PovFilter::saveToFile().
|
inlinevirtual |
Saves an entity (or a group of) to a file.
This method must be implemented by children classes.
| entity | entity (or group of) to save |
| filename | filename |
| parameters | generic saving parameters |
Reimplemented in LASFilter, LasIOFilter, LASFWFFilter, FBXFilter, E57Filter, DRCFilter, SimpleBinFilter, MascaretFilter, MAFilter, HeightProfileFilter, SinusxFilter, SalomeHydroFilter, PVFilter, PovFilter, PNFilter, VTKFilter, STLFilter, PlyFilter, OFFFilter, ObjFilter, ImageFileFilter, DxfFilter, DepthMapFileFilter, BinFilter, AsciiFilter, and PcdFilter.
Definition at line 141 of file FileIOFilter.h.
References CC_FERR_NOT_IMPLEMENTED, and filename.
|
protected |
Allow export filter strings to be set after construction (e.g. for ImageFileFilter & QImageReader::supportedImageFormats())
Definition at line 90 of file FileIOFilter.cpp.
References FileIOFilter::FilterInfo::exportFileFilterStrings.
|
protected |
Allow import extensions to be set after construction (e.g. for ImageFileFilter & QImageReader::supportedImageFormats())
Definition at line 81 of file FileIOFilter.cpp.
References FileIOFilter::FilterInfo::importExtensions.
|
protected |
Allow import filter strings to be set after construction (e.g. for ImageFileFilter & QImageReader::supportedImageFormats())
Definition at line 85 of file FileIOFilter.cpp.
References FileIOFilter::FilterInfo::importFileFilterStrings.
|
inlinevirtual |
Called when the filter is unregistered.
Does nothing by default
Definition at line 296 of file FileIOFilter.h.
|
static |
Unregisters all filters.
Should be called at the end of the application
Definition at line 204 of file FileIOFilter.cpp.
References s_ioFilters.
Referenced by main().
|
staticconstexprprotected |
Definition at line 313 of file FileIOFilter.h.
Referenced by Assimp3DMax::Assimp3DMax(), AssimpBlender::AssimpBlender(), AssimpCollada::AssimpCollada(), AssimpCommonFilter::AssimpCommonFilter(), AssimpGltf::AssimpGltf(), AssimpIfc::AssimpIfc(), BundlerFilter::BundlerFilter(), CSVMatrixFilter::CSVMatrixFilter(), DepthMapFileFilter::DepthMapFileFilter(), IcmFilter::IcmFilter(), LASFilter::LASFilter(), MAFilter::MAFilter(), MascaretFilter::MascaretFilter(), PDMSFilter::PDMSFilter(), PNFilter::PNFilter(), PovFilter::PovFilter(), PVFilter::PVFilter(), RDBFilter::RDBFilter(), SalomeHydroFilter::SalomeHydroFilter(), SinusxFilter::SinusxFilter(), SoiFilter::SoiFilter(), and STEPFilter::STEPFilter().