PinComp, PinView, PinGraphic, PSPin - pin connector sub-
ject, view, structured graphic, and PostScript external
representation
SlidingPin, FixedPin - rubberbands used in pin manipula-
tion
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 sub-
ject.
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 Graphic-
CompTools, 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 influ-
enced by gravity, if any. PinView creates a Con-
nectManip in response to the ConnectTool, which
will exhibit a gravational attraction to potential
target connectors. PinView will produce a Con-
nectCmd to connect the pin to its target. A pin
connected in this way will receive floating mobil-
ity.
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 rede-
fine this operation to return a PinComp subclass,
thus eliminating the need to reimplement Interpret-
Manipulator.
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
PinGraphic(Coord = 0, Coord = 0, Graphic* = nil)
Create a PinGraphic, optionally specifying its cen-
ter 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), Connec-
torView3U), 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), trans-
forms(3U)
Man(1) output converted with
man2html