/* * SVGPathElement.java * * Created on April 12, 2007, 9:19 PM * * To change this template, choose Tools | Template Manager * and open the template the editor. */ package com.kitfox.salamander.svg.paths; import com.kitfox.salamander.svg.basic.SVGElement; import com.kitfox.salamander.svg.basic.SVGExternalResourcesRequired; import com.kitfox.salamander.svg.basic.SVGLangSpace; import com.kitfox.salamander.svg.basic.SVGStylable; import com.kitfox.salamander.svg.basic.SVGTests; import com.kitfox.salamander.svg.basic.SVGTransformable; import org.w3c.dom.events.EventTarget; /** * * The SVGPathElement interface corresponds to the 'path' element. * @author kitfox */ public interface SVGPathElement extends SVGElement, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGStylable, SVGTransformable, EventTarget, SVGAnimatedPathData { /** * Corresponds to attribute pathLength on the given 'path' element. */ public SVGAnimatedNumber getPathLength(); /** * Returns the user agent's computed value for the total length of the path using the user agent's distance-along-a-path algorithm, as a distance in the current user coordinate system. * @return The total length of the path. */ public float getTotalLength(); /** * Returns the (x,y) coordinate in user space which is distance units along the path, utilizing the user agent's distance-along-a-path algorithm. * @param distance The distance along the path, relative to the start of the path, as a distance in the current user coordinate system. * @return The returned point in user space. */ public SVGPoint getPointAtLength(float distance); /** * Returns the index into pathSegList which is distance units along the path, utilizing the user agent's distance-along-a-path algorithm. * @param distance The distance along the path, relative to the start of the path, as a distance in the current user coordinate system. * @return The index of the path segment, where the first path segment is number 0. */ public int getPathSegAtLength(float distance); /** * Returns a stand-alone, parentless SVGPathSegClosePath object. * @return A stand-alone, parentless SVGPathSegClosePath object. */ public SVGPathSegClosePath createSVGPathSegClosePath(); /** * Returns a stand-alone, parentless SVGPathSegMovetoAbs object. * @param x The absolute X coordinate for the end point of this path segment. * @param y The absolute Y coordinate for the end point of this path segment. * @return A stand-alone, parentless SVGPathSegMovetoAbs object. */ public SVGPathSegMovetoAbs createSVGPathSegMovetoAbs(float x, float y); /** * Returns a stand-alone, parentless SVGPathSegMovetoRel object. * @param x The relative X coordinate for the end point of this path segment. * @param y The relative Y coordinate for the end point of this path segment. * @return A stand-alone, parentless SVGPathSegMovetoRel object. */ public SVGPathSegMovetoRel createSVGPathSegMovetoRel(float x, float y); /** * Returns a stand-alone, parentless SVGPathSegLinetoAbs object. * @param x The absolute X coordinate for the end point of this path segment. * @param y The absolute Y coordinate for the end point of this path segment. * @return A stand-alone, parentless SVGPathSegLinetoAbs object. */ public SVGPathSegLinetoAbs createSVGPathSegLinetoAbs(float x, float y); /** * Returns a stand-alone, parentless SVGPathSegLinetoRel object. * @param x The relative X coordinate for the end point of this path segment. * @param y The relative Y coordinate for the end point of this path segment. * @return A stand-alone, parentless SVGPathSegLinetoRel object. */ public SVGPathSegLinetoRel createSVGPathSegLinetoRel(float x, float y); /** * Returns a stand-alone, parentless SVGPathSegCurvetoCubicAbs object. * @param x The absolute X coordinate for the end point of this path segment. * @param y The absolute Y coordinate for the end point of this path segment. * @param x1 The absolute X coordinate for the first control point. * @param y1 The absolute Y coordinate for the first control point. * @param x2 The absolute X coordinate for the second control point. * @param y2 The absolute Y coordinate for the second control point. * @return A stand-alone, parentless SVGPathSegCurvetoCubicAbs object. */ public SVGPathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs(float x, float y, float x1, float y1, float x2, float y2); /** * Returns a stand-alone, parentless SVGPathSegCurvetoCubicRel object. * @param x The relative X coordinate for the end point of this path segment. * @param y The relative Y coordinate for the end point of this path segment. * @param x1 The relative X coordinate for the first control point. * @param y1 The relative Y coordinate for the first control point. * @param x2 The relative X coordinate for the second control point. * @param y2 The relative Y coordinate for the second control point. * @return A stand-alone, parentless SVGPathSegCurvetoCubicRel object. */ public SVGPathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel(float x, float y, float x1, float y1, float x2, float y2); /** * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object. * @param x The absolute X coordinate for the end point of this path segment. * @param y The absolute Y coordinate for the end point of this path segment. * @param x1 The absolute X coordinate for the control point. * @param y1 The absolute Y coordinate for the control point. * @return A stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object. */ public SVGPathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs(float x, float y, float x1, float y1); /** * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticRel object. * @param x The relative X coordinate for the end point of this path segment. * @param y The relative Y coordinate for the end point of this path segment. * @param x1 The relative X coordinate for the control point. * @param y1 The relative Y coordinate for the control point. * @return A stand-alone, parentless SVGPathSegCurvetoQuadraticRel object. */ public SVGPathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel(float x, float y, float x1, float y1); /** * Returns a stand-alone, parentless SVGPathSegArcAbs object. * @param x The absolute X coordinate for the end point of this path segment. * @param y The absolute Y coordinate for the end point of this path segment. * @param r1 The x-axis radius for the ellipse (i.e., r1). * @param r2 The y-axis radius for the ellipse (i.e., r2). * @param angle The rotation angle in degrees for the ellipse's x-axis relative to the x-axis of the user coordinate system. * @param largeArcFlag The value for the large-arc-flag parameter. * @param sweepFlag The value for the sweep-flag parameter. * @return A stand-alone, parentless SVGPathSegArcAbs object. A stand-alone, parentless SVGPathSegArcAbs object. */ public SVGPathSegArcAbs createSVGPathSegArcAbs(float x, float y, float r1, float r2, float angle, boolean largeArcFlag, boolean sweepFlag); /** * Returns a stand-alone, parentless SVGPathSegArcRel object. * @param x The relative X coordinate for the end point of this path segment. * @param y The relative Y coordinate for the end point of this path segment. * @param r1 The x-axis radius for the ellipse (i.e., r1). * @param r2 The y-axis radius for the ellipse (i.e., r2). * @param angle The rotation angle in degrees for the ellipse's x-axis relative to the x-axis of the user coordinate system. * @param largeArcFlag The value for the large-arc-flag parameter. * @param sweepFlag The value for the sweep-flag parameter. * @return A stand-alone, parentless SVGPathSegArcRel object. */ public SVGPathSegArcRel createSVGPathSegArcRel(float x, float y, float r1, float r2, float angle, boolean largeArcFlag, boolean sweepFlag); /** * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalAbs object. * @param x The absolute X coordinate for the end point of this path segment. * @return A stand-alone, parentless SVGPathSegLinetoHorizontalAbs object. */ public SVGPathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs(float x); /** * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalRel object. * @param x The relative X coordinate for the end point of this path segment. * @return A stand-alone, parentless SVGPathSegLinetoHorizontalRel object. */ public SVGPathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel(float x); /** * Returns a stand-alone, parentless SVGPathSegLinetoVerticalAbs object. * @param y The absolute Y coordinate for the end point of this path segment. * @return A stand-alone, parentless SVGPathSegLinetoVerticalAbs object. */ public SVGPathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs(float y); /** * Returns a stand-alone, parentless SVGPathSegLinetoVerticalRel object. * @param y The relative Y coordinate for the end point of this path segment. * @return A stand-alone, parentless SVGPathSegLinetoVerticalRel object. */ public SVGPathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel(float y); /** * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object. * @param x The absolute X coordinate for the end point of this path segment. * @param y The absolute Y coordinate for the end point of this path segment. * @param x2 The absolute X coordinate for the second control point. * @param y2 The absolute Y coordinate for the second control point. * @return A stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object. */ public SVGPathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs(float x, float y, float x2, float y2); /** * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object. * @param x The relative X coordinate for the end point of this path segment. * @param y The relative Y coordinate for the end point of this path segment. * @param x2 The relative X coordinate for the second control point. * @param y2 The relative Y coordinate for the second control point. * @return A stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object. */ public SVGPathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel(float x, float y, float x2, float y2); /** * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs object. * @param x The absolute X coordinate for the end point of this path segment. * @param y The absolute Y coordinate for the end point of this path segment. * @return A stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs object. */ public SVGPathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs(float x, float y); /** * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel object. * @param x The relative X coordinate for the end point of this path segment. * @param y The relative Y coordinate for the end point of this path segment. * @return A stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel object. */ public SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel(float x, float y); }