NAME¶
PinComp, PinView, PinGraphic, PSPin - pin connector subject, view, structured
graphic, and PostScript external representation
SlidingPin, FixedPin - rubberbands used in pin manipulation
SYNOPSIS¶
#include <Unidraw/Components/pin.h>
DESCRIPTION¶
PinComp is a Connector subclass that supports connectivity with zero degrees of
freedom. It uses a PinGraphic to store its graphical attributes. PinView is a
GraphicView for displaying the pin. PSPin is a PostScriptView that
externalizes the subject's information in PostScript form.
SlidingPin and FixedPin are special rubberbands used to implement the animation
effects that pins produce during direct manipulation. A SlidingPin is a circle
with crosshairs (duplicating the appearance of a PinGraphic) that follows the
mouse position, while a FixedPin draws a static circle with crosshairs.
PINCOMP PUBLIC OPERATIONS¶
- PinComp(PinGraphic* = nil)
- The constructor takes an optional PinGraphic that defines the pin's
graphical attributes. The pad has fixed mobility initially
- virtual void Interpret(Command*)
- virtual void Uninterpret(Command*)
- PinComp (un)interprets a subset of commands that connectors can generally
interpret, namely MoveCmd, BrushCmd, AlignCmd, MobilityCmd, DeleteCmd, and
CutCmd.
- virtual Mobility GetMobility()
- virtual void SetMobility(Mobility)
- PinComp redefines these functions to return and assign its
_mobility protected member. The pin has fixed mobility
initially.
- Pin* GetPin()
- Return the Pin graphic that defines the line's attributes. GetPin is
simply a more specific form of the GetGraphic operation.
PINVIEW PUBLIC OPERATIONS¶
- PinView(PinComp* = nil)
- Create an PinView, optionally supplying the subject.
- virtual void Interpret(Command*)
- PinView interprets AlignToGridCmd to align its lower left to the
grid.
- virtual Manipulator* CreateManipulator(
- Viewer*, Event&, Transformer*, Tool*
- )
- virtual void InterpretManipulator(Manipulator*)
- PinViews respond only to manipulation by GraphicCompTools, MoveTools, and
ConnectTools. PinView inherits its MoveTool response from ConnectorView.
GraphicCompTool will let the user place the pin at a particular position.
Placement will be influenced by gravity, if any. PinView creates a
ConnectManip in response to the ConnectTool, which will exhibit a
gravational attraction to potential target connectors. PinView will
produce a ConnectCmd to connect the pin to its target. A pin connected in
this way will receive floating mobility.
- PinComp* GetPinComp()
- Return the subject.
PINVIEW PROTECTED OPERATIONS¶
- PinGraphic* GetPin()
- Return the PinGraphic that defines the pin's attributes. GetPin is simply
a more specific form of the GetGraphic operation.
- virtual PinComp* NewSubject(PinGraphic*)
- A helper function that creates a PinComp subject with the given pin
graphic. This function produces the proper subject when the
GraphicCompTool's manipulator is interpreted. Subclasses can redefine this
operation to return a PinComp subclass, thus eliminating the need to
reimplement InterpretManipulator.
- Manipulator* CreateGraphicCompManip(
- Viewer*, Event&, Transformer*, Tool*
- )
- Manipulator* CreateConnectManip(
- Viewer*, Event&, Transformer*, Tool*
- )
- Command* InterpretGraphicCompManip(Manipulator*)
- Command* InterpretConnectManip(Manipulator*)
- Helper functions used by CreateManipulator and InterpretManipulator to
create and interpret the manipulators associated with GraphicCompTool and
ConnectTool.
PINGRAPHIC PUBLIC OPERATIONS¶
- PinGraphic(Coord = 0, Coord = 0, Graphic* = nil)
- Create a PinGraphic, optionally specifying its center and a graphic from
which to obtain its default graphics attributes.
- void GetOriginal(Coord&, Coord&)
- Return the PinGraphic's original center coordinates as specified in the
constructor.
PSPIN PUBLIC OPERATIONS¶
- PSPin(PinComp* = nil)
- Construct a PostScript external representation of the given subject, if
any.
SEE ALSO¶
BrushCmd(3U), ConnectTool(3U), Connector(3U), ConnectorView3U), Event(3I),
Graphic(3U), GraphicCompTool(3U), Grid(3U), MoveTool(3U), PatternCmd(3U),
PostScriptView(3U), Rubband(3I), Transformer(3I), Viewer(3U), align(3U),
edit(3U), manips(3U), transforms(3U)