X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FvtkClosePolyData.cxx;h=1ed82f0fca438d0aff166978bb4ba2ce1d85164e;hb=ba3bf1e05af2b03d6b013606b9d885d8fb0b2cb4;hp=82f6591a103ac4677b9f5ecd925568836e8cc498;hpb=c5feadbb145eecf6d73f793535b7e23eb18db2cb;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkClosePolyData.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkClosePolyData.cxx index 82f6591..1ed82f0 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkClosePolyData.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkClosePolyData.cxx @@ -1,10 +1,35 @@ +/*# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Sant�) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ */ + /*========================================================================= Program: Visualization Toolkit Module: $RCSfile: vtkClosePolyData.cxx,v $ Language: C++ - Date: $Date: 2008/10/31 16:32:41 $ - Version: $Revision: 1.1 $ + Date: $Date: 2012/11/15 14:14:35 $ + Version: $Revision: 1.3 $ Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. @@ -17,7 +42,6 @@ =========================================================================*/ #include "vtkClosePolyData.h" -#include "vtkObjectFactory.h" #include "vtkPolyData.h" #include "vtkFeatureEdges.h" #include "vtkStripper.h" @@ -26,7 +50,17 @@ #include "vtkAppendPolyData.h" #include "vtkCleanPolyData.h" -vtkCxxRevisionMacro(vtkClosePolyData, "$Revision: 1.1 $"); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + vtkCxxRevisionMacro(vtkClosePolyData, "$Revision: 1.3 $"); +#else + #include "vtkDataObject.h" + #include "vtkInformation.h" + #include "vtkDemandDrivenPipeline.h" + #include "vtkInformationVector.h" +#endif + vtkStandardNewMacro(vtkClosePolyData); //---------------------------------------------------------------------------- @@ -39,54 +73,135 @@ vtkClosePolyData::~vtkClosePolyData() { } + //---------------------------------------------------------------------------- -// This method is much too long, and has to be broken up! -// Furthermore we are loosing the normals !!! -void vtkClosePolyData::Execute() + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + // This method is much too long, and has to be broken up! + // Furthermore we are loosing the normals !!! + void vtkClosePolyData::Execute() + { + vtkPolyData *input = this->GetInput(); + vtkPolyData *output = this->GetOutput(); + + //#closing the polydata see : close.py for details + vtkFeatureEdges *boundary = vtkFeatureEdges::New(); + boundary->SetInput( input ); + boundary->BoundaryEdgesOn (); + boundary->FeatureEdgesOff (); + boundary->NonManifoldEdgesOff (); + boundary->ManifoldEdgesOff (); + //boundary->ColoringOff (); + + vtkStripper *stripper = vtkStripper::New(); + stripper->SetInput( boundary->GetOutput() ); + stripper->Update(); //important + boundary->Delete(); + + vtkPolyData *pd = vtkPolyData::New(); + pd->SetPoints ( stripper->GetOutput()->GetPoints() ); + pd->SetPolys ( stripper->GetOutput()->GetLines() ); + stripper->Delete(); + + //vtkGLUTesselatorTriangleFilter *triangle = vtkGLUTesselatorTriangleFilter::New(); + vtkTriangleFilter *triangle = vtkTriangleFilter::New(); + triangle->SetInput( pd ); + pd->Delete(); + + vtkAppendPolyData *append = vtkAppendPolyData::New(); + append->AddInput( input ); + append->AddInput( triangle->GetOutput()); + triangle->Delete(); + vtkInformation + vtkCleanPolyData *clean = vtkCleanPolyData::New(); + clean->SetInput( append->GetOutput()); + append->Delete(); + + // When all optimizations are complete, this squeeze will be unecessary. + // (But it does not seem to cost much.) + clean->Update(); //important before ShallowCopy + output->ShallowCopy( clean->GetOutput() ); + clean->Delete(); + } + +#else +/* + int vtkClosePolyData::ProcessRequest( vtkInformation *request, + vtkInformationVector **inputVector, + vtkInformationVector *outputVector) + { +printf("EED Warning ERROR ! vtkClosePolyData::ProcessRequest not implemented VTK7 migration"); + // generate the data + if(request->Has(vtkDemandDrivenPipeline::REQUEST_INFORMATION())) + { + // specify that the output (only one for this filter) will be double + vtkInformation* outInfo = outputVector->GetInformationObject(0); + outInfo->Set(vtkDataObject::SCALAR_TYPE(),VTK_DOUBLE); + return 1; + } + return this->Superclass::ProcessRequest(request,inputVector,outputVector); + } +*/ + +int vtkClosePolyData::RequestData( vtkInformation *vtkNotUsed(request), vtkInformationVector **inputVector, vtkInformationVector *outputVector) { - vtkPolyData *input = this->GetInput(); - vtkPolyData *output = this->GetOutput(); + + // get the info objects + vtkInformation *inInfo = inputVector[0]->GetInformationObject(0); + vtkInformation *outInfo = outputVector->GetInformationObject(0); + + // get the input and output + vtkPolyData *input = vtkPolyData::SafeDownCast( inInfo->Get(vtkDataObject::DATA_OBJECT())); + vtkPolyData *output = vtkPolyData::SafeDownCast( outInfo->Get(vtkDataObject::DATA_OBJECT())); + + //#closing the polydata see : close.py for details + vtkFeatureEdges *boundary = vtkFeatureEdges::New(); + boundary->SetInputData( input ); + boundary->BoundaryEdgesOn (); + boundary->FeatureEdgesOff (); + boundary->NonManifoldEdgesOff (); + boundary->ManifoldEdgesOff (); + //boundary->ColoringOff (); + + vtkStripper *stripper = vtkStripper::New(); + stripper->SetInputData( boundary->GetOutput() ); + stripper->Update(); //important + boundary->Delete(); + + vtkPolyData *pd = vtkPolyData::New(); + pd->SetPoints ( stripper->GetOutput()->GetPoints() ); + pd->SetPolys ( stripper->GetOutput()->GetLines() ); + stripper->Delete(); + + //vtkGLUTesselatorTriangleFilter *triangle = vtkGLUTesselatorTriangleFilter::New(); + vtkTriangleFilter *triangle = vtkTriangleFilter::New(); + triangle->SetInputData( pd ); + pd->Delete(); + + vtkAppendPolyData *append = vtkAppendPolyData::New(); + append->AddInputData( input ); + append->AddInputData( triangle->GetOutput()); + triangle->Delete(); + + vtkCleanPolyData *clean = vtkCleanPolyData::New(); + clean->SetInputData( append->GetOutput()); + append->Delete(); - //#closing the polydata see : close.py for details - vtkFeatureEdges *boundary = vtkFeatureEdges::New(); - boundary->SetInput( input ); - boundary->BoundaryEdgesOn (); - boundary->FeatureEdgesOff (); - boundary->NonManifoldEdgesOff (); - boundary->ManifoldEdgesOff (); - //boundary->ColoringOff (); - - vtkStripper *stripper = vtkStripper::New(); - stripper->SetInput( boundary->GetOutput() ); - stripper->Update(); //important - boundary->Delete(); - - vtkPolyData *pd = vtkPolyData::New(); - pd->SetPoints ( stripper->GetOutput()->GetPoints() ); - pd->SetPolys ( stripper->GetOutput()->GetLines() ); - stripper->Delete(); - - //vtkGLUTesselatorTriangleFilter *triangle = vtkGLUTesselatorTriangleFilter::New(); - vtkTriangleFilter *triangle = vtkTriangleFilter::New(); - triangle->SetInput( pd ); - pd->Delete(); - - vtkAppendPolyData *append = vtkAppendPolyData::New(); - append->AddInput( input ); - append->AddInput( triangle->GetOutput()); - triangle->Delete(); - - vtkCleanPolyData *clean = vtkCleanPolyData::New(); - clean->SetInput( append->GetOutput()); - append->Delete(); - - // When all optimizations are complete, this squeeze will be unecessary. - // (But it does not seem to cost much.) - clean->Update(); //important before ShallowCopy - output->ShallowCopy( clean->GetOutput() ); - clean->Delete(); + // When all optimizations are complete, this squeeze will be unecessary. + // (But it does not seem to cost much.) + clean->Update(); //important before ShallowCopy + output->ShallowCopy( clean->GetOutput() ); + clean->Delete(); + + return 1; } + + + +#endif + //---------------------------------------------------------------------------- void vtkClosePolyData::PrintSelf(ostream& os, vtkIndent indent) {