mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
219 lines
8.3 KiB
C++
219 lines
8.3 KiB
C++
/*=========================================================================
|
|
|
|
Program: ParaView
|
|
Module: vtkSMProxyProperty.h
|
|
|
|
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 vtkSMProxyProperty - property representing pointer(s) to vtkObject(s)
|
|
// .SECTION Description
|
|
// vtkSMProxyProperty is a concrete sub-class of vtkSMProperty representing
|
|
// pointer(s) to vtkObject(s) (through vtkSMProxy).
|
|
//
|
|
// vtkSMProperty::UpdateDomains() is called by vtkSMProperty itself whenever
|
|
// its unchecked values are modified. In case of proxy-properties, the dependent
|
|
// domains typically tend to depend on the data information provided by the
|
|
// source-proxies added to the property. Thus, to ensure that the domains get
|
|
// updated if the data information changes, vtkSMProxyProperty ensures that
|
|
// vtkSMProperty::UpdateDomains() is called whenever any of the added proxies
|
|
// fires the vtkCommand::UpdateDataEvent (which is fired whenever the pipeline
|
|
// us updated through the ServerManager indicating that the data-information
|
|
// last used may have been invalidated).
|
|
//
|
|
// Besides the standard set of attributes, the following XML attributes are
|
|
// supported:
|
|
// \li command : identifies the method to call on the VTK object e.g.
|
|
// AddRepresentation.
|
|
// \li clean_command : if present, called once before invoking the method
|
|
// specified by \c command every time the property value is pushed e.g.
|
|
// RemoveAllRepresentations. If property
|
|
// can take multiple values then the \c command is called for for each of the
|
|
// values after the clean command for every push.
|
|
// \li remove_command : an alternative to clean_command where instead of
|
|
// resetting and adding all the values for every push, this simply calls the
|
|
// specified method to remove the vtk-objects no longer referred to e.g.
|
|
// RemoveRepresentation.
|
|
// \li argument_type : identifies the type for value passed to the method on the
|
|
// VTK object. Accepted values are "VTK", "SMProxy" or "SIProxy". Default is
|
|
// VTK.
|
|
// \li null_on_empty : if set to 1, whenever the property's value changes to
|
|
// empty i.e. it contains no proxies, the command is called on the VTK object
|
|
// with NULL argument useful when there's no clean_command that can be called on
|
|
// the VTK object to unset the property e.g. SetLookupTable(NULL).
|
|
// li skip_dependency : if set to 1, this property does not result in adding a
|
|
// dependency between the proxies set as values of this property and the proxy
|
|
// to which the property belongs (which is the default behaviour). Use this with
|
|
// care as it would mean that ParaView would no realize any updates are needed
|
|
// to the pipeline if any proxy set on the property changes. This is necessary
|
|
// in some cases, e.g. if LUT proxy on a representation changes, we don't want
|
|
// to representation to treat it same as if the input pipeline changed!
|
|
// .SECTION See Also
|
|
// vtkSMProperty
|
|
|
|
#ifndef vtkSMProxyProperty_h
|
|
#define vtkSMProxyProperty_h
|
|
|
|
#include "vtkPVServerManagerCoreModule.h" //needed for exports
|
|
#include "vtkSMProperty.h"
|
|
|
|
class vtkSMProxy;
|
|
class vtkSMStateLocator;
|
|
|
|
class VTKPVSERVERMANAGERCORE_EXPORT vtkSMProxyProperty : public vtkSMProperty
|
|
{
|
|
public:
|
|
// Description:
|
|
// When we load ProxyManager state we want Proxy/InputProperty to be able to
|
|
// create the corresponding missing proxy. Although when the goal is to load
|
|
// a state on any standard proxy, we do not want that proxy property be able
|
|
// to create new proxy based on some previous state.
|
|
static void EnableProxyCreation();
|
|
static void DisableProxyCreation();
|
|
static bool CanCreateProxy();
|
|
|
|
static vtkSMProxyProperty* New();
|
|
vtkTypeMacro(vtkSMProxyProperty, vtkSMProperty);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Add/remove/set a proxy to the list of proxies. For SetProxy, the property
|
|
// automatically resizes to accommodate the index specified.
|
|
virtual void AddProxy(vtkSMProxy* proxy);
|
|
virtual void SetProxy(unsigned int idx, vtkSMProxy* proxy);
|
|
virtual void RemoveProxy(vtkSMProxy* proxy);
|
|
virtual void RemoveAllProxies();
|
|
|
|
// Description:
|
|
// Sets the value of the property to the list of proxies specified.
|
|
virtual void SetProxies(unsigned int numElements, vtkSMProxy* proxies[]);
|
|
|
|
// Description:
|
|
// Returns if the given proxy is already added to the property.
|
|
bool IsProxyAdded(vtkSMProxy* proxy);
|
|
|
|
// Description:
|
|
// Add an unchecked proxy. Does not modify the property.
|
|
// Unchecked proxies are used by domains when verifying whether
|
|
// a value is acceptable. To check if a value is in the domains,
|
|
// you can do the following:
|
|
// @verbatim
|
|
// - RemoveAllUncheckedProxies()
|
|
// - AddUncheckedProxy(proxy)
|
|
// - IsInDomains()
|
|
// @endverbatim
|
|
virtual void AddUncheckedProxy(vtkSMProxy* proxy);
|
|
virtual void SetUncheckedProxy(unsigned int idx, vtkSMProxy* proxy);
|
|
|
|
// Description:
|
|
// Removes all unchecked proxies.
|
|
virtual void RemoveAllUncheckedProxies();
|
|
|
|
// Description:
|
|
// Returns the number of proxies.
|
|
unsigned int GetNumberOfProxies();
|
|
|
|
// Description:
|
|
// Returns the number of unchecked proxies.
|
|
unsigned int GetNumberOfUncheckedProxies();
|
|
|
|
// Description:
|
|
// Set the number of proxies.
|
|
void SetNumberOfProxies(unsigned int count);
|
|
void SetNumberOfUncheckedProxies(unsigned int count);
|
|
|
|
// Description:
|
|
// Return a proxy. No bounds check is performed.
|
|
vtkSMProxy* GetProxy(unsigned int idx);
|
|
|
|
// Description:
|
|
// Return a proxy. No bounds check is performed.
|
|
vtkSMProxy* GetUncheckedProxy(unsigned int idx);
|
|
|
|
// Description:
|
|
// Copy all property values.
|
|
virtual void Copy(vtkSMProperty* src);
|
|
|
|
// Description:
|
|
// Returns whether the "skip_dependency" attribute is set.
|
|
vtkGetMacro(SkipDependency, bool);
|
|
|
|
// Description:
|
|
// Update all proxies referred by this property (if any).
|
|
virtual void UpdateAllInputs();
|
|
|
|
virtual bool IsValueDefault();
|
|
|
|
// Description:
|
|
// For properties that support specifying defaults in XML configuration, this
|
|
// method will reset the property value to the default values specified in the
|
|
// XML.
|
|
// Simply clears the property.
|
|
virtual void ResetToXMLDefaults();
|
|
|
|
//BTX
|
|
protected:
|
|
vtkSMProxyProperty();
|
|
~vtkSMProxyProperty();
|
|
|
|
// Description:
|
|
// Let the property write its content into the stream
|
|
virtual void WriteTo(vtkSMMessage* msg);
|
|
|
|
// Description:
|
|
// Let the property read and set its content from the stream
|
|
virtual void ReadFrom(const vtkSMMessage* msg, int msg_offset, vtkSMProxyLocator*);
|
|
|
|
friend class vtkSMProxy;
|
|
|
|
// Description:
|
|
// Set the appropriate ivars from the xml element. Should
|
|
// be overwritten by subclass if adding ivars.
|
|
virtual int ReadXMLAttributes(vtkSMProxy* parent,
|
|
vtkPVXMLElement* element);
|
|
|
|
|
|
// Description:
|
|
// Generic method used to generate XML state
|
|
virtual void SaveStateValues(vtkPVXMLElement* propertyElement);
|
|
|
|
// Description:
|
|
// Fill state property/proxy XML element with proxy info.
|
|
// Return the created proxy XML element that has been added as a child in the
|
|
// property definition. If prop == NULL, you must Delete yourself the result
|
|
// otherwise prop is olding a reference to the proxy element
|
|
virtual vtkPVXMLElement* AddProxyElementState(vtkPVXMLElement *prop,
|
|
unsigned int idx);
|
|
// Description:
|
|
// Updates state from an XML element. Returns 0 on failure.
|
|
virtual int LoadState(vtkPVXMLElement* element, vtkSMProxyLocator* loader);
|
|
|
|
|
|
// Description:
|
|
// Called when a producer fires the vtkCommand::UpdateDataEvent. We update all
|
|
// dependent domains since the data-information may have changed.
|
|
void OnUpdateDataEvent() { this->UpdateDomains(); }
|
|
|
|
// Static flag used to know if the locator should be used to create proxy
|
|
// or if the session should be used to find only the existing ones
|
|
static bool CreateProxyAllowed;
|
|
|
|
bool SkipDependency;
|
|
|
|
class vtkPPInternals;
|
|
friend class vtkPPInternals;
|
|
vtkPPInternals* PPInternals;
|
|
private:
|
|
vtkSMProxyProperty(const vtkSMProxyProperty&); // Not implemented
|
|
void operator=(const vtkSMProxyProperty&); // Not implemented
|
|
//ETX
|
|
};
|
|
|
|
#endif
|