| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef __com_sun_star_rendering_XBufferController_idl__ |
| #define __com_sun_star_rendering_XBufferController_idl__ |
| |
| #ifndef __com_sun_star_uno_XInterface_idl__ |
| #include <com/sun/star/uno/XInterface.idl> |
| #endif |
| #ifndef __com_sun_star_lang_IllegalArgumentException_idl__ |
| #include <com/sun/star/lang/IllegalArgumentException.idl> |
| #endif |
| |
| module com { module sun { module star { module rendering { |
| |
| /** Interface providing access to double/multi-buffer facilities of |
| screen devices.<p> |
| |
| This interface provides methods to enable and control |
| double/multi-buffering facilities on screen devices.<p> |
| |
| @since OpenOffice 2.0 |
| */ |
| published interface XBufferController : ::com::sun::star::uno::XInterface |
| { |
| /** Create the given number of background buffers.<p> |
| |
| There's one buffer implicitely available, which is the canvas |
| surface itself. Thus, calling <code>createBuffers(1)</code> |
| creates a double-buffered object.<p> |
| |
| @param nBuffers |
| The number of background<buffers requested. Must be greater |
| than 0. |
| |
| @return the number of actually generated buffers, which might |
| be between 0 (no double-buffering available) and nBuffers. |
| |
| @throws <type>com::sun::star::lang::IllegalArgumentException</type> |
| if nBuffers is smaller than one. |
| */ |
| long createBuffers( [in] long nBuffers ) |
| raises (com::sun::star::lang::IllegalArgumentException); |
| |
| //------------------------------------------------------------------------- |
| |
| /** Destroy all buffers generated via this object. |
| */ |
| void destroyBuffers(); |
| |
| //------------------------------------------------------------------------- |
| |
| /** Switch the display to show the specified buffer.<p> |
| |
| The method returns, when the switch is performed and the |
| selected buffer is shown on screen, or immediately when an |
| error occurs. If the switch was successful, subsequent render |
| operations will be directed to the new backbuffer.<p> |
| |
| Use this method if you need your screen display to be in sync |
| with other things, e.g. sound playback.<p> |
| |
| @param bUpdateAll |
| When <TRUE/>, update the whole screen. When <FALSE/>, |
| implementation is permitted to restrict update to areas the |
| canvas itself changed (e.g. because of render operations, or |
| changes on the sprites). The former is useful for updates |
| after window expose events, the latter for animation display. |
| |
| @return whether the switch was performed successfully. |
| |
| @throws <type>com::sun::star::lang::IllegalArgumentException</type> |
| if nBuffer is outside the permissible range. |
| */ |
| boolean showBuffer( [in] boolean bUpdateAll ); |
| |
| //------------------------------------------------------------------------- |
| |
| /** Schedule the display of the specified buffer.<p> |
| |
| The method returns, when the switching of the buffer is |
| successfully scheduled, or immediately when an error |
| occurs. If the switch was successful, subsequent render |
| operations will be directed to the new backbuffer. Note that, |
| if the buffer switching is exceedingly slow, or the frequency |
| of switchBuffer() is exceedingly high, the buffer scheduled |
| for display here might become the current render target |
| <em>before</em> it is fully displayed on screen. In this case, |
| any rendering operation to this buffer will block, until it is |
| safe to perform the operation without visible cluttering.<p> |
| |
| Use this method if you favor maximal render speed, but don't |
| necessarily require your screen display to be in sync with |
| other things, e.g. sound playback.<p> |
| |
| @param bUpdateAll |
| When <TRUE/>, update the whole screen. When <FALSE/>, |
| implementation is permitted to restrict update to areas the |
| canvas itself changed (e.g. because of render operations, or |
| changes on the sprites). The former is useful for updates |
| after window expose events, the latter for animation display. |
| |
| @return whether the switch was performed successfully. |
| */ |
| boolean switchBuffer( [in] boolean bUpdateAll ); |
| |
| }; |
| |
| }; }; }; }; |
| |
| #endif |