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