Ignore:
Timestamp:
Jul 10, 2011 5:24:36 PM (13 years ago)
Author:
gah
Message:

update from trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/blt4/packages/vizservers/vtkvis/RpVtkDataSet.cpp

    r2201 r2302  
    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>
     
    2226    _visible(true)
    2327{
    24     _name = name;
    2528    _dataRange[0] = 0;
    2629    _dataRange[1] = 1;
     
    6265{
    6366    vtkSmartPointer<vtkDataSetReader> reader = vtkSmartPointer<vtkDataSetReader>::New();
     67
     68#if defined(WANT_TRACE) && defined(DEBUG)
     69    reader->DebugOn();
     70#endif
     71
    6472    reader->SetFileName(filename);
     73    reader->ReadAllScalarsOn();
     74    reader->ReadAllVectorsOn();
    6575    return setData(reader);
    6676}
     
    7181bool DataSet::setData(char *data, int nbytes)
    7282{
     83    TRACE("Entering");
     84
    7385    vtkSmartPointer<vtkDataSetReader> reader = vtkSmartPointer<vtkDataSetReader>::New();
    7486    vtkSmartPointer<vtkCharArray> dataSetString = vtkSmartPointer<vtkCharArray>::New();
     87
     88#if defined(WANT_TRACE) && defined(DEBUG)
     89    reader->DebugOn();
     90    dataSetString->DebugOn();
     91#endif
    7592
    7693    dataSetString->SetArray(data, nbytes, 1);
    7794    reader->SetInputArray(dataSetString);
    7895    reader->ReadFromInputStringOn();
    79     return setData(reader);
     96    reader->ReadAllScalarsOn();
     97    reader->ReadAllVectorsOn();
     98
     99    bool status = setData(reader);
     100
     101    TRACE("Leaving");
     102    return status;
    80103}
    81104
    82105/**
    83106 * \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
    84111 */
    85112bool DataSet::setData(vtkDataSetReader *reader)
     
    87114    // Force reading data set
    88115    reader->SetLookupTableName("");
     116    reader->Update();
     117
    89118    _dataSet = reader->GetOutput();
    90     _dataSet->Update();
    91     _dataSet->GetScalarRange(_dataRange);
    92 
    93     TRACE("Scalar Range: %.12e, %.12e", _dataRange[0], _dataRange[1]);
    94     return true;
    95 }
    96 
    97 /**
    98  * \brief Read dataset using supplied reader
    99  */
    100 bool DataSet::setData(vtkDataSet *ds)
    101 {
    102     _dataSet = ds;
    103     _dataSet->Update();
     119    _dataSet->SetPipelineInformation(NULL);
     120
    104121    _dataSet->GetScalarRange(_dataRange);
    105122    _dataSet->GetBounds(_bounds);
    106123
     124    TRACE("DataSet class: %s", _dataSet->GetClassName());
    107125    TRACE("Scalar Range: %.12e, %.12e", _dataRange[0], _dataRange[1]);
     126    TRACE("DataSet bounds: %g %g %g %g %g %g",
     127          _bounds[0], _bounds[1],
     128          _bounds[2], _bounds[3],
     129          _bounds[4], _bounds[5]);
    108130    return true;
    109131}
    110132
    111133/**
     134 * \brief Set DataSet from existing vtkDataSet object
     135 *
     136 * Pipeline information is removed from the supplied vtkDataSet
     137 */
     138bool DataSet::setData(vtkDataSet *ds)
     139{
     140    _dataSet = ds;
     141    _dataSet->SetPipelineInformation(NULL);
     142    _dataSet->GetScalarRange(_dataRange);
     143    _dataSet->GetBounds(_bounds);
     144
     145    TRACE("DataSet class: %s", _dataSet->GetClassName());
     146    TRACE("Scalar Range: %.12e, %.12e", _dataRange[0], _dataRange[1]);
     147    TRACE("DataSet bounds: %g %g %g %g %g %g",
     148          _bounds[0], _bounds[1],
     149          _bounds[2], _bounds[3],
     150          _bounds[4], _bounds[5]);
     151    return true;
     152}
     153
     154/**
     155 * \brief Copy an existing vtkDataSet object
     156 *
     157 * Pipeline information is not copied from the supplied vtkDataSet
     158 * into this DataSet, but pipeline information in the supplied
     159 * vtkDataSet is not removed
     160 */
     161vtkDataSet *DataSet::copyData(vtkDataSet *ds)
     162{
     163    if (vtkPolyData::SafeDownCast(ds) != NULL) {
     164        _dataSet = vtkSmartPointer<vtkPolyData>::New();
     165        _dataSet->DeepCopy(vtkPolyData::SafeDownCast(ds));
     166    } else if (vtkStructuredPoints::SafeDownCast(ds) != NULL) {
     167        _dataSet = vtkSmartPointer<vtkStructuredPoints>::New();
     168        _dataSet->DeepCopy(vtkStructuredPoints::SafeDownCast(ds));
     169    } else if (vtkStructuredGrid::SafeDownCast(ds) != NULL) {
     170        _dataSet = vtkSmartPointer<vtkStructuredGrid>::New();
     171        _dataSet->DeepCopy(vtkStructuredGrid::SafeDownCast(ds));
     172    } else if (vtkRectilinearGrid::SafeDownCast(ds) != NULL) {
     173        _dataSet = vtkSmartPointer<vtkRectilinearGrid>::New();
     174        _dataSet->DeepCopy(vtkRectilinearGrid::SafeDownCast(ds));
     175    } else if (vtkUnstructuredGrid::SafeDownCast(ds) != NULL) {
     176        _dataSet = vtkSmartPointer<vtkUnstructuredGrid>::New();
     177        _dataSet->DeepCopy(vtkUnstructuredGrid::SafeDownCast(ds));
     178    } else {
     179        ERROR("Unknown data type");
     180        return NULL;
     181    }
     182    _dataSet->GetScalarRange(_dataRange);
     183    _dataSet->GetBounds(_bounds);
     184
     185    TRACE("DataSet class: %s", _dataSet->GetClassName());
     186    TRACE("Scalar Range: %.12e, %.12e", _dataRange[0], _dataRange[1]);
     187    return _dataSet;
     188}
     189
     190/**
    112191 * \brief Does DataSet lie in the XY plane (z = 0)
    113192 */
     
    134213
    135214/**
     215 * \brief Get the underlying VTK DataSet subclass class name
     216 */
     217const char *DataSet::getVtkType()
     218{
     219    return _dataSet->GetClassName();
     220}
     221
     222/**
    136223 * \brief Get the range of scalar values in the DataSet
    137224 */
    138225void DataSet::getDataRange(double minmax[2])
    139226{
    140     minmax[0] = _dataRange[0];
    141     minmax[1] = _dataRange[1];
     227    memcpy(minmax, _dataRange, sizeof(double)*2);
     228}
     229
     230/**
     231 * \brief Get the bounds the DataSet
     232 */
     233void DataSet::getBounds(double bounds[6])
     234{
     235    memcpy(bounds, _bounds, sizeof(double)*6);
    142236}
    143237
Note: See TracChangeset for help on using the changeset viewer.