/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=2 et sw=2 tw=80: */ /* 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/. */
namespace mozilla { namespace dom { class Selection;
} // namespace dom namespace a11y {
class Accessible; class LocalAccessible;
/** * A text point (HyperText + offset), represents a boundary of text range. * In new code, This should only be used when you explicitly need to deal with * HyperText containers and offsets, including embedded objects; e.g. for * IAccessible2 and ATK. Otherwise, use TextLeafPoint instead.
*/ struct TextPoint final {
TextPoint(Accessible* aContainer, int32_t aOffset)
: mContainer(aContainer), mOffset(aOffset) {}
TextPoint(const TextPoint& aPoint)
: mContainer(aPoint.mContainer), mOffset(aPoint.mOffset) {}
/** * Represents a HyperText range within the text control or document. * In new code, This should only be used when you explicitly need to deal with * HyperText containers and offsets, including embedded objects; e.g. for * IAccessible2 and ATK. Otherwise, use TextLeafRange instead.
*/ class TextRange final { public:
TextRange(Accessible* aRoot, Accessible* aStartContainer,
int32_t aStartOffset, Accessible* aEndContainer,
int32_t aEndOffset);
TextRange() : mStartOffset{0}, mEndOffset{0} {}
TextRange(TextRange&& aRange)
: mRoot(std::move(aRange.mRoot)),
mStartContainer(std::move(aRange.mStartContainer)),
mEndContainer(std::move(aRange.mEndContainer)),
mStartOffset(aRange.mStartOffset),
mEndOffset(aRange.mEndOffset) {}
/** * Return a container containing both start and end points.
*/
Accessible* Container() const;
/** * Crops the range if it overlaps the given accessible element boundaries, * returns true if the range was cropped successfully.
*/ bool Crop(Accessible* aContainer);
/** * Convert stored hypertext offsets into DOM offsets and assign it to DOM * range. * * Note that if start and/or end accessible offsets are in generated content * such as ::before or * ::after, the result range excludes the generated content. See also * ClosestNotGeneratedDOMPoint() for more information. * * @param aRange [in, out] the range whose bounds to set * @param aReversed [out] whether the start/end offsets were reversed. * @return true if conversion was successful
*/ bool AssignDOMRange(nsRange* aRange, bool* aReversed = nullptr) const;
/** * Return true if this TextRange object represents an actual range of text.
*/ bool IsValid() const { return mRoot; }
/** * A helper method returning a common parent for two given accessible * elements.
*/
Accessible* CommonParent(Accessible* aAcc1, Accessible* aAcc2,
nsTArray<Accessible*>* aParents1, uint32_t* aPos1,
nsTArray<Accessible*>* aParents2,
uint32_t* aPos2) const;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.