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
|
/*=========================================================================
Program: ParaView
Module: vtkSMNewWidgetRepresentationProxy.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.
=========================================================================*/
/**
* @class vtkSMNewWidgetRepresentationProxy
* @brief proxy for 3D widgets and
* their representations in ParaView.
*
* vtkSMNewWidgetRepresentationProxy is a proxy for 3D widgets and their
* representations. It has several responsibilities.
* \li Sets up the link between the Widget and its representation on VTK side.
* \li Sets up event handlers to ensure that the representation proxy's info
* properties are updated any time the widget fires interaction events.
* \li Provides API to perform tasks typical with 3DWidgets in ParaView e.g.
* picking, placing widget on data bounds.
*/
#ifndef vtkSMNewWidgetRepresentationProxy_h
#define vtkSMNewWidgetRepresentationProxy_h
#include "vtkPVServerManagerRenderingModule.h" //needed for exports
#include "vtkSMProxy.h"
class vtkSMViewProxy;
class vtkSMNewWidgetRepresentationObserver;
class vtkAbstractWidget;
struct vtkSMNewWidgetRepresentationInternals;
class VTKPVSERVERMANAGERRENDERING_EXPORT vtkSMNewWidgetRepresentationProxy : public vtkSMProxy
{
public:
static vtkSMNewWidgetRepresentationProxy* New();
vtkTypeMacro(vtkSMNewWidgetRepresentationProxy, vtkSMProxy);
void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
//@{
/**
* Get the widget for the representation.
*/
vtkGetObjectMacro(Widget, vtkAbstractWidget);
//@}
//@{
/**
* Get Representation Proxy.
*/
vtkGetObjectMacro(RepresentationProxy, vtkSMProxy);
//@}
//@{
/**
* Called to link properties from a Widget to \c controlledProxy i.e. a
* proxy whose properties are being manipulated using this Widget.
* Currently, we only support linking with one controlled proxy at a time. One
* must call UnlinkProperties() before one can call this method on another
* controlledProxy. The \c controlledPropertyGroup is used to determine the
* mapping between this widget properties and controlledProxy properties.
*/
bool LinkProperties(vtkSMProxy* controlledProxy, vtkSMPropertyGroup* controlledPropertyGroup);
bool UnlinkProperties(vtkSMProxy* controlledProxy);
//@}
protected:
vtkSMNewWidgetRepresentationProxy();
~vtkSMNewWidgetRepresentationProxy();
/**
* Overridden from vtkSMProxy to call BeginCreateVTKObjects() and
* EndCreateVTKObjects().
*/
virtual void CreateVTKObjects() VTK_OVERRIDE;
vtkSMProxy* RepresentationProxy;
vtkSMProxy* WidgetProxy;
vtkAbstractWidget* Widget;
vtkSMNewWidgetRepresentationObserver* Observer;
vtkSMNewWidgetRepresentationInternals* Internal;
friend class vtkSMNewWidgetRepresentationObserver;
/**
* Called every time the user interacts with the widget.
*/
virtual void ExecuteEvent(unsigned long event);
/**
* Called everytime a controlled property's unchecked values change.
*/
void ProcessLinkedPropertyEvent(vtkSMProperty* controlledProperty, unsigned long event);
private:
vtkSMNewWidgetRepresentationProxy(const vtkSMNewWidgetRepresentationProxy&) VTK_DELETE_FUNCTION;
void operator=(const vtkSMNewWidgetRepresentationProxy&) VTK_DELETE_FUNCTION;
};
#endif
|