public class CubicBezier extends LineSegment
In order to be able to represent smooth curves the &ldquolayout&rdquo
package defines the class CubicBezier
. It represents a Bezier curve, and
is readily available in most graphics APIs. The class CubicBezier
is
derived from LineSegment
. It consists of four elements: the two inherited
elements 'start' and 'end', which specify the starting point and the
endpoint of the cubic bezier curve, and two elements 'basePoint1' and
'basePoint2', which specify the two additional base points that are needed
to describe a cubic bezier curve.
Constructor and Description |
---|
CubicBezier()
Creates a
CubicBezier and returns the pointer. |
CubicBezier(CubicBezier orig)
Copy constructor.
|
CubicBezier(LayoutPkgNamespaces layoutns)
Constructor.
|
CubicBezier(LayoutPkgNamespaces layoutns,
double x1,
double y1,
double x2,
double y2)
Creates a
CubicBezier with the given 2D coordinates and returns the
pointer. |
CubicBezier(LayoutPkgNamespaces layoutns,
double x1,
double y1,
double z1,
double x2,
double y2,
double z2)
Creates a
CubicBezier with the given 3D coordinates and returns the
pointer. |
CubicBezier(LayoutPkgNamespaces layoutns,
Point start,
Point end)
Creates a
CubicBezier with the given points and returns the pointer. |
CubicBezier(LayoutPkgNamespaces layoutns,
Point start,
Point base1,
Point base2,
Point end)
Creates a
CubicBezier with the given points and returns the pointer. |
CubicBezier(long level)
Creates a
CubicBezier and returns the pointer. |
CubicBezier(long level,
long version)
Creates a
CubicBezier and returns the pointer. |
CubicBezier(long level,
long version,
long pkgVersion)
Creates a
CubicBezier and returns the pointer. |
CubicBezier(XMLNode node)
|
CubicBezier(XMLNode node,
long l2version)
|
Modifier and Type | Method and Description |
---|---|
CubicBezier |
cloneObject()
Creates and returns a deep copy of this
CubicBezier . |
void |
connectToChild()   |
void |
delete()
Explicitly deletes the underlying native object.
|
Point |
getBasePoint1()
Returns the first base point of the curve (the one closer to the
starting point).
|
Point |
getBasePoint2()
Returns the second base point of the curve (the one closer to the end
point).
|
java.lang.String |
getElementName()
Returns the XML element name of
this SBML object.
|
int |
getTypeCode()
Returns the libSBML type code of this object instance.
|
void |
initDefaults()
Calls initDefaults from
LineSegment . |
void |
setBasePoint1(double x,
double y)
Initializes first base point with the given coordinates.
|
void |
setBasePoint1(double x,
double y,
double z)
Initializes first base point with the given coordinates.
|
void |
setBasePoint1(Point p)
Initializes first base point with a copy of the given point.
|
void |
setBasePoint2(double x,
double y)
Initializes second base point with the given coordinates.
|
void |
setBasePoint2(double x,
double y,
double z)
Initializes second base point with the given coordinates.
|
void |
setBasePoint2(Point p)
Initializes second base point with a copy of the given point.
|
void |
straighten()
Turns the
CubicBezier into a line by setting both 'basepoint1' and
'basepoint2' children to the midpoint between the 'start' and the
'end' points. |
XMLNode |
toXML()
Creates an
XMLNode object from this. |
getEnd, getStart, setEnd, setEnd, setEnd, setStart, setStart, setStart
addCVTerm, addCVTerm, appendAnnotation, appendAnnotation, appendNotes, appendNotes, deleteDisabledPlugins, deleteDisabledPlugins, disablePackage, enablePackage, equals, getAncestorOfType, getAncestorOfType, getAnnotation, getAnnotationString, getColumn, getCVTerm, getCVTerms, getDisabledPlugin, getElementByMetaId, getElementBySId, getId, getIdAttribute, getLevel, getLine, getListOfAllElements, getListOfAllElements, getListOfAllElementsFromPlugins, getListOfAllElementsFromPlugins, getMetaId, getModel, getModelHistory, getName, getNamespaces, getNotes, getNotesString, getNumCVTerms, getNumDisabledPlugins, getNumPlugins, getObjectVersion, getPackageName, getPackageVersion, getParentSBMLObject, getPlugin, getPlugin, getPrefix, getResourceBiologicalQualifier, getResourceModelQualifier, getSBMLDocument, getSBOTerm, getSBOTermAsURL, getSBOTermID, getURI, getVersion, hashCode, hasValidLevelVersionNamespaceCombination, isPackageEnabled, isPackageURIEnabled, isPkgEnabled, isPkgURIEnabled, isSetAnnotation, isSetId, isSetIdAttribute, isSetMetaId, isSetModelHistory, isSetName, isSetNotes, isSetSBOTerm, isSetUserData, matchesRequiredSBMLNamespacesForAddition, matchesSBMLNamespaces, removeFromParentAndDelete, removeTopLevelAnnotationElement, removeTopLevelAnnotationElement, removeTopLevelAnnotationElement, renameMetaIdRefs, renameSIdRefs, renameUnitSIdRefs, replaceTopLevelAnnotationElement, replaceTopLevelAnnotationElement, setAnnotation, setAnnotation, setId, setIdAttribute, setMetaId, setModelHistory, setName, setNamespaces, setNotes, setNotes, setNotes, setSBOTerm, setSBOTerm, toSBML, toXMLNode, unsetAnnotation, unsetCVTerms, unsetId, unsetIdAttribute, unsetMetaId, unsetModelHistory, unsetName, unsetNotes, unsetSBOTerm, unsetUserData
public CubicBezier(long level, long version, long pkgVersion) throws SBMLConstructorException
CubicBezier
and returns the pointer.
level
- the SBML Level.version
- the Version within the SBML Level.pkgVersion
- the version of the package.
SBMLConstructorException
SBMLDocument
having a different
combination of SBML Level, Version and XML namespaces than the object
itself will result in an error at the time a caller attempts to make the
addition. A parent object must have compatible Level, Version and XML
namespaces. (Strictly speaking, a parent may also have more XML
namespaces than a child, but the reverse is not permitted.) The
restriction is necessary to ensure that an SBML model has a consistent
overall structure. This requires callers to manage their objects
carefully, but the benefit is increased flexibility in how models can be
created by permitting callers to create objects bottom-up if desired. In
situations where objects are not yet attached to parents (e.g.,
SBMLDocument
), knowledge of the intented SBML Level and Version help
libSBML determine such things as whether it is valid to assign a
particular value to an attribute. For packages, this means that the
parent object to which this package element is being added must have
been created with the package namespace, or that the package namespace
was added to it, even if that parent is not a package object itself.public CubicBezier(long level, long version) throws SBMLConstructorException
CubicBezier
and returns the pointer.
level
- the SBML Level.version
- the Version within the SBML Level.pkgVersion
- the version of the package.
SBMLConstructorException
SBMLDocument
having a different
combination of SBML Level, Version and XML namespaces than the object
itself will result in an error at the time a caller attempts to make the
addition. A parent object must have compatible Level, Version and XML
namespaces. (Strictly speaking, a parent may also have more XML
namespaces than a child, but the reverse is not permitted.) The
restriction is necessary to ensure that an SBML model has a consistent
overall structure. This requires callers to manage their objects
carefully, but the benefit is increased flexibility in how models can be
created by permitting callers to create objects bottom-up if desired. In
situations where objects are not yet attached to parents (e.g.,
SBMLDocument
), knowledge of the intented SBML Level and Version help
libSBML determine such things as whether it is valid to assign a
particular value to an attribute. For packages, this means that the
parent object to which this package element is being added must have
been created with the package namespace, or that the package namespace
was added to it, even if that parent is not a package object itself.public CubicBezier(long level) throws SBMLConstructorException
CubicBezier
and returns the pointer.
level
- the SBML Level.version
- the Version within the SBML Level.pkgVersion
- the version of the package.
SBMLConstructorException
SBMLDocument
having a different
combination of SBML Level, Version and XML namespaces than the object
itself will result in an error at the time a caller attempts to make the
addition. A parent object must have compatible Level, Version and XML
namespaces. (Strictly speaking, a parent may also have more XML
namespaces than a child, but the reverse is not permitted.) The
restriction is necessary to ensure that an SBML model has a consistent
overall structure. This requires callers to manage their objects
carefully, but the benefit is increased flexibility in how models can be
created by permitting callers to create objects bottom-up if desired. In
situations where objects are not yet attached to parents (e.g.,
SBMLDocument
), knowledge of the intented SBML Level and Version help
libSBML determine such things as whether it is valid to assign a
particular value to an attribute. For packages, this means that the
parent object to which this package element is being added must have
been created with the package namespace, or that the package namespace
was added to it, even if that parent is not a package object itself.public CubicBezier() throws SBMLConstructorException
CubicBezier
and returns the pointer.
level
- the SBML Level.version
- the Version within the SBML Level.pkgVersion
- the version of the package.
SBMLConstructorException
SBMLDocument
having a different
combination of SBML Level, Version and XML namespaces than the object
itself will result in an error at the time a caller attempts to make the
addition. A parent object must have compatible Level, Version and XML
namespaces. (Strictly speaking, a parent may also have more XML
namespaces than a child, but the reverse is not permitted.) The
restriction is necessary to ensure that an SBML model has a consistent
overall structure. This requires callers to manage their objects
carefully, but the benefit is increased flexibility in how models can be
created by permitting callers to create objects bottom-up if desired. In
situations where objects are not yet attached to parents (e.g.,
SBMLDocument
), knowledge of the intented SBML Level and Version help
libSBML determine such things as whether it is valid to assign a
particular value to an attribute. For packages, this means that the
parent object to which this package element is being added must have
been created with the package namespace, or that the package namespace
was added to it, even if that parent is not a package object itself.public CubicBezier(LayoutPkgNamespaces layoutns) throws SBMLConstructorException
The package namespaces object used in this constructor is derived from a
SBMLNamespaces
object, which encapsulates SBML Level/Version/namespaces
information. It is used to communicate the SBML Level, Version, and
package version and name information used in addition to SBML Level 3 Core. A
common approach to using libSBML's SBMLNamespaces
facilities is to create an
package namespace object somewhere in a program once, then hand that object
as needed to object constructors of that package that accept it as and
argument, such as this one.
layoutns
- the LayoutPkgNamespaces
object.
SBMLConstructorException
SBMLDocument
having a different
combination of SBML Level, Version and XML namespaces than the object
itself will result in an error at the time a caller attempts to make the
addition. A parent object must have compatible Level, Version and XML
namespaces. (Strictly speaking, a parent may also have more XML
namespaces than a child, but the reverse is not permitted.) The
restriction is necessary to ensure that an SBML model has a consistent
overall structure. This requires callers to manage their objects
carefully, but the benefit is increased flexibility in how models can be
created by permitting callers to create objects bottom-up if desired. In
situations where objects are not yet attached to parents (e.g.,
SBMLDocument
), knowledge of the intented SBML Level and Version help
libSBML determine such things as whether it is valid to assign a
particular value to an attribute. For packages, this means that the
parent object to which this package element is being added must have
been created with the package namespace, or that the package namespace
was added to it, even if that parent is not a package object itself.public CubicBezier(LayoutPkgNamespaces layoutns, double x1, double y1, double x2, double y2) throws SBMLConstructorException
CubicBezier
with the given 2D coordinates and returns the
pointer.
(FOR BACKWARD COMPATIBILITY)
SBMLConstructorException
public CubicBezier(LayoutPkgNamespaces layoutns, double x1, double y1, double z1, double x2, double y2, double z2) throws SBMLConstructorException
CubicBezier
with the given 3D coordinates and returns the
pointer.
(FOR BACKWARD COMPATIBILITY)
SBMLConstructorException
public CubicBezier(CubicBezier orig) throws SBMLConstructorException
(FOR BACKWARD COMPATIBILITY)
SBMLConstructorException
public CubicBezier(LayoutPkgNamespaces layoutns, Point start, Point end) throws SBMLConstructorException
CubicBezier
with the given points and returns the pointer.
(FOR BACKWARD COMPATIBILITY)
SBMLConstructorException
public CubicBezier(LayoutPkgNamespaces layoutns, Point start, Point base1, Point base2, Point end) throws SBMLConstructorException
CubicBezier
with the given points and returns the pointer.
(FOR BACKWARD COMPATIBILITY)
SBMLConstructorException
public CubicBezier(XMLNode node, long l2version) throws SBMLConstructorException
SBMLConstructorException
public CubicBezier(XMLNode node) throws SBMLConstructorException
SBMLConstructorException
public void delete()
In general, application software will not need to call this method directly. The Java language binding for libSBML is implemented as a language wrapper that provides a Java interface to libSBML's underlying C++/C code. Some of the Java methods return objects that are linked to objects created not by Java code, but by C++ code. The Java objects wrapped around them will be deleted when the garbage collector invokes the corresponding C++ finalize()
methods for the objects. The finalize()
methods in turn call the CubicBezier.delete()
method on the libSBML object.
This method is exposed in case calling programs want to ensure that the underlying object is freed immediately, and not at some arbitrary time determined by the Java garbage collector. In normal usage, callers do not need to invoke CubicBezier.delete()
themselves.
delete
 in class LineSegment
public Point getBasePoint1()
public void setBasePoint1(Point p)
p
- the Point
to use as 'basePoint1' (creates a copy).public void setBasePoint1(double x, double y, double z)
Point
with no 'z' attribute in this way if no value is supplied, '0.0' will be used.
public void setBasePoint1(double x, double y)
Point
with no 'z' attribute in this way if no value is supplied, '0.0' will be used.
public Point getBasePoint2()
public void setBasePoint2(Point p)
p
- the Point
to use as 'basePoint2' (creates a copy).public void setBasePoint2(double x, double y, double z)
Point
with no 'z' attribute in this way if no value is supplied, '0.0' will be used.
public void setBasePoint2(double x, double y)
Point
with no 'z' attribute in this way if no value is supplied, '0.0' will be used.
public void initDefaults()
LineSegment
.initDefaults
 in class LineSegment
public void straighten()
CubicBezier
into a line by setting both 'basepoint1' and
'basepoint2' children to the midpoint between the 'start' and the
'end' points.public java.lang.String getElementName()
getElementName
 in class LineSegment
public CubicBezier cloneObject()
CubicBezier
.
cloneObject
 in class LineSegment
CubicBezier
.public int getTypeCode()
LibSBML attaches an identifying code to every kind of SBML object. These
are integer constants known as SBML type codes. The names of all
the codes begin with the characters SBML_
.
In the Java language interface for libSBML, the
type codes are defined as static integer constants in the interface class
libsbmlConstants
. Note that different Level 3
package plug-ins may use overlapping type codes to identify the package
to which a given object belongs, call the getPackageName()
method on the object.
getTypeCode
 in class LineSegment
SBML_LAYOUT_CUBICBEZIER
.
CubicBezier.getElementName()
,
SBase.getPackageName()
public XMLNode toXML()
XMLNode
object from this.toXML
 in class LineSegment
public void connectToChild()
connectToChild
 in class LineSegment