/usr/include/paraview/vtkPVDataDeliveryManager.h is in paraview-dev 5.0.1+dfsg1-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 | /*=========================================================================
Program: ParaView
Module: $RCSfile$
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.
=========================================================================*/
// .NAME vtkPVDataDeliveryManager - manager for data-delivery.
// .SECTION Description
// vtkPVDataDeliveryManager manages geometry delivering for rendering. It is
// used by vtkPVRenderView to manage the delivery of geometry to the nodes where
// rendering is happening. This class helps us consolidate all the code for
// delivering different types of geometries to all the nodes involved as well we
// a managing idiosyncrasies like requiring delivering to all nodes,
// redistributing for ordered compositing, etc.
#ifndef vtkPVDataDeliveryManager_h
#define vtkPVDataDeliveryManager_h
#include "vtkPVClientServerCoreRenderingModule.h" //needed for exports
#include "vtkObject.h"
#include "vtkSmartPointer.h" // needed for iVar.
#include "vtkWeakPointer.h" // needed for iVar.
class vtkAlgorithmOutput;
class vtkDataObject;
class vtkExtentTranslator;
class vtkPKdTree;
class vtkPVDataRepresentation;
class vtkPVRenderView;
//BTX
#include <vector>
//ETX
class VTKPVCLIENTSERVERCORERENDERING_EXPORT vtkPVDataDeliveryManager : public vtkObject
{
public:
static vtkPVDataDeliveryManager* New();
vtkTypeMacro(vtkPVDataDeliveryManager, vtkObject);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Returned a hash number that can be used to verify that both client and
// server side are in synch representation wise for delivery.
int GetSynchronizationMagicNumber();
// Description:
// View uses these methods to register a representation with the storage. This
// makes it possible for representations to communicate with the storage
// directly using a self pointer, while enables views on different processes
// to communicate information about representations using their unique ids.
void RegisterRepresentation(vtkPVDataRepresentation *repr);
void UnRegisterRepresentation(vtkPVDataRepresentation*);
vtkPVDataRepresentation* GetRepresentation(unsigned int);
// Description:
// Representations (indirectly via vtkPVRenderView::SetPiece()) call this
// method to register the geometry type they are rendering. Every
// representation that requires delivering of any geometry must register with
// the vtkPVDataDeliveryManager and never manage the delivery on its own.
void SetPiece(vtkPVDataRepresentation* repr, vtkDataObject* data,
bool low_res, unsigned long trueSize=0);
void SetPiece(unsigned int repr_id, vtkDataObject* data, bool low_res);
// Description:
// Provides access to the producer port for the geometry of a registered
// representation. Representations use these methods (indirectly via
// vtkPVRenderView::GetPieceProducer() and GetPieceProducerLOD()) to obtain
// the geometry producer for the geometry to be rendered.
vtkAlgorithmOutput* GetProducer(vtkPVDataRepresentation*, bool low_res);
vtkAlgorithmOutput* GetProducer(unsigned int, bool low_res);
// Description:
// By default, this class only delivers geometries to nodes that are doing the
// rendering at a given stage. However, certain representations, such as
// data-label representation, or cube-axes representation, need to the
// geometry to be delivered to all nodes always. That can be done by using
// this method (via vtkPVRenderView::SetDeliverToAllProcesses()).
void SetDeliverToAllProcesses(vtkPVDataRepresentation*, bool flag, bool low_res);
// Description:
// By default, this class only delivers geometries to nodes that are doing the
// rendering at a given stage. However, certain representations, such as
// text-source representation, need to the geometry to be delivered to the
// client as well. That can be done by using this method (via
// vtkPVRenderView::SetDeliverToAllProcesses()). The different between
// SetDeliverToAllProcesses() and this is that the former gather-and-scatters
// the data on the server nodes, while the latter will optionally gather the data to
// deliver to the client and never scatter.
void SetDeliverToClientAndRenderingProcesses(
vtkPVDataRepresentation*, bool deliver_to_client,
bool gather_before_delivery, bool low_res);
// Description:
// Under certain cases, e.g. when remote rendering in parallel with
// translucent geometry, the geometry may need to be redistributed to ensure
// ordered compositing can be employed correctly. Marking geometry provided by
// a representation as redistributable makes it possible for this class to
// redistribute the geometry as needed. Only vtkPolyData, vtkUnstructuredGrid
// or a multi-block comprising of vtkPolyData is currently supported.
void MarkAsRedistributable(vtkPVDataRepresentation*, bool value=true);
// Description:
// Returns the size for all visible geometry. If low_res is true, and low-res
// data is not available for a particular representation, then it's high-res
// data size will be used assuming that the representation is going to render
// the high-res geometry for low-res rendering as well.
unsigned long GetVisibleDataSize(bool low_res);
// Description:
// Provides access to the partitioning kd-tree that was generated using the
// data provided by the representations. The view uses this kd-tree to decide
// on the compositing order when ordered compositing is being used.
vtkPKdTree* GetKdTree();
// Description:
// Get/Set the render-view. The view is not reference counted.
void SetRenderView(vtkPVRenderView*);
vtkPVRenderView* GetRenderView();
// Description:
// Called by the view on ever render when ordered compositing is to be used to
// ensure that the geometries are redistributed, as needed.
void RedistributeDataForOrderedCompositing(bool use_lod);
// Description:
// Pass the structured-meta-data for determining rendering order for ordered
// compositing.
void SetOrderedCompositingInformation(
vtkPVDataRepresentation* repr, vtkExtentTranslator* translator,
const int whole_extents[6], const double origin[3], const double spacing[3]);
//BTX
// Description:
// Internal method used to determine the list of representations that need
// their geometry delivered. This is done on the "client" side, with the
// client decide what geometries it needs and then requests those from the
// server-sides using Deliver().
bool NeedsDelivery(unsigned long timestamp,
std::vector<unsigned int>& keys_to_deliver, bool use_low_res);
//ETX
// Description:
// Triggers delivery for the geometries of indicated representations.
void Deliver(int use_low_res, unsigned int size, unsigned int *keys);
// *******************************************************************
// UNDER CONSTRUCTION STREAMING API
// *******************************************************************
// Description:
// Mark a representation as streamable. Any representation can indicate that
// it is streamable i.e. the view can call streaming passses on it and it will
// deliver data incrementally.
void SetStreamable(vtkPVDataRepresentation*, bool);
// Description:
// Passes the current streamed piece. This is the piece that will be delivered
// to the rendering node.
void SetNextStreamedPiece(vtkPVDataRepresentation* repr, vtkDataObject* piece);
vtkDataObject* GetCurrentStreamedPiece(vtkPVDataRepresentation* repr);
void ClearStreamedPieces();
// Description:
// Deliver streamed pieces. Unlike regular data, streamed pieces are delivered
// and released. Representations are expected to manage the pieces once they
// are delivered to them.
void DeliverStreamedPieces(unsigned int size, unsigned int *keys);
//BTX
// Description:
// Fills up the vector with the keys for representations that have non-null
// streaming pieces.
bool GetRepresentationsReadyToStreamPieces(std::vector<unsigned int>& keys);
//ETX
// *******************************************************************
//BTX
protected:
vtkPVDataDeliveryManager();
~vtkPVDataDeliveryManager();
vtkWeakPointer<vtkPVRenderView> RenderView;
vtkSmartPointer<vtkPKdTree> KdTree;
vtkTimeStamp RedistributionTimeStamp;
private:
vtkPVDataDeliveryManager(const vtkPVDataDeliveryManager&); // Not implemented
void operator=(const vtkPVDataDeliveryManager&); // Not implemented
class vtkInternals;
vtkInternals* Internals;
//ETX
};
#endif
// VTK-HeaderTest-Exclude: vtkPVDataDeliveryManager.h
|