diff options
Diffstat (limited to '')
-rw-r--r-- | offapi/com/sun/star/rendering/XSprite.idl | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/offapi/com/sun/star/rendering/XSprite.idl b/offapi/com/sun/star/rendering/XSprite.idl new file mode 100644 index 000000000..3186fc1ff --- /dev/null +++ b/offapi/com/sun/star/rendering/XSprite.idl @@ -0,0 +1,190 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ +#ifndef __com_sun_star_rendering_XSprite_idl__ +#define __com_sun_star_rendering_XSprite_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/geometry/RealPoint2D.idl> +#include <com/sun/star/geometry/AffineMatrix2D.idl> +#include <com/sun/star/rendering/ViewState.idl> +#include <com/sun/star/rendering/RenderState.idl> + +module com { module sun { module star { module rendering { + +/** Interface to control a sprite object.<p> + + This is the basic interface to control a sprite object on a + XSpriteCanvas. Sprites are moving, back-buffered + objects.<p> + */ +interface XSprite : ::com::sun::star::uno::XInterface +{ + /** Set overall transparency of the sprite.<p> + + This method is useful for e.g. fading in/out of animations.<p> + + Please note that if this sprite is not animated, the + associated XSpriteCanvas does not update changed + sprites automatically, but has to be told to do so via + XSpriteCanvas::updateScreen().<p> + + @param nAlpha + New global alpha value to composite this sprite with the + background. Valid range is [0,1]. + + @throws com::sun::star::lang::IllegalArgumentException + if nAlpha is not within the permissible range. + */ + void setAlpha( [in] double nAlpha ) + raises (com::sun::star::lang::IllegalArgumentException); + + + /** Move sprite to the specified position.<p> + + The position specified here is first transformed by the + combined view and render transformation. The resulting + position is then used as the output position (also in device + coordinates) of the rendered sprite content.<p> + + Please note that if this sprite is not animated, the + associated XSpriteCanvas does not update changed sprites + automatically, but has to be told to do so via + XSpriteCanvas::updateScreen().<p> + + @param aNewPos + The new position, in user coordinate space, to move the sprite to. + + @param aViewState + The view state to be used when interpreting aNewPos. + + @param aRenderState + The render state to be used when interpreting aNewPos. + + @throws com::sun::star::lang::IllegalArgumentException + if one of the view and render state parameters are outside the + specified range. + */ + void move( [in] ::com::sun::star::geometry::RealPoint2D aNewPos, [in] ViewState aViewState, [in] RenderState aRenderState ) + raises (com::sun::star::lang::IllegalArgumentException); + + + /** Apply a local transformation to the sprite.<p> + + The given transformation matrix locally transforms the sprite + shape. If this transformation contains translational + components, be aware that sprite content moved beyond the + sprite area (a box from (0,0) to (spriteWidth,spriteHeight)) + might (but need not) be clipped. Use + XSprite::move() to change the sprite location + on screen. The canvas implementations are free, if they have a + cached representation of the sprite at hand, to transform only + this cached representation (e.g. a bitmap), instead of + re-rendering the sprite from first principles. This is usually + the case for an implementation of a XCustomSprite + interface, since it typically has no other cached pictorial + information at hand.<p> + + Please note that if this sprite is not animated, the + associated XSpriteCanvas does not update changed + sprites automatically, but has to be told to do so via + XSpriteCanvas::updateScreen().<p> + + @param aTransformation + The transformation to apply to the sprite shape. + + @throws com::sun::star::lang::IllegalArgumentException + if the given transformation matrix is singular. + */ + void transform( [in] com::sun::star::geometry::AffineMatrix2D aTransformation ) + raises (com::sun::star::lang::IllegalArgumentException); + + + /** Apply a clipping to the shape output.<p> + + The given clip poly-polygon is always interpreted in device + coordinate space. As the sprite has its own local coordinate + system, with its origin on screen being equal to its current + position, the clip poly-polygon's origin will always coincide + with the sprite's origin. Furthermore, if any sprite + transformation is set via transform(), the clip is subject to + this transformation, too. The implementation is free, if it + has a cached representation of the sprite at hand, to + clip-output only this cached representation (e.g. a bitmap), + instead of re-rendering the sprite from first principles. This + is usually the case for an implementation of a + XCustomSprite interface, since it typically has + no other cached pictorial information at hand.<p> + + Please note that if this sprite is not animated, the + associated XSpriteCanvas does not update changed + sprites automatically, but has to be told to do so via + XSpriteCanvas::updateScreen().<p> + + Specifying an empty interface denotes no clipping, + i.e. everything contained in the sprite will be visible + (subject to device-dependent constraints, of + course). Specifying an empty XPolyPolygon2D, i.e. a + poly-polygon containing zero polygons, or an XPolyPolygon2D + with any number of empty sub-polygons, denotes the NULL + clip. That means, nothing from the sprite will be visible.<p> + + @param aClip + The clip poly-polygon to apply. + */ + void clip( [in] XPolyPolygon2D aClip ); + + + /** Set sprite priority.<p> + + The sprite priority determines the order of rendering relative + to all other sprites of the associated canvas. The higher the + priority, the later will the sprite be rendered, or, in other + words, the closer to the screen surface the sprite is shown.<p> + + @param nPriority + New sprite priority value to serve as the sort key when + determining sprite rendering order. Avoid NaNs and other + irregular floating point values here, the order position for + sprites with such a priority value is undefined. + */ + void setPriority( [in] double nPriority ); + + + /** Make the sprite visible.<p> + + This method makes the sprite visible on the canvas it was + created on.<p> + */ + void show(); + + + /** Make the sprite invisible.<p> + + This method makes the sprite invisible.<p> + */ + void hide(); + +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |