/* -*- 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 nsIDOMSVGAnimatedEnumeration;
interface nsIDOMSVGRect;

[scriptable, uuid(8A884160-DB64-4BF7-B932-15398E536A8D)]
interface nsIDOMSVGTextContentElement
  : 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.)
        
    nsIDOMSVGTests,
    nsIDOMSVGLangSpace,
    nsIDOMSVGExternalResourcesRequired,
    nsIDOMSVGStylable,
    events::nsIDOMEventTarget
*/
{ 
  // lengthAdjust Types
  const unsigned short LENGTHADJUST_UNKNOWN          = 0;
  const unsigned short LENGTHADJUST_SPACING          = 1;
  const unsigned short LENGTHADJUST_SPACINGANDGLYPHS = 2;
  
  // Not implemented
  // readonly attribute nsIDOMSVGAnimatedLength      textLength;
  // readonly attribute nsIDOMSVGAnimatedEnumeration lengthAdjust;
  
  long     getNumberOfChars();
  float    getComputedTextLength();
  float    getSubStringLength(in unsigned long charnum, in unsigned long nchars);
    // raises(DOMException);
  // SVGPoint
  nsISupports getStartPositionOfChar(in unsigned long charnum);
    // raises(DOMException);
  // SVGPoint
  nsISupports getEndPositionOfChar(in unsigned long charnum);
    // raises(DOMException);
  nsIDOMSVGRect  getExtentOfChar(in unsigned long charnum);
    // raises(DOMException);
  float    getRotationOfChar(in unsigned long charnum);
    // raises(DOMException);       SVGPoint
  long     getCharNumAtPosition(in nsISupports point);

  // Not implemented
  // void     selectSubString(in unsigned long charnum, in unsigned long nchars);
    // raises(DOMException);
};
