23#include <com/sun/star/accessibility/AccessibleEventId.hpp>
24#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
25#include <com/sun/star/accessibility/AccessibleRole.hpp>
26#include <com/sun/star/accessibility/AccessibleStateType.hpp>
27#include <com/sun/star/awt/FontWeight.hpp>
28#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
29#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp>
30#include <com/sun/star/i18n/Boundary.hpp>
53 assert(
m_pNotifier ==
nullptr &&
"called more than once");
69 assert(
m_pNotifier ==
nullptr &&
"called more than once");
84 Paragraphs::size_type nNumber):
105 css::uno::Any aOldValue, aNewValue;
109 notifyEvent(css::accessibility::AccessibleEventId::
111 aOldValue, aNewValue);
116 css::uno::Any
const & rOldValue,
117 css::uno::Any
const & rNewValue)
122 nEventId, rNewValue, rOldValue, -1) );
126css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL
141css::uno::Reference< css::accessibility::XAccessible > SAL_CALL
145 throw css::lang::IndexOutOfBoundsException(
146 "textwindowaccessibility.cxx:"
147 " Paragraph::getAccessibleChild",
152css::uno::Reference< css::accessibility::XAccessible > SAL_CALL
170 return css::accessibility::AccessibleRole::PARAGRAPH;
188css::uno::Reference< css::accessibility::XAccessibleRelationSet >
192 return m_xDocument->retrieveParagraphRelationSet(
this );
216 css::awt::Rectangle aRect(
m_xDocument->retrieveParagraphBounds(
this,
218 return rPoint.X >= 0 && rPoint.X < aRect.Width
219 && rPoint.Y >= 0 && rPoint.Y < aRect.Height;
223css::uno::Reference< css::accessibility::XAccessible > SAL_CALL
234 return m_xDocument->retrieveParagraphBounds(
this,
false);
241 css::awt::Rectangle aRect(
m_xDocument->retrieveParagraphBounds(
this,
243 return css::awt::Point(aRect.X, aRect.Y);
250 css::awt::Rectangle aRect(
m_xDocument->retrieveParagraphBounds(
this,
252 return css::awt::Point(aRect.X, aRect.Y);
259 css::awt::Rectangle aRect(
m_xDocument->retrieveParagraphBounds(
this,
261 return css::awt::Size(aRect.Width, aRect.Height);
271 pWindow->GrabFocus();
277 catch (
const css::lang::IndexOutOfBoundsException &)
299 return m_xDocument->retrieveParagraphCaretPosition(
this);
318css::uno::Sequence< css::beans::PropertyValue > SAL_CALL
322 return m_xDocument->retrieveCharacterAttributes(
this,
nIndex, aRequestedAttributes );
326css::awt::Rectangle SAL_CALL
331 css::awt::Rectangle aParaBounds(
m_xDocument->retrieveParagraphBounds(
this,
false));
332 aBounds.X -= aParaBounds.X;
333 aBounds.Y -= aParaBounds.Y;
349 css::awt::Point aPoint(rPoint);
350 css::awt::Rectangle aParaBounds(
m_xDocument->retrieveParagraphBounds(
this,
false));
351 aPoint.X += aParaBounds.X;
352 aPoint.Y += aParaBounds.Y;
353 return m_xDocument->retrieveCharacterIndex(
this, aPoint);
380 ::sal_Int32 nEndIndex)
383 m_xDocument->changeParagraphSelection(
this, nStartIndex, nEndIndex);
396 ::sal_Int32 nEndIndex)
425 ::sal_Int32 nEndIndex)
428 m_xDocument->copyParagraphText(
this, nStartIndex, nEndIndex);
440 ::sal_Int32 nEndIndex)
443 m_xDocument->changeParagraphText(
this, nStartIndex, nEndIndex,
true,
false,
459 ::sal_Int32 nEndIndex)
462 m_xDocument->changeParagraphText(
this, nStartIndex, nEndIndex,
false,
false,
479 OUString
const & rReplacement)
482 m_xDocument->changeParagraphText(
this, nStartIndex, nEndIndex,
false,
false,
489 ::sal_Int32 nStartIndex, ::sal_Int32 nEndIndex,
490 css::uno::Sequence< css::beans::PropertyValue >
const & rAttributeSet)
493 m_xDocument->changeParagraphAttributes(
this, nStartIndex, nEndIndex,
507css::uno::Sequence< css::beans::PropertyValue > SAL_CALL
515css::uno::Sequence< css::beans::PropertyValue > SAL_CALL
519 return m_xDocument->retrieveRunAttributes(
this,
Index, RequestedAttributes );
527 ::sal_Int32 nLineNo = -1;
538 css::i18n::Boundary aBoundary =
539 m_xDocument->retrieveParagraphBoundaryOfLine(
this, nLineNo );
541 return css::accessibility::TextSegment(
getTextRange(aBoundary.startPos, aBoundary.endPos),
542 aBoundary.startPos, aBoundary.endPos);
553 return ( nLineNo >= 0 ) ?
555 css::accessibility::TextSegment();
556 }
catch (
const css::lang::IndexOutOfBoundsException&) {
558 throw css::lang::WrappedTargetRuntimeException(
559 "textwindowaccessibility.cxx:"
560 " Paragraph::getTextAtLineWithCaret",
569 return m_xDocument->retrieveParagraphLineWithCursor(
this);
576 css::accessibility::XAccessibleEventListener >
const & rListener)
581 ::osl::ClearableMutexGuard aGuard(rBHelper.rMutex);
582 if (rBHelper.bDisposed || rBHelper.bInDispose)
585 rListener->disposing(css::lang::EventObject(
599 css::accessibility::XAccessibleEventListener >
const & rListener)
603 osl::MutexGuard aGuard(rBHelper.rMutex);
626 osl::MutexGuard aGuard(rBHelper.rMutex);
648 ::sal_Int32 & rEndIndex)
650 m_xDocument->retrieveParagraphSelection(
this, &rStartIndex, &rEndIndex);
655 css::i18n::Boundary& rBoundary,
658 ::sal_Int32
nLength = rText.getLength();
662 rBoundary.startPos = 0;
667 rBoundary.startPos =
nIndex;
668 rBoundary.endPos =
nIndex;
674 css::i18n::Boundary& rBoundary,
677 ::sal_Int32
nLength = rText.getLength();
681 css::i18n::Boundary aBoundary =
683 rBoundary.startPos = aBoundary.startPos;
684 rBoundary.endPos = aBoundary.endPos;
688 rBoundary.startPos =
nIndex;
689 rBoundary.endPos =
nIndex;
696 ::osl::MutexGuard aGuard(rBHelper.rMutex);
697 if (!(rBHelper.bDisposed || rBHelper.bInDispose))
699 throw css::lang::DisposedException(
700 OUString(), getXWeak());
705 VCLXAccessibleComponent(pVclXWindow),
706 m_xAccessible(pVclXWindow),
709 m_aEngineListener(*this),
710 m_aViewListener(
LINK(this,
Document, WindowEventHandler)),
713 m_nVisibleBeginOffset(0),
714 m_nSelectionFirstPara(-1),
715 m_nSelectionFirstPos(-1),
716 m_nSelectionLastPara(-1),
717 m_nSelectionLastPos(-1),
718 m_bSelectionChangedNotification(false)
729 ::osl::MutexGuard aInternalGuard(GetMutex());
743 ::osl::MutexGuard aInternalGuard(GetMutex());
749 = css::accessibility::AccessibleStateType::ENABLED
750 | css::accessibility::AccessibleStateType::SENSITIVE
751 | css::accessibility::AccessibleStateType::FOCUSABLE
752 | css::accessibility::AccessibleStateType::MULTI_LINE;
754 nState |= css::accessibility::AccessibleStateType::EDITABLE;
760 |= css::accessibility::AccessibleStateType::VISIBLE
761 | css::accessibility::AccessibleStateType::SHOWING;
763 nState |= css::accessibility::AccessibleStateType::FOCUSED;
773 ::osl::MutexGuard aInternalGuard(GetMutex());
782 auto lAddHeight = [](
const sal_Int32& rSum,
const ParagraphInfo& rParagraph) {
783 return rSum + rParagraph.getHeight(); };
794 return css::awt::Rectangle(
795 static_cast< ::sal_Int32
>(aOrig.
X()),
805 ::osl::MutexGuard aInternalGuard(GetMutex());
811 ::sal_Int32 * pBegin,
815 ::osl::MutexGuard aInternalGuard(GetMutex());
817 Paragraphs::size_type nNumber = pParagraph->
getNumber();
820 TextPaM aMinPaM( std::min( aStartPaM, aEndPaM ) );
821 TextPaM aMaxPaM( std::max( aStartPaM, aEndPaM ) );
823 if ( nNumber >= aMinPaM.
GetPara() && nNumber <= aMaxPaM.
GetPara() )
827 *pEnd = nNumber < aMaxPaM.
GetPara()
832 if ( aStartPaM > aEndPaM )
833 std::swap( *pBegin, *pEnd );
845 ::osl::MutexGuard aInternalGuard(GetMutex());
847 Paragraphs::size_type nNumber = pParagraph->
getNumber();
858 ::osl::MutexGuard aInternalGuard(GetMutex());
859 ::sal_uInt32 nNumber =
static_cast< ::sal_uInt32
>(pParagraph->
getNumber());
862 if (nIndex < 0 || nIndex >
nLength)
863 throw css::lang::IndexOutOfBoundsException(
864 "textwindowaccessibility.cxx:"
865 " Document::retrieveCharacterAttributes",
867 css::awt::Rectangle aBounds( 0, 0, 0, 0 );
884 ::sal_Int32 nWidth = (aLeft.
Top() == aRight.
Top()
886 ?
static_cast< ::sal_Int32
>(aRight.
Left() - aLeft.
Left())
890 aBounds = css::awt::Rectangle(
static_cast< ::sal_Int32
>(aLeft.
Left()),
893 static_cast< ::sal_Int32
>(aLeft.
Bottom()
901 css::awt::Point
const & rPoint)
904 ::osl::MutexGuard aInternalGuard(GetMutex());
905 ::sal_uInt32 nNumber =
static_cast< ::sal_uInt32
>(pParagraph->
getNumber());
914css::uno::Sequence< css::beans::PropertyValue >
916 Paragraph const * pParagraph, ::sal_Int32 nIndex,
917 const css::uno::Sequence< OUString >& aRequestedAttributes)
922 const sal_Int32 AttributeCount = 9;
923 std::vector< css::beans::PropertyValue > aAttribs;
924 aAttribs.reserve(AttributeCount);
926 css::beans::PropertyValue aAttrib;
928 aAttrib.State = css::beans::PropertyState_DIRECT_VALUE;
931 aAttrib.Name =
"CharBackColor";
933 aAttribs.push_back(aAttrib);
936 aAttrib.Name =
"CharColor";
939 aAttribs.push_back(aAttrib);
942 aAttrib.Name =
"CharFontName";
944 aAttribs.push_back(aAttrib);
947 aAttrib.Name =
"CharHeight";
948 aAttrib.Value <<=
static_cast<sal_Int16
>(aFont.
GetFontHeight());
949 aAttribs.push_back(aAttrib);
952 aAttrib.Name =
"CharPosture";
953 aAttrib.Value <<=
static_cast<sal_Int16
>(aFont.
GetItalic());
954 aAttribs.push_back(aAttrib);
964 aAttrib.Name =
"CharStrikeout";
965 aAttrib.Value <<=
static_cast<sal_Int16
>(aFont.
GetStrikeout());
966 aAttribs.push_back(aAttrib);
969 aAttrib.Name =
"CharUnderline";
970 aAttrib.Value <<=
static_cast<sal_Int16
>(aFont.
GetUnderline());
971 aAttribs.push_back(aAttrib);
974 aAttrib.Name =
"CharWeight";
975 aAttrib.Value <<=
static_cast<float>(aFont.
GetWeight());
976 aAttribs.push_back(aAttrib);
979 aAttrib.Name =
"ParaAdjust";
981 aAttribs.push_back(aAttrib);
983 ::osl::MutexGuard aInternalGuard(GetMutex());
984 ::sal_uInt32 nNumber =
static_cast< ::sal_uInt32
>(pParagraph->
getNumber());
988 throw css::lang::IndexOutOfBoundsException(
989 "textwindowaccessibility.cxx:"
990 " Document::retrieveCharacterAttributes",
998 for (
const css::beans::PropertyValue& rAttrib : aAttribs)
1000 aCharAttrSeq[ rAttrib.Name ] = rAttrib;
1006 auto nLength =
static_cast<size_t>(aRes.getLength());
1007 std::unique_ptr<sal_Int32[]> pIndices(
new sal_Int32[
nLength] );
1008 std::iota(&pIndices[0], &pIndices[
nLength], 0);
1009 std::sort(&pIndices[0], &pIndices[
nLength],
1010 [&aRes](sal_Int32
a, sal_Int32 b) {
return aRes[
a].Name < aRes[b].Name; });
1013 std::vector<css::beans::PropertyValue> aNewValues;
1015 std::transform(&pIndices[0], &pIndices[
nLength], std::back_inserter(aNewValues),
1016 [&aRes](
const sal_Int32 nIdx) {
return aRes[nIdx]; });
1023 const css::uno::Sequence< OUString >& RequestedAttributes,
1026 ::sal_uInt32 nNumber =
static_cast< ::sal_uInt32
>( pParagraph->
getNumber() );
1038 css::beans::PropertyValue aPropVal;
1039 aPropVal.Name =
"CharColor";
1040 aPropVal.Handle = -1;
1042 aPropVal.State = css::beans::PropertyState_DIRECT_VALUE;
1043 aRunAttrSeq[ aPropVal.Name ] = aPropVal;
1047 css::beans::PropertyValue aPropVal;
1048 aPropVal.Name =
"CharWeight";
1049 aPropVal.Handle = -1;
1051 aPropVal.State = css::beans::PropertyState_DIRECT_VALUE;
1052 aRunAttrSeq[ aPropVal.Name ] = aPropVal;
1054 if ( !RequestedAttributes.hasElements() )
1056 rRunAttrSeq = aRunAttrSeq;
1060 for (
const OUString& rReqAttr : RequestedAttributes )
1062 tPropValMap::iterator aIter = aRunAttrSeq.find( rReqAttr );
1063 if ( aIter != aRunAttrSeq.end() )
1065 rRunAttrSeq[ (*aIter).first ] = (*aIter).second;
1071css::uno::Sequence< css::beans::PropertyValue >
1074 const css::uno::Sequence< OUString >& RequestedAttributes)
1077 ::osl::MutexGuard aInternalGuard( GetMutex() );
1078 ::sal_uInt32 nNumber =
static_cast< ::sal_uInt32
>( pParagraph->
getNumber() );
1081 throw css::lang::IndexOutOfBoundsException(
1082 "textwindowaccessibility.cxx:"
1083 " Document::retrieveRunAttributes",
1092 OUString
const & rText)
1096 ::osl::MutexGuard aInternalGuard(GetMutex());
1097 ::sal_uInt32 nNumber =
static_cast< ::sal_uInt32
>(pParagraph->
getNumber());
1105 ::sal_Int32 nBegin, ::sal_Int32 nEnd,
1106 bool bCut,
bool bPaste,
1107 OUString
const & rText)
1111 ::osl::MutexGuard aInternalGuard(GetMutex());
1112 ::sal_uInt32 nNumber =
static_cast< ::sal_uInt32
>(pParagraph->
getNumber());
1114 if (nBegin < 0 || nBegin > nEnd
1116 throw css::lang::IndexOutOfBoundsException(
1117 "textwindowaccessibility.cxx:"
1118 " Document::changeParagraphText",
1121 static_cast< ::sal_uInt16
>(nEnd), bCut, bPaste, rText);
1127 ::sal_Int32 nBegin, ::sal_Int32 nEnd)
1131 ::osl::MutexGuard aInternalGuard(GetMutex());
1132 ::sal_uInt32 nNumber =
static_cast< ::sal_uInt32
>(pParagraph->
getNumber());
1134 if (nBegin < 0 || nBegin > nEnd
1136 throw css::lang::IndexOutOfBoundsException(
1137 "textwindowaccessibility.cxx:"
1138 " Document::copyParagraphText",
1149 Paragraph const * pParagraph, ::sal_Int32 nBegin, ::sal_Int32 nEnd,
1150 css::uno::Sequence< css::beans::PropertyValue >
const & rAttributeSet)
1154 ::osl::MutexGuard aInternalGuard(GetMutex());
1155 ::sal_uInt32 nNumber =
static_cast< ::sal_uInt32
>(pParagraph->
getNumber());
1157 if (nBegin < 0 || nBegin > nEnd
1159 throw css::lang::IndexOutOfBoundsException(
1160 "textwindowaccessibility.cxx:"
1161 " Document::changeParagraphAttributes",
1167 for (
const auto& rAttr : rAttributeSet)
1168 if ( rAttr.Name ==
"CharColor" )
1171 nNumber, nBegin, nEnd);
1173 else if ( rAttr.Name ==
"CharWeight" )
1176 nNumber, nBegin, nEnd);
1182 ::sal_Int32 nBegin, ::sal_Int32 nEnd)
1186 ::osl::MutexGuard aInternalGuard(GetMutex());
1187 ::sal_uInt32 nNumber =
static_cast< ::sal_uInt32
>(pParagraph->
getNumber());
1189 if (nBegin < 0 || nBegin > nEnd
1191 throw css::lang::IndexOutOfBoundsException(
1192 "textwindowaccessibility.cxx:"
1193 " Document::changeParagraphSelection",
1204 ::sal_Int32 nIndex, ::sal_Int32 *pLineNo )
1206 css::i18n::Boundary aBoundary;
1207 aBoundary.startPos =
nIndex;
1208 aBoundary.endPos =
nIndex;
1212 ::osl::MutexGuard aInternalGuard( GetMutex() );
1213 ::sal_uInt32 nNumber =
static_cast< ::sal_uInt32
>( pParagraph->
getNumber() );
1215 throw css::lang::IndexOutOfBoundsException(
1216 "textwindowaccessibility.cxx:"
1217 " Document::retrieveParagraphLineBoundary",
1219 ::sal_Int32 nLineStart = 0;
1220 ::sal_Int32 nLineEnd = 0;
1222 for ( ::sal_uInt16 nLine = 0; nLine < nLineCount; ++nLine )
1224 nLineStart = nLineEnd;
1226 if (
nIndex >= nLineStart && ( ( nLine == nLineCount - 1 ) ?
nIndex <= nLineEnd :
nIndex < nLineEnd ) )
1228 aBoundary.startPos = nLineStart;
1229 aBoundary.endPos = nLineEnd;
1242 ::sal_Int32 nLineNo )
1244 css::i18n::Boundary aBoundary;
1245 aBoundary.startPos = 0;
1246 aBoundary.endPos = 0;
1250 ::osl::MutexGuard aInternalGuard( GetMutex() );
1251 ::sal_uInt32 nNumber =
static_cast< ::sal_uInt32
>( pParagraph->
getNumber() );
1253 throw css::lang::IndexOutOfBoundsException(
1254 "textwindowaccessibility.cxx:"
1255 " Document::retrieveParagraphBoundaryOfLine",
1257 ::sal_Int32 nLineStart = 0;
1258 ::sal_Int32 nLineEnd = 0;
1259 for ( ::sal_Int32 nLine = 0; nLine <= nLineNo; ++nLine )
1261 nLineStart = nLineEnd;
1265 aBoundary.startPos = nLineStart;
1266 aBoundary.endPos = nLineEnd;
1275 ::osl::MutexGuard aInternalGuard(GetMutex());
1277 Paragraphs::size_type nNumber = pParagraph->
getNumber();
1280 return aEndPaM.
GetPara() == nNumber
1285css::uno::Reference< css::accessibility::XAccessibleRelationSet >
1288 ::osl::MutexGuard aInternalGuard( GetMutex() );
1296 css::uno::Sequence< css::uno::Reference< css::uno::XInterface > > aSequence {
getAccessibleChild( aPara - 1 ) };
1297 css::accessibility::AccessibleRelation aRelation( css::accessibility::AccessibleRelationType::CONTENT_FLOWS_FROM, aSequence );
1298 pRelationSetHelper->AddRelation( aRelation );
1303 css::uno::Sequence< css::uno::Reference< css::uno::XInterface > > aSequence {
getAccessibleChild( aPara + 1 ) };
1304 css::accessibility::AccessibleRelation aRelation( css::accessibility::AccessibleRelationType::CONTENT_FLOWS_TO, aSequence );
1305 pRelationSetHelper->AddRelation( aRelation );
1308 return pRelationSetHelper;
1320css::uno::Reference< css::accessibility::XAccessible > SAL_CALL
1326 throw css::lang::IndexOutOfBoundsException(
1327 "textwindowaccessibility.cxx:"
1328 " Document::getAccessibleChild",
1331 +
static_cast< Paragraphs::size_type
>(
i));
1337 return css::accessibility::AccessibleRole::TEXT_FRAME;
1341css::uno::Reference< css::accessibility::XAccessible > SAL_CALL
1355 nPos += aIt->getHeight();
1364 VCLXAccessibleComponent::FillAccessibleStateSet( rStateSet );
1366 rStateSet |= css::accessibility::AccessibleStateType::EDITABLE;
1371 if( getAccessibleParent()->getAccessibleContext()->
getAccessibleRole() == css::accessibility::AccessibleRole::SCROLL_PANE )
1373 css::uno::Sequence< css::uno::Reference< css::uno::XInterface > > aSequence { getAccessibleParent() };
1374 rRelationSet.
AddRelation( css::accessibility::AccessibleRelation( css::accessibility::AccessibleRelationType::MEMBER_OF, aSequence ) );
1378 VCLXAccessibleComponent::FillAccessibleRelationSet(rRelationSet);
1388 VCLXAccessibleComponent::disposing();
1399 switch (rTextHint.GetId())
1401 case SfxHintId::TextParaInserted:
1402 case SfxHintId::TextParaRemoved:
1410 case SfxHintId::TextFormatPara:
1419 ::osl::MutexGuard aInternalGuard(GetMutex());
1426 case SfxHintId::TextFormatted:
1427 case SfxHintId::TextHeightChanged:
1428 case SfxHintId::TextModified:
1430 ::osl::MutexGuard aInternalGuard(GetMutex());
1436 case SfxHintId::TextViewScrolled:
1438 ::osl::MutexGuard aInternalGuard(GetMutex());
1443 ::sal_Int32 nOffset =
static_cast< ::sal_Int32
>(
1450 Paragraphs::iterator aOldVisibleBegin(
1462 case SfxHintId::TextViewSelectionChanged:
1463 case SfxHintId::TextViewCaretChanged:
1465 ::osl::MutexGuard aInternalGuard(GetMutex());
1495 switch (rEvent.GetId())
1497 case VclEventId::WindowResize:
1499 ::osl::MutexGuard aInternalGuard(GetMutex());
1503 ::sal_Int32 nHeight =
static_cast< ::sal_Int32
>(
1504 m_rView.GetWindow()->GetOutputSizePixel().Height());
1506 if (nHeight != m_nViewHeight)
1508 m_nViewHeight = nHeight;
1510 Paragraphs::iterator aOldVisibleBegin(m_aVisibleBegin);
1511 Paragraphs::iterator aOldVisibleEnd(m_aVisibleEnd);
1513 determineVisibleRange();
1515 notifyVisibleRangeChanges(aOldVisibleBegin, aOldVisibleEnd,
1516 m_xParagraphs->end());
1520 case VclEventId::WindowGetFocus:
1522 ::osl::MutexGuard aInternalGuard(GetMutex());
1526 sal_Int64
count = getAccessibleChildCount();
1527 bool bEmpty = m_aFocused == m_aVisibleEnd &&
count == 1;
1528 if ((m_aFocused >= m_aVisibleBegin && m_aFocused < m_aVisibleEnd) || bEmpty)
1530 Paragraphs::iterator aTemp = bEmpty ? m_aVisibleBegin : m_aFocused;
1532 if (xParagraph.is())
1534 xParagraph->notifyEvent(
1535 css::accessibility::AccessibleEventId::
1539 css::accessibility::AccessibleStateType::
1545 case VclEventId::WindowLoseFocus:
1547 ::osl::MutexGuard aInternalGuard(GetMutex());
1551 sal_Int64
count = getAccessibleChildCount();
1552 bool bEmpty = m_aFocused == m_aVisibleEnd &&
count == 1;
1553 if ((m_aFocused >= m_aVisibleBegin && m_aFocused < m_aVisibleEnd) || bEmpty)
1555 Paragraphs::iterator aTemp = bEmpty ? m_aVisibleBegin : m_aFocused;
1557 if (xParagraph.is())
1558 xParagraph->notifyEvent(
1559 css::accessibility::AccessibleEventId::
1562 css::accessibility::AccessibleStateType::
1581 for (::sal_uInt32
i = 0;
i <
nCount; ++
i)
1605 css::uno::Reference< css::accessibility::XAccessible >(
1606 rIt->getParagraph()).get());
1609css::uno::Reference< css::accessibility::XAccessible >
1612 css::uno::Reference< css::accessibility::XAccessible > xParagraph(
1613 rIt->getParagraph());
1614 if (!xParagraph.is())
1617 rIt->setParagraph(xParagraph);
1630 ::sal_Int32
nPos = 0;
1633 ::sal_Int32
const nOldPos =
nPos;
1634 nPos += aIt->getHeight();
1654 || (m_aVisibleBegin < m_aVisibleEnd && m_nVisibleBeginOffset >= 0)),
1656 "invalid visible range");
1660 Paragraphs::iterator
const & rOldVisibleBegin,
1661 Paragraphs::iterator
const & rOldVisibleEnd,
1662 Paragraphs::iterator
const & rInserted)
1666 for (Paragraphs::iterator aIt(rOldVisibleBegin); aIt != rOldVisibleEnd;
1669 if (aIt != rInserted
1671 NotifyAccessibleEvent(
1672 css::accessibility::AccessibleEventId::
1680 if (aIt == rInserted
1681 || aIt < rOldVisibleBegin || aIt >= rOldVisibleEnd)
1682 NotifyAccessibleEvent(
1683 css::accessibility::AccessibleEventId::
1692 bool bCut,
bool bPaste,
1693 OUString
const & rText)
1699 else if (nBegin != nEnd)
1703 else if (!rText.isEmpty())
1713 switch (aHint.GetId())
1715 case SfxHintId::TextParaInserted:
1717 ::sal_uInt32
n =
static_cast< ::sal_uInt32
>( aHint.
GetValue() );
1718 assert(n <= m_xParagraphs->
size() &&
"bad SfxHintId::TextParaInserted event");
1723 Paragraphs::size_type nOldVisibleBegin
1725 Paragraphs::size_type nOldVisibleEnd
1727 Paragraphs::size_type nOldFocused
1729 if (
n <= nOldVisibleBegin)
1731 if (
n <= nOldVisibleEnd)
1733 if (
n <= nOldFocused)
1740 Paragraphs::iterator aIns(
1750 for (Paragraphs::iterator aIt(aIns);;)
1757 if (xParagraph.is())
1758 xParagraph->numberChanged(
true);
1766 case SfxHintId::TextParaRemoved:
1768 ::sal_uInt32
n =
static_cast< ::sal_uInt32
>( aHint.
GetValue() );
1774 NotifyAccessibleEvent(
1775 css::accessibility::AccessibleEventId::
1791 assert(n < m_xParagraphs->
size() &&
"Bad SfxHintId::TextParaRemoved event");
1799 Paragraphs::size_type nOldVisibleBegin
1801 Paragraphs::size_type nOldVisibleEnd
1804 = nOldVisibleBegin <=
n &&
n < nOldVisibleEnd;
1805 Paragraphs::size_type nOldFocused
1808 if (
n < nOldVisibleBegin)
1810 if (
n < nOldVisibleEnd)
1812 if (
n < nOldFocused)
1840 css::uno::Reference< css::accessibility::XAccessible >
1844 css::uno::WeakReference<
1845 css::accessibility::XAccessible > xWeak(
1846 aIt->getParagraph());
1857 if (xParagraph.is())
1858 xParagraph->numberChanged(
false);
1862 NotifyAccessibleEvent(
1863 css::accessibility::AccessibleEventId::
1865 css::uno::Any(xStrong),
1868 css::uno::Reference< css::lang::XComponent > xComponent(
1869 xWeak.get(), css::uno::UNO_QUERY);
1870 if (xComponent.is())
1871 xComponent->dispose();
1880 case SfxHintId::TextFormatPara:
1882 ::sal_uInt32
n =
static_cast< ::sal_uInt32
>( aHint.
GetValue() );
1883 assert(n < m_xParagraphs->
size() &&
"Bad SfxHintId::TextFormatPara event");
1885 (*m_xParagraphs)[
static_cast< Paragraphs::size_type
>(
n)].
1886 changeHeight(
static_cast< ::sal_Int32
>(
1895 if (n < m_xParagraphs->
size())
1899 if (xParagraph.is())
1900 xParagraph->textChanged();
1905 SAL_WARN(
"accessibility",
"bad buffered hint");
1919enum class SelChangeType
1927 EndParaNoMoreBehind,
1929 ExcludedPreviousPara,
1930 ExcludedFollowingPara,
1935SelChangeType getSelChangeType(
const TextPaM& Os,
const TextPaM& Oe,
1941 return Os != Ns ? SelChangeType::CaretMove : SelChangeType::None;
1943 return SelChangeType::NoSelToSel;
1947 return SelChangeType::SelToNoSel;
1957 : SelChangeType::None;
1970 return SelChangeType::EndParaNoMoreBehind;
1975 return SelChangeType::AddedFollowingPara;
1981 return SelChangeType::ExcludedPreviousPara;
1990 return SelChangeType::ExcludedFollowingPara;
1998 return SelChangeType::AddedPreviousPara;
2003 return SelChangeType::EndParaBecameBehind;
2008 return SelChangeType::None;
2018 size_t nEndDistance = std::min<size_t>(
end + 1, nAvailDistance);
2019 std::advance(aEnd, nEndDistance);
2022 size_t nStartDistance = std::min<size_t>(
start, nAvailDistance);
2023 std::advance(aIt, nStartDistance);
2028 if (xParagraph.is())
2029 xParagraph->notifyEvent(
2031 css::uno::Any(), css::uno::Any());
2041 "bad SfxHintId::TextViewSelectionChanged event");
2042 ::sal_Int32 nNewFirstPara
2046 ::sal_Int32 nNewLastPara
2047 =
static_cast< ::sal_Int32
>(rSelection.
GetEnd().
GetPara());
2052 Paragraphs::iterator aIt(
m_xParagraphs->begin() + nNewLastPara);
2057 if (xParagraph.is())
2058 xParagraph->notifyEvent(
2059 css::accessibility::AccessibleEventId::
2062 css::accessibility::AccessibleStateType::FOCUSED),
2073 if (xParagraph.is())
2077 bool bEmpty =
count > 1;
2080 xParagraph->notifyEvent(
2081 css::accessibility::AccessibleEventId::
2085 css::accessibility::AccessibleStateType::FOCUSED));
2088 xParagraph->notifyEvent(
2089 css::accessibility::AccessibleEventId::
2091 css::uno::Any( ::sal_Int32 (
2094 css::uno::Any(nNewLastPos));
2108 case SelChangeType::None:
2111 case SelChangeType::CaretMove:
2114 case SelChangeType::NoSelToSel:
2116 nMin = std::min(nNewFirstPara, nNewLastPara);
2117 nMax = std::max(nNewFirstPara, nNewLastPara);
2118 sendEvent(nMin, nMax, css::accessibility::AccessibleEventId::SELECTION_CHANGED);
2120 css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
2122 case SelChangeType::SelToNoSel:
2126 sendEvent(nMin, nMax, css::accessibility::AccessibleEventId::SELECTION_CHANGED);
2128 css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
2130 case SelChangeType::NoParaChange:
2133 css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
2135 case SelChangeType::EndParaNoMoreBehind:
2138 css::accessibility::AccessibleEventId::SELECTION_CHANGED);
2139 sendEvent(nNewFirstPara + 1, nNewLastPara,
2140 css::accessibility::AccessibleEventId::SELECTION_CHANGED);
2143 css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
2145 case SelChangeType::AddedFollowingPara:
2148 css::accessibility::AccessibleEventId::SELECTION_CHANGED);
2151 css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
2153 case SelChangeType::ExcludedPreviousPara:
2156 css::accessibility::AccessibleEventId::SELECTION_CHANGED);
2159 css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
2161 case SelChangeType::ExcludedFollowingPara:
2164 css::accessibility::AccessibleEventId::SELECTION_CHANGED);
2167 css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
2169 case SelChangeType::AddedPreviousPara:
2172 css::accessibility::AccessibleEventId::SELECTION_CHANGED);
2175 css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
2177 case SelChangeType::EndParaBecameBehind:
2180 css::accessibility::AccessibleEventId::SELECTION_CHANGED);
2181 sendEvent(nNewLastPara, nNewFirstPara - 1,
2182 css::accessibility::AccessibleEventId::SELECTION_CHANGED);
2185 css::accessibility::AccessibleEventId::TEXT_SELECTION_CHANGED);
2200 css::uno::Reference< css::lang::XComponent > xComponent(
2201 paragraph.getParagraph().get(), css::uno::UNO_QUERY);
2202 if (xComponent.is())
2203 xComponent->dispose();
2227 static float const aWeight[]
2228 = { css::awt::FontWeight::DONTKNOW,
2229 css::awt::FontWeight::THIN,
2230 css::awt::FontWeight::ULTRALIGHT,
2231 css::awt::FontWeight::LIGHT,
2232 css::awt::FontWeight::SEMILIGHT,
2233 css::awt::FontWeight::NORMAL,
2234 css::awt::FontWeight::NORMAL,
2235 css::awt::FontWeight::SEMIBOLD,
2236 css::awt::FontWeight::BOLD,
2237 css::awt::FontWeight::ULTRABOLD,
2238 css::awt::FontWeight::BLACK };
2239 return css::uno::Any(aWeight[nWeight]);
2245 float nWeight = css::awt::FontWeight::NORMAL;
2246 rWeight >>= nWeight;
2248 : nWeight <= css::awt::FontWeight::THIN ?
WEIGHT_THIN
2250 : nWeight <= css::awt::FontWeight::LIGHT ?
WEIGHT_LIGHT
2254 : nWeight <= css::awt::FontWeight::BOLD ?
WEIGHT_BOLD
Color GetRGBColor() const
constexpr tools::Long Y() const
constexpr tools::Long X() const
void StartListening(SfxBroadcaster &rBroadcaster, DuplicateHandling eDuplicateHanding=DuplicateHandling::Unexpected)
void EndListening(SfxBroadcaster &rBroadcaster, bool bRemoveAllDuplicates=false)
constexpr tools::Long Height() const
constexpr tools::Long Width() const
const Color & GetColor() const
FontWeight getFontWeight() const
sal_Int32 GetTextLen() const
TextPaM GetPaM(const Point &rDocPos)
tools::Rectangle PaMtoEditCursor(const TextPaM &rPaM, bool bSpecial=false)
tools::Long GetTextHeight() const
sal_uInt16 GetLineCount(sal_uInt32 nParagraph) const
sal_Int32 GetLineLen(sal_uInt32 nParagraph, sal_uInt16 nLine) const
tools::Long GetMaxTextWidth() const
OUString GetText(LineEnd aSeparator=LINEEND_LF) const
sal_uInt32 GetParagraphCount() const
void SetAttrib(const TextAttrib &rAttr, sal_uInt32 nPara, sal_Int32 nStart, sal_Int32 nEnd)
TxtAlign GetTextAlign() const
const TextAttrib * FindAttrib(const TextPaM &rPaM, sal_uInt16 nWhich) const
css::lang::Locale const & GetLocale()
const Color & GetTextColor() const
const vcl::Font & GetFont() const
sal_Int32 GetValue() const
sal_uInt32 GetPara() const
sal_Int32 GetIndex() const
const TextPaM & GetStart() const
const TextPaM & GetEnd() const
void SetSelection(const TextSelection &rNewSel)
vcl::Window * GetWindow() const
sal_Int32 GetLineNumberOfCursorInSelection() const
const TextSelection & GetSelection() const
void InsertText(const OUString &rNew)
const Point & GetStartDocPos() const
::sal_Int32 m_nViewOffset
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int64 i) override
css::uno::Sequence< css::beans::PropertyValue > retrieveCharacterAttributes(Paragraph const *pParagraph, ::sal_Int32 nIndex, const css::uno::Sequence< OUString > &aRequestedAttributes)
bool m_bSelectionChangedNotification
void notifyVisibleRangeChanges(Paragraphs::iterator const &rOldVisibleBegin, Paragraphs::iterator const &rOldVisibleEnd, Paragraphs::iterator const &rInserted)
::sal_Int32 m_nSelectionLastPos
void copyParagraphText(Paragraph const *pParagraph, ::sal_Int32 nBegin, ::sal_Int32 nEnd)
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(css::awt::Point const &rPoint) override
css::awt::Rectangle retrieveParagraphBounds(Paragraph const *pParagraph, bool bAbsolute)
virtual void Notify(::SfxBroadcaster &rBC, ::SfxHint const &rHint) override
SfxListenerGuard m_aEngineListener
Paragraphs::iterator m_aFocused
WindowListenerGuard m_aViewListener
::sal_Int32 m_nSelectionLastPara
void retrieveParagraphSelection(Paragraph const *pParagraph, ::sal_Int32 *pBegin, ::sal_Int32 *pEnd)
void retrieveRunAttributesImpl(Paragraph const *pParagraph, ::sal_Int32 Index, const css::uno::Sequence< OUString > &RequestedAttributes, tPropValMap &rRunAttrSeq)
static css::uno::Any mapFontColor(::Color const &rColor)
::sal_Int32 retrieveCharacterIndex(Paragraph const *pParagraph, css::awt::Point const &rPoint)
Paragraphs::iterator m_aVisibleBegin
virtual sal_Int64 SAL_CALL getAccessibleChildCount() override
void determineVisibleRange()
virtual ::sal_Int16 SAL_CALL getAccessibleRole() override
::sal_Int32 m_nSelectionFirstPos
::sal_Int64 retrieveParagraphState(Paragraph const *pParagraph)
void changeParagraphText(Paragraph const *pParagraph, OUString const &rText)
::sal_Int32 m_nViewHeight
::sal_Int32 retrieveParagraphIndex(Paragraph const *pParagraph)
void handleParagraphNotifications()
css::i18n::Boundary retrieveParagraphLineBoundary(Paragraph const *pParagraph, ::sal_Int32 nIndex, ::sal_Int32 *pLineNo)
virtual void SAL_CALL disposing() override
void changeParagraphSelection(Paragraph const *pParagraph, ::sal_Int32 nBegin, ::sal_Int32 nEnd)
virtual void FillAccessibleRelationSet(utl::AccessibleRelationSetHelper &rRelationSet) override
sal_Int32 retrieveParagraphLineWithCursor(Paragraph const *pParagraph)
void changeParagraphAttributes(Paragraph const *pParagraph, ::sal_Int32 nBegin, ::sal_Int32 nEnd, css::uno::Sequence< css::beans::PropertyValue > const &rAttributeSet)
static css::uno::Any mapFontWeight(::FontWeight nWeight)
void sendEvent(::sal_Int32 start, ::sal_Int32 end, ::sal_Int16 nEventId)
Paragraphs::iterator m_aVisibleEnd
css::uno::Sequence< css::beans::PropertyValue > retrieveRunAttributes(Paragraph const *pParagraph, ::sal_Int32 Index, const css::uno::Sequence< OUString > &RequestedAttributes)
virtual void FillAccessibleStateSet(sal_Int64 &rStateSet) override
css::awt::Rectangle retrieveCharacterBounds(Paragraph const *pParagraph, ::sal_Int32 nIndex)
::sal_Int32 m_nSelectionFirstPara
::sal_Int32 retrieveParagraphCaretPosition(Paragraph const *pParagraph)
css::lang::Locale retrieveLocale()
::sal_Int32 m_nVisibleBeginOffset
Document(::VCLXWindow *pVclXWindow, ::TextEngine &rEngine, ::TextView &rView)
static ::rtl::Reference< Paragraph > getParagraph(Paragraphs::iterator const &rIt)
std::unique_ptr< Paragraphs > m_xParagraphs
void handleSelectionChangeNotification()
css::i18n::Boundary retrieveParagraphBoundaryOfLine(Paragraph const *pParagraph, ::sal_Int32 nIndex)
css::uno::Reference< css::accessibility::XAccessibleRelationSet > retrieveParagraphRelationSet(Paragraph const *pParagraph)
OUString retrieveParagraphText(Paragraph const *pParagraph)
std::queue< ::TextHint > m_aParagraphNotifications
virtual sal_Bool SAL_CALL deleteText(::sal_Int32 nStartIndex, ::sal_Int32 nEndIndex) override
virtual sal_Bool SAL_CALL scrollSubstringTo(sal_Int32 nStartIndex, sal_Int32 nEndIndex, css::accessibility::AccessibleScrollType aScrollType) override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
virtual sal_Bool SAL_CALL copyText(::sal_Int32 nStartIndex, ::sal_Int32 nEndIndex) override
virtual css::lang::Locale implGetLocale() override
virtual css::accessibility::TextSegment SAL_CALL getTextBehindIndex(sal_Int32 nIndex, sal_Int16 aTextType) override
virtual ::sal_Int32 SAL_CALL getSelectionEnd() override
virtual ::sal_Unicode SAL_CALL getCharacter(::sal_Int32 nIndex) override
void numberChanged(bool bIncremented)
virtual OUString implGetText() override
virtual css::awt::Rectangle SAL_CALL getBounds() override
virtual sal_Bool SAL_CALL setCaretPosition(::sal_Int32 nIndex) override
virtual ::sal_Int32 SAL_CALL getNumberOfLineWithCaret() override
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override
virtual ::sal_Int32 SAL_CALL getCaretPosition() override
virtual void SAL_CALL addAccessibleEventListener(css::uno::Reference< css::accessibility::XAccessibleEventListener > const &rListener) override
virtual css::lang::Locale SAL_CALL getLocale() override
virtual void implGetLineBoundary(const OUString &rText, css::i18n::Boundary &rBoundary, ::sal_Int32 nIndex) override
Paragraphs::size_type getNumber() const
virtual void SAL_CALL grabFocus() override
virtual css::accessibility::TextSegment SAL_CALL getTextAtIndex(sal_Int32 nIndex, sal_Int16 aTextType) override
virtual sal_Bool SAL_CALL setText(OUString const &rText) override
sal_uInt32 m_nClientId
client id in the AccessibleEventNotifier queue
virtual sal_Bool SAL_CALL replaceText(::sal_Int32 nStartIndex, ::sal_Int32 nEndIndex, OUString const &rReplacement) override
Paragraphs::size_type m_nNumber
virtual ::sal_Int32 SAL_CALL getIndexAtPoint(css::awt::Point const &rPoint) override
virtual void implGetParagraphBoundary(const OUString &rText, css::i18n::Boundary &rBoundary, ::sal_Int32 nIndex) override
virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override
virtual sal_Bool SAL_CALL containsPoint(css::awt::Point const &rPoint) override
virtual sal_Int64 SAL_CALL getAccessibleChildCount() override
virtual sal_Int64 SAL_CALL getAccessibleIndexInParent() override
OUString m_aParagraphText
virtual css::awt::Size SAL_CALL getSize() override
virtual css::accessibility::TextSegment SAL_CALL getTextBeforeIndex(sal_Int32 nIndex, sal_Int16 aTextType) override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int64 i) override
virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getCharacterAttributes(::sal_Int32 nIndex, const css::uno::Sequence< OUString > &aRequestedAttributes) override
virtual sal_Bool SAL_CALL setAttributes(::sal_Int32 nStartIndex, ::sal_Int32 nEndIndex, css::uno::Sequence< css::beans::PropertyValue > const &rAttributeSet) override
virtual void implGetSelection(::sal_Int32 &rStartIndex, ::sal_Int32 &rEndIndex) override
virtual css::awt::Rectangle SAL_CALL getCharacterBounds(::sal_Int32 nIndex) override
virtual ::sal_Int32 SAL_CALL getLineNumberAtIndex(::sal_Int32 nIndex) override
virtual ::sal_Int32 SAL_CALL getCharacterCount() override
virtual sal_Bool SAL_CALL cutText(::sal_Int32 nStartIndex, ::sal_Int32 nEndIndex) override
virtual css::awt::Point SAL_CALL getLocation() override
virtual css::awt::Point SAL_CALL getLocationOnScreen() override
virtual OUString SAL_CALL getText() override
virtual sal_Bool SAL_CALL insertText(OUString const &rText, ::sal_Int32 nIndex) override
virtual sal_Int32 SAL_CALL getBackground() override
virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getDefaultAttributes(const css::uno::Sequence< OUString > &RequestedAttributes) override
virtual sal_Bool SAL_CALL pasteText(::sal_Int32 nIndex) override
virtual ::sal_Int32 SAL_CALL getSelectionStart() override
virtual sal_Int32 SAL_CALL getForeground() override
virtual sal_Int64 SAL_CALL getAccessibleStateSet() override
virtual OUString SAL_CALL getAccessibleName() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(css::awt::Point const &rPoint) override
virtual void SAL_CALL removeAccessibleEventListener(css::uno::Reference< css::accessibility::XAccessibleEventListener > const &rListener) override
::rtl::Reference< Document > m_xDocument
virtual OUString SAL_CALL getTextRange(::sal_Int32 nStartIndex, ::sal_Int32 nEndIndex) override
virtual ::sal_Int16 SAL_CALL getAccessibleRole() override
virtual css::accessibility::TextSegment SAL_CALL getTextAtLineWithCaret() override
virtual OUString SAL_CALL getSelectedText() override
virtual sal_Bool SAL_CALL setSelection(::sal_Int32 nStartIndex, ::sal_Int32 nEndIndex) override
virtual OUString SAL_CALL getAccessibleDescription() override
virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getRunAttributes(::sal_Int32 Index, const css::uno::Sequence< OUString > &RequestedAttributes) override
virtual css::accessibility::TextSegment SAL_CALL getTextAtLineNumber(::sal_Int32 nLineNo) override
void notifyEvent(::sal_Int16 nEventId, css::uno::Any const &rOldValue, css::uno::Any const &rNewValue)
Paragraph(::rtl::Reference< Document > xDocument, Paragraphs::size_type nNumber)
virtual void SAL_CALL disposing() override
void startListening(::SfxBroadcaster &rNotifier)
::SfxListener & m_rListener
::SfxBroadcaster * m_pNotifier
void startListening(vcl::Window &rNotifier)
VclPtr< vcl::Window > m_pNotifier
::Link< VclWindowEvent &, void > m_aListener
static sal_Int32 addEventListener(const TClientId _nClient, const css::uno::Reference< css::accessibility::XAccessibleEventListener > &_rxListener)
static void addEvent(const TClientId _nClient, const css::accessibility::AccessibleEventObject &_rEvent)
static sal_Int32 removeEventListener(const TClientId _nClient, const css::uno::Reference< css::accessibility::XAccessibleEventListener > &_rxListener)
static TClientId registerClient()
static void revokeClient(const TClientId _nClient)
static void revokeClientNotifyDisposing(const TClientId _nClient, const css::uno::Reference< css::uno::XInterface > &_rxEventSource)
css::accessibility::TextSegment getTextBeforeIndex(sal_Int32 nIndex, sal_Int16 aTextType)
css::accessibility::TextSegment getTextAtIndex(sal_Int32 nIndex, sal_Int16 aTextType)
sal_Int32 getSelectionEnd()
static bool implIsValidIndex(sal_Int32 nIndex, sal_Int32 nLength)
OUString getSelectedText()
static bool implInitTextChangedEvent(std::u16string_view rOldString, std::u16string_view rNewString, css::uno::Any &rDeleted, css::uno::Any &rInserted)
static sal_Unicode implGetCharacter(std::u16string_view rText, sal_Int32 nIndex)
css::accessibility::TextSegment getTextBehindIndex(sal_Int32 nIndex, sal_Int16 aTextType)
sal_Int32 getSelectionStart()
static OUString implGetTextRange(std::u16string_view rText, sal_Int32 nStartIndex, sal_Int32 nEndIndex)
void AddRelation(const css::accessibility::AccessibleRelation &rRelation)
tools::Long GetFontHeight() const
FontStrikeout GetStrikeout() const
const OUString & GetFamilyName() const
FontLineStyle GetUnderline() const
const Color & GetFillColor() const
Size GetOutputSizePixel() const
Point OutputToAbsoluteScreenPixel(const Point &rPos) const
css::awt::Rectangle AWTRectangle(const ::tools::Rectangle &rVCLRect)
Reference< XOfficeDatabaseDocument > m_xDocument
#define TOOLS_INFO_EXCEPTION(area, stream)
#define LINK(Instance, Class, Member)
#define SAL_WARN_IF(condition, area, stream)
#define SAL_WARN(area, stream)
std::vector< ParagraphInfo > Paragraphs
std::unordered_map< OUString, css::beans::PropertyValue > tPropValMap
IMPL_LINK(AccessibleDocumentViewBase, WindowChildEventListener, VclWindowEvent &, rEvent, void)
css::uno::Sequence< DstElementType > containerToSequence(const SrcType &i_Container)
css::uno::Sequence< typename M::mapped_type > mapValuesToSequence(M const &map)
Any SAL_CALL getCaughtException()
#define TEXTATTR_FONTWEIGHT
#define TEXTATTR_FONTCOLOR