summaryrefslogtreecommitdiffstats
path: root/offapi/com/sun/star/rendering/XSprite.idl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--offapi/com/sun/star/rendering/XSprite.idl190
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: */