1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
/*=========================================================================
Program: ParaView
Module: vtkSIDoubleMapProperty.cxx
Copyright (c) Kitware, Inc.
All rights reserved.
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html 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.
=========================================================================*/
#include "vtkSIDoubleMapProperty.h"
#include "vtkObjectFactory.h"
#include <cassert>
#include "vtkSMMessage.h"
#include "vtkPVXMLElement.h"
vtkStandardNewMacro(vtkSIDoubleMapProperty);
//----------------------------------------------------------------------------
vtkSIDoubleMapProperty::vtkSIDoubleMapProperty()
{
this->CleanCommand = 0;
}
//----------------------------------------------------------------------------
vtkSIDoubleMapProperty::~vtkSIDoubleMapProperty()
{
this->SetCleanCommand(0);
}
//----------------------------------------------------------------------------
bool vtkSIDoubleMapProperty::Push(vtkSMMessage *message, int offset)
{
if (this->InformationOnly || !this->Command)
{
return true;
}
vtkClientServerStream stream;
vtkObjectBase* object = this->GetVTKObject();
if (this->CleanCommand)
{
stream << vtkClientServerStream::Invoke
<< object << this->CleanCommand
<< vtkClientServerStream::End;
}
assert(message->ExtensionSize(ProxyState::property) > offset);
const ProxyState_Property *prop = &message->GetExtension(ProxyState::property,
offset);
assert(strcmp(prop->name().c_str(), this->GetXMLName()) == 0);
// Save to cache when pulled for collaboration
this->SaveValueToCache(message, offset);
const Variant *variant = &prop->value();
std::vector<double> values(variant->float64_size());
for(size_t i = 0; i < values.size(); i++)
{
values[i] = variant->float64(static_cast<int>(i));
}
int size = variant->idtype_size();
for(int i = 0; i < size; i++)
{
vtkIdType id = variant->idtype(i);
stream << vtkClientServerStream::Invoke
<< object
<< this->Command
<< id
<< vtkClientServerStream::InsertArray(
&values[i*this->NumberOfComponents],
this->NumberOfComponents
)
<< vtkClientServerStream::End;
}
return this->ProcessMessage(stream);
}
//---------------------------------------------------------------------------
bool vtkSIDoubleMapProperty::ReadXMLAttributes(vtkSIProxy* parent,
vtkPVXMLElement* element)
{
if(!this->Superclass::ReadXMLAttributes(parent, element))
{
return false;
}
int number_of_components = 0;
if (element->GetScalarAttribute("number_of_components", &number_of_components))
{
this->NumberOfComponents = number_of_components;
}
this->SetCleanCommand(element->GetAttribute("clean_command"));
return true;
}
//----------------------------------------------------------------------------
void vtkSIDoubleMapProperty::PrintSelf(ostream& os, vtkIndent indent)
{
this->Superclass::PrintSelf(os, indent);
}
|