Ignore:
Timestamp:
Jun 5, 2011, 1:26:07 PM (13 years ago)
Author:
ldelgass
Message:
  • Convert to newer VTK pipeline methods where applicable: i.e. use

InputConnection/OutputPort? instead of Input/Output?. The old, deprecated
methods may be removed in VTK 6.

  • Disconnect vtkDataSet from reader pipeline after reading data. Allows reader

to be deleted ("garbage collected") after data is read. This also fixes a
potential read of freed memory (the memory allocated by the Tcl command
handler for the VTK data "file").

  • Remove vtkWarpScalar filter from HeightMap? pipeline when the height scaling

is set to zero.

  • Fix for removing clip planes when switching from image camera mode to

perspecive or ortho.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/packages/vizservers/vtkvis/RpVtkDataSet.cpp

    r2263 r2270  
    88#include <vtkCharArray.h>
    99#include <vtkDataSetReader.h>
    10 #include <vtkDataSetMapper.h>
     10#include <vtkPolyData.h>
     11#include <vtkStructuredPoints.h>
     12#include <vtkStructuredGrid.h>
     13#include <vtkRectilinearGrid.h>
     14#include <vtkUnstructuredGrid.h>
    1115#include <vtkProperty.h>
    1216#include <vtkPointData.h>
     
    6165{
    6266    vtkSmartPointer<vtkDataSetReader> reader = vtkSmartPointer<vtkDataSetReader>::New();
     67
     68#if defined(WANT_TRACE) && defined(DEBUG)
     69    reader->DebugOn();
     70#endif
     71
    6372    reader->SetFileName(filename);
     73    reader->ReadAllScalarsOn();
     74    reader->ReadAllVectorsOn();
    6475    return setData(reader);
    6576}
     
    7081bool DataSet::setData(char *data, int nbytes)
    7182{
     83    TRACE("Entering");
     84
    7285    vtkSmartPointer<vtkDataSetReader> reader = vtkSmartPointer<vtkDataSetReader>::New();
    7386    vtkSmartPointer<vtkCharArray> dataSetString = vtkSmartPointer<vtkCharArray>::New();
     87
     88#if defined(WANT_TRACE) && defined(DEBUG)
     89    reader->DebugOn();
     90    dataSetString->DebugOn();
     91#endif
    7492
    7593    dataSetString->SetArray(data, nbytes, 1);
    7694    reader->SetInputArray(dataSetString);
    7795    reader->ReadFromInputStringOn();
    78     return setData(reader);
     96    reader->ReadAllScalarsOn();
     97    reader->ReadAllVectorsOn();
     98
     99    bool status = setData(reader);
     100
     101    TRACE("Leaving");
     102    return status;
    79103}
    80104
    81105/**
    82106 * \brief Read dataset using supplied reader
     107 *
     108 * Pipeline information is removed from the resulting
     109 * vtkDataSet, so that the reader and its data can be
     110 * released
    83111 */
    84112bool DataSet::setData(vtkDataSetReader *reader)
     
    86114    // Force reading data set
    87115    reader->SetLookupTableName("");
     116    reader->Update();
     117
    88118    _dataSet = reader->GetOutput();
    89     _dataSet->Update();
     119    _dataSet->SetPipelineInformation(NULL);
     120
    90121    _dataSet->GetScalarRange(_dataRange);
    91122    _dataSet->GetBounds(_bounds);
     
    97128
    98129/**
    99  * \brief Set dataset from existing vtkDataSet object
     130 * \brief Set DataSet from existing vtkDataSet object
     131 *
     132 * Pipeline information is removed from the supplied vtkDataSet
    100133 */
    101134bool DataSet::setData(vtkDataSet *ds)
    102135{
    103136    _dataSet = ds;
    104     _dataSet->Update();
     137    _dataSet->SetPipelineInformation(NULL);
    105138    _dataSet->GetScalarRange(_dataRange);
    106139    _dataSet->GetBounds(_bounds);
     
    109142    TRACE("Scalar Range: %.12e, %.12e", _dataRange[0], _dataRange[1]);
    110143    return true;
     144}
     145
     146/**
     147 * \brief Copy an existing vtkDataSet object
     148 *
     149 * Pipeline information is not copied from the supplied vtkDataSet
     150 * into this DataSet, but pipeline information in the supplied
     151 * vtkDataSet is not removed
     152 */
     153vtkDataSet *DataSet::copyData(vtkDataSet *ds)
     154{
     155    if (vtkPolyData::SafeDownCast(ds) != NULL) {
     156        _dataSet = vtkSmartPointer<vtkPolyData>::New();
     157        _dataSet->DeepCopy(vtkPolyData::SafeDownCast(ds));
     158    } else if (vtkStructuredPoints::SafeDownCast(ds) != NULL) {
     159        _dataSet = vtkSmartPointer<vtkStructuredPoints>::New();
     160        _dataSet->DeepCopy(vtkStructuredPoints::SafeDownCast(ds));
     161    } else if (vtkStructuredGrid::SafeDownCast(ds) != NULL) {
     162        _dataSet = vtkSmartPointer<vtkStructuredGrid>::New();
     163        _dataSet->DeepCopy(vtkStructuredGrid::SafeDownCast(ds));
     164    } else if (vtkRectilinearGrid::SafeDownCast(ds) != NULL) {
     165        _dataSet = vtkSmartPointer<vtkRectilinearGrid>::New();
     166        _dataSet->DeepCopy(vtkRectilinearGrid::SafeDownCast(ds));
     167    } else if (vtkUnstructuredGrid::SafeDownCast(ds) != NULL) {
     168        _dataSet = vtkSmartPointer<vtkUnstructuredGrid>::New();
     169        _dataSet->DeepCopy(vtkUnstructuredGrid::SafeDownCast(ds));
     170    } else {
     171        ERROR("Unknown data type");
     172        return NULL;
     173    }
     174    _dataSet->GetScalarRange(_dataRange);
     175    _dataSet->GetBounds(_bounds);
     176
     177    TRACE("DataSet class: %s", _dataSet->GetClassName());
     178    TRACE("Scalar Range: %.12e, %.12e", _dataRange[0], _dataRange[1]);
     179    return _dataSet;
    111180}
    112181
Note: See TracChangeset for help on using the changeset viewer.