/* -*- Mode: C++; 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 "nsIDOMSVGElement.idl"

interface nsIDOMSVGAnimatedLength;
interface nsIDOMSVGAnimatedEnumeration;
interface nsIDOMSVGAngle;
interface nsIDOMSVGAnimatedAngle;
interface nsIDOMSVGAnimatedRect;
interface nsIDOMSVGMatrix;

/**
 * The nsIDOMSVGMarker interface is the interface to an SVG marker element.
 *
 * For more information on this interface please see
 * http://www.w3.org/TR/SVG11/painting.html#InterfaceSVGMarkerElement
 *
 */

[scriptable, uuid(0258F664-8251-4075-A0F5-F3D2170A913A)]
interface nsIDOMSVGMarkerElement
  : nsIDOMSVGElement
/*
        The SVG DOM makes use of multiple interface inheritance.
        Since XPCOM only supports single interface inheritance,
        the best thing that we can do is to promise that whenever
        an object implements _this_ interface it will also
        implement the following interfaces. (We then have to QI to
        hop between them.)

    nsIDOMSVGLangSpace,
    nsIDOMSVGExternalResourcesRequired,
    nsIDOMSVGStylable,
    nsIDOMSVGFitToViewBox
*/
{
  // Marker Unit Types
  const unsigned short SVG_MARKERUNITS_UNKNOWN         = 0;
  const unsigned short SVG_MARKERUNITS_USERSPACEONUSE = 1;
  const unsigned short SVG_MARKERUNITS_STROKEWIDTH    = 2;
  // Marker Orientation Types
  const unsigned short SVG_MARKER_ORIENT_UNKNOWN      = 0;
  const unsigned short SVG_MARKER_ORIENT_AUTO         = 1;
  const unsigned short SVG_MARKER_ORIENT_ANGLE        = 2;

  readonly attribute nsIDOMSVGAnimatedLength      refX;
  readonly attribute nsIDOMSVGAnimatedLength      refY;
  readonly attribute nsIDOMSVGAnimatedEnumeration markerUnits;
  readonly attribute nsIDOMSVGAnimatedLength      markerWidth;
  readonly attribute nsIDOMSVGAnimatedLength      markerHeight;
  readonly attribute nsIDOMSVGAnimatedEnumeration orientType;
  readonly attribute nsIDOMSVGAnimatedAngle       orientAngle;

  void setOrientToAuto ( );
  void setOrientToAngle ( in nsIDOMSVGAngle angle );
};
