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 #ifndef INCLUDED_SW_SOURCE_CORE_ACCESS_ACCNOTEXTFRAME_HXX
21 #define INCLUDED_SW_SOURCE_CORE_ACCESS_ACCNOTEXTFRAME_HXX
22 
23 #include "accframebase.hxx"
24 #include <com/sun/star/accessibility/XAccessibleImage.hpp>
25 #include <com/sun/star/accessibility/XAccessibleHypertext.hpp>
26 
27 class SwFlyFrame;
28 class SwNoTextNode;
29 
30 class SwAccessibleNoTextFrame : public  SwAccessibleFrameBase,
31                                 public css::accessibility::XAccessibleImage,
32                                 public css::accessibility::XAccessibleHypertext//Added by yangzhh for HyperLink
33 {
34     friend class SwAccessibleNoTextHyperlink;
35     css::uno::Reference< css::accessibility::XAccessibleHyperlink > m_xHyperlink;
36     OUString msTitle;
37     OUString msDesc;
38 
39 protected:
40     virtual ~SwAccessibleNoTextFrame() override;
41 
42     const SwNoTextNode *GetNoTextNode() const;
43 
44     virtual void Notify(const SfxHint&) override;
45 
46 public:
47     SwAccessibleNoTextFrame( std::shared_ptr<SwAccessibleMap> const& pInitMap,
48                              sal_Int16 nInitRole,
49                              const SwFlyFrame *pFlyFrame );
50 
51     // XAccessibleContext
52 
53     // #i73249# - Return the object's current name.
54     virtual OUString SAL_CALL
55         getAccessibleName() override;
56 
57     /// Return this object's description.
58     virtual OUString SAL_CALL
59         getAccessibleDescription() override;
60 
61     // XInterface methods need to be implemented to disambiguate
62     // between those inherited through SwAccessibleContext and
63     // XAccessibleImage.
64 
65     virtual css::uno::Any SAL_CALL queryInterface(
66         const css::uno::Type& aType ) override;
67 
acquire()68     virtual void SAL_CALL acquire(  ) throw () override
69         { SwAccessibleContext::acquire(); };
70 
release()71     virtual void SAL_CALL release(  ) throw () override
72         { SwAccessibleContext::release(); };
73 
74     // XTypeProvider
75     virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes(  ) override;
76 
77     // XAccessibleImage
78     virtual OUString SAL_CALL
79         getAccessibleImageDescription(  ) override;
80 
81     virtual sal_Int32 SAL_CALL
82         getAccessibleImageHeight(  ) override;
83 
84     virtual sal_Int32 SAL_CALL
85         getAccessibleImageWidth(  ) override;
86 
87     // The object is not visible any longer and should be destroyed
88     virtual void Dispose(bool bRecursive, bool bCanSkipInvisible = true) override;
89 
90     virtual sal_Int32 SAL_CALL getCaretPosition(  ) override;
91     virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) override;
92     virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) override;//Shen Zhen Jie changed sal_Unicode to sal_uInt32
93     virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const css::uno::Sequence< OUString >& aRequestedAttributes ) override;
94     virtual css::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) override;
95     virtual sal_Int32 SAL_CALL getCharacterCount(  ) override;
96     virtual sal_Int32 SAL_CALL getIndexAtPoint( const css::awt::Point& aPoint ) override;
97     virtual OUString SAL_CALL getSelectedText(  ) override;
98     virtual sal_Int32 SAL_CALL getSelectionStart(  ) override;
99     virtual sal_Int32 SAL_CALL getSelectionEnd(  ) override;
100     virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) override;
101     virtual OUString SAL_CALL getText(  ) override;
102     virtual OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) override;
103     virtual css::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) override;
104     virtual css::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) override;
105     virtual css::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) override;
106     virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) override;
107 
108     // XAccessibleHypertext
109     virtual sal_Int32 SAL_CALL getHyperLinkCount() override;
110     virtual css::uno::Reference< css::accessibility::XAccessibleHyperlink >
111     SAL_CALL getHyperLink( sal_Int32 nLinkIndex ) override;
112     virtual sal_Int32 SAL_CALL getHyperLinkIndex( sal_Int32 nCharIndex ) override;
113 
GetAccessibleMap()114     SwAccessibleMap *GetAccessibleMap(){ return GetMap();}
115 
116 public:
117     virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet> SAL_CALL
118         getAccessibleRelationSet() override;
119 };
120 
121 #endif
122 
123 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
124