Class MPolyline

java.lang.Object
chemaxon.struc.MObject
chemaxon.struc.graphics.MPolyline
All Implemented Interfaces:
Serializable, Cloneable
Direct Known Subclasses:
MEFlow, MRectangle

@PublicAPI public class MPolyline extends MObject
Polyline object.
Since:
Marvin 3.3, 10/03/2003
See Also:
  • Field Details

    • DEFAULT_THICKNESS

      public static final double DEFAULT_THICKNESS
      Default line thickness.
      Since:
      Marvin 3.4, 06/09/2004
      See Also:
    • DEFAULT_ARROW_HEAD_LENGTH

      public static final double DEFAULT_ARROW_HEAD_LENGTH
      Default arrow head length.
      Since:
      Marvin 3.5, 07/01/2004
      See Also:
    • DEFAULT_ARROW_HEAD_WIDTH

      public static final double DEFAULT_ARROW_HEAD_WIDTH
      Default arrow head width.
      Since:
      Marvin 3.5, 07/01/2004
      See Also:
    • DEFAULT_MAX_CROSS_SIZE

      public static final double DEFAULT_MAX_CROSS_SIZE
      Default maximum cross size.
      Since:
      Marvin 14.7.7, 07/01/2014
      See Also:
    • DEFAULT_EQUILIBRIUM_HEAD_WIDTH

      public static final double DEFAULT_EQUILIBRIUM_HEAD_WIDTH
      Default equilibrium head width.
      Since:
      Marvin 14.7.7, 07/01/2014
      See Also:
    • DEFAULT_RETROSYNTHETIC_HEAD_WIDTH

      public static final double DEFAULT_RETROSYNTHETIC_HEAD_WIDTH
      Default retrosynthetic head width.
      Since:
      Marvin 14.7.7, 07/01/2014
      See Also:
    • TAIL

      public static final int TAIL
      Arrow tail (feather).
      Since:
      Marvin 3.5, 06/30/2004
      See Also:
    • CLOSED_FLAG

      public static final int CLOSED_FLAG
      Closed flag.
      Since:
      Marvin 3.5, 06/30/2004
      See Also:
    • THICKNESS_SET_FLAG

      public static final int THICKNESS_SET_FLAG
      Thickness is set flag.
      Since:
      Marvin 3.5, 06/30/2004
      See Also:
    • ARROW_BACK_FLAG

      public static final int ARROW_BACK_FLAG
      Arrow points back.
      Since:
      Marvin 3.5, 07/02/2004
      See Also:
    • ARROW_HALF_MASK

      public static final int ARROW_HALF_MASK
      Unshifted mask of the half arrow option bits in flags.
      Since:
      Marvin 3.5, 07/01/2004
      See Also:
    • ARROW_HALF_LEFT

      public static final int ARROW_HALF_LEFT
      Only the left half of the arrow head is drawn.
      Since:
      Marvin 3.5, 07/01/2004
      See Also:
    • ARROW_HALF_RIGHT

      public static final int ARROW_HALF_RIGHT
      Only the right half of the arrow head is drawn.
      Since:
      Marvin 3.5, 07/01/2004
      See Also:
    • ARROW_GROUP1_MASK

      public static final int ARROW_GROUP1_MASK
      Mask for the equilibrium and retrosynthetic arrow flags.
      Since:
      Marvin 5.10, 04/20/2012
      See Also:
    • ARROW_RETROSYNTHETIC_FLAG

      public static final int ARROW_RETROSYNTHETIC_FLAG
      Retrosynthetic arrow flag.
      Since:
      Marvin 5.10, 04/20/2012
      See Also:
    • ARROW_EQUILIBRIUM_FLAG

      public static final int ARROW_EQUILIBRIUM_FLAG
      Equilibrium arrow flag.
      Since:
      Marvin 5.10, 04/20/2012
      See Also:
    • ARROW_GROUP2_MASK

      public static final int ARROW_GROUP2_MASK
      Mask for the curved, dashed and crosed arrow flags.
      Since:
      Marvin 5.10, 04/20/2012
      See Also:
    • ARROW_DASHED_FLAG

      public static final int ARROW_DASHED_FLAG
      Dashed arrow flag.
      Since:
      Marvin 5.10, 04/20/2012
      See Also:
    • ARROW_CROSSED_FLAG

      public static final int ARROW_CROSSED_FLAG
      Crossed arrow flag.
      Since:
      Marvin 5.10, 04/20/2012
      See Also:
    • ARROW_CURVED_FLAG

      public static final int ARROW_CURVED_FLAG
      Curved arrow flag.
      Since:
      Marvin 5.10, 04/20/2012
      See Also:
    • points

      protected transient MPoint[] points
    • arrowFlags

      protected transient int[] arrowFlags
      Arrow flags.
  • Constructor Details

    • MPolyline

      public MPolyline()
      Contructs an empty line.
    • MPolyline

      public MPolyline(MPoint p1, MPoint p2)
      Contructs a line with the specified endpoints.
      Parameters:
      p1 - the starting point
      p2 - the endpoint
    • MPolyline

      public MPolyline(MPoint p1, MPoint p2, Color c, Color bg)
      Contructs a line with the specified endpoints.
      Parameters:
      p1 - the starting point
      p2 - the endpoint
      c - the color
      bg - the background color
    • MPolyline

      protected MPolyline(boolean closed, Color c, Color bg)
      Creates a closed polyline.
      Parameters:
      closed - the polyline is closed if true, open otherwise
      c - the color
      bg - the background color
    • MPolyline

      protected MPolyline(MPolyline l)
      Copy constructor.
      Parameters:
      l - the original polyline
    • MPolyline

      public MPolyline(MPolyline l, MPoint p)
      Contructs a polyline from the specified starting polyline and endpoint.
      Parameters:
      l - the starting polyline
      p - the new endpoint
  • Method Details

    • copyProperties

      public void copyProperties(MPolyline l)
      Copies line properties to another line object.
      Parameters:
      l - the other line
      Since:
      Marvin 3.5, 07/13/2004
    • isArrow

      public boolean isArrow()
      Checks if it is an arrow.
      Returns:
      true if the line has an arrow head or tail, false otherwise
      Since:
      Marvin 3.5, 06/30/2004
    • setArrow

      public void setArrow(boolean v)
      Sets or unsets arrow mode.
      Parameters:
      v - true to make an arrow from the line, false to remove arrow properties
      Since:
      Marvin 3.5, 06/30/2004
    • setPoints

      public void setPoints(MPoint[] p)
      Sets the points.
      Parameters:
      p - the points
    • clone

      public MPolyline clone()
      Description copied from class: MObject
      Creates a clone.
      Overrides:
      clone in class MObject
      Returns:
      the clone
    • getFlags

      public int getFlags()
      Gets the flags.
      Since:
      Marvin 3.5, 06/30/2004
      See Also:
    • setFlags

      public void setFlags(int f)
      Sets the flags.
      Since:
      Marvin 3.5, 06/30/2004
      See Also:
    • getArrowFlags

      public int getArrowFlags(int i)
      Gets the arrow flags.
      Since:
      Marvin 3.5, 07/01/2004
    • setArrowFlags

      public void setArrowFlags(int i, int f)
      Sets the flags. arrowFlags[MPolyline.HEAD] tells the type of the arrow.
      Since:
      Marvin 3.5, 07/01/2004
    • getSkip

      public double getSkip(int i)
      Gets the distance of the (visible) head or tail from the corresponding line end point.
      Parameters:
      i - HEAD or TAIL
      Returns:
      the skip value
      Since:
      Marvin 3.5, 07/15/2004
    • setSkip

      public void setSkip(int i, double d)
      Sets the distance of the (visible) head or tail from the corresponding line end point.
      Parameters:
      i - HEAD or TAIL
      d - the skip value
      Since:
      Marvin 3.5, 07/15/2004
    • hasColor

      public boolean hasColor()
      A polyline does not have a non-line, non-background color.
      Overrides:
      hasColor in class MObject
      Returns:
      false
    • hasLineColor

      public boolean hasLineColor()
      A polyline have a line color always.
      Overrides:
      hasLineColor in class MObject
      Returns:
      true
    • hasBackground

      public boolean hasBackground()
      A polyline has a background only if it is closed.
      Overrides:
      hasBackground in class MObject
      Returns:
      true if closed
    • isThicknessSet

      public boolean isThicknessSet()
      Checks if the line thickness is set. If it is not set, then the default value is used.
      Returns:
      true if thickness is set, false otherwise
      Since:
      Marvin 3.4, 06/09/2004
      See Also:
    • getThickness

      public double getThickness()
      Gets the line thickness.
      Returns:
      the line thickness
      Since:
      Marvin 3.4, 06/09/2004
    • setThickness

      public void setThickness(double w)
      Sets the line thickness.
      Parameters:
      w - thickness value or 0 to use default
      Since:
      Marvin 3.4, 06/09/2004
    • getArcAngle

      public double getArcAngle()
      Gets the central angle of the arc.
      Returns:
      the central angle of the arc or zero if the line is linear.
      Since:
      Marvin 3.5, 07/02/2004
    • setArcAngle

      public void setArcAngle(double phi)
      Sets the central angle of the arc.
      Parameters:
      phi - the central angle of the arc, zero makes the line linear
      Since:
      Marvin 3.5, 07/02/2004
    • getArcRadius

      public double getArcRadius(CTransform3D t)
      Gets the arc radius.
      Parameters:
      t - the transformation matrix
      Returns:
      the radius
      Since:
      Marvin 4.1, 04/28/2006
    • getArrowLength

      public double getArrowLength(int i)
      Gets the arrow head length.
      Parameters:
      i - HEAD or TAIL
      Returns:
      the arrow head length
      Since:
      Marvin 3.5, 06/30/2004
    • setArrowLength

      public void setArrowLength(int i, double l)
      Sets the arrow head length.
      Parameters:
      i - HEAD or TAIL
      l - the head length
      Since:
      Marvin 3.5, 06/30/2004
    • getArrowWidth

      public double getArrowWidth(int i)
      Gets the arrow head width.
      Parameters:
      i - HEAD or TAIL
      Returns:
      the arrow head width
      Since:
      Marvin 3.5, 06/30/2004
    • setArrowWidth

      public void setArrowWidth(int i, double l)
      Sets the arrow head width.
      Parameters:
      i - HEAD or TAIL
      l - the head width
      Since:
      Marvin 3.5, 06/30/2004
    • getPointCount

      public int getPointCount()
      Gets the number of points.
      Specified by:
      getPointCount in class MObject
      Returns:
      the number of points (at least 2)
    • getPoints

      public MPoint[] getPoints()
      Gets the points.
      Returns:
      the points
      Since:
      Marvin 4.1, 03/06/2006
    • getPoint

      public MPoint getPoint(int i)
      Gets the clone of a point of the line.
      Specified by:
      getPoint in class MObject
      Parameters:
      i - the point index
      Returns:
      the point's clone
    • getPointRefCount

      public int getPointRefCount()
      Gets the number of point references.
      Overrides:
      getPointRefCount in class MObject
      Returns:
      the number of points and midpoints
    • getPointRef

      public MPoint getPointRef(int i, CTransform3D trot)
      Gets a reference to a point or midpoint in the polyline.
      Overrides:
      getPointRef in class MObject
      Parameters:
      i - the point index
      trot - the viewing transformation or null
      Returns:
      the point's reference
      Since:
      Marvin 4.1, 05/01/2006
    • fixMidPointClones

      public static void fixMidPointClones(MObject[] objarr0, MObject[] objarr)
      Fixes the parents of the cloned MMidPoints.
      Parameters:
      objarr0 - the original object array
      objarr - the cloned object array
    • transform

      public void transform(CTransform3D t, int opts, CTransform3D trot)
      Transforms all points, scales the arrow head widths and lengths.
      Specified by:
      transform in class MObject
      Parameters:
      t - the transformation matrix
      opts - transform options or 0
      trot - the viewing transformation or null
      See Also:
    • reverse

      public void reverse()
      Reverses the order of points.
      Since:
      Marvin 5.0, 09/20/2007
    • updateBoundingRect

      public void updateBoundingRect(double[] xyminm, CTransform3D pretrf)
      Calculate the bounding rectangle.
      Overrides:
      updateBoundingRect in class MObject
      Parameters:
      xyminm - array containing the current minimum x, y and maximum x, y coordinates
      pretrf - transformation matrix
      Since:
      Marvin 5.0, 02/16/2007
    • unselectContents

      public void unselectContents()
      Unselects the points.
      Overrides:
      unselectContents in class MObject
    • calcCenter

      public void calcCenter(DPoint3 p, CTransform3D trot)
      Calculates the geometrical center.
      Specified by:
      calcCenter in class MObject
      Parameters:
      p - store the coordinates here
      trot - the viewing transformation or null
      Since:
      Marvin 4.1, 04/28/2006
    • getMidPointLocation

      public DPoint3 getMidPointLocation(int i, CTransform3D t)
      Gets the middle point of the arc.
      Parameters:
      i - the polyline point index
      t - the transformation matrix or null
      Returns:
      the middle point
      Since:
      Marvin 4.1, 04/26/2006
    • distanceFrom

      public double distanceFrom(double x, double y, CTransform3D t)
      Gets the 2D distance from the specified point.
      Specified by:
      distanceFrom in class MObject
      Parameters:
      x - the x coordinate
      y - the y coordinate
      t - transformation or null
      Since:
      3.5, 11/04/2004
    • rotate

      @Deprecated(forRemoval=true) @SubjectToRemoval(date=JUL_01_2025) public static void rotate(DPoint3 center, double dphi, DPoint3 p)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Rotates the third argument around the first argument with the second argument.
      Parameters:
      center - the center of rotation
      dphi - the angle of rotation
      p - the point to rotate
    • getLineMiddlePoint

      public static DPoint3 getLineMiddlePoint(DPoint3 p1, DPoint3 p2)
    • getArcRadius

      public static double getArcRadius(DPoint3 pointA, DPoint3 pointB, double angle)
    • getArcCenter

      public static DPoint3 getArcCenter(DPoint3 p1, DPoint3 p2, double angle)
      Returns the arc center. For internal use only.
      Parameters:
      p1 - the first arc endpoint
      p2 - the second arc endpoint
      angle - the arc angle (degrees)
      Returns:
      the arc center
      Since:
      Marvin 3.5.1
    • isEmpty

      public boolean isEmpty()
      A polyline becomes empty if it has less than 2 points.
      Overrides:
      isEmpty in class MObject
      Returns:
      true if empty, false otherwise
    • hasOutline

      public boolean hasOutline()
      Does it have an outline?
      Returns:
      true if the color is not null or the object does not have a face
    • hasFace

      public boolean hasFace()
      Is it 2 dimensional?
      Returns:
      true if closed and it has a background color, false otherwise
    • removeChild

      public void removeChild(MObject o)
      Description copied from class: MObject
      Removes a child object.
      Overrides:
      removeChild in class MObject
      Parameters:
      o - the child
    • addAttributeKeys

      public void addAttributeKeys(List<String> v)
      Adds the attribute names to the specified vector.
      Overrides:
      addAttributeKeys in class MObject
      Parameters:
      v - the vector
      Since:
      Marvin 3.4, 06/09/2004
    • getAttribute

      public String getAttribute(String s)
      Gets the value of an attribute.
      Overrides:
      getAttribute in class MObject
      Parameters:
      s - the attribute name
      Returns:
      the value or null
      Since:
      Marvin 3.4, 06/09/2004
    • setAttribute

      public void setAttribute(String s, String v)
      Sets the value of an attribute.
      Overrides:
      setAttribute in class MObject
      Parameters:
      s - the attribute name
      v - the attribute value
      Since:
      Marvin 3.4, 07/01/2004
    • containsAtom

      public boolean containsAtom(MolAtom a)
      Checks if the atom set contains the specified atom object.
      Overrides:
      containsAtom in class MObject
      Returns:
      true if the atom set contains the specified object, false otherwise
      Since:
      Marvin 3.5, 07/04/2004
    • replaceAtom

      public void replaceAtom(MolAtom orig, MolAtom a)
      Replaces a contained atom with another one.
      Overrides:
      replaceAtom in class MObject
      Parameters:
      orig - the original atom
      a - the new atom
      Since:
      Marvin 3.5, 07/04/2004
    • checkValidity

      public boolean checkValidity(MDocument doc, Collection<MolAtom> invec)
      Is it a valid object in the document?
      Overrides:
      checkValidity in class MObject
      Parameters:
      doc - the document
      invec - collection of invalid atoms or null
      Returns:
      true if the object is valid, false if it contains an invalid point
      Since:
      Marvin 3.5, 07/06/2004
    • finishCloning

      public void finishCloning(MDocument olddoc, MDocument newdoc)
      Finish cloning a document.
      Overrides:
      finishCloning in class MObject
      Since:
      Marvin 3.5, 07/02/2004
    • getMirroredArrowFlags

      protected int getMirroredArrowFlags(int i)
      Mirror transformation for arrow heads.
    • fixClonedPoints

      public void fixClonedPoints(MObject[] objarr0, MObject[] objarr, int i)
      Description copied from class: MObject
      Sets the parent object for this object. Should only be called by the copy constructor.
      Overrides:
      fixClonedPoints in class MObject
      Parameters:
      objarr0 - the new object list
      objarr - the old object list
      i - the corresponding index from the old object list
    • removeNotify

      public void removeNotify(MDocument doc)
      Description copied from class: MObject
      Called when the object is removed from a document.
      Overrides:
      removeNotify in class MObject
      Parameters:
      doc - The document from which the object is removed.