From 01462114be9b83d57b4d7debbf5a4e739a968296 Mon Sep 17 00:00:00 2001 From: mattijs Date: Fri, 8 Jun 2012 09:17:04 +0100 Subject: [PATCH] ENH: vtkUnstructuredReader: added texture skipping --- src/fileFormats/vtk/vtkUnstructuredReader.C | 63 ++++++--------- src/fileFormats/vtk/vtkUnstructuredReader.H | 7 ++ .../vtk/vtkUnstructuredReaderTemplates.C | 76 +++++++++++++++++++ 3 files changed, 105 insertions(+), 41 deletions(-) create mode 100644 src/fileFormats/vtk/vtkUnstructuredReaderTemplates.C diff --git a/src/fileFormats/vtk/vtkUnstructuredReader.C b/src/fileFormats/vtk/vtkUnstructuredReader.C index cec718d3af..7efce8278b 100644 --- a/src/fileFormats/vtk/vtkUnstructuredReader.C +++ b/src/fileFormats/vtk/vtkUnstructuredReader.C @@ -82,22 +82,6 @@ namespace Foam // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -template -void Foam::vtkUnstructuredReader::readBlock -( - Istream& inFile, - const label n, - List& lst -) const -{ - lst.setSize(n); - forAll(lst, i) - { - inFile >> lst[i]; - } -} - - void Foam::vtkUnstructuredReader::warnUnhandledType ( Istream& inFile, @@ -730,6 +714,7 @@ void Foam::vtkUnstructuredReader::read(ISstream& inFile) } else if (tag == "POINT_DATA") { + // 'POINT_DATA 24' readMode = POINT_DATA; wantedSize = points_.size(); @@ -798,6 +783,7 @@ void Foam::vtkUnstructuredReader::read(ISstream& inFile) } else if (tag == "VECTORS" || tag == "NORMALS") { + // 'NORMALS Normals float' string line; inFile.getLine(line); IStringStream is(line); @@ -853,6 +839,26 @@ void Foam::vtkUnstructuredReader::read(ISstream& inFile) regIOobject::store(fieldVals); } } + else if (tag == "TEXTURE_COORDINATES") + { + // 'TEXTURE_COORDINATES TCoords 2 float' + string line; + inFile.getLine(line); + IStringStream is(line); + word dataName(is); //"Tcoords" + label dim(readLabel(is)); + word dataType(is); + + if (debug) + { + Info<< "Reading texture coords " << dataName + << " dimension " << dim + << " of type " << dataType << endl; + } + + scalarField coords(dim*points_.size()); + readBlock(inFile, coords.size(), coords); + } else { FatalIOErrorIn("vtkUnstructuredReader::read(..)", inFile) @@ -892,29 +898,4 @@ void Foam::vtkUnstructuredReader::read(ISstream& inFile) } -template -void Foam::vtkUnstructuredReader::printFieldStats -( - const objectRegistry& obj -) const -{ - wordList fieldNames(obj.names(Type::typeName)); - - if (fieldNames.size() > 0) - { - Info<< "Read " << fieldNames.size() << " " << Type::typeName - << " fields:" << endl; - Info<< "Size\tName" << nl - << "----\t----" << endl; - forAll(fieldNames, i) - { - Info<< obj.lookupObject(fieldNames[i]).size() - << "\t" << fieldNames[i] - << endl; - } - Info<< endl; - } -} - - // ************************************************************************* // diff --git a/src/fileFormats/vtk/vtkUnstructuredReader.H b/src/fileFormats/vtk/vtkUnstructuredReader.H index e31bfb0d41..bc9612afaa 100644 --- a/src/fileFormats/vtk/vtkUnstructuredReader.H +++ b/src/fileFormats/vtk/vtkUnstructuredReader.H @@ -362,6 +362,13 @@ public: } // End namespace Foam +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "vtkUnstructuredReaderTemplates.C" +#endif + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif diff --git a/src/fileFormats/vtk/vtkUnstructuredReaderTemplates.C b/src/fileFormats/vtk/vtkUnstructuredReaderTemplates.C new file mode 100644 index 0000000000..eb1e5f5273 --- /dev/null +++ b/src/fileFormats/vtk/vtkUnstructuredReaderTemplates.C @@ -0,0 +1,76 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "vtkUnstructuredReader.H" +#include "labelIOField.H" +#include "scalarIOField.H" +#include "stringIOList.H" +#include "cellModeller.H" +#include "vectorIOField.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template +void Foam::vtkUnstructuredReader::readBlock +( + Istream& inFile, + const label n, + List& lst +) const +{ + lst.setSize(n); + forAll(lst, i) + { + inFile >> lst[i]; + } +} + + +template +void Foam::vtkUnstructuredReader::printFieldStats +( + const objectRegistry& obj +) const +{ + wordList fieldNames(obj.names(Type::typeName)); + + if (fieldNames.size() > 0) + { + Info<< "Read " << fieldNames.size() << " " << Type::typeName + << " fields:" << endl; + Info<< "Size\tName" << nl + << "----\t----" << endl; + forAll(fieldNames, i) + { + Info<< obj.lookupObject(fieldNames[i]).size() + << "\t" << fieldNames[i] + << endl; + } + Info<< endl; + } +} + + +// ************************************************************************* //