24#include <com/sun/star/accessibility/AccessibleRole.hpp> 
   25#include <com/sun/star/accessibility/AccessibleStateType.hpp> 
   26#include <com/sun/star/accessibility/AccessibleEventId.hpp> 
   27#include <com/sun/star/accessibility/AccessibleTableModelChange.hpp> 
   28#include <com/sun/star/accessibility/AccessibleTableModelChangeType.hpp> 
   29#include <com/sun/star/lang/IndexOutOfBoundsException.hpp> 
   43#include <com/sun/star/accessibility/XAccessibleText.hpp> 
   62class SwAccTableSelHandler_Impl
 
   65    virtual void Unselect( sal_Int32 nRowOrCol, sal_Int32 nExt ) = 0;
 
   68    ~SwAccTableSelHandler_Impl() {}
 
   86                           bool bExact, 
const SwFrame *& rFrame ) 
const;
 
   90                       SwAccTableSelHandler_Impl& rSelHdl,
 
   91                       bool bColumns ) 
const;
 
  103                                bool bIsInPagePreview,
 
  104                                bool bOnlyTableColumnHeader = 
false );
 
  122                          SwAccTableSelHandler_Impl& rSelHdl,
 
  123                       bool bColumns ) 
const;
 
  138    while( aIter != aEndIter )
 
  140        const SwAccessibleChild& rLower = *aIter;
 
  141        const SwFrame *pLower = rLower.GetSwFrame();
 
  176    while( !bFound && aIter != aEndIter )
 
  178        const SwAccessibleChild& rLower = *aIter;
 
  179        const SwFrame *pLower = rLower.GetSwFrame();
 
  180        OSL_ENSURE( pLower, 
"child should be a frame" );
 
  185                OSL_ENSURE( pLower->
IsCellFrame(), 
"lower is not a cell frame" );
 
  187                if( rFrame.
Right() >= rPos.
X() && rFrame.
Bottom() >= rPos.
Y() )
 
  190                    OSL_ENSURE( rFrame.
Left() <= rPos.
X() && rFrame.
Top() <= rPos.
Y(),
 
  191                            "find frame moved to far!" );
 
  194                        (rFrame.
Top() == rPos.
Y() && rFrame.
Left() == rPos.
Y() ) )
 
  206                    bFound = 
FindCell( rPos, pLower, bExact, rRet );
 
  217            const Point& rTabPos,
 
  221            SwAccTableSelHandler_Impl& rSelHdl,
 
  222            bool bColumns )
 const 
  227    while( aIter != aEndIter )
 
  229        const SwAccessibleChild& rLower = *aIter;
 
  230        const SwFrame *pLower = rLower.GetSwFrame();
 
  231        OSL_ENSURE( pLower, 
"child should be a frame" );
 
  233        if( pLower && rBox.
Overlaps( rArea ) )
 
  237                OSL_ENSURE( pLower->
IsCellFrame(), 
"lower is not a cell frame" );
 
  242                if( rSelBoxes.
find( pBox ) == rSelBoxes.
end() )
 
  247                    sal_Int32 
nPos = bColumns ? (rBox.
Left() - rTabPos.
X())
 
  248                                              : (rBox.
Top() - rTabPos.
Y());
 
  251                    sal_Int32 nRowOrCol =
 
  252                        static_cast< sal_Int32 
>( std::distance(
 
  253                            rRowsOrCols.
begin(), aSttRowOrCol ) );
 
  255                    nPos = bColumns ? (rBox.
Right() - rTabPos.
X())
 
  256                                    : (rBox.
Bottom() - rTabPos.
Y());
 
  260                        static_cast< sal_Int32 
>( std::distance(
 
  261                            aSttRowOrCol, aEndRowOrCol ) );
 
  263                    rSelHdl.Unselect( nRowOrCol, nExt );
 
  272                    GetSelection( rTabPos, rArea, rSelBoxes, pLower, rSelHdl,
 
  282        sal_Int32 nRow, sal_Int32 nColumn,
 
  295                       sal_Int32 nStart, sal_Int32 nEnd,
 
  297                          SwAccTableSelHandler_Impl& rSelHdl,
 
  298                       bool bColumns )
 const 
  312            aArea.
Top( *aStt + aPos.
getY() );
 
  314    if( nEnd < 
static_cast< sal_Int32 
>( rRowsOrColumns.
size() ) )
 
  329        sal_Int32 nLeft, sal_Int32 nTop )
 const 
  332    aPos.
Move( nLeft, nTop );
 
  360                                                        bool bIsInPagePreview,
 
  361                                                        bool bOnlyTableColumnHeader )
 
  362    : mrAccMap( rAccMap )
 
  363    , maTabFramePos( pTabFrame->getFrameArea().
Pos() )
 
  364    , mpTabFrame( pTabFrame )
 
  365    , mbIsInPagePreview( bIsInPagePreview )
 
  366    , mbOnlyTableColumnHeader( bOnlyTableColumnHeader )
 
  372        sal_Int32 nRow )
 const 
  384        sal_Int32 nColumn )
 const 
  401        uno::Reference < XAccessibleTable > xThis( pThis );
 
  402        lang::IndexOutOfBoundsException aExcept(
 
  403               "row or column index out of range",
 
  411class SwAccSingleTableSelHandler_Impl : 
public SwAccTableSelHandler_Impl
 
  417    inline SwAccSingleTableSelHandler_Impl();
 
  419    virtual ~SwAccSingleTableSelHandler_Impl() {}
 
  421    bool IsSelected()
 const { 
return m_bSelected; }
 
  423    virtual void Unselect( sal_Int32, sal_Int32 ) 
override;
 
  428inline SwAccSingleTableSelHandler_Impl::SwAccSingleTableSelHandler_Impl() :
 
  433void SwAccSingleTableSelHandler_Impl::Unselect( sal_Int32, sal_Int32 )
 
  440class SwAccAllTableSelHandler_Impl : 
public SwAccTableSelHandler_Impl
 
  443    std::vector< bool > m_aSelected;
 
  447    explicit SwAccAllTableSelHandler_Impl(sal_Int32 nSize)
 
  448        : m_aSelected(nSize, true)
 
  453    uno::Sequence < sal_Int32 > GetSelSequence();
 
  455    virtual void Unselect( sal_Int32 nRowOrCol, sal_Int32 nExt ) 
override;
 
  456    virtual ~SwAccAllTableSelHandler_Impl();
 
  461SwAccAllTableSelHandler_Impl::~SwAccAllTableSelHandler_Impl()
 
  465uno::Sequence < sal_Int32 > SwAccAllTableSelHandler_Impl::GetSelSequence()
 
  467    OSL_ENSURE( m_nCount >= 0, 
"underflow" );
 
  468    uno::Sequence < sal_Int32 > aRet( m_nCount );
 
  469    sal_Int32 *pRet = aRet.getArray();
 
  471    size_t nSize = m_aSelected.size();
 
  481    OSL_ENSURE( nPos == m_nCount, 
"count is wrong" );
 
  486void SwAccAllTableSelHandler_Impl::Unselect( sal_Int32 nRowOrCol,
 
  492             "extent too large" );
 
  495        if( m_aSelected[
static_cast< size_t >( nRowOrCol )] )
 
  497            m_aSelected[
static_cast< size_t >( nRowOrCol )] = 
false;
 
  520    AccessibleTableModelChange aModelChange;
 
  521    aModelChange.Type = AccessibleTableModelChangeType::UPDATE;
 
  522    aModelChange.FirstRow = 0;
 
  523    aModelChange.LastRow = rTableData.
GetRowCount() - 1;
 
  524    aModelChange.FirstColumn = 0;
 
  527    AccessibleEventObject 
aEvent;
 
  528    aEvent.EventId = AccessibleEventId::TABLE_MODEL_CHANGED;
 
  529    aEvent.NewValue <<= aModelChange;
 
  536    OSL_ENSURE( nChildIndex >= 0, 
"Illegal child index." );
 
  543    if( aCell.GetSwFrame()  )
 
  545        const SwFrame* pChildFrame = aCell.GetSwFrame();
 
  546        if( (pChildFrame != 
nullptr) && pChildFrame->
IsCellFrame() )
 
  554    OSL_ENSURE( pBox != 
nullptr, 
"We need the table box." );
 
  565        OSL_ENSURE( pBox != 
nullptr, 
"We need the table box." );
 
  573                sal_Int64 nSelectedChildIndex )
 const 
  577    if( nSelectedChildIndex >= nChildren )
 
  581    while( 
n < nChildren )
 
  585            if( 0 == nSelectedChildIndex )
 
  588                --nSelectedChildIndex;
 
  593    return n < nChildren ? 
n : -1;
 
  600    rStateSet |= AccessibleStateType::RESIZABLE;
 
  602    rStateSet |= AccessibleStateType::MULTI_SELECTABLE;
 
  605        rStateSet |= AccessibleStateType::MULTI_SELECTABLE;
 
  609        std::shared_ptr<SwAccessibleMap> 
const& pInitMap,
 
  636    if(rHint.
GetId() == SfxHintId::Dying)
 
  640    else if (rHint.
GetId() == SfxHintId::SwNameChanged && pTabFrame)
 
  643        const OUString sOldName( 
GetName() );
 
  644        const OUString sNewTabName = pFrameFormat->
GetName();
 
  650            AccessibleEventObject 
aEvent;
 
  651            aEvent.EventId = AccessibleEventId::NAME_CHANGED;
 
  652            aEvent.OldValue <<= sOldName;
 
  657        const OUString sOldDesc( 
m_sDesc );
 
  663            AccessibleEventObject 
aEvent;
 
  664            aEvent.EventId = AccessibleEventId::DESCRIPTION_CHANGED;
 
  665            aEvent.OldValue <<= sOldDesc;
 
  677        uno::Reference<XAccessibleTable> xThis( 
this );
 
  682        uno::Reference<XAccessibleSelection> xSelection( 
this );
 
  687        uno::Reference<XAccessibleTableSelection> xTableExtent( 
this );
 
  688        aRet <<= xTableExtent;
 
  692        aRet = SwAccessibleContext::queryInterface(rType);
 
  704        SwAccessibleContext::getTypes() ).
getTypes();
 
  709    return css::uno::Sequence<sal_Int8>();
 
  767    if ( xTableRowHeader.is() )
 
  769        uno::Reference< XAccessible > xRowHeaderCell =
 
  770                        xTableRowHeader->getAccessibleCellAt( nRow, 0 );
 
  771        OSL_ENSURE( xRowHeaderCell.is(),
 
  772                "<SwAccessibleTable::getAccessibleRowDescription(..)> - missing row header cell -> serious issue." );
 
  773        uno::Reference< XAccessibleContext > xRowHeaderCellContext =
 
  774                                    xRowHeaderCell->getAccessibleContext();
 
  775        const sal_Int64 nCellChildCount( xRowHeaderCellContext->getAccessibleChildCount() );
 
  776        for ( sal_Int64 nChildIndex = 0; nChildIndex < nCellChildCount; ++nChildIndex )
 
  778            uno::Reference< XAccessible > xChild = xRowHeaderCellContext->getAccessibleChild( nChildIndex );
 
  779            uno::Reference< XAccessibleText > xChildText( xChild, uno::UNO_QUERY );
 
  780            if ( xChildText.is() )
 
  782                sRowDesc += xChildText->getText();
 
  795    OUString sColumnDesc;
 
  800    if ( xTableColumnHeader.is() )
 
  802        uno::Reference< XAccessible > xColumnHeaderCell =
 
  803                        xTableColumnHeader->getAccessibleCellAt( 0, nColumn );
 
  804        OSL_ENSURE( xColumnHeaderCell.is(),
 
  805                "<SwAccessibleTable::getAccessibleColumnDescription(..)> - missing column header cell -> serious issue." );
 
  806        uno::Reference< XAccessibleContext > xColumnHeaderCellContext =
 
  807                                    xColumnHeaderCell->getAccessibleContext();
 
  808        const sal_Int64 nCellChildCount( xColumnHeaderCellContext->getAccessibleChildCount() );
 
  809        for ( sal_Int64 nChildIndex = 0; nChildIndex < nCellChildCount; ++nChildIndex )
 
  811            uno::Reference< XAccessible > xChild = xColumnHeaderCellContext->getAccessibleChild( nChildIndex );
 
  812            uno::Reference< XAccessibleText > xChildText( xChild, uno::UNO_QUERY );
 
  813            if ( xChildText.is() )
 
  815                sColumnDesc += xChildText->getText();
 
  824            sal_Int32 nRow, sal_Int32 nColumn )
 
  826    sal_Int32 nExtend = -1;
 
  847             static_cast< sal_Int32 
>( std::distance( aSttRow, aEndRow ) );
 
  854               sal_Int32 nRow, sal_Int32 nColumn )
 
  856    sal_Int32 nExtend = -1;
 
  877             static_cast< sal_Int32 
>( std::distance( aSttCol, aEndCol ) );
 
  883uno::Reference< XAccessibleTable > SAL_CALL
 
  887    return uno::Reference< XAccessibleTable >();
 
  890uno::Reference< XAccessibleTable > SAL_CALL
 
  900    if ( pTableColHeaders->getAccessibleChildCount() <= 0 )
 
  902        return uno::Reference< XAccessibleTable >();
 
  905    return pTableColHeaders;
 
  918        SwAccAllTableSelHandler_Impl aSelRows( nRows  );
 
  923        return aSelRows.GetSelSequence();
 
  927        return uno::Sequence< sal_Int32 >( 0 );
 
  941        SwAccAllTableSelHandler_Impl aSelCols( nCols );
 
  945        return aSelCols.GetSelSequence();
 
  949        return uno::Sequence< sal_Int32 >( 0 );
 
  965        SwAccSingleTableSelHandler_Impl aSelRow;
 
  968        bRet = aSelRow.IsSelected();
 
  991        SwAccSingleTableSelHandler_Impl aSelCol;
 
  995        bRet = aSelCol.IsSelected();
 
 1006        sal_Int32 nRow, sal_Int32 nColumn )
 
 1008    uno::Reference< XAccessible > xRet;
 
 1025    return uno::Reference< XAccessible >();
 
 1031    return uno::Reference< XAccessible >();
 
 1035            sal_Int32 nRow, sal_Int32 nColumn )
 
 1053            bRet = pSelBoxes->
find( pBox ) != pSelBoxes->
end();
 
 1061            sal_Int32 nRow, sal_Int32 nColumn )
 
 1063    sal_Int32 nRet = -1;
 
 1069    SwAccessibleChild aCell( 
GetTableData().GetCell( nRow, nColumn, 
this ));
 
 1070    if ( aCell.IsValid() )
 
 1080    sal_Int32 nRet = -1;
 
 1087    if ( ( nChildIndex < 0 ) ||
 
 1090        throw lang::IndexOutOfBoundsException();
 
 1094    if ( aCell.GetSwFrame()  )
 
 1096        sal_Int32 nTop = aCell.GetSwFrame()->getFrameArea().Top();
 
 1100        nRet = 
static_cast< sal_Int32 
>( std::distance(
 
 1105        OSL_ENSURE( !aCell.IsValid(), 
"SwAccessibleTable::getAccessibleColumn:" 
 1106                "aCell not expected to be valid.");
 
 1108        throw lang::IndexOutOfBoundsException();
 
 1115        sal_Int64 nChildIndex )
 
 1117    sal_Int32 nRet = -1;
 
 1124    if ( ( nChildIndex < 0 ) ||
 
 1127        throw lang::IndexOutOfBoundsException();
 
 1131    if ( aCell.GetSwFrame()  )
 
 1133        sal_Int32 nLeft = aCell.GetSwFrame()->getFrameArea().Left();
 
 1137        nRet = 
static_cast< sal_Int32 
>( std::distance(
 
 1142        OSL_ENSURE( !aCell.IsValid(), 
"SwAccessibleTable::getAccessibleColumn:" 
 1143                "aCell not expected to be valid.");
 
 1145        throw lang::IndexOutOfBoundsException();
 
 1153    return "com.sun.star.comp.Writer.SwAccessibleTableView";
 
 1157        const OUString& sTestServiceName)
 
 1192                                      bool bRecursive, 
bool bCanSkipInvisible )
 
 1196    const SwFrame *pFrame = rChildFrameOrObj.GetSwFrame();
 
 1197    OSL_ENSURE( pFrame, 
"frame expected" );
 
 1209    uno::Reference< XAccessible > xAcc( 
GetMap()->GetContext( pFrame, 
false ) );
 
 1223                "sw.a11y", 
"table has invalid position" );
 
 1229                if (pNewTableData->GetRowCount() != 
mpTableData->GetRowCount()
 
 1237                    const SwFrame *pCellFrame2 = pNewTableData->GetCellAtPos( *aSttCol2, *aSttRow2 );
 
 1239                    if(pCellFrame == pCellFrame2)
 
 1241                        AccessibleTableModelChange aModelChange;
 
 1242                        aModelChange.Type = AccessibleTableModelChangeType::UPDATE;
 
 1243                        aModelChange.FirstRow = 0;
 
 1244                        aModelChange.LastRow = 
mpTableData->GetRowCount() - 1;
 
 1245                        aModelChange.FirstColumn = 0;
 
 1246                        aModelChange.LastColumn = 
mpTableData->GetColumnCount() - 1;
 
 1248                        AccessibleEventObject 
aEvent;
 
 1249                        aEvent.EventId = AccessibleEventId::TABLE_COLUMN_HEADER_CHANGED;
 
 1250                        aEvent.NewValue <<= aModelChange;
 
 1270    sal_Int64 nChildIndex )
 
 1277        throw lang::IndexOutOfBoundsException();
 
 1281    OSL_ENSURE( pBox != 
nullptr, 
"We need the table box." );
 
 1284    if( pCursorShell == 
nullptr )
 
 1300    if( pSelectedTable != 
nullptr )
 
 1304        while( pUpper->
GetUpper() != 
nullptr )
 
 1308        if( 
nPos == USHRT_MAX )
 
 1309            pSelectedTable = 
nullptr;
 
 1314    if( pSelectedTable == 
nullptr || !pCursorShell->
GetTableCrs() )
 
 1318        SwPaM aPaM( *pStartNode );
 
 1337        SwPaM aPaM( *pStartNode );
 
 1349    sal_Int64 nChildIndex )
 
 1356        throw lang::IndexOutOfBoundsException();
 
 1368    if( pCursorShell != 
nullptr )
 
 1394    for( sal_Int64 
n = 0; 
n < nChildren; 
n++ )
 
 1402    sal_Int64 nSelectedChildIndex )
 
 1409    if( nSelectedChildIndex < 0 )
 
 1410        throw lang::IndexOutOfBoundsException();
 
 1415    if( nChildIndex < 0 )
 
 1416        throw lang::IndexOutOfBoundsException();
 
 1421        throw lang::IndexOutOfBoundsException();
 
 1429    sal_Int64 nChildIndex )
 
 1438    if ( !pCursorShell )
 
 1439        throw lang::IndexOutOfBoundsException();
 
 1443        throw lang::IndexOutOfBoundsException();
 
 1450    OSL_ENSURE( pBox != 
nullptr, 
"We need the table box." );
 
 1457    bool bDeselectPoint =
 
 1488            uno::Reference<XAccessibleComponent> xComponentDoc(xAccDoc,uno::UNO_QUERY);
 
 1489            if (xComponentDoc.is())
 
 1495    return sal_Int32(crBack);
 
 1500    AccessibleEventObject 
aEvent;
 
 1502    aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_REMOVE;
 
 1507        uno::Reference<XAccessible> 
const xAcc(rCell.second);
 
 1518        aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_ADD;
 
 1522            uno::Reference<XAccessible> 
const xAcc(rCell.second);
 
 1534        aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_WITHIN;
 
 1542    uno::Reference<XAccessible> 
const xTmp(pAccCell);
 
 1562    for(
tools::Long lCol = 0; lCol < lColumnCount; lCol ++)
 
 1579    for(sal_Int32 lRow = 0; lRow < lRowCount; lRow ++)
 
 1594        if( pCursorShell != 
nullptr )
 
 1612        if( pCursorShell != 
nullptr )
 
 1625        std::shared_ptr<SwAccessibleMap> 
const& pMap,
 
 1634    const OUString 
aName = pFrameFormat->
GetName() + 
"-ColumnHeaders";
 
 1673    while( aIter != aVisList.
end() )
 
 1675        const SwAccessibleChild& rLower = *aIter;
 
 1680        else if( rLower.GetSwFrame() )
 
 1683            if ( !rLower.GetSwFrame()->IsRowFrame() ||
 
 1688                                                            rLower.GetSwFrame(),
 
 1698uno::Reference< XAccessible> SAL_CALL
 
 1703        throw lang::IndexOutOfBoundsException();
 
 1710uno::Reference< XAccessibleTable >
 
 1713    return uno::Reference< XAccessibleTable >();
 
 1716uno::Reference< XAccessibleTable >
 
 1719    return uno::Reference< XAccessibleTable >();
 
 1726    static constexpr OUStringLiteral sImplName
 
 1727        = 
u"com.sun.star.comp.Writer.SwAccessibleTableColumnHeadersView";
 
constexpr OUStringLiteral sAccessibleServiceName
 
const unsigned int SELECTION_WITH_NUM
 
o3tl::sorted_vector< sal_Int32 > Int32Set_Impl
 
constexpr tools::Long Y() const
 
void Move(tools::Long nHorzMove, tools::Long nVertMove)
 
constexpr tools::Long X() const
 
constexpr tools::Long getX() const
 
constexpr tools::Long getY() const
 
bool StartListening(SvtBroadcaster &rBroadcaster)
 
const Color & GetColor() const
 
const_iterator end() const
 
const_iterator begin() const
 
virtual void Dispose(bool bRecursive, bool bCanSkipInvisible=true)
 
virtual sal_Int64 SAL_CALL getAccessibleChildCount() override
 
const OUString & GetName() const
 
void SetName(const OUString &rName)
 
virtual void InvalidateChildPosOrSize(const sw::access::SwAccessibleChild &rFrameOrObj, const SwRect &rFrame)
 
void FireAccessibleEvent(css::accessibility::AccessibleEventObject &rEvent)
 
virtual void GetStates(sal_Int64 &rStateSet)
 
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
 
virtual void DisposeChild(const sw::access::SwAccessibleChild &rFrameOrObj, bool bRecursive, bool bCanSkipInvisible)
 
SwAccessibleMap * GetMap()
 
void NotRegisteredAtAccessibleMap()
 
bool Select(SwPaM *pPaM, SdrObject *pObj, bool bAdd)
 
SwCursorShell * GetCursorShell()
convenience method to get SwCursorShell through accessibility map
 
static OUString GetResource(TranslateId pResId, const OUString *pArg1=nullptr, const OUString *pArg2=nullptr)
 
virtual void InvalidatePosOrSize(const SwRect &rFrame)
 
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int64 nIndex) override
 
bool IsInPagePreview() const
 
static sal_Int32 GetChildCount(SwAccessibleMap &rAccMap, const SwRect &rVisArea, const SwFrame *pFrame, bool bInPagePreviewr)
 
static bool GetChildIndex(SwAccessibleMap &rAccMap, const SwRect &rVisArea, const SwFrame &rFrame, const sw::access::SwAccessibleChild &rChild, sal_Int32 &rPos, bool bInPagePreview)
 
static sw::access::SwAccessibleChild GetChild(SwAccessibleMap &rAccMap, const SwRect &rVisArea, const SwFrame &rFrame, sal_Int32 &rPos, bool bInPagePreview)
 
const SwFrame * GetFrame() const
 
OUString GetFormattedPageNumber() const
 
const SwRect & GetVisArea() const
 
css::uno::Reference< css::accessibility::XAccessible > GetContext(const SwFrame *pFrame, bool bCreate=true)
 
Int32Set_Impl::const_iterator GetRowIter(sal_Int32 nRow) const
 
sal_Int32 GetRowCount() const
 
const SwTabFrame * mpTabFrame
 
void GetSelection(const Point &rTabPos, const SwRect &rArea, const SwSelBoxes &rSelBoxes, const SwFrame *pFrame, SwAccTableSelHandler_Impl &rSelHdl, bool bColumns) const
 
const SwFrame * GetCellAtPos(sal_Int32 nLeft, sal_Int32 nTop) const
 
const SwFrame * GetCell(sal_Int32 nRow, sal_Int32 nColumn, SwAccessibleTable *pThis) const
 
SwAccessibleMap & mrAccMap
 
bool CompareExtents(const SwAccessibleTableData_Impl &r) const
 
SwAccessibleTableData_Impl(SwAccessibleMap &rAccMap, const SwTabFrame *pTabFrame, bool bIsInPagePreview, bool bOnlyTableColumnHeader=false)
 
const Int32Set_Impl & GetRows() const
 
const Int32Set_Impl & GetColumns() const
 
const Point & GetTablePos() const
 
void CollectData(const SwFrame *pFrame)
 
void CheckRowAndCol(sal_Int32 nRow, sal_Int32 nCol, SwAccessibleTable *pThis) const
 
bool IncludeRow(const SwFrame &rFrame) const
 
sal_Int32 GetColumnCount() const
 
Int32Set_Impl::const_iterator GetColumnIter(sal_Int32 nCol) const
 
bool FindCell(const Point &rPos, const SwFrame *pFrame, bool bExact, const SwFrame *&rFrame) const
 
bool mbOnlyTableColumnHeader
 
void SetTablePos(const Point &rPos)
 
virtual void InvalidateChildPosOrSize(const sw::access::SwAccessibleChild &rFrameOrObj, const SwRect &rFrame) override
 
sal_Int32 SAL_CALL getBackground() override
 
bool HasTableData() const
 
virtual void SAL_CALL clearAccessibleSelection() override
 
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCellAt(sal_Int32 nRow, sal_Int32 nColumn) override
 
virtual sal_Bool SAL_CALL selectColumn(sal_Int32 column) override
 
virtual sal_Int64 SAL_CALL getSelectedAccessibleChildCount() override
 
virtual void DisposeChild(const sw::access::SwAccessibleChild &rFrameOrObj, bool bRecursive, bool bCanSkipInvisible) override
 
virtual ~SwAccessibleTable() override
 
virtual OUString SAL_CALL getAccessibleDescription() override
Return this object's description.
 
virtual sal_Bool SAL_CALL isAccessibleSelected(sal_Int32 nRow, sal_Int32 nColumn) override
 
virtual OUString SAL_CALL getAccessibleRowDescription(sal_Int32 nRow) override
 
virtual void InvalidatePosOrSize(const SwRect &rOldBox) override
 
virtual OUString SAL_CALL getImplementationName() override
Returns an identifier for the implementation of this object.
 
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Returns a list of all supported services.
 
virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleRows() override
 
virtual sal_Bool SAL_CALL selectRow(sal_Int32 row) override
 
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCaption() override
 
bool IsChildSelected(sal_Int64 nChildIndex) const
 
virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleColumns() override
 
virtual sal_Int32 SAL_CALL getAccessibleRowExtentAt(sal_Int32 nRow, sal_Int32 nColumn) override
 
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &aType) override
 
virtual sal_Bool SAL_CALL isAccessibleRowSelected(sal_Int32 nRow) override
 
SwAccessibleTableData_Impl & GetTableData()
 
const SwTableBox * GetTableBox(sal_Int64) const
get the SwTableBox* for the given child
 
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleSummary() override
 
SwAccessibleTable(std::shared_ptr< SwAccessibleMap > const &pInitMap, const SwTabFrame *pTableFrame)
 
virtual std::unique_ptr< SwAccessibleTableData_Impl > CreateNewTableData()
 
virtual sal_Int64 SAL_CALL getAccessibleIndex(sal_Int32 nRow, sal_Int32 nColumn) override
 
void AddSelectionCell(SwAccessibleContext *, bool bAddOrRemove)
 
virtual sal_Bool SAL_CALL isAccessibleColumnSelected(sal_Int32 nColumn) override
 
virtual sal_Bool SAL_CALL unselectColumn(sal_Int32 column) override
 
virtual void Dispose(bool bRecursive, bool bCanSkipInvisible=true) override
 
virtual void GetStates(sal_Int64 &rStateSet) override
 
virtual void Notify(const SfxHint &) override
 
virtual sal_Int32 SAL_CALL getAccessibleColumnCount() override
 
std::unique_ptr< SwAccessibleTableData_Impl > mpTableData
 
virtual sal_Int32 SAL_CALL getAccessibleRow(sal_Int64 nChildIndex) override
 
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
 
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
 
virtual void SAL_CALL selectAccessibleChild(sal_Int64 nChildIndex) override
 
virtual sal_Int32 SAL_CALL getAccessibleColumn(sal_Int64 nChildIndex) override
 
virtual sal_Bool SAL_CALL supportsService(const OUString &sServiceName) override
Return whether the specified service is supported by this class.
 
virtual sal_Bool SAL_CALL unselectRow(sal_Int32 row) override
 
virtual sal_Bool SAL_CALL isAccessibleChildSelected(sal_Int64 nChildIndex) override
 
virtual void SAL_CALL selectAllAccessibleChildren() override
 
virtual void SAL_CALL deselectAccessibleChild(sal_Int64 nChildIndex) override
 
virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleRowHeaders() override
 
virtual sal_Int32 SAL_CALL getAccessibleColumnExtentAt(sal_Int32 nRow, sal_Int32 nColumn) override
 
sal_Int64 GetIndexOfSelectedChild(sal_Int64 nSelectedChildIndex) const
 
virtual OUString SAL_CALL getAccessibleColumnDescription(sal_Int32 nColumn) override
 
virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleColumnHeaders() override
 
const SwSelBoxes * GetSelBoxes() const
 
void FireTableChangeEvent(const SwAccessibleTableData_Impl &rTableData)
 
void SetDesc(const OUString &sNewDesc)
 
void FireSelectionEvent()
 
virtual sal_Int32 SAL_CALL getAccessibleRowCount() override
 
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild(sal_Int64 nSelectedChildIndex) override
 
const SvxBrushItem & GetBackground(bool=true) const
 
SwCellFrame is one table cell in the document layout.
 
const SwTableBox * GetTabBox() const
 
const SwPaM * GetTableCrs() const
 
const SwTableNode * IsCursorInTable() const
Check if Point of current cursor is placed within a table.
 
bool MoveTable(SwWhichTable, SwMoveFnCollection const &)
 
SwCursor * GetCursor(bool bMakeTableCursor=true) const
Return pointer to the current shell cursor.
 
void EndAction(const bool bIdleEnd=false)
 
const SwShellTableCursor * GetTableCursor() const
 
const SwRect & getFrameArea() const
 
Base class of the Writer layout elements.
 
const SwAttrSet * GetAttrSet() const
WARNING: this may not return correct RES_PAGEDESC/RES_BREAK items for SwTextFrame,...
 
sal_uInt16 GetPhyPageNum() const
 
virtual const SwFrameFormat * GetFormat() const
 
const SwStartNode * FindTableBoxStartNode() const
 
PaM is Point and Mark: a selection of the document model.
 
const SwPosition * GetMark() const
 
virtual void SetMark()
Unless this is called, the getter method of Mark will return Point.
 
bool Move(SwMoveFnCollection const &fnMove=fnMoveForward, SwGoInDoc fnGo=GoInContent)
Movement of cursor.
 
const SwPosition * GetPoint() const
 
Of course Writer needs its own rectangles.
 
void Top(const tools::Long nTop)
 
void Right(const tools::Long nRight)
 
void Bottom(const tools::Long nBottom)
 
void Pos(const Point &rNew)
 
bool Overlaps(const SwRect &rRect) const
 
void Left(const tools::Long nLeft)
 
Starts a section of nodes in the document model.
 
SwTabFrame is one table in the document layout, containing rows (which contain cells).
 
bool IsInHeadline(const SwFrame &rFrame) const
 
SwTableBox is one table cell in the document model.
 
const SwStartNode * GetSttNd() const
 
const SwSelBoxes & GetSelectedBoxes() const
 
SwTableLine is one table row in the document model.
 
sal_uInt16 GetPos(const SwTableLine *pBox) const
 
const SwTable & GetTable() const
 
SwTableLines & GetTabLines()
 
css::uno::Sequence< css::uno::Type > SAL_CALL getTypes()
 
const_iterator upper_bound(const Value &x) const
 
std::vector< Value >::difference_type difference_type
 
const_iterator begin() const
 
std::vector< Value >::const_iterator const_iterator
 
const_iterator find(const Value &x) const
 
const_iterator end() const
 
std::pair< const_iterator, bool > insert(Value &&x)
 
const_iterator lower_bound(const Value &x) const
 
constexpr ::Color COL_AUTO(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
 
virtual SotClipboardFormatId GetFormat(const TransferableDataHelper &aHelper) override
 
#define SAL_WARN_IF(condition, area, stream)
 
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
 
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
 
enumrange< T >::Iterator begin(enumrange< T >)
 
bool GoInNode(SwPaM &rPam, SwMoveFnCollection const &fnMove)
 
SwMoveFnCollection const  & fnTableEnd
 
SwMoveFnCollection const  & fnMoveForward
SwPam::Move()/Find() default argument.
 
bool GotoCurrTable(SwPaM &rCurrentCursor, SwMoveFnCollection const &fnPosTable, bool bInReadOnly)