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 __com_sun_star_drawing_XPresenterHelper_idl__
25*b1cdbd2cSJim Jagielski#define __com_sun_star_drawing_XPresenterHelper_idl__
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_awt_XWindow_idl__
28*b1cdbd2cSJim Jagielski#include <com/sun/star/awt/XWindow.idl>
29*b1cdbd2cSJim Jagielski#endif
30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_XCanvas_idl__
31*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/XCanvas.idl>
32*b1cdbd2cSJim Jagielski#endif
33*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_XSpriteCanvas_idl__
34*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/XSpriteCanvas.idl>
35*b1cdbd2cSJim Jagielski#endif
36*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_awt_Rectangle_idl__
37*b1cdbd2cSJim Jagielski#include <com/sun/star/awt/Rectangle.idl>
38*b1cdbd2cSJim Jagielski#endif
39*b1cdbd2cSJim Jagielski
40*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module drawing {
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielskiconstants CanvasFeature
43*b1cdbd2cSJim Jagielski{
44*b1cdbd2cSJim Jagielski    const short None = 0;
45*b1cdbd2cSJim Jagielski    const short SpriteCanvas = 1;
46*b1cdbd2cSJim Jagielski};
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielski/** This interface is a collection of functions that are necessary to
49*b1cdbd2cSJim Jagielski    implement larger parts of the presenter screen as extension.  The
50*b1cdbd2cSJim Jagielski    methods of this interface give access to services that can, at the
51*b1cdbd2cSJim Jagielski    moment, only implemented in the Office core, not in an extension.
52*b1cdbd2cSJim Jagielski
53*b1cdbd2cSJim Jagielski    <p>With time some, maybe all, methods can moved to other, better suited,
54*b1cdbd2cSJim Jagielski    interfaces.</p>
55*b1cdbd2cSJim Jagielski*/
56*b1cdbd2cSJim Jagielskiinterface XPresenterHelper
57*b1cdbd2cSJim Jagielski{
58*b1cdbd2cSJim Jagielski    /** Create a new window as child window of the given parent window.
59*b1cdbd2cSJim Jagielski        @param xParentWindow
60*b1cdbd2cSJim Jagielski            The parent window of the new window.
61*b1cdbd2cSJim Jagielski        @param bCreateSystemChildWindow
62*b1cdbd2cSJim Jagielski            When <TRUE/> then the new window will be a system window that,
63*b1cdbd2cSJim Jagielski            in the context of the presenter screen, can not be painted over
64*b1cdbd2cSJim Jagielski            by other windows that lie behind it.
65*b1cdbd2cSJim Jagielski        @param bInitiallyVisible
66*b1cdbd2cSJim Jagielski            When <TRUE/> the new window will be visible from the start,
67*b1cdbd2cSJim Jagielski            i.e. a window listener will not receive a windowShown signal.
68*b1cdbd2cSJim Jagielski        @param bEnableChildTransparentMode
69*b1cdbd2cSJim Jagielski            When <TRUE/> the parent window is painted behind its child
70*b1cdbd2cSJim Jagielski            windows. This is one half of allowing child windows to be
71*b1cdbd2cSJim Jagielski            transparent.
72*b1cdbd2cSJim Jagielski        @param bEnableParentClip
73*b1cdbd2cSJim Jagielski            When <TRUE/> then the parent window is not clipped where its
74*b1cdbd2cSJim Jagielski            child windows are painted.  This is the other half of allowing
75*b1cdbd2cSJim Jagielski            child windows to be transparent.
76*b1cdbd2cSJim Jagielski    */
77*b1cdbd2cSJim Jagielski    ::com::sun::star::awt::XWindow createWindow (
78*b1cdbd2cSJim Jagielski        [in] ::com::sun::star::awt::XWindow xParentWindow,
79*b1cdbd2cSJim Jagielski        [in] boolean bCreateSystemChildWindow,
80*b1cdbd2cSJim Jagielski        [in] boolean bInitiallyVisible,
81*b1cdbd2cSJim Jagielski        [in] boolean bEnableChildTransparentMode,
82*b1cdbd2cSJim Jagielski        [in] boolean bEnableParentClip);
83*b1cdbd2cSJim Jagielski
84*b1cdbd2cSJim Jagielski    /** Create a new canvas for the given window.  The new canvas is a
85*b1cdbd2cSJim Jagielski        wrapper around the given shared canvas.  The wrapper only modifies
86*b1cdbd2cSJim Jagielski        the origin in all output and clipping methods.
87*b1cdbd2cSJim Jagielski        @param xUpdateCanvas
88*b1cdbd2cSJim Jagielski            This canvas is used to call updateScreen() on.  May be <NULL/>
89*b1cdbd2cSJim Jagielski        @param xUpdateWindow
90*b1cdbd2cSJim Jagielski            The window that belongs to the update canvas.  May also be
91*b1cdbd2cSJim Jagielski            <NULL/> (is expected to b <NULL/> whenever xUpdateCanvas is.)
92*b1cdbd2cSJim Jagielski        @param xSharedCanvas
93*b1cdbd2cSJim Jagielski            The canvas that is shared by the wrapper.
94*b1cdbd2cSJim Jagielski        @param xSharedWindow
95*b1cdbd2cSJim Jagielski            The window of the shared canvas.  This is used to determine the
96*b1cdbd2cSJim Jagielski            proper offset.
97*b1cdbd2cSJim Jagielski        @param xWindow
98*b1cdbd2cSJim Jagielski            The canvas is created for this window.  Must not be <NULL/>
99*b1cdbd2cSJim Jagielski    */
100*b1cdbd2cSJim Jagielski    ::com::sun::star::rendering::XCanvas createSharedCanvas (
101*b1cdbd2cSJim Jagielski        [in] ::com::sun::star::rendering::XSpriteCanvas xUpdateCanvas,
102*b1cdbd2cSJim Jagielski        [in] ::com::sun::star::awt::XWindow xUpdateWindow,
103*b1cdbd2cSJim Jagielski        [in] ::com::sun::star::rendering::XCanvas xSharedCanvas,
104*b1cdbd2cSJim Jagielski        [in] ::com::sun::star::awt::XWindow xSharedWindow,
105*b1cdbd2cSJim Jagielski        [in] ::com::sun::star::awt::XWindow xWindow);
106*b1cdbd2cSJim Jagielski
107*b1cdbd2cSJim Jagielski    /** Create a new canvas for the given window.
108*b1cdbd2cSJim Jagielski        @param xWindow
109*b1cdbd2cSJim Jagielski            The canvas is created for this window.  Must not be <NULL/>
110*b1cdbd2cSJim Jagielski        @param nRequestedCanvasFeatureList
111*b1cdbd2cSJim Jagielski            List of requested features that the new canvas should (has to)
112*b1cdbd2cSJim Jagielski            provide.  Use only values from the <type>CanvasFeature</type>
113*b1cdbd2cSJim Jagielski            constants group.
114*b1cdbd2cSJim Jagielski        @param sOptionalCanvasServiceName
115*b1cdbd2cSJim Jagielski            When an explicit service name is given then a new object of this
116*b1cdbd2cSJim Jagielski            service is created.  This service name lets the caller select a
117*b1cdbd2cSJim Jagielski            specific canvas implementation, e.g. with or without hardware
118*b1cdbd2cSJim Jagielski            acceleration.
119*b1cdbd2cSJim Jagielski    */
120*b1cdbd2cSJim Jagielski    ::com::sun::star::rendering::XCanvas createCanvas (
121*b1cdbd2cSJim Jagielski        [in] ::com::sun::star::awt::XWindow xWindow,
122*b1cdbd2cSJim Jagielski        [in] short nRequestedCanvasFeatureList,
123*b1cdbd2cSJim Jagielski        [in] string sOptionalCanvasServiceName);
124*b1cdbd2cSJim Jagielski
125*b1cdbd2cSJim Jagielski    /** Move the specified window to the top of its stacking order.  As a
126*b1cdbd2cSJim Jagielski        result the window will be painted over all its overlapping
127*b1cdbd2cSJim Jagielski        siblings.
128*b1cdbd2cSJim Jagielski        @param xWindow
129*b1cdbd2cSJim Jagielski            This window will be moved to the top of its stacking order.
130*b1cdbd2cSJim Jagielski    */
131*b1cdbd2cSJim Jagielski    void toTop (
132*b1cdbd2cSJim Jagielski        [in] ::com::sun::star::awt::XWindow xWindow);
133*b1cdbd2cSJim Jagielski
134*b1cdbd2cSJim Jagielski    /** Load a bitmap from a file or other accessible resource that can be
135*b1cdbd2cSJim Jagielski        located via a URL.
136*b1cdbd2cSJim Jagielski        @param sURL
137*b1cdbd2cSJim Jagielski            The URL of the bitmap.  For a file URL the bitmap is loaded from
138*b1cdbd2cSJim Jagielski            the specified file.
139*b1cdbd2cSJim Jagielski        @param xCanvas
140*b1cdbd2cSJim Jagielski            The bitmap is created to be compatible, and possibly optimized,
141*b1cdbd2cSJim Jagielski            for this canvas.
142*b1cdbd2cSJim Jagielski    */
143*b1cdbd2cSJim Jagielski    ::com::sun::star::rendering::XBitmap loadBitmap (
144*b1cdbd2cSJim Jagielski        [in] string sURL,
145*b1cdbd2cSJim Jagielski        [in] ::com::sun::star::rendering::XCanvas xCanvas);
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim Jagielski    /** Capture the mouse so that no other window will receive mouse events.
148*b1cdbd2cSJim Jagielski        Note that this is a potentially dangerous method.  Not calling
149*b1cdbd2cSJim Jagielski        releaseMouse eventually can lead to an unresponsive application.
150*b1cdbd2cSJim Jagielski        @param xWindow
151*b1cdbd2cSJim Jagielski            The window for which mouse events will be notified even when the
152*b1cdbd2cSJim Jagielski            mouse pointer moves outside the window or over other windows.
153*b1cdbd2cSJim Jagielski    */
154*b1cdbd2cSJim Jagielski    void captureMouse (
155*b1cdbd2cSJim Jagielski        [in] ::com::sun::star::awt::XWindow xWindow);
156*b1cdbd2cSJim Jagielski
157*b1cdbd2cSJim Jagielski    /** Release a previously captured mouse.
158*b1cdbd2cSJim Jagielski        @param xWindow
159*b1cdbd2cSJim Jagielski            The window from which the mouse will be released.
160*b1cdbd2cSJim Jagielski    */
161*b1cdbd2cSJim Jagielski    void releaseMouse (
162*b1cdbd2cSJim Jagielski        [in] ::com::sun::star::awt::XWindow xWindow);
163*b1cdbd2cSJim Jagielski
164*b1cdbd2cSJim Jagielski    /** Return the bounding box of the given child window relative to the
165*b1cdbd2cSJim Jagielski        direct or indirect parent window.
166*b1cdbd2cSJim Jagielski    */
167*b1cdbd2cSJim Jagielski    com::sun::star::awt::Rectangle getWindowExtentsRelative (
168*b1cdbd2cSJim Jagielski        [in] ::com::sun::star::awt::XWindow xChildWindow,
169*b1cdbd2cSJim Jagielski        [in] ::com::sun::star::awt::XWindow xParentWindow);
170*b1cdbd2cSJim Jagielski};
171*b1cdbd2cSJim Jagielski
172*b1cdbd2cSJim Jagielski
173*b1cdbd2cSJim Jagielski}; }; }; }; // ::com::sun::star::drawing
174*b1cdbd2cSJim Jagielski
175*b1cdbd2cSJim Jagielski#endif
176