/* -*- 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_TextSegment_idl__
#define __com_sun_star_accessibility_TextSegment_idl__

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

/** This structure describes a text segment that is embedded in a larger
    portion of text.  It is used for example by the
    XAccessibleText interface to describe a text portion that
    was inserted into or deleted from an accessible text.

    <p>The indices TextSegment::SegmentStart and
    TextSegment::SegmentEnd refer to the enclosing text.
    The TextSegment::SegmentText member contains the text
    between these two indices including the start index but not the end
    index.  With it you can use this structure without having to
    access the XAccessibleText interface that represents the
    enclosing text.</p>

    <p>An empty text segment is expressed by
    TextSegment::SegmentStart and
    TextSegment::SegmentEnd set to the same value.  While a
    value of -1 signals an error (like the request for a word after the last
    character of a text) all other values define the empty string at that
    position.</p>

    <p>The #SegmentText member is a copy of the
    corresponding text segment of the enclosing text.  Modifying this
    structure does not alter the enclosing text.</p>

    @see XAccessibleText

    @since OOo 1.1.2
*/

struct TextSegment
{
    /** A copy of the text segment of the enclosing text delimited by the
        text indices TextSegment::SegmentStart and
        TextSegment::SegmentEnd.  Modifying it does not
        alter the enclosing text.
    */
    string SegmentText;

    /** Index of the first character of the text segment represented by this
        structure.  The index refers to the enclosing text.
    */
    long SegmentStart;

    /** Index of the character directly behind the last character of the
        text segment represented by this structure.  The index refers to the
        enclosing text.
    */
    long SegmentEnd;
};

}; }; }; };

#endif

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