/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * 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/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */

#ifndef __com_sun_star_accessibility_XAccessibleHypertext_idl__
#define __com_sun_star_accessibility_XAccessibleHypertext_idl__

#include <com/sun/star/uno/XInterface.idl>
#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
#include <com/sun/star/accessibility/XAccessibleText.idl>

module com { module sun { module star { module accessibility {

 interface XAccessibleHyperlink;


/** Implement this interface to expose the hypertext structure of a document.

    <p>The XAccessibleHypertext interface is the main interface
    to expose hyperlinks in a document, typically a text document, that are
    used to reference other (parts of) documents.  For supporting the
    XAccessibleHypertext::getLinkIndex() method of this
    interface and other character related methods of the
    XAccessibleHyperlink interface, it is necessary to also
    support the XAccessibleText interface.</p>

    @see XAccessibleHyperlink, XAccessibleText

    @since OOo 1.1.2
*/
interface XAccessibleHypertext
    : ::com::sun::star::accessibility::XAccessibleText
{
    /** Returns the number of links and link groups contained within this
        hypertext document.

        @return
            The number of links and link groups within this hypertext
            document.  Returns 0 if there is no link.
    */
    long getHyperLinkCount ();

    /** Return the specified link.

        <p>The returned XAccessibleHyperlink object
        encapsulates the hyperlink and provides several kinds of information
        describing it.</p>

        @param nLinkIndex
            This index specifies the hyperlink to return.

        @return
            If the given index is valid, i.e. lies in the interval from 0
            to the number of links minus one, a reference to the specified
            hyperlink object is returned.  If the index is invalid then an
            empty reference is returned.
    */
    XAccessibleHyperlink getHyperLink ([in] long nLinkIndex)
        raises (::com::sun::star::lang::IndexOutOfBoundsException);


    /** Returns the index of the hyperlink that is associated with this
        character index.

        <p>In a HTML document this is the case when a &lt;a href&gt; tag
        spans (includes) the given character index.</p>

        @param nCharIndex
            Index of the character for which to return the link index.  If
            the XAccessibleText interface is used to represent
            the text containing the link, then the character index is only
            valid if it is greater than or equal to zero and lower then the
            number of characters in the text.  See that interface's
            documentation for more details.

        @return
            Returns the index of the hyperlink that is associated with this
            character index, or throws an exception if there is no hyperlink
            associated with this index.

        @see XAccessibleText.
    */
    long getHyperLinkIndex ([in] long nCharIndex)
        raises (::com::sun::star::lang::IndexOutOfBoundsException);
};

}; }; }; };

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
