Skip to content
Snippets Groups Projects
Commit 16f84e95 authored by Bill Lorensen's avatar Bill Lorensen
Browse files

BUG: Improper handling of intensities in PLYReader

Cut/paste error failed to allocate array for intensities.
Adds a new test along with a dataset that contains intensities.
parent 9d35a4fd
No related branches found
No related tags found
No related merge requests found
vtk_add_test_cxx(${vtk-module}CxxTests tests
TestPLYReader.cxx
TestPLYReaderIntensity.cxx
TestPLYReaderTextureUV.cxx
TestPLYWriter.cxx,NO_VALID
)
......
/*=========================================================================
Program: Visualization Toolkit
Module: TestPLYReaderIntensity.cxx
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME Test of vtkPLYReaderIntensity
// .SECTION Description
//
#include "vtkSmartPointer.h"
#include "vtkPLYReader.h"
#include "vtkDebugLeaks.h"
#include "vtkActor.h"
#include "vtkCamera.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRegressionTestImage.h"
#include "vtkTestUtilities.h"
#include "vtkWindowToImageFilter.h"
int TestPLYReaderIntensity( int argc, char *argv[] )
{
// Read file name.
const char* fname = vtkTestUtilities::ExpandDataFileName(argc, argv, "Data/Armadillo.ply");
// Test if the reader thinks it can open the file.
int canRead = vtkPLYReader::CanReadFile(fname);
(void)canRead;
// Create the reader.
vtkSmartPointer<vtkPLYReader> reader =
vtkSmartPointer<vtkPLYReader>::New();
reader->SetFileName(fname);
delete [] fname;
// Create a mapper.
vtkSmartPointer<vtkPolyDataMapper> mapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(reader->GetOutputPort());
mapper->ScalarVisibilityOff();
// Create the actor.
vtkSmartPointer<vtkActor> actor =
vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
// Basic visualisation.
vtkSmartPointer<vtkRenderWindow> renWin =
vtkSmartPointer<vtkRenderWindow>::New();
vtkSmartPointer<vtkRenderer> ren =
vtkSmartPointer<vtkRenderer>::New();
renWin->AddRenderer(ren);
vtkSmartPointer<vtkRenderWindowInteractor> iren =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);
ren->AddActor(actor);
ren->SetBackground(.2, .3, .5);
ren->ResetCamera();
ren->GetActiveCamera()->Azimuth(210);
ren->GetActiveCamera()->Elevation(30);
renWin->SetSize(300,300);
// interact with data
renWin->Render();
int retVal = vtkRegressionTestImage( renWin );
if ( retVal == vtkRegressionTester::DO_INTERACTOR)
{
iren->Start();
}
return !retVal;
}
b3e1e90688bc0c250adbc51f16e463d4
......@@ -302,8 +302,8 @@ int vtkPLYReader::RequestData(
if ( intensityAvailable )
{
vtkPLY::ply_get_property (ply, elemName, &faceProps[1]);
RGBCells->SetNumberOfComponents(1);
RGBCells->SetNumberOfTuples(numPolys);
intensity->SetNumberOfComponents(1);
intensity->SetNumberOfTuples(numPolys);
}
if ( RGBCellsAvailable )
{
......
9e68ff1b1cc914ed88cd84f6a8235021
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment