/* -*- 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 "nsIDOMSVGElement.idl"

interface nsIDOMSVGAnimatedLength;
interface nsIDOMSVGAnimatedString;
interface nsIDOMSVGAnimatedNumber;
interface nsIDOMSVGAnimatedEnumeration;
interface nsIDOMSVGAnimatedInteger;

[scriptable, uuid(d53cce38-2b96-4803-9ca0-0310becd6873)]
interface nsIDOMSVGFilterPrimitiveStandardAttributes : nsIDOMSVGElement
{ 
    readonly attribute nsIDOMSVGAnimatedLength      x;
    readonly attribute nsIDOMSVGAnimatedLength      y;
    readonly attribute nsIDOMSVGAnimatedLength      width;
    readonly attribute nsIDOMSVGAnimatedLength      height;
    readonly attribute nsIDOMSVGAnimatedString      result;
};

[scriptable, uuid(14eb581d-0e54-42b5-a595-5db6c9490277)]
interface nsIDOMSVGFETurbulenceElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{ 
    // Turbulence Types
    const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN      = 0;
    const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1;
    const unsigned short SVG_TURBULENCE_TYPE_TURBULENCE   = 2;
    // Stitch Options
    const unsigned short SVG_STITCHTYPE_UNKNOWN  = 0;
    const unsigned short SVG_STITCHTYPE_STITCH   = 1;
    const unsigned short SVG_STITCHTYPE_NOSTITCH = 2;

    readonly attribute nsIDOMSVGAnimatedNumber      baseFrequencyX;
    readonly attribute nsIDOMSVGAnimatedNumber      baseFrequencyY;
    readonly attribute nsIDOMSVGAnimatedInteger     numOctaves;
    readonly attribute nsIDOMSVGAnimatedNumber      seed;
    readonly attribute nsIDOMSVGAnimatedEnumeration stitchTiles;
    readonly attribute nsIDOMSVGAnimatedEnumeration type;
};

[scriptable, uuid(053c0aec-30df-48e9-9059-53f43b5261bb)]
interface nsIDOMSVGFEMorphologyElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{ 
    // Operator Types
    const unsigned short SVG_OPERATOR_UNKNOWN  = 0;
    const unsigned short SVG_OPERATOR_ERODE    = 1;
    const unsigned short SVG_OPERATOR_DILATE   = 2;

    readonly attribute nsIDOMSVGAnimatedString      in1;
    readonly attribute nsIDOMSVGAnimatedNumber      radiusX;
    readonly attribute nsIDOMSVGAnimatedNumber      radiusY;
    readonly attribute nsIDOMSVGAnimatedEnumeration operator;
    
    void setRadius ( in float rx, in float ry );
};

[scriptable, uuid(7d49f132-5145-4b47-896a-ac5f9e6b6941)]
interface nsIDOMSVGFEConvolveMatrixElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{ 
    // Edge Mode Values
    const unsigned short SVG_EDGEMODE_UNKNOWN   = 0;
    const unsigned short SVG_EDGEMODE_DUPLICATE = 1;
    const unsigned short SVG_EDGEMODE_WRAP      = 2;
    const unsigned short SVG_EDGEMODE_NONE      = 3;

    readonly attribute nsIDOMSVGAnimatedString      in1;
    readonly attribute nsIDOMSVGAnimatedInteger     orderX;
    readonly attribute nsIDOMSVGAnimatedInteger     orderY;
    // SVGAnimatedNumberList
    readonly attribute nsISupports                  kernelMatrix;
    readonly attribute nsIDOMSVGAnimatedNumber      divisor;
    readonly attribute nsIDOMSVGAnimatedNumber      bias;
    readonly attribute nsIDOMSVGAnimatedInteger     targetX;
    readonly attribute nsIDOMSVGAnimatedInteger     targetY;
    readonly attribute nsIDOMSVGAnimatedEnumeration edgeMode;
    readonly attribute nsIDOMSVGAnimatedNumber      kernelUnitLengthX;
    readonly attribute nsIDOMSVGAnimatedNumber      kernelUnitLengthY;
    readonly attribute nsISupports                  preserveAlpha;
};

[scriptable, uuid(309be736-d55a-40fe-a2f2-088aea14f0fa)]
interface nsIDOMSVGFEDiffuseLightingElement :  nsIDOMSVGFilterPrimitiveStandardAttributes
{ 
  readonly attribute nsIDOMSVGAnimatedString in1;
  readonly attribute nsIDOMSVGAnimatedNumber surfaceScale;
  readonly attribute nsIDOMSVGAnimatedNumber diffuseConstant;
  readonly attribute nsIDOMSVGAnimatedNumber kernelUnitLengthX;
  readonly attribute nsIDOMSVGAnimatedNumber kernelUnitLengthY;
};

[scriptable, uuid(bb2bac9f-dfab-4ce3-926a-9cfc11ab7922)]
interface nsIDOMSVGFESpecularLightingElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{ 
  readonly attribute nsIDOMSVGAnimatedString in1;
  readonly attribute nsIDOMSVGAnimatedNumber surfaceScale;
  readonly attribute nsIDOMSVGAnimatedNumber specularConstant;
  readonly attribute nsIDOMSVGAnimatedNumber specularExponent;
  readonly attribute nsIDOMSVGAnimatedNumber kernelUnitLengthX;
  readonly attribute nsIDOMSVGAnimatedNumber kernelUnitLengthY;
};

[scriptable, uuid(99068af4-1156-46b6-afcc-4b9f37621d10)]
interface nsIDOMSVGFESpotLightElement : nsIDOMSVGElement { 
  readonly attribute nsIDOMSVGAnimatedNumber x;
  readonly attribute nsIDOMSVGAnimatedNumber y;
  readonly attribute nsIDOMSVGAnimatedNumber z;
  readonly attribute nsIDOMSVGAnimatedNumber pointsAtX;
  readonly attribute nsIDOMSVGAnimatedNumber pointsAtY;
  readonly attribute nsIDOMSVGAnimatedNumber pointsAtZ;
  readonly attribute nsIDOMSVGAnimatedNumber specularExponent;
  readonly attribute nsIDOMSVGAnimatedNumber limitingConeAngle;
};

[scriptable, uuid(5ab43048-d59a-4e3c-ad2f-6a5d8593f6d0)]
interface nsIDOMSVGFEDisplacementMapElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
  // Channel Selectors
  const unsigned short SVG_CHANNEL_UNKNOWN = 0;
  const unsigned short SVG_CHANNEL_R       = 1;
  const unsigned short SVG_CHANNEL_G       = 2;
  const unsigned short SVG_CHANNEL_B       = 3;
  const unsigned short SVG_CHANNEL_A       = 4;

  readonly attribute nsIDOMSVGAnimatedString      in1;
  readonly attribute nsIDOMSVGAnimatedString      in2;
  readonly attribute nsIDOMSVGAnimatedNumber      scale;
  readonly attribute nsIDOMSVGAnimatedEnumeration xChannelSelector;
  readonly attribute nsIDOMSVGAnimatedEnumeration yChannelSelector;
};
