Public Member Functions |
| | vtkBoxWidget (IntPtr rawCppThis, bool callDisposalMethod, bool strong) |
| | Automatically generated constructor - called from generated code. DO NOT call directly.
|
| | vtkBoxWidget () |
| | Instantiate the object.
|
| virtual vtkProperty | GetFaceProperty () |
| | Get the face properties (the faces of the box). The properties of the face when selected and normal can be set.
|
| virtual vtkProperty | GetHandleProperty () |
| | Get the handle properties (the little balls are the handles). The properties of the handles when selected and normal can be set.
|
| virtual int | GetInsideOut () |
| | Set/Get the InsideOut flag. When off, the normals point out of the box. When on, the normals point into the hexahedron. InsideOut is off by default.
|
| virtual int | GetOutlineCursorWires () |
| | Control the representation of the outline. This flag enables the cursor lines running between the handles. By default cursor wires are on.
|
| virtual int | GetOutlineFaceWires () |
| | Control the representation of the outline. This flag enables face wires. By default face wires are off.
|
| virtual vtkProperty | GetOutlineProperty () |
| | Get the outline properties (the outline of the box). The properties of the outline when selected and normal can be set.
|
| void | GetPlanes (vtkPlanes planes) |
| | Get the planes describing the implicit function defined by the box widget. The user must provide the instance of the class vtkPlanes. Note that vtkPlanes is a subclass of vtkImplicitFunction, meaning that it can be used by a variety of filters to perform clipping, cutting, and selection of data. (The direction of the normals of the planes can be reversed enabling the InsideOut flag.)
|
| void | GetPolyData (vtkPolyData pd) |
| | Grab the polydata (including points) that define the box widget. The polydata consists of 6 quadrilateral faces and 15 points. The first eight points define the eight corner vertices; the next six define the -x,+x, -y,+y, -z,+z face points; and the final point (the 15th out of 15 points) defines the center of the hexahedron. These point values are guaranteed to be up-to-date when either the InteractionEvent or EndInteractionEvent events are invoked. The user provides the vtkPolyData and the points and cells are added to it.
|
| virtual int | GetRotationEnabled () |
| | Control the behavior of the widget. Translation, rotation, and scaling can all be enabled and disabled.
|
| virtual int | GetScalingEnabled () |
| | Control the behavior of the widget. Translation, rotation, and scaling can all be enabled and disabled.
|
| virtual vtkProperty | GetSelectedFaceProperty () |
| | Get the face properties (the faces of the box). The properties of the face when selected and normal can be set.
|
| virtual vtkProperty | GetSelectedHandleProperty () |
| | Get the handle properties (the little balls are the handles). The properties of the handles when selected and normal can be set.
|
| virtual vtkProperty | GetSelectedOutlineProperty () |
| | Get the outline properties (the outline of the box). The properties of the outline when selected and normal can be set.
|
| virtual void | GetTransform (vtkTransform t) |
| | Retrieve a linear transform characterizing the transformation of the box. Note that the transformation is relative to where PlaceWidget was initially called. This method modifies the transform provided. The transform can be used to control the position of vtkProp3D's, as well as other transformation operations (e.g., vtkTranformPolyData).
|
| virtual int | GetTranslationEnabled () |
| | Control the behavior of the widget. Translation, rotation, and scaling can all be enabled and disabled.
|
| void | HandlesOff () |
| | Switches handles (the spheres) on or off by manipulating the actor visibility.
|
| void | HandlesOn () |
| | Switches handles (the spheres) on or off by manipulating the actor visibility.
|
| virtual void | InsideOutOff () |
| | Set/Get the InsideOut flag. When off, the normals point out of the box. When on, the normals point into the hexahedron. InsideOut is off by default.
|
| virtual void | InsideOutOn () |
| | Set/Get the InsideOut flag. When off, the normals point out of the box. When on, the normals point into the hexahedron. InsideOut is off by default.
|
| override int | IsA (string type) |
| | Instantiate the object.
|
| new vtkBoxWidget | NewInstance () |
| | Instantiate the object.
|
| void | OutlineCursorWiresOff () |
| | Control the representation of the outline. This flag enables the cursor lines running between the handles. By default cursor wires are on.
|
| void | OutlineCursorWiresOn () |
| | Control the representation of the outline. This flag enables the cursor lines running between the handles. By default cursor wires are on.
|
| void | OutlineFaceWiresOff () |
| | Control the representation of the outline. This flag enables face wires. By default face wires are off.
|
| void | OutlineFaceWiresOn () |
| | Control the representation of the outline. This flag enables face wires. By default face wires are off.
|
| override void | PlaceWidget (IntPtr bounds) |
| | Methods that satisfy the superclass' API.
|
| override void | PlaceWidget () |
| | Methods that satisfy the superclass' API.
|
| override void | PlaceWidget (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) |
| | Methods that satisfy the superclass' API.
|
| virtual void | RotationEnabledOff () |
| | Control the behavior of the widget. Translation, rotation, and scaling can all be enabled and disabled.
|
| virtual void | RotationEnabledOn () |
| | Control the behavior of the widget. Translation, rotation, and scaling can all be enabled and disabled.
|
| virtual void | ScalingEnabledOff () |
| | Control the behavior of the widget. Translation, rotation, and scaling can all be enabled and disabled.
|
| virtual void | ScalingEnabledOn () |
| | Control the behavior of the widget. Translation, rotation, and scaling can all be enabled and disabled.
|
| override void | SetEnabled (int arg0) |
| | Methods that satisfy the superclass' API.
|
| virtual void | SetInsideOut (int _arg) |
| | Set/Get the InsideOut flag. When off, the normals point out of the box. When on, the normals point into the hexahedron. InsideOut is off by default.
|
| void | SetOutlineCursorWires (int arg0) |
| | Control the representation of the outline. This flag enables the cursor lines running between the handles. By default cursor wires are on.
|
| void | SetOutlineFaceWires (int arg0) |
| | Control the representation of the outline. This flag enables face wires. By default face wires are off.
|
| virtual void | SetRotationEnabled (int _arg) |
| | Control the behavior of the widget. Translation, rotation, and scaling can all be enabled and disabled.
|
| virtual void | SetScalingEnabled (int _arg) |
| | Control the behavior of the widget. Translation, rotation, and scaling can all be enabled and disabled.
|
| virtual void | SetTransform (vtkTransform t) |
| | Set the position, scale and orientation of the box widget using the transform specified. Note that the transformation is relative to where PlaceWidget was initially called (i.e., the original bounding box).
|
| virtual void | SetTranslationEnabled (int _arg) |
| | Control the behavior of the widget. Translation, rotation, and scaling can all be enabled and disabled.
|
| virtual void | TranslationEnabledOff () |
| | Control the behavior of the widget. Translation, rotation, and scaling can all be enabled and disabled.
|
| virtual void | TranslationEnabledOn () |
| | Control the behavior of the widget. Translation, rotation, and scaling can all be enabled and disabled.
|
| | vtk3DWidget (IntPtr rawCppThis, bool callDisposalMethod, bool strong) |
| | Automatically generated constructor - called from generated code. DO NOT call directly.
|
| virtual double | GetHandleSize () |
| | Set/Get the factor that controls the size of the handles that appear as part of the widget. These handles (like spheres, etc.) are used to manipulate the widget, and are sized as a fraction of the screen diagonal.
|
| virtual double | GetHandleSizeMaxValue () |
| | Set/Get the factor that controls the size of the handles that appear as part of the widget. These handles (like spheres, etc.) are used to manipulate the widget, and are sized as a fraction of the screen diagonal.
|
| virtual double | GetHandleSizeMinValue () |
| | Set/Get the factor that controls the size of the handles that appear as part of the widget. These handles (like spheres, etc.) are used to manipulate the widget, and are sized as a fraction of the screen diagonal.
|
| virtual vtkDataSet | GetInput () |
| | Specify the input dataset. This is not required, but if supplied, and no vtkProp3D is specified, it is used to initially position the widget.
|
| virtual double | GetPlaceFactor () |
| | Set/Get a factor representing the scaling of the widget upon placement (via the PlaceWidget() method). Normally the widget is placed so that it just fits within the bounding box defined in PlaceWidget(bounds). The PlaceFactor will make the widget larger (PlaceFactor > 1) or smaller (PlaceFactor < 1). By default, PlaceFactor is set to 0.5.
|
| virtual double | GetPlaceFactorMaxValue () |
| | Set/Get a factor representing the scaling of the widget upon placement (via the PlaceWidget() method). Normally the widget is placed so that it just fits within the bounding box defined in PlaceWidget(bounds). The PlaceFactor will make the widget larger (PlaceFactor > 1) or smaller (PlaceFactor < 1). By default, PlaceFactor is set to 0.5.
|
| virtual double | GetPlaceFactorMinValue () |
| | Set/Get a factor representing the scaling of the widget upon placement (via the PlaceWidget() method). Normally the widget is placed so that it just fits within the bounding box defined in PlaceWidget(bounds). The PlaceFactor will make the widget larger (PlaceFactor > 1) or smaller (PlaceFactor < 1). By default, PlaceFactor is set to 0.5.
|
| virtual vtkProp3D | GetProp3D () |
| | Specify a vtkProp3D around which to place the widget. This is not required, but if supplied, it is used to initially position the widget.
|
| virtual void | SetHandleSize (double _arg) |
| | Set/Get the factor that controls the size of the handles that appear as part of the widget. These handles (like spheres, etc.) are used to manipulate the widget, and are sized as a fraction of the screen diagonal.
|
| virtual void | SetInput (vtkDataSet arg0) |
| | Specify the input dataset. This is not required, but if supplied, and no vtkProp3D is specified, it is used to initially position the widget.
|
| virtual void | SetPlaceFactor (double _arg) |
| | Set/Get a factor representing the scaling of the widget upon placement (via the PlaceWidget() method). Normally the widget is placed so that it just fits within the bounding box defined in PlaceWidget(bounds). The PlaceFactor will make the widget larger (PlaceFactor > 1) or smaller (PlaceFactor < 1). By default, PlaceFactor is set to 0.5.
|
| virtual void | SetProp3D (vtkProp3D arg0) |
| | Specify a vtkProp3D around which to place the widget. This is not required, but if supplied, it is used to initially position the widget.
|
| | vtkInteractorObserver (IntPtr rawCppThis, bool callDisposalMethod, bool strong) |
| | Automatically generated constructor - called from generated code. DO NOT call directly.
|
| void | EnabledOff () |
| | Methods for turning the interactor observer on and off, and determining its state. All subclasses must provide the SetEnabled() method. Enabling a vtkInteractorObserver has the side effect of adding observers; disabling it removes the observers. Prior to enabling the vtkInteractorObserver you must set the render window interactor (via SetInteractor()). Initial value is 0.
|
| void | EnabledOn () |
| | Methods for turning the interactor observer on and off, and determining its state. All subclasses must provide the SetEnabled() method. Enabling a vtkInteractorObserver has the side effect of adding observers; disabling it removes the observers. Prior to enabling the vtkInteractorObserver you must set the render window interactor (via SetInteractor()). Initial value is 0.
|
| virtual vtkRenderer | GetCurrentRenderer () |
| | Set/Get the current renderer. Normally when the widget is activated (SetEnabled(1) or when keypress activation takes place), the renderer over which the mouse pointer is positioned is used and assigned to this Ivar. Alternatively, you might want to set the CurrentRenderer explicitly. WARNING: note that if the DefaultRenderer Ivar is set (see above), it will always override the parameter passed to SetCurrentRenderer, unless it is NULL. (i.e., SetCurrentRenderer(foo) = SetCurrentRenderer(DefaultRenderer).
|
| virtual vtkRenderer | GetDefaultRenderer () |
| | Set/Get the default renderer to use when activating the interactor observer. Normally when the widget is activated (SetEnabled(1) or when keypress activation takes place), the renderer over which the mouse pointer is positioned is used. Alternatively, you can specify the renderer to bind the interactor to when the interactor observer is activated.
|
| int | GetEnabled () |
| | Methods for turning the interactor observer on and off, and determining its state. All subclasses must provide the SetEnabled() method. Enabling a vtkInteractorObserver has the side effect of adding observers; disabling it removes the observers. Prior to enabling the vtkInteractorObserver you must set the render window interactor (via SetInteractor()). Initial value is 0.
|
| virtual vtkRenderWindowInteractor | GetInteractor () |
| | This method is used to associate the widget with the render window interactor. Observers of the appropriate events invoked in the render window interactor are set up as a result of this method invocation. The SetInteractor() method must be invoked prior to enabling the vtkInteractorObserver.
|
| virtual int | GetKeyPressActivation () |
| | Enable/Disable of the use of a keypress to turn on and off the interactor observer. (By default, the keypress is 'i' for "interactor observer".) Set the KeyPressActivationValue to change which key activates the widget.)
|
| virtual sbyte | GetKeyPressActivationValue () |
| | Specify which key press value to use to activate the interactor observer (if key press activation is enabled). By default, the key press activation value is 'i'. Note: once the SetInteractor() method is invoked, changing the key press activation value will not affect the key press until SetInteractor(NULL)/SetInteractor(iren) is called.
|
| virtual float | GetPriority () |
| | Set/Get the priority at which events are processed. This is used when multiple interactor observers are used simultaneously. The default value is 0.0 (lowest priority.) Note that when multiple interactor observer have the same priority, then the last observer added will process the event first. (Note: once the SetInteractor() method has been called, changing the priority does not effect event processing. You will have to SetInteractor(NULL), change priority, and then SetInteractor(iren) to have the priority take effect.)
|
| virtual float | GetPriorityMaxValue () |
| | Set/Get the priority at which events are processed. This is used when multiple interactor observers are used simultaneously. The default value is 0.0 (lowest priority.) Note that when multiple interactor observer have the same priority, then the last observer added will process the event first. (Note: once the SetInteractor() method has been called, changing the priority does not effect event processing. You will have to SetInteractor(NULL), change priority, and then SetInteractor(iren) to have the priority take effect.)
|
| virtual float | GetPriorityMinValue () |
| | Set/Get the priority at which events are processed. This is used when multiple interactor observers are used simultaneously. The default value is 0.0 (lowest priority.) Note that when multiple interactor observer have the same priority, then the last observer added will process the event first. (Note: once the SetInteractor() method has been called, changing the priority does not effect event processing. You will have to SetInteractor(NULL), change priority, and then SetInteractor(iren) to have the priority take effect.)
|
| void | GrabFocus (vtkCommand mouseEvents, vtkCommand keypressEvents) |
| | Convenience methods for outside classes. Make sure that the parameter "ren" is not-null.
|
| virtual void | KeyPressActivationOff () |
| | Enable/Disable of the use of a keypress to turn on and off the interactor observer. (By default, the keypress is 'i' for "interactor observer".) Set the KeyPressActivationValue to change which key activates the widget.)
|
| virtual void | KeyPressActivationOn () |
| | Enable/Disable of the use of a keypress to turn on and off the interactor observer. (By default, the keypress is 'i' for "interactor observer".) Set the KeyPressActivationValue to change which key activates the widget.)
|
| void | Off () |
| | Methods for turning the interactor observer on and off, and determining its state. All subclasses must provide the SetEnabled() method. Enabling a vtkInteractorObserver has the side effect of adding observers; disabling it removes the observers. Prior to enabling the vtkInteractorObserver you must set the render window interactor (via SetInteractor()). Initial value is 0.
|
| void | On () |
| | Methods for turning the interactor observer on and off, and determining its state. All subclasses must provide the SetEnabled() method. Enabling a vtkInteractorObserver has the side effect of adding observers; disabling it removes the observers. Prior to enabling the vtkInteractorObserver you must set the render window interactor (via SetInteractor()). Initial value is 0.
|
| virtual void | OnChar () |
| | Sets up the keypress-i event.
|
| void | ReleaseFocus () |
| | Convenience methods for outside classes. Make sure that the parameter "ren" is not-null.
|
| virtual void | SetCurrentRenderer (vtkRenderer arg0) |
| | Set/Get the current renderer. Normally when the widget is activated (SetEnabled(1) or when keypress activation takes place), the renderer over which the mouse pointer is positioned is used and assigned to this Ivar. Alternatively, you might want to set the CurrentRenderer explicitly. WARNING: note that if the DefaultRenderer Ivar is set (see above), it will always override the parameter passed to SetCurrentRenderer, unless it is NULL. (i.e., SetCurrentRenderer(foo) = SetCurrentRenderer(DefaultRenderer).
|
| virtual void | SetDefaultRenderer (vtkRenderer arg0) |
| | Set/Get the default renderer to use when activating the interactor observer. Normally when the widget is activated (SetEnabled(1) or when keypress activation takes place), the renderer over which the mouse pointer is positioned is used. Alternatively, you can specify the renderer to bind the interactor to when the interactor observer is activated.
|
| virtual void | SetInteractor (vtkRenderWindowInteractor iren) |
| | This method is used to associate the widget with the render window interactor. Observers of the appropriate events invoked in the render window interactor are set up as a result of this method invocation. The SetInteractor() method must be invoked prior to enabling the vtkInteractorObserver.
|
| virtual void | SetKeyPressActivation (int _arg) |
| | Enable/Disable of the use of a keypress to turn on and off the interactor observer. (By default, the keypress is 'i' for "interactor observer".) Set the KeyPressActivationValue to change which key activates the widget.)
|
| virtual void | SetKeyPressActivationValue (sbyte _arg) |
| | Specify which key press value to use to activate the interactor observer (if key press activation is enabled). By default, the key press activation value is 'i'. Note: once the SetInteractor() method is invoked, changing the key press activation value will not affect the key press until SetInteractor(NULL)/SetInteractor(iren) is called.
|
| virtual void | SetPriority (float _arg) |
| | Set/Get the priority at which events are processed. This is used when multiple interactor observers are used simultaneously. The default value is 0.0 (lowest priority.) Note that when multiple interactor observer have the same priority, then the last observer added will process the event first. (Note: once the SetInteractor() method has been called, changing the priority does not effect event processing. You will have to SetInteractor(NULL), change priority, and then SetInteractor(iren) to have the priority take effect.)
|
| | vtkObject (IntPtr rawCppThis, bool callDisposalMethod, bool strong) |
| | Automatically generated constructor - called from generated code. DO NOT call directly.
|
| | vtkObject () |
| | Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
|
| uint | AddObserver (uint arg0, vtkCommand arg1, float priority) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| uint | AddObserver (string arg0, vtkCommand arg1, float priority) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| virtual void | DebugOff () |
| | Turn debugging output off.
|
| virtual void | DebugOn () |
| | Turn debugging output on.
|
| vtkCommand | GetCommand (uint tag) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| byte | GetDebug () |
| | Get the value of the debug flag.
|
| virtual uint | GetMTime () |
| | Return this object's modified time.
|
| int | HasObserver (uint arg0, vtkCommand arg1) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| int | HasObserver (string arg0, vtkCommand arg1) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| int | HasObserver (uint arg0) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| int | HasObserver (string arg0) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| int | InvokeEvent (uint arg0, IntPtr callData) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| int | InvokeEvent (string arg0, IntPtr callData) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| int | InvokeEvent (uint arg0) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| int | InvokeEvent (string arg0) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| virtual void | Modified () |
| | Update the modification time for this object. Many filters rely on the modification time to determine if they need to recompute their data. The modification time is a unique monotonically increasing unsigned long integer.
|
| void | RemoveAllObservers () |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| void | RemoveObserver (vtkCommand arg0) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| void | RemoveObserver (uint tag) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| void | RemoveObservers (uint arg0, vtkCommand arg1) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| void | RemoveObservers (string arg0, vtkCommand arg1) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| void | RemoveObservers (uint arg0) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| void | RemoveObservers (string arg0) |
| | This is a global flag that controls whether any debug, warning or error messages are displayed.
|
| void | SetDebug (byte debugFlag) |
| | Set the value of the debug flag. A non-zero value turns debugging on.
|
| override string | ToString () |
| | Returns the result of calling vtkObject::Print as a C# string.
|
| delegate void | vtkObjectEventHandler (vtkObject sender, vtkObjectEventArgs e) |
| | Generic signature for all vtkObject events.
|
| void | RemoveAllHandlersForAllEvents () |
| | Call RemoveAllHandlers on each non-null vtkObjectEventRelay. TODO: This method needs to get called by the generated Dispose. Make that happen...
|
| | vtkObjectBase (IntPtr rawCppThis, bool callDisposalMethod, bool strong) |
| | Automatically generated constructor - called from generated code. DO NOT call directly.
|
| | vtkObjectBase () |
| | Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
|
| virtual void | Register (vtkObjectBase o) |
| | Increase the reference count (mark as used by another object).
|
| virtual void | FastDelete () |
| | Delete a reference to this object. This version will not invoke garbage collection and can potentially leak the object if it is part of a reference loop. Use this method only when it is known that the object has another reference and would not be collected if a full garbage collection check were done.
|
| string | GetClassName () |
| | Return the class name as a string. This method is defined in all subclasses of vtkObjectBase with the vtkTypeMacro found in vtkSetGet.h.
|
| int | GetReferenceCount () |
| | Return the current reference count of this object.
|
| void | SetReferenceCount (int arg0) |
| | Sets the reference count. (This is very dangerous, use with care.)
|
vtkBoxWidget - orthogonal hexahedron 3D widget
Description This 3D widget defines a region of interest that is represented by an arbitrarily oriented hexahedron with interior face angles of 90 degrees (orthogonal faces). The object creates 7 handles that can be moused on and manipulated. The first six correspond to the six faces, the seventh is in the center of the hexahedron. In addition, a bounding box outline is shown, the "faces" of which can be selected for object rotation or scaling. A nice feature of the object is that the vtkBoxWidget, like any 3D widget, will work with the current interactor style. That is, if vtkBoxWidget does not handle an event, then all other registered observers (including the interactor style) have an opportunity to process the event. Otherwise, the vtkBoxWidget will terminate the processing of the event that it handles.
To use this object, just invoke SetInteractor() with the argument of the method a vtkRenderWindowInteractor. You may also wish to invoke "PlaceWidget()" to initially position the widget. The interactor will act normally until the "i" key (for "interactor") is pressed, at which point the vtkBoxWidget will appear. (See superclass documentation for information about changing this behavior.) By grabbing the six face handles (use the left mouse button), faces can be moved. By grabbing the center handle (with the left mouse button), the entire hexahedron can be translated. (Translation can also be employed by using the "shift-left-mouse-button" combination inside of the widget.) Scaling is achieved by using the right mouse button "up" the render window (makes the widget bigger) or "down" the render window (makes the widget smaller). To rotate vtkBoxWidget, pick a face (but not a face handle) and move the left mouse. (Note: the mouse button must be held down during manipulation.) Events that occur outside of the widget (i.e., no part of the widget is picked) are propagated to any other registered obsevers (such as the interaction style). Turn off the widget by pressing the "i" key again. (See the superclass documentation on key press activiation.)
The vtkBoxWidget is very flexible. It can be used to select, cut, clip, or perform any other operation that depends on an implicit function (use the GetPlanes() method); or it can be used to transform objects using a linear transformation (use the GetTransform() method). Typical usage of the widget is to make use of the StartInteractionEvent, InteractionEvent, and EndInteractionEvent events. The InteractionEvent is called on mouse motion; the other two events are called on button down and button up (either left or right button).
Some additional features of this class include the ability to control the rendered properties of the widget. You can set the properties of the selected and unselected representations of the parts of the widget. For example, you can set the property for the handles, faces, and outline in their normal and selected states.