LinkComp, LinkView, PSLink - component subject, view, and
PostScript external representation for lines with con-
nectable endpoints
SYNOPSIS
#include <Unidraw/Components/link.h>
DESCRIPTION
LinkComp is a GraphicComp defining a line with two pins on
each end. The line's endpoints will always coincide with
the pins, even if they are moved, thereby maintaining a
graphical link between the objects to which it is con-
nected. LinkComp uses an Line graphic to define its ini-
tial geometry and graphical attributes. LinkView is a
GraphicView for displaying the link. PSLink is a
PostScriptView that externalizes the subject's information
in PostScript form.
LINKCOMP PUBLIC OPERATIONS
LinkComp(Line* = nil)
The constructor takes an optional line graphic to
define its initial appearance.
virtual void Interpret(Command*)
virtual void Uninterpret(Command*)
In addition to (un)interpreting the commands Graph-
icComp (un)interprets, LinkComp also (un)interprets
DeleteCmd and CutCmd by passing these commands to
its pins for (un)interpretation.
virtual void Update()
When the LinkComp's pins move to maintain connec-
tivity, LinkComp will reorient the line so that its
endpoints and the pins coincide.
virtual void First(Iterator&)
virtual void Last(Iterator&)
virtual void Next(Iterator&)
virtual void Prev(Iterator&)
virtual boolean Done(Iterator)
GraphicComp* GetComp(Iterator)
void SetComp(GraphicComp*, Iterator&)
LinkComp redefines GraphicComp's traversal opera-
tions to make its pins accessible to the Unidraw
library. Thus Unidraw can determine the connectors
that belong to the component and call its Update
operation only once for efficiency. The traversal
does not include the line.
Line* GetLine()
Return the Line graphic that defines the link's
attributes. GetLine is simply a more specific form
Return the LinkView's pins, which are stored in the
_conn1 and _conn2 protected members.
LINKVIEW PUBLIC OPERATIONS
LinkView(LinkComp* = nil)
Create an LinkView, optionally supplying the sub-
ject.
virtual Manipulator* CreateManipulator(
Viewer*, Event&, Transformer*, Tool*
)
virtual void InterpretManipulator(Manipulator*)
LinkView redefines its response to manipulation
with a GraphicCompTool. The user clicks to specify
the first endpoint of the link and then drags to
position the remaining endpoint. (Up)clicking on
an existing connector will establish a connection
between it and the LinkComp's first (second) pin.
LinkView uses a ConnectManip to produce a gravita-
tional attraction between existing connectors and
the second pin as the user drags to position it.
The endpoints will not be constrained by gravity.
LinkView will use ConnectCmds to connect the pin(s)
to their target(s). Pin(s) connected in this way
will receive floating mobility; unconnected pin(s)
will be fixed.
virtual void First(Iterator&)
virtual void Last(Iterator&)
virtual void Next(Iterator&)
virtual void Prev(Iterator&)
virtual boolean Done(Iterator)
GraphicView* GetView(Iterator)
void SetView(GraphicView*, Iterator&)
LinkView redefines GraphicView's traversal opera-
tions to make its pins accessible to the Unidraw
library. Thus Unidraw can determine the connectors
that belong to the component, for example, to sup-
port ConnectManip's gravitational attraction
effect.
virtual void GetEndpoints(Coord&, Coord&, Coord&, Coord&)
Return the link's endpoints, in canvas coordinates.
LinkComp* GetLinkComp()
Return the subject.
LINKVIEW PROTECTED OPERATIONS
virtual void CreateHandles()
LinkView redefines CreateHandles to use a Rubber-
Handles object with two handles, one at each end-
Return the line that LinkView draws between its
pins.
virtual LinkComp* NewSubject(Line*)
A helper function that creates a LinkComp subject
with the given line graphic. This function produces
the proper subject when the GraphicCompTool's
manipulator is interpreted. Subclasses can rede-
fine this operation to return a LinkComp subclass,
thus eliminating the need to reimplement Interpret-
Manipulator.
Manipulator* CreateLinkCompManip(
Viewer*, Event&, Transformer*, Tool*
)
Command* InterpretLinkCompManip(Manipulator*)
Helper functions that CreateManipulator and Inter-
pretManipulator use to create and interpret the
manipulator for GraphicCompTool.
PSLINK PUBLIC OPERATIONS
PSLink(LinkComp* = nil)
Construct a PostScript external representation of
the given subject, if any.
SEE ALSO
Event(3I), Graphic(3U), GraphicComp(3U), GraphicComp-
Tool(3U), GraphicView(3U), Grid(3U), PinComp(3U),
PostScriptView(3U), Transformer(3I), align(3U), edit(3U),
manips(3U)
Man(1) output converted with
man2html