logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

LinkComp, LinkView, PSLink - component subject, view, and PostScript external representation for lines

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 connected.  LinkComp uses an Line graphic to define its  initial  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.

       virtualvoidInterpret(Command*)virtualvoidUninterpret(Command*)
              In  addition  to  (un)interpreting  the  commands  GraphicComp   (un)interprets,   LinkComp   also
              (un)interprets DeleteCmd and CutCmd by passing these commands to its pins for (un)interpretation.

       virtualvoidUpdate()
              When  the  LinkComp's  pins move to maintain connectivity, LinkComp will reorient the line so that
              its endpoints and the pins coincide.

       virtualvoidFirst(Iterator&)virtualvoidLast(Iterator&)virtualvoidNext(Iterator&)virtualvoidPrev(Iterator&)virtualbooleanDone(Iterator)GraphicComp*GetComp(Iterator)voidSetComp(GraphicComp*,Iterator&)
              LinkComp redefines GraphicComp's traversal operations 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 of the GetGraphic operation.

       voidGetConnectors(Connector*&,Connector*&)
              Return the LinkView's pins, which are stored in the _conn1 and _conn2 protected members.

Linkview Protected Operations

virtualvoidCreateHandles()
              LinkView  redefines  CreateHandles  to  use  a  RubberHandles object with two handles, one at each
              endpoint of the link.

       Line*GetLine()
              Return the line that LinkView draws between its pins.

       virtualLinkComp*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
              redefine  this  operation  to return a LinkComp subclass, thus eliminating the need to reimplement
              InterpretManipulator.

       Manipulator*CreateLinkCompManip(Viewer*,Event&,Transformer*,Tool*)Command*InterpretLinkCompManip(Manipulator*)
              Helper functions that CreateManipulator and InterpretManipulator use to create and  interpret  the
              manipulator for GraphicCompTool.

Linkview Public Operations

LinkView(LinkComp*=nil)
              Create an LinkView, optionally supplying the subject.

       virtualManipulator*CreateManipulator(Viewer*,Event&,Transformer*,Tool*)virtualvoidInterpretManipulator(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  gravitational  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.

       virtualvoidFirst(Iterator&)virtualvoidLast(Iterator&)virtualvoidNext(Iterator&)virtualvoidPrev(Iterator&)virtualbooleanDone(Iterator)GraphicView*GetView(Iterator)voidSetView(GraphicView*,Iterator&)
              LinkView  redefines  GraphicView's traversal operations to make its pins accessible to the Unidraw
              library.  Thus Unidraw can determine the connectors that belong to the component, for example,  to
              support ConnectManip's gravitational attraction effect.

       virtualvoidGetEndpoints(Coord&,Coord&,Coord&,Coord&)
              Return the link's endpoints, in canvas coordinates.

       LinkComp*GetLinkComp()
              Return the subject.

Name

       LinkComp,  LinkView,  PSLink  - component subject, view, and PostScript external representation for lines
       with connectable endpoints

See Also

Event(3I),  Graphic(3U),  GraphicComp(3U),  GraphicCompTool(3U),  GraphicView(3U), Grid(3U), PinComp(3U),
       PostScriptView(3U), Transformer(3I), align(3U), edit(3U), manips(3U)

Unidraw                                          22 January 1991                                    LinkComp(3U)

Synopsis

#include<Unidraw/Components/link.h>

See Also