1/*************************************************************************
2 *
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
6 *
7 * OpenOffice.org - a multi-platform office productivity suite
8 *
9 * This file is part of OpenOffice.org.
10 *
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
14 *
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org.  If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
25 *
26 ************************************************************************/
27
28#ifndef __com_sun_star_drawing_XPresenterHelper_idl__
29#define __com_sun_star_drawing_XPresenterHelper_idl__
30
31#ifndef __com_sun_star_awt_XWindow_idl__
32#include <com/sun/star/awt/XWindow.idl>
33#endif
34#ifndef __com_sun_star_rendering_XCanvas_idl__
35#include <com/sun/star/rendering/XCanvas.idl>
36#endif
37#ifndef __com_sun_star_rendering_XSpriteCanvas_idl__
38#include <com/sun/star/rendering/XSpriteCanvas.idl>
39#endif
40#ifndef __com_sun_star_awt_Rectangle_idl__
41#include <com/sun/star/awt/Rectangle.idl>
42#endif
43
44module com { module sun { module star { module drawing {
45
46constants CanvasFeature
47{
48    const short None = 0;
49    const short SpriteCanvas = 1;
50};
51
52/** This interface is a collection of functions that are necessary to
53    implement larger parts of the presenter screen as extension.  The
54    methods of this interface give access to services that can, at the
55    moment, only implemented in the Office core, not in an extension.
56
57    <p>With time some, maybe all, methods can moved to other, better suited,
58    interfaces.</p>
59*/
60interface XPresenterHelper
61{
62    /** Create a new window as child window of the given parent window.
63        @param xParentWindow
64            The parent window of the new window.
65        @param bCreateSystemChildWindow
66            When <TRUE/> then the new window will be a system window that,
67            in the context of the presenter screen, can not be painted over
68            by other windows that lie behind it.
69        @param bInitiallyVisible
70            When <TRUE/> the new window will be visible from the start,
71            i.e. a window listener will not receive a windowShown signal.
72        @param bEnableChildTransparentMode
73            When <TRUE/> the parent window is painted behind its child
74            windows. This is one half of allowing child windows to be
75            transparent.
76        @param bEnableParentClip
77            When <TRUE/> then the parent window is not clipped where its
78            child windows are painted.  This is the other half of allowing
79            child windows to be transparent.
80    */
81    ::com::sun::star::awt::XWindow createWindow (
82        [in] ::com::sun::star::awt::XWindow xParentWindow,
83        [in] boolean bCreateSystemChildWindow,
84        [in] boolean bInitiallyVisible,
85        [in] boolean bEnableChildTransparentMode,
86        [in] boolean bEnableParentClip);
87
88    /** Create a new canvas for the given window.  The new canvas is a
89        wrapper around the given shared canvas.  The wrapper only modifies
90        the origin in all output and clipping methods.
91        @param xUpdateCanvas
92            This canvas is used to call updateScreen() on.  May be <NULL/>
93        @param xUpdateWindow
94            The window that belongs to the update canvas.  May also be
95            <NULL/> (is expected to b <NULL/> whenever xUpdateCanvas is.)
96        @param xSharedCanvas
97            The canvas that is shared by the wrapper.
98        @param xSharedWindow
99            The window of the shared canvas.  This is used to determine the
100            proper offset.
101        @param xWindow
102            The canvas is created for this window.  Must not be <NULL/>
103    */
104    ::com::sun::star::rendering::XCanvas createSharedCanvas (
105        [in] ::com::sun::star::rendering::XSpriteCanvas xUpdateCanvas,
106        [in] ::com::sun::star::awt::XWindow xUpdateWindow,
107        [in] ::com::sun::star::rendering::XCanvas xSharedCanvas,
108        [in] ::com::sun::star::awt::XWindow xSharedWindow,
109        [in] ::com::sun::star::awt::XWindow xWindow);
110
111    /** Create a new canvas for the given window.
112        @param xWindow
113            The canvas is created for this window.  Must not be <NULL/>
114        @param nRequestedCanvasFeatureList
115            List of requested features that the new canvas should (has to)
116            provide.  Use only values from the <type>CanvasFeature</type>
117            constants group.
118        @param sOptionalCanvasServiceName
119            When an explicit service name is given then a new object of this
120            service is created.  This service name lets the caller select a
121            specific canvas implementation, e.g. with or without hardware
122            acceleration.
123    */
124    ::com::sun::star::rendering::XCanvas createCanvas (
125        [in] ::com::sun::star::awt::XWindow xWindow,
126        [in] short nRequestedCanvasFeatureList,
127        [in] string sOptionalCanvasServiceName);
128
129    /** Move the specified window to the top of its stacking order.  As a
130        result the window will be painted over all its overlapping
131        siblings.
132        @param xWindow
133            This window will be moved to the top of its stacking order.
134    */
135    void toTop (
136        [in] ::com::sun::star::awt::XWindow xWindow);
137
138    /** Load a bitmap from a file or other accessible resource that can be
139        located via a URL.
140        @param sURL
141            The URL of the bitmap.  For a file URL the bitmap is loaded from
142            the specified file.
143        @param xCanvas
144            The bitmap is created to be compatible, and possibly optimized,
145            for this canvas.
146    */
147    ::com::sun::star::rendering::XBitmap loadBitmap (
148        [in] string sURL,
149        [in] ::com::sun::star::rendering::XCanvas xCanvas);
150
151    /** Capture the mouse so that no other window will receive mouse events.
152        Note that this is a potentially dangerous method.  Not calling
153        releaseMouse eventually can lead to an unresponsive application.
154        @param xWindow
155            The window for which mouse events will be notified even when the
156            mouse pointer moves outside the window or over other windows.
157    */
158    void captureMouse (
159        [in] ::com::sun::star::awt::XWindow xWindow);
160
161    /** Release a previously captured mouse.
162        @param xWindow
163            The window from which the mouse will be released.
164    */
165    void releaseMouse (
166        [in] ::com::sun::star::awt::XWindow xWindow);
167
168    /** Return the bounding box of the given child window relative to the
169        direct or indirect parent window.
170    */
171    com::sun::star::awt::Rectangle getWindowExtentsRelative (
172        [in] ::com::sun::star::awt::XWindow xChildWindow,
173        [in] ::com::sun::star::awt::XWindow xParentWindow);
174};
175
176
177}; }; }; }; // ::com::sun::star::drawing
178
179#endif
180