1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef _SD_ACCESSIBILITY_ACCESSIBLE_VIEW_FORWARDER_HXX
25*b1cdbd2cSJim Jagielski #define _SD_ACCESSIBILITY_ACCESSIBLE_VIEW_FORWARDER_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <svx/IAccessibleViewForwarder.hxx>
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski class SdrPaintView;
30*b1cdbd2cSJim Jagielski class OutputDevice;
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski namespace accessibility {
33*b1cdbd2cSJim Jagielski 
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski /**	<p>This class provides the means to transform between internal coordinates
36*b1cdbd2cSJim Jagielski     and screen coordinates without giving direct access to the underlying
37*b1cdbd2cSJim Jagielski     view.  It represents a certain window.  A call to
38*b1cdbd2cSJim Jagielski     <method>GetVisArea</method> returns the corresponding visible
39*b1cdbd2cSJim Jagielski     rectangle.</p>
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski     @attention
42*b1cdbd2cSJim Jagielski         Note, that modifications of the underlying view that lead to
43*b1cdbd2cSJim Jagielski         different transformations between internal and screen coordinates or
44*b1cdbd2cSJim Jagielski         change the validity of the forwarder have to be signaled seperately.
45*b1cdbd2cSJim Jagielski */
46*b1cdbd2cSJim Jagielski class AccessibleViewForwarder
47*b1cdbd2cSJim Jagielski     :	public IAccessibleViewForwarder
48*b1cdbd2cSJim Jagielski {
49*b1cdbd2cSJim Jagielski public:
50*b1cdbd2cSJim Jagielski     //=====  internal  ========================================================
51*b1cdbd2cSJim Jagielski 
52*b1cdbd2cSJim Jagielski     AccessibleViewForwarder (SdrPaintView* pView, OutputDevice& rDevice);
53*b1cdbd2cSJim Jagielski 
54*b1cdbd2cSJim Jagielski 	virtual ~AccessibleViewForwarder (void);
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski     //=====  IAccessibleViewforwarder  ========================================
57*b1cdbd2cSJim Jagielski 
58*b1cdbd2cSJim Jagielski     /** This method informs you about the state of the forwarder.  Do not
59*b1cdbd2cSJim Jagielski         use it when the returned value is <false/>.
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski     	@return
62*b1cdbd2cSJim Jagielski             Return <true/> if the view forwarder is valid and <false/> else.
63*b1cdbd2cSJim Jagielski      */
64*b1cdbd2cSJim Jagielski 	virtual sal_Bool IsValid (void) const;
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski     /** Returns the area of the underlying document that is visible in the
67*b1cdbd2cSJim Jagielski     * corresponding window.
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski     	@return
70*b1cdbd2cSJim Jagielski             The rectangle of the visible part of the document.
71*b1cdbd2cSJim Jagielski      */
72*b1cdbd2cSJim Jagielski     virtual Rectangle GetVisibleArea() const;
73*b1cdbd2cSJim Jagielski 
74*b1cdbd2cSJim Jagielski     /** Transform the specified point from internal coordinates to an
75*b1cdbd2cSJim Jagielski         absolute screen position.
76*b1cdbd2cSJim Jagielski 
77*b1cdbd2cSJim Jagielski     	@param rPoint
78*b1cdbd2cSJim Jagielski             Point in internal coordinates.
79*b1cdbd2cSJim Jagielski 
80*b1cdbd2cSJim Jagielski         @return
81*b1cdbd2cSJim Jagielski             The same point but in screen coordinates relative to the upper
82*b1cdbd2cSJim Jagielski             left corner of the (current) screen.
83*b1cdbd2cSJim Jagielski      */
84*b1cdbd2cSJim Jagielski     virtual Point LogicToPixel (const Point& rPoint) const;
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski     /** Transform the specified size from internal coordinates to a screen
87*b1cdbd2cSJim Jagielski     * position.
88*b1cdbd2cSJim Jagielski 
89*b1cdbd2cSJim Jagielski     	@param rSize
90*b1cdbd2cSJim Jagielski             Size in internal coordinates.
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski         @return
93*b1cdbd2cSJim Jagielski             The same size but in screen coordinates.
94*b1cdbd2cSJim Jagielski      */
95*b1cdbd2cSJim Jagielski     virtual Size LogicToPixel (const Size& rSize) const;
96*b1cdbd2cSJim Jagielski 
97*b1cdbd2cSJim Jagielski     /** Transform the specified point from absolute screen coordinates to
98*b1cdbd2cSJim Jagielski         internal coordinates.
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski     	@param rPoint
101*b1cdbd2cSJim Jagielski             Point in screen coordinates relative to the upper left corner of
102*b1cdbd2cSJim Jagielski             the (current) screen.
103*b1cdbd2cSJim Jagielski 
104*b1cdbd2cSJim Jagielski         @return
105*b1cdbd2cSJim Jagielski             The same point but in internal coordinates.
106*b1cdbd2cSJim Jagielski      */
107*b1cdbd2cSJim Jagielski     virtual Point PixelToLogic (const Point& rPoint) const;
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski     /** Transform the specified Size from screen coordinates to internal
110*b1cdbd2cSJim Jagielski         coordinates.
111*b1cdbd2cSJim Jagielski 
112*b1cdbd2cSJim Jagielski     	@param rSize
113*b1cdbd2cSJim Jagielski             Size in screen coordinates.
114*b1cdbd2cSJim Jagielski 
115*b1cdbd2cSJim Jagielski         @return
116*b1cdbd2cSJim Jagielski             The same size but in internal coordinates.
117*b1cdbd2cSJim Jagielski      */
118*b1cdbd2cSJim Jagielski     virtual Size PixelToLogic (const Size& rSize) const;
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski protected:
121*b1cdbd2cSJim Jagielski     SdrPaintView* mpView;
122*b1cdbd2cSJim Jagielski     sal_uInt16 mnWindowId;
123*b1cdbd2cSJim Jagielski     OutputDevice& mrDevice;
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski private:
126*b1cdbd2cSJim Jagielski     AccessibleViewForwarder (AccessibleViewForwarder&);
127*b1cdbd2cSJim Jagielski     AccessibleViewForwarder& operator= (AccessibleViewForwarder&);
128*b1cdbd2cSJim Jagielski };
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski } // end of namespace accessibility
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski #endif
133