/* -*- 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 .
*/
#include "stdafx.h"
#include <UAccCOM.h>
#include "AccHypertext.h"
#include "AccHyperLink.h"
#include "acccommon.h"
#include <vcl/svapp.hxx>
using namespace com::sun::star::accessibility;
using namespace com::sun::star::uno;
/**
* Get special selection .
* @ param startOffset Start selection offset .
* @ param endOffset End selection offset .
* @ param success Variant to accept the result of if the method call is successful .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::addSelection(long startOffset, long endOffset)
{
return CAccTextBase::get_addSelection(startOffset, endOffset);
}
/**
* Get special attributes .
* @ param offset Offset .
* @ param startOffset Variant to accept start offset .
* @ param endOffset Variant to accept end offset .
* @ param textAttributes Variant to accept attributes .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_attributes(long offset, long * startOffset,
long * endOffset,
BSTR* textAttributes)
{
return CAccTextBase::get_attributes(offset, startOffset, endOffset, textAttributes);
}
/**
* Get caret position .
* @ param offset Variant to accept caret offset .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_caretOffset(long * offset)
{
return CAccTextBase::get_caretOffset(offset);
}
/**
* Get character extents .
* @ param offset Offset .
* @ param x Variant to accept x position .
* @ param y Variant to accept y position .
* @ param width Variant to accept width .
* @ param Height Variant to accept height .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_characterExtents(long offset,
IA2CoordinateType coordType,
long * x, long * y, long * width,
long * height)
{
return CAccTextBase::get_characterExtents(offset, coordType, x, y, width, height);
}
/**
* Get selections count .
* @ param nSelections Variant to accept selections count .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_nSelections(long * nSelections)
{
return CAccTextBase::get_nSelections(nSelections);
}
/**
* Get offset of some special point .
* @ param x X position of one point .
* @ param x Y position of one point .
* @ param coordType Type .
* @ param offset Variant to accept offset .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_offsetAtPoint(long x, long y,
IA2CoordinateType coordType,
long * offset)
{
return CAccTextBase::get_offsetAtPoint(x, y, coordType, offset);
}
/**
* Get selection range .
* @ param selection selection count .
* @ param startOffset Variant to accept the start offset of special selection .
* @ param endOffset Variant to accept the end offset of special selection .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_selection(long selection, long * startOffset,
long * endOffset)
{
return CAccTextBase::get_selection(selection, startOffset, endOffset);
}
/**
* Get special text .
* @ param startOffset Start position of special range .
* @ param endOffset End position of special range .
* @ param text Variant to accept the text of special range .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_text(long startOffset, long endOffset,
BSTR* text)
{
return CAccTextBase::get_text(startOffset, endOffset, text);
}
/**
* Get special text before some position .
* @ param offset Special position .
* @ param boundaryType Boundary type .
* @ param startOffset Variant to accept the start offset .
* @ param endOffset Variant to accept the end offset .
* @ param text Variant to accept the special text .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_textBeforeOffset(
long offset, IA2TextBoundaryType boundaryType, long * startOffset, long * endOffset, BSTR* text)
{
return CAccTextBase::get_textBeforeOffset(offset, boundaryType, startOffset, endOffset, text);
}
/**
* Get special text after some position .
* @ param offset Special position .
* @ param boundaryType Boundary type .
* @ param startOffset Variant to accept the start offset .
* @ param endOffset Variant to accept the end offset .
* @ param text Variant to accept the special text .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_textAfterOffset(
long offset, IA2TextBoundaryType boundaryType, long * startOffset, long * endOffset, BSTR* text)
{
return CAccTextBase::get_textAfterOffset(offset, boundaryType, startOffset, endOffset, text);
}
/**
* Get special text at some position .
* @ param offset Special position .
* @ param boundaryType Boundary type .
* @ param startOffset Variant to accept the start offset .
* @ param endOffset Variant to accept the end offset .
* @ param text Variant to accept the special text .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_textAtOffset(long offset,
IA2TextBoundaryType boundaryType,
long * startOffset,
long * endOffset, BSTR* text)
{
return CAccTextBase::get_textAtOffset(offset, boundaryType, startOffset, endOffset, text);
}
/**
* Remove selection .
* @ param selectionIndex Special selection index
* @ param success Variant to accept the method called result .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::removeSelection(long selectionIndex)
{
return CAccTextBase::removeSelection(selectionIndex);
}
/**
* Set caret position .
* @ param offset Special position .
* @ param success Variant to accept the method called result .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::setCaretOffset(long offset)
{
return CAccTextBase::setCaretOffset(offset);
}
/**
* Set special selection .
* @ param selectionIndex Special selection index .
* @ param startOffset start position .
* @ param endOffset end position .
* @ param success Variant to accept the method called result .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::setSelection(long selectionIndex, long startOffset,
long endOffset)
{
return CAccTextBase::setSelection(selectionIndex, startOffset, endOffset);
}
/**
* Get characters count .
* @ param nCharacters Variant to accept the characters count .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_nCharacters(long * nCharacters)
{
return CAccTextBase::get_nCharacters(nCharacters);
}
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_newText(IA2TextSegment* newText)
{
return CAccTextBase::get_newText(newText);
}
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_oldText(IA2TextSegment* oldText)
{
return CAccTextBase::get_oldText(oldText);
}
/**
* Scroll to special sub - string .
* @ param startIndex Start index of sub string .
* @ param endIndex End index of sub string .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::scrollSubstringToPoint(
long startIndex, long endIndex, enum IA2CoordinateType coordinateType, long x, long y)
{
return CAccTextBase::scrollSubstringToPoint(startIndex, endIndex, coordinateType, x, y);
}
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::scrollSubstringTo(long startIndex, long endIndex,
enum IA2ScrollType scrollType)
{
return CAccTextBase::scrollSubstringTo(startIndex, endIndex, scrollType);
}
/**
* Get hyperlink count .
* @ param hyperlinkCount Variant to accept hyperlink count .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_nHyperlinks(long * hyperlinkCount)
{
SolarMutexGuard g;
try
{
if (hyperlinkCount == nullptr)
return E_INVALIDARG;
if (!pHyperText.is())
{
return E_FAIL;
}
*hyperlinkCount = pHyperText->getHyperLinkCount();
return S_OK;
}
catch (...)
{
return E_FAIL;
}
}
/**
* Get special hyperlink .
* @ param index Special hyperlink index .
* @ param hyperlink Variant to accept special hyperlink via index .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_hyperlink(long index,
IAccessibleHyperlink** hyperlink)
{
SolarMutexGuard g;
try
{
if (hyperlink == nullptr)
return E_INVALIDARG;
if (!pHyperText.is())
{
return E_FAIL;
}
Reference<XAccessibleHyperlink> pRLink = pHyperText->getHyperLink(index);
if (!pRLink.is())
{
*hyperlink = nullptr;
return E_FAIL;
}
IAccessibleHyperlink* plink = nullptr;
HRESULT hr = createInstance<CAccHyperLink>(IID_IAccessibleHyperlink, &plink);
if (SUCCEEDED(hr))
{
IUNOXWrapper* wrapper = nullptr;
plink->QueryInterface(IID_IUNOXWrapper, reinterpret_cast <void **>(&wrapper));
if (wrapper)
{
wrapper->put_XSubInterface(reinterpret_cast <hyper>(pRLink.get()));
wrapper->Release();
}
*hyperlink = plink;
return S_OK;
}
return E_FAIL;
}
catch (...)
{
return E_FAIL;
}
}
/**
* Returns the index of the hyperlink that is associated with this character index .
* @ param charIndex Special char index .
* @ param hyperlinkIndex Variant to accept special hyperlink index .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::get_hyperlinkIndex(long charIndex,
long * hyperlinkIndex)
{
SolarMutexGuard g;
try
{
if (hyperlinkIndex == nullptr)
return E_INVALIDARG;
if (!pHyperText.is())
{
return E_FAIL;
}
*hyperlinkIndex = pHyperText->getHyperLinkIndex(charIndex);
return S_OK;
}
catch (...)
{
return E_FAIL;
}
}
/**
* Put UNO interface .
* @ param pXInterface UNO interface .
* @ return Result .
*/
COM_DECLSPEC_NOTHROW STDMETHODIMP CAccHypertext::put_XInterface(hyper pXInterface)
{
// internal IUNOXWrapper - no mutex meeded
try
{
CAccTextBase::put_XInterface(pXInterface);
if (pUNOInterface == nullptr)
return E_FAIL;
Reference<XAccessibleContext> pRContext = pUNOInterface->getAccessibleContext();
if (!pRContext.is())
{
return E_FAIL;
}
Reference<XAccessibleHypertext> pRXI(pRContext, UNO_QUERY);
if (!pRXI.is())
pHyperText = nullptr;
else
pHyperText = pRXI.get();
return S_OK;
}
catch (...)
{
return E_FAIL;
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Messung V0.5 in Prozent C=92 H=98 G=94
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet am 2026-09-29)
¤
*© Formatika GbR, Deutschland