/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "domstubs.idl"

[scriptable, uuid(b9022da7-e26d-4df3-8c94-b45c4aedda7c)]
interface nsIDOMSVGPathSeg : nsISupports
{ 
  // Path Segment Types
  const unsigned short PATHSEG_UNKNOWN                      = 0;
  const unsigned short PATHSEG_CLOSEPATH                    = 1;
  const unsigned short PATHSEG_MOVETO_ABS                   = 2;
  const unsigned short PATHSEG_MOVETO_REL                   = 3;
  const unsigned short PATHSEG_LINETO_ABS                   = 4;
  const unsigned short PATHSEG_LINETO_REL                   = 5;
  const unsigned short PATHSEG_CURVETO_CUBIC_ABS            = 6;
  const unsigned short PATHSEG_CURVETO_CUBIC_REL            = 7;
  const unsigned short PATHSEG_CURVETO_QUADRATIC_ABS        = 8;
  const unsigned short PATHSEG_CURVETO_QUADRATIC_REL        = 9;
  const unsigned short PATHSEG_ARC_ABS                      = 10;
  const unsigned short PATHSEG_ARC_REL                      = 11;
  const unsigned short PATHSEG_LINETO_HORIZONTAL_ABS        = 12;
  const unsigned short PATHSEG_LINETO_HORIZONTAL_REL        = 13;
  const unsigned short PATHSEG_LINETO_VERTICAL_ABS          = 14;
  const unsigned short PATHSEG_LINETO_VERTICAL_REL          = 15;
  const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_ABS     = 16;
  const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_REL     = 17;
  const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;
  const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;

  readonly attribute unsigned short pathSegType;
  readonly attribute DOMString      pathSegTypeAsLetter;
};


[scriptable, uuid(4970505f-2cc0-4afa-92e6-0cf4bdbf5a53)]
interface nsIDOMSVGPathSegClosePath : nsISupports
{
};


[scriptable, uuid(30cf7749-bf1f-4f9c-9558-8ee24da3a22c)]
interface nsIDOMSVGPathSegMovetoAbs : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(58ca7e86-661a-473a-96de-89682e7e24d6)]
interface nsIDOMSVGPathSegMovetoRel : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(5c7ba7b0-c7c5-4a7b-bc1c-2d784153be77)]
interface nsIDOMSVGPathSegLinetoAbs : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
}; 

[scriptable, uuid(7933a81a-72c5-4489-ba64-5635f4c23063)]
interface nsIDOMSVGPathSegLinetoRel : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(380afecd-f884-4da7-a0d7-5ffc4531b70b)]
interface nsIDOMSVGPathSegCurvetoCubicAbs : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
  attribute float   x1;
              // raises nsIDOMDOMException on setting
  attribute float   y1;
              // raises nsIDOMDOMException on setting
  attribute float   x2;
              // raises nsIDOMDOMException on setting
  attribute float   y2;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(0e661233-0c4f-4e0d-94d3-fbc460ad1f88)]
interface nsIDOMSVGPathSegCurvetoCubicRel : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
  attribute float   x1;
              // raises nsIDOMDOMException on setting
  attribute float   y1;
              // raises nsIDOMDOMException on setting
  attribute float   x2;
              // raises nsIDOMDOMException on setting
  attribute float   y2;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(b7aef0f0-2830-4145-b04f-fe05789ccf8a)]
interface nsIDOMSVGPathSegCurvetoQuadraticAbs : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
  attribute float   x1;
              // raises nsIDOMDOMException on setting
  attribute float   y1;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(c46eb661-9c05-4d46-9b2a-c2ae5b166060)]
interface nsIDOMSVGPathSegCurvetoQuadraticRel : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
  attribute float   x1;
  // raises nsIDOMDOMException on setting
  attribute float   y1;
  // raises nsIDOMDOMException on setting
};

[scriptable, uuid(c9e222e5-31fd-4083-ae1f-fcf013681340)]
interface nsIDOMSVGPathSegArcAbs : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
  attribute float   r1;
              // raises nsIDOMDOMException on setting
  attribute float   r2;
              // raises nsIDOMDOMException on setting
  attribute float   angle;
              // raises nsIDOMDOMException on setting
  attribute boolean largeArcFlag;
              // raises nsIDOMDOMException on setting
  attribute boolean sweepFlag;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(49d0360d-bb66-4ab9-b9b0-f49b93398595)]
interface nsIDOMSVGPathSegArcRel : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
  attribute float   r1;
              // raises nsIDOMDOMException on setting
  attribute float   r2;
              // raises nsIDOMDOMException on setting
  attribute float   angle;
              // raises nsIDOMDOMException on setting
  attribute boolean largeArcFlag;
              // raises nsIDOMDOMException on setting
  attribute boolean sweepFlag;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(4a54a4d2-edef-4e19-9600-2330311000f4)]
interface nsIDOMSVGPathSegLinetoHorizontalAbs : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(8693268c-5180-43fd-acc3-5b9c09f43386)]
interface nsIDOMSVGPathSegLinetoHorizontalRel : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(fd5ffb7b-7279-4c09-abfd-b733dc872e80)]
interface nsIDOMSVGPathSegLinetoVerticalAbs : nsISupports
{ 
  attribute float   y;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(d3ef2128-8de3-4aac-a6b4-13c7563119a6)]
interface nsIDOMSVGPathSegLinetoVerticalRel : nsISupports
{ 
  attribute float   y;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(5fa8fea8-bdd1-4315-ac44-a39b3ff347b5)]
interface nsIDOMSVGPathSegCurvetoCubicSmoothAbs : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
  attribute float   x2;
              // raises nsIDOMDOMException on setting
  attribute float   y2;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(dd5b4b00-edaa-493a-b477-bbc2576b4a98)]
interface nsIDOMSVGPathSegCurvetoCubicSmoothRel : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
  attribute float   x2;
              // raises nsIDOMDOMException on setting
  attribute float   y2;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(ff5bbb58-b49a-450f-b91b-e50585c34b3d)]
interface nsIDOMSVGPathSegCurvetoQuadraticSmoothAbs : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
};

[scriptable, uuid(ac0b2007-04e4-4e70-a0e0-294f374b29c4)]
interface nsIDOMSVGPathSegCurvetoQuadraticSmoothRel : nsISupports
{ 
  attribute float   x;
              // raises nsIDOMDOMException on setting
  attribute float   y;
              // raises nsIDOMDOMException on setting
};
