Skip to content

Studio/Visualization/PaintWidget.h

Namespaces

Name
shapeworks
User usage reporting (telemetry)

Classes

Name
class shapeworks::PaintWidget

Source code

```cpp

pragma once

include "vtkAbstractWidget.h"

class vtkContourRepresentation; class vtkPolyData; class vtkPointPlacer; class vtkRenderer;

namespace shapeworks {

class Viewer; class StudioSphereRepresentation;

class PaintWidget : public vtkAbstractWidget { public: // Description: // Instantiate this class. static PaintWidget* New();

// Description: // Standard methods for a VTK class. vtkTypeMacro(PaintWidget, vtkAbstractWidget); void PrintSelf(ostream& os, vtkIndent indent);

// Description: // Set / get the Point Placer. The point placer is // responsible for converting display coordinates into // world coordinates according to some constraints, and // for validating world positions. // void SetPointPlacer( vtkPointPlacer * ); vtkSetMacro(PointPlacer, vtkPointPlacer); vtkGetMacro(PointPlacer, vtkPointPlacer);

vtkSetMacro(Renderer, vtkRenderer); vtkGetMacro(Renderer, vtkRenderer);

void set_viewer(Viewer* viewer);

void set_circle_mode(bool circle_mode);

// Description: // The method for activiating and deactiviating this widget. This method // must be overridden because it is a composite widget and does more than // its superclasses' vtkAbstractWidget::SetEnabled() method. virtual void SetEnabled(int);

// Description: // Specify an instance of vtkWidgetRepresentation used to represent this // widget in the scene. Note that the representation is a subclass of vtkProp // so it can be added to the renderer independent of the widget. void SetRepresentation(vtkContourRepresentation* r) { this->Superclass::SetWidgetRepresentation(reinterpret_cast(r)); }

// Description: // Create the default widget representation if one is not set. void CreateDefaultRepresentation();

void update_position();

// Description: // Initialize the contour widget from a user supplied set of points. The // state of the widget decides if you are still defining the widget, or // if you've finished defining (added the last point) are manipulating // it. Note that if the polydata supplied is closed, the state will be // set to manipulate. // State: Define = 0, Manipulate = 1. virtual void Initialize(vtkPolyData* poly, int state = 1); virtual void Initialize() { this->Initialize(NULL); }

void set_brush_size(double size); double get_brush_size();

void set_brush_color(float r, float g, float b);

protected: PaintWidget(); ~PaintWidget();

// The state of the widget enum { Start, Paint, Erase };

int WidgetState; vtkPointPlacer PointPlacer; vtkRenderer Renderer;

// Callback interface to capture events when // placing the widget. static void StartPaintAction(vtkAbstractWidget w); static void EndPaintAction(vtkAbstractWidget w); static void StartEraseAction(vtkAbstractWidget w); static void EndEraseAction(vtkAbstractWidget w); static void MoveAction(vtkAbstractWidget w); static void LeaveAction(vtkAbstractWidget w); static void KeyPressAction(vtkAbstractWidget* w);

bool use_point_placer(double displayPos[2], int newState); void set_cursor(int requestedShape);

StudioSphereRepresentation* sphere_cursor_;

bool mouse_in_window_;

Viewer* viewer_; bool circle_mode_ = false;

private: PaintWidget(const PaintWidget&); // Not implemented void operator=(const PaintWidget&); // Not implemented }; } // namespace shapeworks ```


Updated on 2026-03-31 at 16:02:11 +0000