15 #ifndef vtkPVDataDeliveryManagerInternals_h 16 #define vtkPVDataDeliveryManagerInternals_h 40 std::map<int, vtkSmartPointer<vtkDataObject> > EmptyDataObjectTypes;
49 if (iter != this->EmptyDataObjectTypes.end())
88 std::map<double, vtkRepresentedData> Data;
99 auto& store = this->Data[cacheKey];
102 store.DataObject.TakeReference(data->
NewInstance());
103 store.DataObject->ShallowCopy(data);
107 store.DataObject =
nullptr;
110 store.DeliveredDataObjects.clear();
122 this->Producer->
SetOutput(helper->GetEmptyDataObject(data));
126 store.TimeStamp = ts;
132 auto& store = this->Data[cacheKey];
133 store.ActualMemorySize = size;
138 auto iter = this->Data.find(cacheKey);
139 return iter != this->Data.end() ? iter->second.ActualMemorySize : 0;
146 const auto& store = this->Data.at(cacheKey);
147 return store.DeliveredDataObjects.at(dataKey);
149 catch (std::out_of_range&)
157 auto& store = this->Data[cacheKey];
158 store.DeliveredDataObjects[dataKey] = data;
164 vtkDataObject* cur = this->GetDeliveredDataObject(dataKey, cacheKey);
166 if (cur != prev && cur !=
nullptr)
177 auto iter = this->Data.find(cacheKey);
178 return iter != this->Data.end() ? iter->second.DataObject.GetPointer() :
nullptr;
183 auto iter = this->Data.find(cacheKey);
184 return iter != this->Data.end() ? iter->second.TimeStamp :
vtkMTimeType{ 0 };
189 auto& store = this->Data[cacheKey];
190 if (store.Information ==
nullptr)
194 return store.Information;
200 if (
auto dobj = this->GetDeliveredDataObject(dataKey, cacheKey))
202 return dobj->GetMTime();
210 typedef std::map<ReprPortType, std::pair<vtkItem, vtkItem> >
ItemsMapType;
215 vtkItem*
GetItem(
unsigned int index,
bool use_second,
int port,
bool create_if_needed =
false)
217 ReprPortType
key(index, port);
218 ItemsMapType::iterator items = this->
ItemsMap.find(key);
221 return use_second ? &(items->second.second) : &(items->second.first);
223 else if (create_if_needed)
225 std::pair<vtkItem, vtkItem>& itemsPair = this->
ItemsMap[key];
226 return use_second ? &(itemsPair.second) : &(itemsPair.first);
241 [&id](
int sum,
const ItemsMapType::value_type& item_pair) {
242 return sum + (item_pair.first.first ==
id ? 1 : 0);
248 unsigned long size = 0;
249 ItemsMapType::iterator iter;
252 const ReprPortType&
key = iter->first;
260 assert(repr !=
nullptr);
263 if (use_second_if_available && iter->second.second.GetDataObject(cacheKey))
265 size += iter->second.second.GetActualMemorySize(cacheKey);
269 size += iter->second.first.GetActualMemorySize(cacheKey);
278 return (riter != this->
RepresentationsMap.end() && riter->second.GetPointer() != NULL &&
279 riter->second->GetVisibility());
287 if (ipair.first.first ==
id)
289 ipair.second.first.ClearCache();
290 ipair.second.second.ClearCache();
bool IsRepresentationVisible(unsigned int id) const
manager for data-delivery.
void SetDataObject(vtkDataObject *data, vtkInternals *helper, double cacheKey)
std::map< ReprPortType, std::pair< vtkItem, vtkItem > > ItemsMapType
RepresentationsMapType RepresentationsMap
void SetOutput(vtkDataObject *output) override
Set the data object that is "produced" by this producer.
vtkSmartPointer< vtkInformation > Information
vtkItem * GetItem(vtkPVDataRepresentation *repr, bool use_second, int port, bool create_if_needed=false)
vtkSmartPointer< vtkDataObject > DataObject
unsigned long GetVisibleDataSize(bool use_second_if_available, vtkPVDataDeliveryManager *dmgr)
vtkPVDataRepresentation adds some ParaView specific API to data representations.
void ClearCache(vtkPVDataRepresentation *repr)
vtkPVTrivialProducer * GetProducer(int dataKey, double cacheKey)
double GetCacheKey(vtkPVDataRepresentation *repr) const
void SetActualMemorySize(unsigned long size, double cacheKey)
vtkDataObject * GetOutputDataObject(int port)
static vtkSmartPointer< T > New()
vtkTypeUInt64 vtkMTimeType
vtkMTimeType ActualMemorySize
vtkMTimeType GetTimeStamp() const
vtkDataObject * GetDataObject(double cacheKey) const
unsigned int GetUniqueIdentifier()
Return 0 if the Initialize() method was not called otherwise a unique ID that will be shared across t...
vtkDataObject * NewInstance() const
specialized subclass of vtkTrivialProducer that preserves the information about the whole extent of t...
std::map< unsigned int, vtkWeakPointer< vtkPVDataRepresentation > > RepresentationsMapType
void SetDeliveredDataObject(int dataKey, double cacheKey, vtkDataObject *data)
vtkInformation * GetPieceInformation(double cacheKey)
unsigned long GetActualMemorySize(double cacheKey) const
virtual unsigned long GetActualMemorySize()
void TakeReference(vtkDataObject *t)
vtkMTimeType GetTimeStamp(double cacheKey) const
int GetNumberOfPorts(vtkPVDataRepresentation *repr)
vtkDataObject * GetDeliveredDataObject(int dataKey, double cacheKey) const
virtual int GetDataObjectType()
std::pair< unsigned int, int > ReprPortType
vtkItem * GetItem(unsigned int index, bool use_second, int port, bool create_if_needed=false)
vtkMTimeType GetDeliveryTimeStamp(int dataKey, double cacheKey) const
std::map< int, vtkSmartPointer< vtkDataObject > > DeliveredDataObjects
void ClearCache(unsigned int id)