LibreOffice Module svx (master) 1
AccessibleShape.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20
21#ifndef INCLUDED_SVX_ACCESSIBLESHAPE_HXX
22#define INCLUDED_SVX_ACCESSIBLESHAPE_HXX
23
24#include <com/sun/star/accessibility/AccessibleScrollType.hpp>
25#include <com/sun/star/accessibility/TextSegment.hpp>
26#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
27#include <com/sun/star/accessibility/XAccessibleExtendedAttributes.hpp>
28#include <com/sun/star/accessibility/XAccessibleGroupPosition.hpp>
29#include <com/sun/star/accessibility/XAccessibleHypertext.hpp>
30#include <com/sun/star/awt/Point.hpp>
31#include <com/sun/star/awt/Rectangle.hpp>
32#include <com/sun/star/awt/Size.hpp>
33#include <com/sun/star/document/XShapeEventListener.hpp>
34#include <com/sun/star/lang/EventObject.hpp>
35#include <com/sun/star/uno/Any.hxx>
36#include <com/sun/star/uno/Reference.hxx>
37#include <com/sun/star/uno/Sequence.hxx>
38#include <com/sun/star/uno/Type.hxx>
39#include <com/sun/star/lang/XUnoTunnel.hpp>
43#include <rtl/ustring.hxx>
44#include <sal/types.h>
47#include <svx/svxdllapi.h>
48#include <memory>
49
50namespace com::sun::star {
51 namespace accessibility { class XAccessible; }
52 namespace accessibility { class XAccessibleEventListener; }
53 namespace accessibility { class XAccessibleHyperlink; }
54 namespace accessibility { class XAccessibleRelationSet; }
55 namespace beans { struct PropertyValue; }
56 namespace document { struct EventObject; }
57 namespace drawing { class XShape; }
58 namespace uno { class XInterface; }
59}
60
61class SdrObject;
62
63namespace accessibility {
64
65class AccessibleShapeInfo;
66class AccessibleTextHelper;
67class ChildrenManager;
68class IAccessibleParent;
69
95 : public AccessibleContextBase,
97 public css::accessibility::XAccessibleSelection,
98 public css::accessibility::XAccessibleExtendedAttributes,
99 public css::accessibility::XAccessibleGroupPosition,
100 public css::accessibility::XAccessibleHypertext,
102 public css::document::XShapeEventListener,
103 public css::lang::XUnoTunnel
104{
105public:
106 //===== internal ========================================================
107
124 const AccessibleShapeInfo& rShapeInfo,
125 const AccessibleShapeTreeInfo& rShapeTreeInfo);
126 //Solution: Overwrite the object's current name.
127 virtual OUString SAL_CALL getAccessibleName() override;
128 virtual OUString SAL_CALL getAccessibleDescription() override;
129 virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet> SAL_CALL getAccessibleRelationSet() override;
130//===== XAccessibleSelection ============================================
131
132 virtual void SAL_CALL selectAccessibleChild(
133 sal_Int64 nChildIndex ) override;
134
135 virtual sal_Bool SAL_CALL isAccessibleChildSelected(
136 sal_Int64 nChildIndex ) override;
137
138 virtual void SAL_CALL clearAccessibleSelection( ) override;
139
140 virtual void SAL_CALL selectAllAccessibleChildren( ) override;
141
142 virtual sal_Int64 SAL_CALL getSelectedAccessibleChildCount( ) override;
143
144 virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild(
145 sal_Int64 nSelectedChildIndex ) override;
146
147 virtual void SAL_CALL deselectAccessibleChild(
148 sal_Int64 nSelectedChildIndex ) override;
149
150 // ====== XAccessibleExtendedAttributes =====================================
151 virtual css::uno::Any SAL_CALL getExtendedAttributes() override ;
153 virtual sal_Int16 SAL_CALL getAccessibleRole() override;
154 //===== XAccessibleGroupPosition =========================================
155 virtual css::uno::Sequence< sal_Int32 > SAL_CALL
156 getGroupPosition( const css::uno::Any& rAny ) override;
157 virtual OUString SAL_CALL getObjectLink( const css::uno::Any& accoject ) override;
161 virtual ~AccessibleShape() override;
162
166 virtual void Init();
167
180 virtual bool SetState (sal_Int64 aState) override;
181
194 virtual bool ResetState (sal_Int64 aState) override;
195
207 bool GetState (sal_Int64 aState);
208
209
210 //===== XAccessibleContext ==============================================
211
213 virtual sal_Int64 SAL_CALL
214 getAccessibleChildCount() override;
215
225 virtual css::uno::Reference<
226 css::accessibility::XAccessible> SAL_CALL
227 getAccessibleChild (sal_Int64 nIndex) override;
228
229
231 virtual sal_Int64 SAL_CALL
232 getAccessibleStateSet() override;
233
235 virtual sal_Int64 SAL_CALL
236 getAccessibleIndexInParent() override;
237
238 //===== XAccessibleComponent ============================================
239
240 virtual css::uno::Reference<
241 css::accessibility::XAccessible > SAL_CALL
242 getAccessibleAtPoint (const css::awt::Point& aPoint) override;
243
244 virtual css::awt::Rectangle SAL_CALL getBounds() override;
245
246 virtual css::awt::Point SAL_CALL getLocation() override;
247
248 virtual css::awt::Point SAL_CALL getLocationOnScreen() override;
249
250 virtual css::awt::Size SAL_CALL getSize() override;
251
252 virtual sal_Int32 SAL_CALL getForeground() override;
253
254 virtual sal_Int32 SAL_CALL getBackground() override;
255
256 //===== XAccessibleEventBroadcaster =====================================
257
264 virtual void SAL_CALL
265 addAccessibleEventListener (
266 const css::uno::Reference<
267 css::accessibility::XAccessibleEventListener >& rxListener) override;
268
276 virtual void SAL_CALL
277 removeAccessibleEventListener (
278 const css::uno::Reference<
279 css::accessibility::XAccessibleEventListener >& rxListener) override;
280
281
282 //===== XInterface ======================================================
283
284 virtual css::uno::Any SAL_CALL
285 queryInterface (const css::uno::Type & rType) override;
286
287 virtual void SAL_CALL
288 acquire()
289 noexcept override;
290
291 virtual void SAL_CALL
292 release()
293 noexcept override;
294
295
296 //===== XServiceInfo ====================================================
297
300 virtual OUString SAL_CALL
301 getImplementationName() override;
302
303 virtual css::uno::Sequence< OUString> SAL_CALL
304 getSupportedServiceNames() override;
305
306 //===== XTypeProvider ===================================================
307
308 virtual css::uno::Sequence< css::uno::Type> SAL_CALL
309 getTypes() override;
310
311 //===== IAccessibleViewForwarderListener ================================
312 virtual void ViewForwarderChanged() override;
313
317 void disposing (const css::lang::EventObject& Source);
318
319 //===== document::XShapeEventListener ========================================
320
321 virtual void SAL_CALL
322 notifyShapeEvent (const css::document::EventObject& rEventObject) override;
323
324
325 //===== XUnoTunnel ========================================================
326
328
329 //===== XAccessibleHypertext ========================================================
330 virtual sal_Int32 SAL_CALL getHyperLinkCount() override;
331 virtual css::uno::Reference< css::accessibility::XAccessibleHyperlink >
332 SAL_CALL getHyperLink( sal_Int32 nLinkIndex ) override;
333 virtual sal_Int32 SAL_CALL getHyperLinkIndex( sal_Int32 nCharIndex ) override;
334 //===== XAccessibleText ==================================================
335 virtual sal_Int32 SAL_CALL getCaretPosition( ) override;
336 virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) override;
337 virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) override;//Shen Zhen Jie changed sal_Unicode to sal_uInt32; change back to sal_Unicode
338 virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const css::uno::Sequence< OUString >& aRequestedAttributes ) override;
339 virtual css::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) override;
340 virtual sal_Int32 SAL_CALL getCharacterCount( ) override;
341 virtual sal_Int32 SAL_CALL getIndexAtPoint( const css::awt::Point& aPoint ) override;
342 virtual OUString SAL_CALL getSelectedText( ) override;
343 virtual sal_Int32 SAL_CALL getSelectionStart( ) override;
344 virtual sal_Int32 SAL_CALL getSelectionEnd( ) override;
345 virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) override;
346 virtual OUString SAL_CALL getText( ) override;
347 virtual OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) override;
348 virtual css::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) override;
349 virtual css::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) override;
350 virtual css::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) override;
351 virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) override;
352 virtual sal_Bool SAL_CALL scrollSubstringTo( sal_Int32 nStartIndex, sal_Int32 nEndIndex, css::accessibility::AccessibleScrollType aScrollType) override;
353
354 //===== Misc ========================================================
355
356 const css::uno::Reference< css::drawing::XShape >&
357 GetXShape() const { return mxShape; }
358
363 void setIndexInParent(sal_Int32 _nIndex) { m_nIndexInParent = _nIndex; }
364
365protected:
367 std::unique_ptr<ChildrenManager> mpChildrenManager;
368
370 css::uno::Reference<
371 css::drawing::XShape> mxShape;
372
376
380
383 std::unique_ptr<AccessibleTextHelper> mpText;
384
388
392
396 virtual void SAL_CALL disposing() override;
397
402 virtual OUString
403 CreateAccessibleBaseName();
404
408 virtual OUString
409 CreateAccessibleName() override;
410
412 OUString
413 GetFullAccessibleName(AccessibleShape *shape);
414 virtual OUString GetStyle() const;
417 void UpdateStates();
418
419private:
421 AccessibleShape& operator= (const AccessibleShape&) = delete;
422 //Old accessible name
423 OUString aAccName;
424
430 void UpdateNameAndDescription();
431};
432
433} // end of namespace accessibility
434
435#endif
436
437/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Abstract DrawObject.
Definition: svdobj.hxx:260
@descr This class is a container for the information specific for a single shape that is passed to th...
This class bundles all information that is passed down the tree of accessible shapes so that each sha...
This base class provides a base implementation for all shapes.
void disposing(const css::lang::EventObject &Source)
Listen for disposing events of the model.
css::uno::Reference< css::drawing::XShape > mxShape
Reference to the actual shape.
sal_Int32 m_nIndexInParent
the index in parent.
std::unique_ptr< AccessibleTextHelper > mpText
The accessible text engine.
SdrObject * m_pShape
This object can be removed when we have an extra interface to ask if the shape is selected.
AccessibleShapeTreeInfo maShapeTreeInfo
Bundle of information passed to all shapes in a document tree.
std::unique_ptr< ChildrenManager > mpChildrenManager
Children manager. May be empty if there are no children.
const css::uno::Reference< css::drawing::XShape > & GetXShape() const
void setIndexInParent(sal_Int32 _nIndex)
set the index _nIndex at the accessible shape
IAccessibleParent * mpParent
This object can be used to modify the child list of our parent.
AccessibleShape(const AccessibleShape &)=delete
This interface contains methods missing from the XAccessibleContext interface that allow the modifica...
void Init()
sal_Int32 nIndex
css::uno::Sequence< OUString > getSupportedServiceNames()
OUString getImplementationName()
css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType, Interface1 *p1)
void GetState(const SdrMarkView *pSdrView, SfxItemSet &rSet)
#define UNO3_GETIMPLEMENTATION_DECL(classname)
uno::Reference< drawing::XShape > const mxShape
#define SVX_DLLPUBLIC
Definition: svxdllapi.h:28
unsigned char sal_Bool
sal_uInt16 sal_Unicode