summaryrefslogtreecommitdiffstats
path: root/offapi/com/sun/star/rendering
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 16:51:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 16:51:28 +0000
commit940b4d1848e8c70ab7642901a68594e8016caffc (patch)
treeeb72f344ee6c3d9b80a7ecc079ea79e9fba8676d /offapi/com/sun/star/rendering
parentInitial commit. (diff)
downloadlibreoffice-940b4d1848e8c70ab7642901a68594e8016caffc.tar.xz
libreoffice-940b4d1848e8c70ab7642901a68594e8016caffc.zip
Adding upstream version 1:7.0.4.upstream/1%7.0.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'offapi/com/sun/star/rendering')
-rw-r--r--offapi/com/sun/star/rendering/ARGBColor.idl47
-rw-r--r--offapi/com/sun/star/rendering/AnimationAttributes.idl61
-rw-r--r--offapi/com/sun/star/rendering/AnimationRepeat.idl75
-rw-r--r--offapi/com/sun/star/rendering/BitmapCanvas.idl48
-rw-r--r--offapi/com/sun/star/rendering/BlendMode.idl56
-rw-r--r--offapi/com/sun/star/rendering/Canvas.idl35
-rw-r--r--offapi/com/sun/star/rendering/CanvasFactory.idl52
-rw-r--r--offapi/com/sun/star/rendering/Caret.idl64
-rw-r--r--offapi/com/sun/star/rendering/Color.idl34
-rw-r--r--offapi/com/sun/star/rendering/ColorComponent.idl32
-rw-r--r--offapi/com/sun/star/rendering/ColorComponentTag.idl134
-rw-r--r--offapi/com/sun/star/rendering/ColorProfile.idl37
-rw-r--r--offapi/com/sun/star/rendering/ColorSpaceType.idl120
-rw-r--r--offapi/com/sun/star/rendering/CompositeOperation.idl152
-rw-r--r--offapi/com/sun/star/rendering/EmphasisMark.idl73
-rw-r--r--offapi/com/sun/star/rendering/FillRule.idl56
-rw-r--r--offapi/com/sun/star/rendering/FloatingPointBitmapFormat.idl61
-rw-r--r--offapi/com/sun/star/rendering/FloatingPointBitmapLayout.idl103
-rw-r--r--offapi/com/sun/star/rendering/FontInfo.idl110
-rw-r--r--offapi/com/sun/star/rendering/FontMetrics.idl95
-rw-r--r--offapi/com/sun/star/rendering/FontRequest.idl107
-rw-r--r--offapi/com/sun/star/rendering/IntegerBitmapLayout.idl117
-rw-r--r--offapi/com/sun/star/rendering/InterpolationMode.idl87
-rw-r--r--offapi/com/sun/star/rendering/MtfRenderer.idl38
-rw-r--r--offapi/com/sun/star/rendering/Panose.idl61
-rw-r--r--offapi/com/sun/star/rendering/PanoseArmStyle.idl44
-rw-r--r--offapi/com/sun/star/rendering/PanoseContrast.idl42
-rw-r--r--offapi/com/sun/star/rendering/PanoseFamilyTypes.idl38
-rw-r--r--offapi/com/sun/star/rendering/PanoseLetterForm.idl48
-rw-r--r--offapi/com/sun/star/rendering/PanoseMidline.idl46
-rw-r--r--offapi/com/sun/star/rendering/PanoseProportion.idl42
-rw-r--r--offapi/com/sun/star/rendering/PanoseSerifStyle.idl48
-rw-r--r--offapi/com/sun/star/rendering/PanoseStrokeVariation.idl41
-rw-r--r--offapi/com/sun/star/rendering/PanoseWeight.idl44
-rw-r--r--offapi/com/sun/star/rendering/PanoseXHeight.idl40
-rw-r--r--offapi/com/sun/star/rendering/PathCapType.idl51
-rw-r--r--offapi/com/sun/star/rendering/PathJoinType.idl64
-rw-r--r--offapi/com/sun/star/rendering/RGBColor.idl42
-rw-r--r--offapi/com/sun/star/rendering/RenderState.idl95
-rw-r--r--offapi/com/sun/star/rendering/RenderingIntent.idl82
-rw-r--r--offapi/com/sun/star/rendering/RepaintResult.idl50
-rw-r--r--offapi/com/sun/star/rendering/StringContext.idl60
-rw-r--r--offapi/com/sun/star/rendering/StrokeAttributes.idl132
-rw-r--r--offapi/com/sun/star/rendering/TextDirection.idl47
-rw-r--r--offapi/com/sun/star/rendering/TextHit.idl64
-rw-r--r--offapi/com/sun/star/rendering/Texture.idl139
-rw-r--r--offapi/com/sun/star/rendering/TexturingMode.idl62
-rw-r--r--offapi/com/sun/star/rendering/ViewState.idl68
-rw-r--r--offapi/com/sun/star/rendering/VolatileContentDestroyedException.idl41
-rw-r--r--offapi/com/sun/star/rendering/XAnimatedSprite.idl173
-rw-r--r--offapi/com/sun/star/rendering/XAnimation.idl106
-rw-r--r--offapi/com/sun/star/rendering/XBezierPolyPolygon2D.idl160
-rw-r--r--offapi/com/sun/star/rendering/XBitmap.idl95
-rw-r--r--offapi/com/sun/star/rendering/XBitmapCanvas.idl113
-rw-r--r--offapi/com/sun/star/rendering/XBitmapPalette.idl109
-rw-r--r--offapi/com/sun/star/rendering/XBufferController.idl121
-rw-r--r--offapi/com/sun/star/rendering/XCachedPrimitive.idl61
-rw-r--r--offapi/com/sun/star/rendering/XCanvas.idl666
-rw-r--r--offapi/com/sun/star/rendering/XCanvasFont.idl109
-rw-r--r--offapi/com/sun/star/rendering/XColorSpace.idl244
-rw-r--r--offapi/com/sun/star/rendering/XCustomSprite.idl63
-rw-r--r--offapi/com/sun/star/rendering/XGraphicDevice.idl267
-rw-r--r--offapi/com/sun/star/rendering/XHalfFloatBitmap.idl75
-rw-r--r--offapi/com/sun/star/rendering/XHalfFloatReadOnlyBitmap.idl91
-rw-r--r--offapi/com/sun/star/rendering/XIeeeDoubleBitmap.idl119
-rw-r--r--offapi/com/sun/star/rendering/XIeeeDoubleReadOnlyBitmap.idl118
-rw-r--r--offapi/com/sun/star/rendering/XIeeeFloatBitmap.idl118
-rw-r--r--offapi/com/sun/star/rendering/XIeeeFloatReadOnlyBitmap.idl117
-rw-r--r--offapi/com/sun/star/rendering/XIntegerBitmap.idl127
-rw-r--r--offapi/com/sun/star/rendering/XIntegerBitmapColorSpace.idl272
-rw-r--r--offapi/com/sun/star/rendering/XIntegerReadOnlyBitmap.idl138
-rw-r--r--offapi/com/sun/star/rendering/XLinePolyPolygon2D.idl108
-rw-r--r--offapi/com/sun/star/rendering/XMtfRenderer.idl37
-rw-r--r--offapi/com/sun/star/rendering/XParametricPolyPolygon2D.idl89
-rw-r--r--offapi/com/sun/star/rendering/XPolyPolygon2D.idl114
-rw-r--r--offapi/com/sun/star/rendering/XSimpleCanvas.idl246
-rw-r--r--offapi/com/sun/star/rendering/XSprite.idl190
-rw-r--r--offapi/com/sun/star/rendering/XSpriteCanvas.idl145
-rw-r--r--offapi/com/sun/star/rendering/XTextLayout.idl396
-rw-r--r--offapi/com/sun/star/rendering/XVolatileBitmap.idl46
80 files changed, 8118 insertions, 0 deletions
diff --git a/offapi/com/sun/star/rendering/ARGBColor.idl b/offapi/com/sun/star/rendering/ARGBColor.idl
new file mode 100644
index 000000000..04839fec7
--- /dev/null
+++ b/offapi/com/sun/star/rendering/ARGBColor.idl
@@ -0,0 +1,47 @@
+/* -*- 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_ARGBColor_idl__
+#define __com_sun_star_rendering_ARGBColor_idl__
+
+#include <com/sun/star/rendering/ColorComponent.idl>
+
+module com { module sun { module star { module rendering {
+
+/// ARGB color quad
+struct ARGBColor
+{
+ /** Alpha component.<p>
+
+ Valid range is [0,1.0], with 0.0 denoting fully transparent,
+ and 1.0 fully opaque.
+ */
+ ColorComponent Alpha;
+ /// Red component. Valid range is [0,1.0]
+ ColorComponent Red;
+ /// Green component. Valid range is [0,1.0]
+ ColorComponent Green;
+ /// Blue component. Valid range is [0,1.0]
+ ColorComponent Blue;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/AnimationAttributes.idl b/offapi/com/sun/star/rendering/AnimationAttributes.idl
new file mode 100644
index 000000000..2aab339b7
--- /dev/null
+++ b/offapi/com/sun/star/rendering/AnimationAttributes.idl
@@ -0,0 +1,61 @@
+/* -*- 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_AnimationAttributes_idl__
+#define __com_sun_star_rendering_AnimationAttributes_idl__
+
+#include <com/sun/star/geometry/RealSize2D.idl>
+
+module com { module sun { module star { module rendering {
+
+/** This structure contains attributes needed to run an animation.
+
+ @since OOo 2.0
+ */
+struct AnimationAttributes
+{
+ /// Preferred duration of the animation sequence in seconds.
+ double Duration;
+
+
+ /** Repeat mode of the animation sequence.<p>
+
+ This value determines how the [0,1] parameter space of the animation
+ should be swept through. Permissible values are given in
+ AnimationRepeat.<p>
+
+ @see AnimationRepeat.
+ */
+ byte RepeatMode;
+
+
+ /** Size of the untransformed animation sequence.<p>
+
+ This value specifies the size of the animation when rendered
+ with the identity view transform. This permits
+ e.g. XSprite implementations to cache rendered
+ animation content in finite-sized bitmaps.<p>
+ */
+ ::com::sun::star::geometry::RealSize2D UntransformedSize;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/AnimationRepeat.idl b/offapi/com/sun/star/rendering/AnimationRepeat.idl
new file mode 100644
index 000000000..24eae007c
--- /dev/null
+++ b/offapi/com/sun/star/rendering/AnimationRepeat.idl
@@ -0,0 +1,75 @@
+/* -*- 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_AnimationRepeat_idl__
+#define __com_sun_star_rendering_AnimationRepeat_idl__
+
+module com { module sun { module star { module rendering {
+
+/** This are the possible repeat modes for animations.<p>
+
+ These constants determine how the [0,1] parameter range of the
+ animation is driven through, thus defining the possible repeat
+ modes.<p>
+
+ @since OOo 2.0
+ */
+constants AnimationRepeat
+{
+ /** The [0,1] parameter range is swept through exactly once.<p>
+
+ The [0,1] parameter range is swept through exactly once,
+ starting with 0 and ending with 1.<p>
+ */
+ const byte ONE_SHOT=0;
+
+
+ /** The [0,1] parameter range is swept through exactly twice.<p>
+
+ The [0,1] parameter range is swept through exactly twice,
+ starting with 0, going to 1, and going back to 0. When
+ plotting the value over time, this yields a triangle curve.<p>
+ */
+ const byte ONE_SHOT_PINGPONG=1;
+
+
+ /** The [0,1] parameter range is swept through infinitely.<p>
+
+ The [0,1] parameter range is swept through infinitely,
+ starting with 0, going to 1, and going back to 0, and then
+ starting again. When plotting the value over time, this yields
+ a repeated triangle curve.<p>
+ */
+ const byte PINGPONG=2;
+
+
+ /** The [0,1] parameter range is swept through infinitely.<p>
+
+ The [0,1] parameter range is swept through infinitely,
+ starting with 0, going to 1, and starting with 0 again. When
+ plotting the value over time, this yields a repeated saw-tooth
+ curve.<p>
+ */
+ const byte REPEAT=3;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/BitmapCanvas.idl b/offapi/com/sun/star/rendering/BitmapCanvas.idl
new file mode 100644
index 000000000..4d75b2c2b
--- /dev/null
+++ b/offapi/com/sun/star/rendering/BitmapCanvas.idl
@@ -0,0 +1,48 @@
+/* -*- 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_BitmapCanvas_idl__
+#define __com_sun_star_rendering_BitmapCanvas_idl__
+
+#include <com/sun/star/rendering/XBitmap.idl>
+#include <com/sun/star/rendering/XBitmapCanvas.idl>
+
+
+module com { module sun { module star { module rendering {
+
+// TODO: Multiple-inheritance interfaces
+
+/** This service provides the interfaces for a XBitmapCanvas
+ */
+service BitmapCanvas
+{
+ /** Canvas interface, to issue rendering operations.
+ */
+ interface XBitmapCanvas;
+
+ /** Bitmap interface, to directly manipulate the pixel.
+ */
+ interface XBitmap;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/BlendMode.idl b/offapi/com/sun/star/rendering/BlendMode.idl
new file mode 100644
index 000000000..664626ef7
--- /dev/null
+++ b/offapi/com/sun/star/rendering/BlendMode.idl
@@ -0,0 +1,56 @@
+/* -*- 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_BlendMode_idl__
+#define __com_sun_star_rendering_BlendMode_idl__
+
+module com { module sun { module star { module rendering {
+
+/** These constants determine some extra ways how the primitive color
+ is combined with the background.<p>
+
+ @see CompositeOperation
+
+ Please refer to the PDF specification for explanations of this
+ constants.<p>
+ */
+constants BlendMode
+{
+ const byte NORMAL = 0;
+ const byte MULTIPLY = 1;
+ const byte SCREEN = 2;
+ const byte OVERLAY = 3;
+ const byte DARKEN = 4;
+ const byte LIGHTEN = 5;
+ const byte COLOR_DODGE = 6;
+ const byte COLOR_BURN = 7;
+ const byte HARD_LIGHT = 8;
+ const byte SOFT_LIGHT = 9;
+ const byte DIFFERENCE = 10;
+ const byte EXCLUSION = 11;
+ const byte HUE = 12;
+ const byte SATURATION = 13;
+ const byte COLOR = 14;
+ const byte LUMINOSITY = 15;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/Canvas.idl b/offapi/com/sun/star/rendering/Canvas.idl
new file mode 100644
index 000000000..0fdd03820
--- /dev/null
+++ b/offapi/com/sun/star/rendering/Canvas.idl
@@ -0,0 +1,35 @@
+/* -*- 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_Canvas_idl__
+#define __com_sun_star_rendering_Canvas_idl__
+
+#include <com/sun/star/rendering/XCanvas.idl>
+
+
+module com { module sun { module star { module rendering {
+
+/// Service providing an XCanvas interface
+service Canvas: XCanvas;
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/CanvasFactory.idl b/offapi/com/sun/star/rendering/CanvasFactory.idl
new file mode 100644
index 000000000..b7144c338
--- /dev/null
+++ b/offapi/com/sun/star/rendering/CanvasFactory.idl
@@ -0,0 +1,52 @@
+/* -*- 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_CanvasFactory_idl__
+#define __com_sun_star_rendering_CanvasFactory_idl__
+
+#include <com/sun/star/lang/XMultiComponentFactory.idl>
+
+
+module com { module sun { module star { module rendering {
+
+/** The CanvasFactory is used to create the Canvas
+ objects, evaluating the user's configuration preferences from
+
+ <code>/org.openoffice.VCL/Settings/Canvas/PreferredServices</code>.
+
+ The latter specifies a string list of service names to use.
+
+ <p>
+ Instantiating this service, you can use its
+ com::sun::star::lang::XMultiComponentFactory
+ interface to create Canvas objects, passing an empty string
+ as service specifier (default).
+ If you want to manually override the configured service list, you can pass
+ a service name to try first.
+ </p>
+
+ @since OOo 2.0
+*/
+service CanvasFactory : com::sun::star::lang::XMultiComponentFactory;
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/Caret.idl b/offapi/com/sun/star/rendering/Caret.idl
new file mode 100644
index 000000000..5677e798e
--- /dev/null
+++ b/offapi/com/sun/star/rendering/Caret.idl
@@ -0,0 +1,64 @@
+/* -*- 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_Caret_idl__
+#define __com_sun_star_rendering_Caret_idl__
+
+module com { module sun { module star { module rendering {
+
+/** This structure contains the caret information.<p>
+
+ This structure is used from the XTextLayout interface
+ to transport information regarding a text caret.<p>
+
+ @since OOo 2.0
+ */
+struct Caret
+{
+ /** This contains the main caret index.<p>
+
+ The main caret index corresponds to the insert position when
+ inserting text in the layout's main text direction.
+ */
+ long MainCaretIndex;
+
+ /** This contains the secondary caret index.<p>
+
+ The secondary caret index, when different from the main caret
+ index, corresponds to the insert position when inserting text
+ at a direction change opposite to the layout's main text
+ direction.
+ */
+ long SecondaryCaretIndex;
+
+ /** The angle of the caret.<p>
+
+ This member contains the rotation angle of the caret in
+ degrees, with 0 denoting an unrotated caret (the unrotated
+ caret orientation depends on the writing mode, horizontally or
+ vertically). The rotation angle is positive for
+ counter-clockwise rotations.<p>
+ */
+ double CaretAngle;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/Color.idl b/offapi/com/sun/star/rendering/Color.idl
new file mode 100644
index 000000000..f7a88a871
--- /dev/null
+++ b/offapi/com/sun/star/rendering/Color.idl
@@ -0,0 +1,34 @@
+/* -*- 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_Color_idl__
+#define __com_sun_star_rendering_Color_idl__
+
+#include <com/sun/star/rendering/ColorComponent.idl>
+
+module com { module sun { module star { module rendering {
+
+/// Shorthand for the device-dependent color components, and easier to read
+typedef sequence<ColorComponent> Color;
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/ColorComponent.idl b/offapi/com/sun/star/rendering/ColorComponent.idl
new file mode 100644
index 000000000..71a94a702
--- /dev/null
+++ b/offapi/com/sun/star/rendering/ColorComponent.idl
@@ -0,0 +1,32 @@
+/* -*- 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_ColorComponent_idl__
+#define __com_sun_star_rendering_ColorComponent_idl__
+
+module com { module sun { module star { module rendering {
+
+/// Shorthand for the device-dependent color components, and easier to read
+typedef double ColorComponent;
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/ColorComponentTag.idl b/offapi/com/sun/star/rendering/ColorComponentTag.idl
new file mode 100644
index 000000000..994d2aa1a
--- /dev/null
+++ b/offapi/com/sun/star/rendering/ColorComponentTag.idl
@@ -0,0 +1,134 @@
+/* -*- 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_ColorComponentTag_idl__
+#define __com_sun_star_rendering_ColorComponentTag_idl__
+
+module com { module sun { module star { module rendering {
+
+/** A collection of tags for the individual components of a color.<p>
+
+ Color components usually correspond to physical attributes like the
+ amount of red colorant contained in an output color. This constant
+ field enumerates the most common ones.
+
+ @since OOo 2.3
+ */
+constants ColorComponentTag
+{
+ /// Unspecified device color value
+ const byte DEVICE=0;
+
+ /// Red colorant from RGB color space
+ const byte RGB_RED=1;
+
+ /// Green colorant from RGB color space
+ const byte RGB_GREEN=2;
+
+ /// Blue colorant from RGB color space
+ const byte RGB_BLUE=3;
+
+ /// Cyan colorant from CMYK color space
+ const byte CMYK_CYAN=4;
+
+ /// Magenta colorant from CMYK color space
+ const byte CMYK_MAGENTA=5;
+
+ /// Yellow colorant from CMYK color space
+ const byte CMYK_YELLOW=6;
+
+ /// Black colorant from CMYK color space
+ const byte CMYK_BLACK=7;
+
+ /// Orange colorant from hexachrome color space
+ const byte CMYKOG_ORANGE=8;
+
+ /// Green colorant from hexachrome color space
+ const byte CMYKOG_GREEN=9;
+
+ /// Arbitrary extra spot color, e.g. Pantone
+ const byte SPOT=10;
+
+ /// Index into palette
+ const byte INDEX=11;
+
+ /// Alpha channel
+ const byte ALPHA=12;
+
+ /// Grey value. Used for monochrome color spaces
+ const byte GREY=13;
+
+ /** Premultiplied alpha channel<p>
+
+ Note that this alpha format actually influences the other color
+ components, in that their values are pre-multiplied with the
+ alpha value.<p>
+ */
+ const byte PREMULTIPLIED_ALPHA=14;
+
+ /// CieXYZ X value
+ const byte CIEXYZ_X=15;
+
+ /// CieXYZ Y value
+ const byte CIEXYZ_Y=16;
+
+ /// CieXYZ Z value
+ const byte CIEXYZ_Z=17;
+
+ /// CieLab L value
+ const byte CIELAB_L=18;
+
+ /// CieLab a value
+ const byte CIELAB_A=19;
+
+ /// CieLab b value
+ const byte CIELAB_B=20;
+
+ /// HSV H value
+ const byte HSV_H=21;
+
+ /// HSV S value
+ const byte HSV_S=22;
+
+ /// HSV V value
+ const byte HSV_V=23;
+
+ /// HSL H value
+ const byte HSL_H=24;
+
+ /// HSL S value
+ const byte HSL_S=25;
+
+ /// HSL L value
+ const byte HSL_L=26;
+
+ /// YCbCr Y value
+ const byte YCBCR_Y=27;
+
+ /// YCbCr Cb value
+ const byte YCBCR_CB=28;
+
+ /// YCbCr Cr value
+ const byte YCBCR_CR=29;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/ColorProfile.idl b/offapi/com/sun/star/rendering/ColorProfile.idl
new file mode 100644
index 000000000..ff47fde6a
--- /dev/null
+++ b/offapi/com/sun/star/rendering/ColorProfile.idl
@@ -0,0 +1,37 @@
+/* -*- 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_ColorProfile_idl__
+#define __com_sun_star_rendering_ColorProfile_idl__
+
+module com { module sun { module star { module rendering {
+
+/* TODO: There's still a lot open here! */
+
+/// ICC Color profile
+struct ColorProfile
+{
+ // TODO
+ byte dummy;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/ColorSpaceType.idl b/offapi/com/sun/star/rendering/ColorSpaceType.idl
new file mode 100644
index 000000000..88f9c67f8
--- /dev/null
+++ b/offapi/com/sun/star/rendering/ColorSpaceType.idl
@@ -0,0 +1,120 @@
+/* -*- 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_ColorSpaceType_idl__
+#define __com_sun_star_rendering_ColorSpaceType_idl__
+
+module com { module sun { module star { module rendering {
+
+/// Categories for color spaces
+constants ColorSpaceType
+{
+ /** Unspecified device color space - use conversion functions to
+ convert to standard color spaces
+ */
+ const byte DEVICE_COLOR=0;
+
+ /** Grey-value color space.<p>
+
+ Use this for monochrome images.
+ */
+ const byte GREY=1;
+
+ /** RGB color space
+ */
+ const byte RGB=2;
+
+ /** CMYK color space.<p>
+
+ See <a
+ href="http://en.wikipedia.org/wiki/CMYK">Wikipedia</a>
+ for a thorough explanation.
+ */
+ const byte CMYK=3;
+
+ /** CMYKOG color space.<p>
+
+ See <a
+ href="http://en.wikipedia.org/wiki/Hexachrome">Wikipedia</a>
+ for a thorough explanation.
+ */
+ const byte CMYKOG=4;
+
+ /** Standard CieXYZ color space.<p>
+
+ See <a
+ href="http://en.wikipedia.org/wiki/CIE_1931_color_space">Wikipedia</a>
+ for a thorough explanation.
+ */
+ const byte CIEXYZ=5;
+
+ /** Standard CieLab color space.<p>
+
+ See <a
+ href="http://en.wikipedia.org/wiki/Lab_color_space">Wikipedia</a>
+ for a thorough explanation. Preferable over CIEXYZ if
+ perceptual uniformity is an issue.
+ */
+ const byte CIELAB=6;
+
+ /** Standard sRGB color space.<p>
+
+ See <a
+ href="http://en.wikipedia.org/wiki/Srgb">Wikipedia</a>
+ for a thorough explanation.
+ */
+ const byte SRGB=7;
+
+ /** HSV color space.<p>
+
+ Hue saturation value. See <a
+ href="http://en.wikipedia.org/wiki/HSV_color_space">Wikipedia</a>
+ for a thorough explanation.
+ */
+ const byte HSV=8;
+
+ /** HSL color space.<p>
+
+ Hue saturation lightness. See <a
+ href="http://en.wikipedia.org/wiki/HSL_color_space">Wikipedia</a>
+ for a thorough explanation
+ */
+ const byte HSL=9;
+
+ /** YCbCr color space.<p>
+
+ See <a href="http://en.wikipedia.org/wiki/YCbCr">Wikipedia</a>
+ for a thorough explanation. This color space is common for
+ digital video.
+ */
+ const byte YCBCR=10;
+
+ /** Indexed color space.<p>
+
+ The color components of this color space are in fact indices
+ into a color map.
+ */
+ const byte INDEXED=11;
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/CompositeOperation.idl b/offapi/com/sun/star/rendering/CompositeOperation.idl
new file mode 100644
index 000000000..05e6e56e1
--- /dev/null
+++ b/offapi/com/sun/star/rendering/CompositeOperation.idl
@@ -0,0 +1,152 @@
+/* -*- 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_CompositeOperation_idl__
+#define __com_sun_star_rendering_CompositeOperation_idl__
+
+module com { module sun { module star { module rendering {
+
+/** These constants determine how the primitive color is combined with
+ the background.<p>
+
+ When performing these calculations, it is assumed that all color
+ values are premultiplied with the corresponding alpha values (if
+ no alpha is specified, 1.0 is assumed). Then, the following
+ general compositing operation is performed:
+ <p>
+ C = Ca * Fa + Cb * Fb
+ <p>
+ where C is the result color, Ca and Cb are the input colors,
+ premultiplied with alpha, and Fa and Fb are described for the
+ different composite modes (wherein Aa and Ab denote source and
+ destination alpha, respectively).<p>
+
+ @since OOo 2.0
+ */
+constants CompositeOperation
+{
+ /** Clear the destination.<p>
+
+ Clear the destination area. The function values are: Fa = Fb =
+ 0.<p>
+ */
+ const byte CLEAR = 0;
+
+ /** Copy source as-is to the destination.<p>
+
+ Copy source as-is to the destination. The function values are:
+ Fa = 1, Fb = 0.<p>
+ */
+ const byte SOURCE = 1;
+
+ /** Leave the destination as-is.<p>
+
+ Leave the destination as-is. The function values are: Fa = 0,
+ Fb = 1.<p>
+ */
+ const byte DESTINATION = 2;
+
+ /** Copy the source over the destination.<p>
+
+ Copy the source over the destination. The function values are:
+ Fa = 1, Fb = 1-Aa.<p>
+ */
+ const byte OVER = 3;
+
+ /** Copy the source under the destination.<p>
+
+ Copy the source under the destination. The function values
+ are: Fa = 1-Ab, Fb = 1.<p>
+ */
+ const byte UNDER = 4;
+
+ /** Copy the source to the destination.<p>
+
+ Copy the source to the destination, but limited to where the
+ destination is. The function values are: Fa = Ab, Fb = 0.<p>
+ */
+ const byte INSIDE = 5;
+
+ /** Leave the destination as is.<p>
+
+ Leave the destination as is, but only where the source
+ was. The function values are: Fa = 0, Fb = Aa.<p>
+ */
+ const byte INSIDE_REVERSE = 6;
+
+ /** Copy the source to the destination<p>
+
+ Copy the source to the destination, but limited to where the
+ destination is not. The function values are: Fa = 1-Ab, Fb =
+ 0.<p>
+ */
+ const byte OUTSIDE = 7;
+
+ /** Leave the destination as is.<p>
+
+ Leave the destination as is, but only where the source has not
+ been. The function values are: Fa = 0, Fb = 1-Aa.<p>
+ */
+ const byte OUTSIDE_REVERSE = 8;
+
+ /** Copy the source over the destination<p>
+
+ Copy the source over the destination, but only where the
+ destination is. Keep the destination. The function values are:
+ Fa = Ab, Fb = 1-Aa.<p>
+ */
+ const byte ATOP = 9;
+
+ /** Copy the destination over the source.<p>
+
+ Copy the destination over the source, but only where the
+ source is. Keep the source. The function values are: Fa =
+ 1-Ab, Fb = Aa.<p>
+ */
+ const byte ATOP_REVERSE = 10;
+
+ /** Combine source and destination by exclusive or.<p>
+
+ Take only the parts where either source or destination, but
+ not both visible. The function values are: Fa = 1-Ab, Fb =
+ 1-Aa.<p>
+ */
+ const byte XOR = 11;
+
+ /** Add source and destination values.<p>
+
+ Simply add contributions of both source and destination. The
+ resulting color values are limited to the permissible color
+ range, and clipped to the maximal value, if exceeded. The
+ function values are: Fa = 1, Fb = 1.<p>
+ */
+ const byte ADD = 12;
+
+ /** Saturate source and destination.<p>
+
+ Saturate destination with source values. The function values
+ are: Fa = min(1,(1-Ab)/Aa), Fb = 1<p>
+ */
+ const byte SATURATE = 13;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/EmphasisMark.idl b/offapi/com/sun/star/rendering/EmphasisMark.idl
new file mode 100644
index 000000000..ed918a263
--- /dev/null
+++ b/offapi/com/sun/star/rendering/EmphasisMark.idl
@@ -0,0 +1,73 @@
+/* -*- 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_EmphasisMark_idl__
+#define __com_sun_star_rendering_EmphasisMark_idl__
+
+module com { module sun { module star { module rendering {
+
+/** These constants control the automatic rendering of emphasis marks.<p>
+
+ These constants control the automatic rendering of emphasis marks
+ for a given font.<p>
+
+ @since OOo 2.0
+ */
+constants EmphasisMark
+{
+ /// No automatic emphasis marks
+ const byte NONE = 0;
+
+
+ /// Automatic emphasis marks as dots above the glyphs
+ const byte DOT_ABOVE = 1;
+
+
+ /// Automatic emphasis marks as dots below the glyphs
+ const byte DOT_BELOW = 2;
+
+
+ /// Automatic emphasis marks as circles (unfilled outlines) above the glyphs
+ const byte CIRCLE_ABOVE = 3;
+
+
+ /// Automatic emphasis marks as circles (unfilled outlines) below the glyphs
+ const byte CIRCLE_BELOW = 4;
+
+
+ /// Automatic emphasis marks as discs (filled circles) above the glyphs
+ const byte DISC_ABOVE = 5;
+
+
+ /// Automatic emphasis marks as discs (filled circles) below the glyphs
+ const byte DISC_BELOW = 6;
+
+
+ /// Automatic emphasis marks as accent marks above the glyphs
+ const byte ACCENT_ABOVE = 7;
+
+
+ /// Automatic emphasis marks as accent marks below the glyphs
+ const byte ACCENT_BELOW = 8;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/FillRule.idl b/offapi/com/sun/star/rendering/FillRule.idl
new file mode 100644
index 000000000..a6933f3a9
--- /dev/null
+++ b/offapi/com/sun/star/rendering/FillRule.idl
@@ -0,0 +1,56 @@
+/* -*- 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_FillRule_idl__
+#define __com_sun_star_rendering_FillRule_idl__
+
+module com { module sun { module star { module rendering {
+
+/** Determines which algorithm to use when determining inside and
+ outside of filled poly-polygons.
+
+ @since OOo 2.0
+ */
+enum FillRule
+{
+ /** Fill every area, where, when traveling along a line, the
+ summed winding number (that is, -1 for a
+ counter-clockwise-oriented polygon, and +1 for a
+ clockwise-oriented) is non-zero.<p>
+
+ For example, a poly-polygon consisting of two concentric
+ circles with similar orientation is filled the same way as if
+ only the outer circle would exist. If both have opposite
+ orientation, then the filled representation looks the same as
+ if filled with the EVEN_ODD fill rule.<p>
+ */
+ NON_ZERO,
+
+
+ /** Fill every area, where, when traveling along a line, an
+ uneven number of intersections with polygon edges have
+ happened.<p>
+ */
+ EVEN_ODD
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/FloatingPointBitmapFormat.idl b/offapi/com/sun/star/rendering/FloatingPointBitmapFormat.idl
new file mode 100644
index 000000000..0e61cd329
--- /dev/null
+++ b/offapi/com/sun/star/rendering/FloatingPointBitmapFormat.idl
@@ -0,0 +1,61 @@
+/* -*- 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_FloatingPointBitmapFormat_idl__
+#define __com_sun_star_rendering_FloatingPointBitmapFormat_idl__
+
+module com { module sun { module star { module rendering {
+
+/** This structure describes format of a floating point bitmap.<p>
+
+ @since OOo 2.0
+ */
+constants FloatingPointBitmapFormat
+{
+ /** Half-float format.<p>
+
+ The color components are stored in the half-float format,
+ i.e. in a 16 bit value, with 5 bit exponent, 10 bit mantissa
+ and a sign bit. See also <a
+ href="http://www.openexr.com/">OpenEXR</a> for a format
+ employing half-floats.<p>
+ */
+ const byte HALFFLOAT=0;
+
+ /** IEEE float format.<p>
+
+ The color components are stored in the IEEE single-precision
+ floating point format, i.e. in a 32 bit value, with 8 bit
+ exponent, 23 bit mantissa and a sign bit.<p>
+ */
+ const byte FLOAT=1;
+
+ /** IEEE double format.<p>
+
+ The color components are stored in the IEEE double-precision
+ floating point format, i.e. in a 64 bit value, with 16 bit
+ exponent, 47 bit mantissa and a sign bit.<p>
+ */
+ const byte DOUBLE=2;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/FloatingPointBitmapLayout.idl b/offapi/com/sun/star/rendering/FloatingPointBitmapLayout.idl
new file mode 100644
index 000000000..586f141c7
--- /dev/null
+++ b/offapi/com/sun/star/rendering/FloatingPointBitmapLayout.idl
@@ -0,0 +1,103 @@
+/* -*- 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_FloatingPointBitmapLayout_idl__
+#define __com_sun_star_rendering_FloatingPointBitmapLayout_idl__
+
+#include <com/sun/star/rendering/FloatingPointBitmapFormat.idl>
+#include <com/sun/star/rendering/XColorSpace.idl>
+
+module com { module sun { module star { module rendering {
+
+/** This structure describes the memory layout of a bitmap having
+ floating point color channels.<p>
+
+ This structure collects all necessary information to describe the
+ memory layout of a bitmap having floating point color channels<p>
+
+ @since OOo 2.0
+ */
+struct FloatingPointBitmapLayout
+{
+ /** Number of scanlines for this bitmap.
+
+ This value must not be negative
+ */
+ long ScanLines;
+
+ /** Number of data bytes per scanline.
+
+ This value must not be negative
+ */
+ long ScanLineBytes;
+
+ /** Byte offset between the start of two consecutive scanlines.
+
+ This value is permitted to be negative, denoting a bitmap
+ whose content is flipped at the x axis.
+ */
+ long ScanLineStride;
+
+ /** Byte offset between the start of two consecutive planes.
+
+ This value is permitted to be negative. If this value is zero,
+ the bitmap is assumed to be in chunky format, otherwise it is
+ assumed to be planar. The difference between chunky and
+ planar layout lies in the way how color channels are
+ interleaved. For a chunky format, all channel data for a
+ single pixel lies consecutively in memory. For a planar
+ layout, the first channel of all pixel is stored consecutive,
+ followed by the second channel, and so forth.<p>
+ */
+ long PlaneStride;
+
+ // TODO(F3): Need some specializations of XColorSpace for float
+ // and half float formats. This maybe translates to the bitmap
+ // layout as well, leading to separate structs for double, float
+ // and half float formats, because of the ColorSpace member. Or
+ // leave it as it is, forcing the client to query for derived
+ // interfaces...
+
+ /// Color space the bitmap colors shall be interpreted within.
+ XColorSpace ColorSpace;
+
+ /** Number of color components per pixel.
+
+ This value must not be negative
+ */
+ long NumComponents;
+
+ /** Endianness of the pixel values.
+
+ This value must be one of the Endianness constants
+ */
+ byte Endianness;
+
+ /** Format type of this bitmap.<p>
+
+ This value must be one of the
+ FloatingPointBitmapFormat constants.<p>
+ */
+ byte Format;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/FontInfo.idl b/offapi/com/sun/star/rendering/FontInfo.idl
new file mode 100644
index 000000000..a7fdb4b01
--- /dev/null
+++ b/offapi/com/sun/star/rendering/FontInfo.idl
@@ -0,0 +1,110 @@
+/* -*- 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_FontInfo_idl__
+#define __com_sun_star_rendering_FontInfo_idl__
+
+#include <com/sun/star/util/TriState.idl>
+#include <com/sun/star/rendering/Panose.idl>
+
+
+module com { module sun { module star { module rendering {
+
+/** This structure provides information about a specific font.<p>
+
+ @since OOo 2.0
+ */
+struct FontInfo
+{
+ /** The PANOSE font classification.<p>
+
+ TODO: Document semantics in Panose.idl
+ */
+ Panose FontDescription;
+
+
+ /** The name of the font family.<p>
+
+ The family name is the one normally associated to a font, such
+ as Times New Roman, Thorndale, Andale or Arial.<p>
+
+ Note: outlined fonts are now specified with "outline" as part
+ of the family name.<p>
+ */
+ string FamilyName;
+
+
+ /** The name of the specific font style within its family.<p>
+
+ For example, oblique, italic, or narrow.<p>
+ */
+ string StyleName;
+
+
+ /** This value specifies which Unicode ranges are supported by
+ this font.<p>
+
+ This is to be interpreted as a split-up 128-bit value, see <a
+ href=http://partners.adobe.com/asn/tech/type/opentype/os2.jsp#ur>Adobe's
+ OpenType specification</a> for the specific meaning of each
+ bit. UnicodeRanges0 contains the least significant bits,
+ UnicodeRanges3 the most significant ones.<p>
+
+ const int128 UNICODE_RANGE_BASIC_LATIN = 1;
+ const int128 UNICODE_RANGE_LATIN_SUPPLEMENT = 2;
+ const int128 UNICODE_RANGE_LATIN_EXTENDED_A = 4;
+ const int128 UNICODE_RANGE_LATIN_EXTENDED_B = 4;
+ ...
+ const int128 UNICODE_RANGE_MASK_LATIN = 1;
+ const int128 UNICODE_RANGE_MASK_CJK = (31<<48) + (3<<55) +
+ (1<<59);
+ const int128 UNICODE_RANGE_MASK_CTL = (1<<11) + (1<<13) +
+ (0x3FFF<<15) + (0x0FFF<<70);
+
+ */
+ long UnicodeRanges0;
+ long UnicodeRanges1;
+ long UnicodeRanges2;
+ long UnicodeRanges3;
+
+
+ /** Specifies whether the font is a symbol font.<p>
+
+ If yes, text written in this symbol font does not have a
+ specified meaning.<p>
+ */
+ ::com::sun::star::util::TriState IsSymbolFont;
+
+
+ /** Set to true, if the font is usable for vertical text
+ output.<p>
+
+ Vertical fonts have subtle differences to horizontal ones,
+ e.g. rotated or differently shaped glyphs, or special rotated
+ versions of normally upright glyphs (e.g. brackets).<p>
+ */
+ ::com::sun::star::util::TriState IsVertical;
+
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/FontMetrics.idl b/offapi/com/sun/star/rendering/FontMetrics.idl
new file mode 100644
index 000000000..2aee571f0
--- /dev/null
+++ b/offapi/com/sun/star/rendering/FontMetrics.idl
@@ -0,0 +1,95 @@
+/* -*- 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_FontMetrics_idl__
+#define __com_sun_star_rendering_FontMetrics_idl__
+
+module com { module sun { module star { module rendering {
+
+/** Metrics global to the font, i.e. not specific to single
+ glyphs. The font height is defined as
+ ascent+descent+internalLeading, and therefore not explicitly
+ included here.<p>
+
+ Please note that when querying FontMetrics from an XCanvasFont
+ interface, all values here are given relative to the font cell
+ size. That means, the referenceCharWidth and/or
+ ascent+descent+internalLeading will approximately (rounded to
+ integer device resolution, or exactly, if fractional font
+ rendering is enabled) match the referenceAdvancement/cellSize
+ members of the FontRequest for which the XCanvasFont was
+ queried. Please be aware that the values returned in this
+ structure only map one-to-one to device pixel, if the combined
+ rendering transformation for text output equals the identity
+ transformation. Otherwise, the text output (and thus the resulting
+ metrics) will be subject to that transformation. Depending on the
+ underlying font technology, actual device output might be off by
+ up to one device pixel from the transformed metrics.
+
+ @since OOo 2.0
+ */
+struct FontMetrics
+{
+ /// Ascent (above the baseline) part of the font.
+ double Ascent;
+
+
+ /// Descent (below the baseline) part of the font.
+ double Descent;
+
+
+ /// Extra space above ascent
+ double InternalLeading;
+
+
+ /** Extra space outside the font cells.<p>
+
+ It should not contain ink marks and is typically used
+ by the font designer to modify the line distance.<p>
+ */
+ double ExternalLeading;
+
+
+ /** This value specifies the reference character width of the
+ font.<p>
+
+ It's roughly equivalent to the average width of all
+ characters, and if one needs a font with double character
+ width, the referenceCharSize should be doubled.<p>
+ */
+ double ReferenceCharSize;
+
+
+ /** Specifies the offset to be added to the baseline when drawing
+ underlined text.
+ */
+ double UnderlineOffset;
+
+
+ /** Specifies the offset to be added to the baseline when striking
+ through the text.
+ */
+ double StrikeThroughOffset;
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/FontRequest.idl b/offapi/com/sun/star/rendering/FontRequest.idl
new file mode 100644
index 000000000..360607b03
--- /dev/null
+++ b/offapi/com/sun/star/rendering/FontRequest.idl
@@ -0,0 +1,107 @@
+/* -*- 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_FontRequest_idl__
+#define __com_sun_star_rendering_FontRequest_idl__
+
+#include <com/sun/star/rendering/FontInfo.idl>
+#include <com/sun/star/lang/Locale.idl>
+
+module com { module sun { module star { module rendering {
+
+/** This structure contains all information necessary to describe a
+ font to be queried from XCanvas.<p>
+
+ Note: Outline fonts are to be requested as a special family, set
+ FontInfo::FamilyName appropriately. Emboss/relief
+ must be emulated by upper layers.<p>
+
+ Leave the FontInfo::FamilyName and
+ FontInfo::StyleName empty, if font selection
+ should only happen via the PANOSE description.
+
+ @since OOo 2.0
+ */
+struct FontRequest
+{
+ /** The description of the font.<p>
+
+ This member contains the description of the font as returned
+ by the font listing methods.<p>
+ */
+ FontInfo FontDescription;
+
+
+ /** The size of the font in <em>device</em> coordinate space.<p>
+
+ This value corresponds to the font height in Western scripts,
+ but is independent of the writing direction (see
+ FontRequest::IsVertical below). That
+ means, the value specified here is always measured orthogonal
+ to the text advancement (height for horizontal writing, and
+ width for vertical writing).<p>
+
+ When this value is negative, its absolute value is taken as
+ the character size of the font. If this value is positive,
+ it's taken as the cell size of the font.<p>
+
+ This member and the referenceAdvancement member are mutually
+ exclusive, one of them has to be set to 0 (which means don't
+ care).<p>
+
+ For distorted fonts, the render transformation must be
+ used. That is, the size specified here corresponds to device
+ pixel only if the combined render transformation during text
+ output equals the identity transform. This also applies to all
+ query methods, for both XCanvasFont and
+ XTextLayout.<p>
+ */
+ double CellSize;
+
+
+ /** This value specifies the size of the font in the writing
+ direction (i.e. width for horizontal writing, and height for
+ vertical writing).<p>
+
+ It is equivalent to the referenceCharSize of the FontMetrics
+ structure.<p>
+
+ This member and the cellSize member are mutually exclusive,
+ one of them has to be set to 0 (which means don't care). For
+ distorted fonts, the font matrix must be used.<p>
+ */
+ double ReferenceAdvancement;
+
+
+ /** The locale this font should be able to render.<p>
+
+ This member supplements the
+ FontInfo::UnicodeRange0 entry with a specific
+ locale; this is e.g. important when selecting between
+ traditional and simplified Chinese is necessary (since the
+ letters have the same Unicode ranges and character values).<p>
+ */
+ ::com::sun::star::lang::Locale Locale;
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/IntegerBitmapLayout.idl b/offapi/com/sun/star/rendering/IntegerBitmapLayout.idl
new file mode 100644
index 000000000..d1af5ae9c
--- /dev/null
+++ b/offapi/com/sun/star/rendering/IntegerBitmapLayout.idl
@@ -0,0 +1,117 @@
+/* -*- 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_IntegerBitmapLayout_idl__
+#define __com_sun_star_rendering_IntegerBitmapLayout_idl__
+
+#include <com/sun/star/rendering/XIntegerBitmapColorSpace.idl>
+#include <com/sun/star/rendering/XBitmapPalette.idl>
+
+module com { module sun { module star { module rendering {
+
+/** This structure describes the memory layout of a bitmap having
+ integer color channels.<p>
+
+ This structure collects all necessary information to describe the
+ memory layout of a bitmap having integer color channels<p>
+
+ @since OOo 2.0
+ */
+struct IntegerBitmapLayout
+{
+ /** Number of scanlines for this bitmap.
+
+ This value must not be negative
+ */
+ long ScanLines;
+
+ /** Number of data bytes per scanline.
+
+ This value must not be negative
+ */
+ long ScanLineBytes;
+
+ /** Byte offset between the start of two consecutive scanlines.
+
+ This value is permitted to be negative, denoting a bitmap
+ whose content is flipped at the x axis.
+ */
+ long ScanLineStride;
+
+ /** Byte offset between the start of two consecutive planes.
+
+ This value is permitted to be negative. If this value is zero,
+ the bitmap is assumed to be in chunky format, otherwise it is
+ assumed to be planar. The difference between chunky and
+ planar layout lies in the way how color channels are
+ interleaved. For a chunky format, all channel data for a
+ single pixel lies consecutively in memory. For a planar
+ layout, the first channel of all pixel is stored consecutive,
+ followed by the second channel, and so forth.<p>
+ */
+ long PlaneStride;
+
+ /** Color space the bitmap colors shall be interpreted within.<p>
+
+ Note that the actual pixel layout is specified at the color
+ space. If this layout describes a palette bitmap format, this
+ color space describes the index format (plus maybe an extra
+ alpha channel). The palette itself references another color
+ space, which describes the layout of the palette entries.
+
+ @see XBitmapPalette
+ */
+ XIntegerBitmapColorSpace ColorSpace;
+
+ /** This member determines whether the bitmap data are actually
+ indices into a color map.<p>
+
+ When set to the nil reference, the bitmap data is assumed to
+ contain direct color values (to be interpreted according to
+ the associated color space). If this member references a valid
+ palette, one of the pixel components as returned by the color
+ space referenced from the #ColorSpace is
+ required to be of type
+ ColorComponentTag::INDEX. That component is
+ then used to index the palette.<p>
+ */
+ XBitmapPalette Palette;
+
+ /** This member determines the bit order (only relevant if a pixel
+ uses less than 8 bits, of course).<p>
+
+ When `TRUE`, this member denotes that the leftmost pixel from
+ an 8 bit amount of pixel data consists of the bits starting
+ with the most significant bit. When `FALSE`, it's starting
+ with the least significant bit.<p>
+
+ Example: for a 1bpp bitmap, each pixel is represented by
+ exactly one bit. If this member is `TRUE`, the first pixel is
+ the MSB of the first byte, and the eighth pixel is the LSB of
+ the first byte. If this member is `FALSE`, it's just the
+ opposite.
+ */
+ boolean IsMsbFirst;
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/InterpolationMode.idl b/offapi/com/sun/star/rendering/InterpolationMode.idl
new file mode 100644
index 000000000..ae635368e
--- /dev/null
+++ b/offapi/com/sun/star/rendering/InterpolationMode.idl
@@ -0,0 +1,87 @@
+/* -*- 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_InterpolationMode_idl__
+#define __com_sun_star_rendering_InterpolationMode_idl__
+
+module com { module sun { module star { module rendering {
+
+/** These constants specify the interpolation type for animation
+ frames.<p>
+
+ With this constants, one specifies the way of interpolation that
+ takes place between two consecutive frames of a discrete animation
+ sequence.
+
+ @since OOo 2.0
+ */
+constants InterpolationMode
+{
+ /** Perform a nearest neighbor interpolation.<p>
+
+ That is, when interpolating between two values v0 and v1,
+ positioned at t0 and t1, take the one which has the closest t
+ coordinate.<p>
+ */
+ const byte NEAREST_NEIGHBOR=1;
+
+
+ /** Perform a linear interpolation.<p>
+
+ That is, when interpolating at position t between two values
+ v0 and v1, positioned at t0 and t1, take the sum of v0
+ weighted with (t-t0) and v1 weighted with (t1-t).<p>
+ */
+ const byte LINEAR=2;
+
+
+ /** Perform a cubic interpolation.<p>
+
+ That is, when interpolating at position t, take the four
+ closest data points v0, v1, v2, and v3, fit a cubic curve
+ through them, and take the interpolated value from this cubic
+ curve.<p>
+ */
+ const byte CUBIC=3;
+
+
+ /** Perform a cubic Bezier spline interpolation.<p>
+
+ That is, when interpolating at position t, take the three
+ closest data points v0, v1, and v2, fit a cubic Bezier spline
+ through them, and take the interpolated value from this cubic
+ curve.<p>
+ */
+ const byte BEZIERSPLINE3=4;
+
+
+ /** Perform a quadric Bezier spline interpolation.<p>
+
+ That is, when interpolating at position t, take the four
+ closest data points v0, v1, v2, and v3, fit a quadric Bezier
+ spline through them, and take the interpolated value from this
+ quadric curve.<p>
+ */
+ const byte BEZIERSPLINE4=5;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/MtfRenderer.idl b/offapi/com/sun/star/rendering/MtfRenderer.idl
new file mode 100644
index 000000000..6e4ef4baf
--- /dev/null
+++ b/offapi/com/sun/star/rendering/MtfRenderer.idl
@@ -0,0 +1,38 @@
+/* -*- 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_MtfRenderer_idl__
+#define __com_sun_star_rendering_MtfRenderer_idl__
+
+#include <com/sun/star/rendering/XMtfRenderer.idl>
+#include <com/sun/star/rendering/XBitmapCanvas.idl>
+
+module com { module sun { module star { module rendering {
+
+service MtfRenderer : XMtfRenderer
+{
+ createWithBitmapCanvas([in] XBitmapCanvas Canvas);
+};
+
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/Panose.idl b/offapi/com/sun/star/rendering/Panose.idl
new file mode 100644
index 000000000..cb70fce00
--- /dev/null
+++ b/offapi/com/sun/star/rendering/Panose.idl
@@ -0,0 +1,61 @@
+/* -*- 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_Panose_idl__
+#define __com_sun_star_rendering_Panose_idl__
+
+module com { module sun { module star { module rendering {
+
+struct Panose
+{
+ /// PanoseFamilyTypes
+ byte FamilyType;
+
+ /// PanoseSerifStyle
+ byte SerifStyle;
+
+ /// PanoseWeight
+ byte Weight;
+
+ /// PanoseProportion
+ byte Proportion;
+
+ /// PanoseContrast
+ byte Contrast;
+
+ /// PanoseStrokeVariation
+ byte StrokeVariation;
+
+ /// PanoseArmStyle
+ byte ArmStyle;
+
+ /// PanoseLetterForm
+ byte Letterform;
+
+ /// PanoseMidline
+ byte Midline;
+
+ /// PanoseXHeight
+ byte XHeight;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/PanoseArmStyle.idl b/offapi/com/sun/star/rendering/PanoseArmStyle.idl
new file mode 100644
index 000000000..9d5f5e78f
--- /dev/null
+++ b/offapi/com/sun/star/rendering/PanoseArmStyle.idl
@@ -0,0 +1,44 @@
+/* -*- 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_PanoseArmStyle_idl__
+#define __com_sun_star_rendering_PanoseArmStyle_idl__
+
+module com { module sun { module star { module rendering {
+
+constants PanoseArmStyle
+{
+ const byte ANYTHING=0;
+ const byte NO_FIT=1;
+ const byte STRAIGHT_HORIZONTAL=2;
+ const byte STRAIGHT_WEDGE=3;
+ const byte STRAIGHT_VERTICAL=4;
+ const byte STRAIGHT_SINGLE_SERIF=5;
+ const byte STRAIGHT_DOUBLE_SERIF=6;
+ const byte BENT_HORIZONTAL=7;
+ const byte BENT_WEDGE=8;
+ const byte BENT_VERTICAL=9;
+ const byte BENT_SINGLE_SERIF=10;
+ const byte BENT_DOUBLE_SERIF=11;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/PanoseContrast.idl b/offapi/com/sun/star/rendering/PanoseContrast.idl
new file mode 100644
index 000000000..facd5b58a
--- /dev/null
+++ b/offapi/com/sun/star/rendering/PanoseContrast.idl
@@ -0,0 +1,42 @@
+/* -*- 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_PanoseContrast_idl__
+#define __com_sun_star_rendering_PanoseContrast_idl__
+
+module com { module sun { module star { module rendering {
+
+constants PanoseContrast
+{
+ const byte ANYTHING=0;
+ const byte NO_FIT=1;
+ const byte NONE=2;
+ const byte VERY_LOW=3;
+ const byte LOW=4;
+ const byte MEDIUM_LOW=5;
+ const byte MEDIUM=6;
+ const byte MEDIUM_HIGH=7;
+ const byte HIGH=8;
+ const byte VERY_HIGH=9;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/PanoseFamilyTypes.idl b/offapi/com/sun/star/rendering/PanoseFamilyTypes.idl
new file mode 100644
index 000000000..86cb8d9ad
--- /dev/null
+++ b/offapi/com/sun/star/rendering/PanoseFamilyTypes.idl
@@ -0,0 +1,38 @@
+/* -*- 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_PanoseFamilyTypes_idl__
+#define __com_sun_star_rendering_PanoseFamilyTypes_idl__
+
+module com { module sun { module star { module rendering {
+
+constants PanoseFamilyTypes
+{
+ const byte ANYTHING=0;
+ const byte NO_FIT=1;
+ const byte TEXT_DISPLAY=2;
+ const byte SCRIPT=3;
+ const byte DECORATIVE=4;
+ const byte PICTORIAL=5;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/PanoseLetterForm.idl b/offapi/com/sun/star/rendering/PanoseLetterForm.idl
new file mode 100644
index 000000000..00ea706a8
--- /dev/null
+++ b/offapi/com/sun/star/rendering/PanoseLetterForm.idl
@@ -0,0 +1,48 @@
+/* -*- 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_PanoseLetterForm_idl__
+#define __com_sun_star_rendering_PanoseLetterForm_idl__
+
+module com { module sun { module star { module rendering {
+
+constants PanoseLetterForm
+{
+ const byte ANYTHING=0;
+ const byte NO_FIT=1;
+ const byte NORMAL_CONTACT=2;
+ const byte NORMAL_WEIGHTED=3;
+ const byte NORMAL_BOXED=4;
+ const byte NORMAL_FLATTENED=5;
+ const byte NORMAL_ROUNDED=6;
+ const byte NORMAL_OFF_CENTER=7;
+ const byte NORMAL_SQUARE=8;
+ const byte OBLIQUE_CONTACT=9;
+ const byte OBLIQUE_WEIGHTED=10;
+ const byte OBLIQUE_BOXED=11;
+ const byte OBLIQUE_FLATTENED=12;
+ const byte OBLIQUE_ROUNDED=13;
+ const byte OBLIQUE_OFF_CENTER=14;
+ const byte OBLIQUE_SQUARE=15;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/PanoseMidline.idl b/offapi/com/sun/star/rendering/PanoseMidline.idl
new file mode 100644
index 000000000..3fc0dafa4
--- /dev/null
+++ b/offapi/com/sun/star/rendering/PanoseMidline.idl
@@ -0,0 +1,46 @@
+/* -*- 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_PanoseMidline_idl__
+#define __com_sun_star_rendering_PanoseMidline_idl__
+
+module com { module sun { module star { module rendering {
+
+constants PanoseMidline
+{
+ const byte ANYTHING=0;
+ const byte NO_FIT=1;
+ const byte STANDARD_TRIMMED=2;
+ const byte STANDARD_POINTED=3;
+ const byte STANDARD_SERIFED=4;
+ const byte HIGH_TRIMMER=5;
+ const byte HIGH_POINTED=6;
+ const byte HIGH_SERIFED=7;
+ const byte CONSTANT_TRIMMED=8;
+ const byte CONSTANT_POINTED=9;
+ const byte CONSTANT_SERIFED=10;
+ const byte LOW_TRIMMED=11;
+ const byte LOW_POINTED=12;
+ const byte LOW_SERIFED=13;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/PanoseProportion.idl b/offapi/com/sun/star/rendering/PanoseProportion.idl
new file mode 100644
index 000000000..cf99723e8
--- /dev/null
+++ b/offapi/com/sun/star/rendering/PanoseProportion.idl
@@ -0,0 +1,42 @@
+/* -*- 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_PanoseProportion_idl__
+#define __com_sun_star_rendering_PanoseProportion_idl__
+
+module com { module sun { module star { module rendering {
+
+constants PanoseProportion
+{
+ const byte ANYTHING=0;
+ const byte NO_FIT=1;
+ const byte OLD_SKOOL=2;
+ const byte MODERN=3;
+ const byte EVEN_WIDTH=4;
+ const byte EXPANDED=5;
+ const byte CONDENSED=6;
+ const byte VERY_EXPANDED=7;
+ const byte VERY_CONDENSED=8;
+ const byte MONO_SPACED=9;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/PanoseSerifStyle.idl b/offapi/com/sun/star/rendering/PanoseSerifStyle.idl
new file mode 100644
index 000000000..03e3fb765
--- /dev/null
+++ b/offapi/com/sun/star/rendering/PanoseSerifStyle.idl
@@ -0,0 +1,48 @@
+/* -*- 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_PanoseSerifStyle_idl__
+#define __com_sun_star_rendering_PanoseSerifStyle_idl__
+
+module com { module sun { module star { module rendering {
+
+constants PanoseSerifStyle
+{
+ const byte ANYTHING=0;
+ const byte NO_FIT=1;
+ const byte COVE=2;
+ const byte OBTUSE_COVE=3;
+ const byte SQUARE_COVE=4;
+ const byte OBTUSE_SQUARE_COVE=5;
+ const byte SQUARE=6;
+ const byte THIN=7;
+ const byte BONE=8;
+ const byte EXAGGERATED=9;
+ const byte TRIANGLE=10;
+ const byte NORMAL_SANS=11;
+ const byte OBTUSE_SANS=12;
+ const byte PERP_SANS=13;
+ const byte FLARED=14;
+ const byte ROUNDED=15;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/PanoseStrokeVariation.idl b/offapi/com/sun/star/rendering/PanoseStrokeVariation.idl
new file mode 100644
index 000000000..860211f4e
--- /dev/null
+++ b/offapi/com/sun/star/rendering/PanoseStrokeVariation.idl
@@ -0,0 +1,41 @@
+/* -*- 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_PanoseStrokeVariation_idl__
+#define __com_sun_star_rendering_PanoseStrokeVariation_idl__
+
+module com { module sun { module star { module rendering {
+
+constants PanoseStrokeVariation
+{
+ const byte ANYTHING=0;
+ const byte NO_FIT=1;
+ const byte GRADUAL_DIAGONAL=2;
+ const byte GRADUAL_TRANSITIONAL=3;
+ const byte GRADUAL_VERTICAL=4;
+ const byte GRADUAL_HORIZONTAL=5;
+ const byte RAPID_VERTICAL=6;
+ const byte RAPID_HORIZONTAL=7;
+ const byte INSTANT_VERTICAL=8;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/PanoseWeight.idl b/offapi/com/sun/star/rendering/PanoseWeight.idl
new file mode 100644
index 000000000..4ca497b04
--- /dev/null
+++ b/offapi/com/sun/star/rendering/PanoseWeight.idl
@@ -0,0 +1,44 @@
+/* -*- 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_PanoseWeight_idl__
+#define __com_sun_star_rendering_PanoseWeight_idl__
+
+module com { module sun { module star { module rendering {
+
+constants PanoseWeight
+{
+ const byte ANYTHING=0;
+ const byte NO_FIT=1;
+ const byte VERY_LIGHT=2;
+ const byte LIGHT=3;
+ const byte THIN=4;
+ const byte BOOK=5;
+ const byte MEDIUM=6;
+ const byte DEMI_BOLD=7;
+ const byte BOLD=8;
+ const byte HEAVY=9;
+ const byte BLACK=10;
+ const byte NORD=11;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/PanoseXHeight.idl b/offapi/com/sun/star/rendering/PanoseXHeight.idl
new file mode 100644
index 000000000..f2ce5cfcf
--- /dev/null
+++ b/offapi/com/sun/star/rendering/PanoseXHeight.idl
@@ -0,0 +1,40 @@
+/* -*- 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_PanoseXHeight_idl__
+#define __com_sun_star_rendering_PanoseXHeight_idl__
+
+module com { module sun { module star { module rendering {
+
+constants PanoseXHeight
+{
+ const byte ANYTHING=0;
+ const byte NO_FIT=1;
+ const byte CONSTANT_SMALL=2;
+ const byte CONSTANT_STANDARD=3;
+ const byte CONSTANT_LARGE=4;
+ const byte DUCKING_SMALL=5;
+ const byte DUCKING_STANDARD=6;
+ const byte DUCKING_LARGE=7;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/PathCapType.idl b/offapi/com/sun/star/rendering/PathCapType.idl
new file mode 100644
index 000000000..65cae117c
--- /dev/null
+++ b/offapi/com/sun/star/rendering/PathCapType.idl
@@ -0,0 +1,51 @@
+/* -*- 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_PathCapType_idl__
+#define __com_sun_star_rendering_PathCapType_idl__
+
+module com { module sun { module star { module rendering {
+
+/** These constants determine which shape to use for start or end of a
+ stroked path.<p>
+
+ The start and end of stroked paths can have one out of several
+ different shapes (which are, of course, only visible for strokes
+ wider than one device pixel).<p>
+
+ @since OOo 2.0
+ */
+constants PathCapType
+{
+ /// End the path at its start or end point, without any cap.
+ const byte BUTT=0;
+
+
+ /// Extend the path with a half circle cap, diameter is the line width.
+ const byte ROUND=1;
+
+
+ /// Extend the path with a rectangular cap, half the line width long.
+ const byte SQUARE=2;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/PathJoinType.idl b/offapi/com/sun/star/rendering/PathJoinType.idl
new file mode 100644
index 000000000..2916df4af
--- /dev/null
+++ b/offapi/com/sun/star/rendering/PathJoinType.idl
@@ -0,0 +1,64 @@
+/* -*- 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_PathJoinType_idl__
+#define __com_sun_star_rendering_PathJoinType_idl__
+
+module com { module sun { module star { module rendering {
+
+/** Determines which shape to use when joining path segments.<p>
+
+ The joins between different paths segments can be formed out of
+ several different shapes (which are of course only visible for
+ strokes wider than one device pixel).<p>
+
+ @since OOo 2.0
+ */
+constants PathJoinType
+{
+ /** Do not join the path segments at all.<p>
+
+ This join type might lead, depending on the angle between the
+ segments, to visible cracks at the meeting points.<p>
+ */
+ const byte NONE=0;
+
+
+ /** Join the path segment by extending the outer border until they
+ intersect.
+ */
+ const byte MITER=1;
+
+
+ /** Join the path segment with a pie-like patch, such that the
+ outer line of the meeting point is round.
+ */
+ const byte ROUND=2;
+
+
+ /** Join the path segment by connecting the outer ends of the
+ abutting segments with a straight line.
+ */
+ const byte BEVEL=3;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/RGBColor.idl b/offapi/com/sun/star/rendering/RGBColor.idl
new file mode 100644
index 000000000..ba2bc2a70
--- /dev/null
+++ b/offapi/com/sun/star/rendering/RGBColor.idl
@@ -0,0 +1,42 @@
+/* -*- 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_RGBColor_idl__
+#define __com_sun_star_rendering_RGBColor_idl__
+
+#include <com/sun/star/rendering/ColorComponent.idl>
+
+module com { module sun { module star { module rendering {
+
+/// RGB color triplet
+struct RGBColor
+{
+ /// Red component. Valid range is [0,1.0]
+ ColorComponent Red;
+ /// Green component. Valid range is [0,1.0]
+ ColorComponent Green;
+ /// Blue component. Valid range is [0,1.0]
+ ColorComponent Blue;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/RenderState.idl b/offapi/com/sun/star/rendering/RenderState.idl
new file mode 100644
index 000000000..1438757e4
--- /dev/null
+++ b/offapi/com/sun/star/rendering/RenderState.idl
@@ -0,0 +1,95 @@
+/* -*- 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_RenderState_idl__
+#define __com_sun_star_rendering_RenderState_idl__
+
+#include <com/sun/star/geometry/AffineMatrix2D.idl>
+#include <com/sun/star/rendering/XColorSpace.idl>
+
+module com { module sun { module star { module rendering {
+
+interface XPolyPolygon2D;
+
+/** This structure contains information passed to each
+ XCanvas render operation.<p>
+
+ This structure contains information considered as the render
+ state, i.e. the common setup required to render each individual
+ XCanvas primitive.<p>
+
+ @since OOo 2.0
+ */
+struct RenderState
+{
+ /** The affine transform associated with this render
+ operation.<p>
+
+ This is used to transform coordinates of canvas primitives
+ from user space to view space (from which they are
+ subsequently transformed to device space by the view
+ transform).<p>
+ */
+ ::com::sun::star::geometry::AffineMatrix2D AffineTransform;
+
+
+ /** The clipping area associated with this render operation.<p>
+
+ This clipping is interpreted in the user coordinate system,
+ i.e. subject to the render state transform followed by the
+ view transform before mapped to device coordinate space.<p>
+
+ Specifying an empty interface denotes no clipping,
+ i.e. everything rendered to the canvas 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 rendered to the canvas will be
+ visible.<p>
+ */
+ XPolyPolygon2D Clip;
+
+
+ /** The device color associated with this render operation.<p>
+
+ Note that this need not be RGB here, but depends on the active
+ device color space.<p>
+
+ @see XGraphicDevice
+ @see XColorSpace
+ */
+ sequence<ColorComponent> DeviceColor;
+
+
+ /** The composition mode associated with this render
+ operation.<p>
+
+ The composite mode determines in which way the primitive and
+ possibly existing background is combined. The permissible
+ values must be one out of the CompositeOperation
+ constants.<p>
+ */
+ byte CompositeOperation;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/RenderingIntent.idl b/offapi/com/sun/star/rendering/RenderingIntent.idl
new file mode 100644
index 000000000..93af1d5a3
--- /dev/null
+++ b/offapi/com/sun/star/rendering/RenderingIntent.idl
@@ -0,0 +1,82 @@
+/* -*- 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_RenderingIntent_idl__
+#define __com_sun_star_rendering_RenderingIntent_idl__
+
+module com { module sun { module star { module rendering {
+
+/** The rendering intent for a color space.<p>
+
+ The rendering intent for a color space mostly determines how
+ out-of-gamut color is treated. See <a
+ href="http://en.wikipedia.org/wiki/Rendering_intent">Wikipedia</a>
+ for a thorough explanation.
+
+ @since OOo 2.0
+ */
+constants RenderingIntent
+{
+ /** Also known as the image intent, this rendering intent
+ aims to preserve the visual relationship between
+ colors in a way that is perceived as natural to the
+ human eye, although the color values themselves may
+ change. This intent is most suitable for photographic
+ images.
+ */
+ const byte PERCEPTUAL=0;
+
+
+ /** The rendering intent for business graphics that
+ maintains vivid color at the expense of accurate
+ color. It scales the source gamut to the destination
+ gamut but preserves relative saturation instead of
+ hue, so when scaling to a smaller gamut, hues may
+ shift. This rendering intent is primarily designed for
+ business graphics, where bright saturated colors are
+ more important than the exact relationship between
+ colors (such as in a photographic image).
+ */
+ const byte SATURATION=1;
+
+ /** The rendering intent almost identical to Absolute
+ Colorimetric except for the following difference:
+ Relative Colorimetric compares the white point
+ (extreme highlight) of the source color space to that
+ of the destination color space and shifts all colors
+ accordingly.
+ */
+ const byte RELATIVE_COLORIMETRIC=2;
+
+ /** The rendering intent that leaves colors that fall
+ inside the destination gamut unchanged. Out of gamut
+ colors are clipped. No scaling of colors to
+ destination white point is performed. This intent aims
+ to maintain color accuracy at the expense of
+ preserving relationships between colors, and is useful
+ for seeing how output will look on a non-neutral
+ substrate.
+ */
+ const byte ABSOLUTE_COLORIMETRIC=3;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/RepaintResult.idl b/offapi/com/sun/star/rendering/RepaintResult.idl
new file mode 100644
index 000000000..d876ba812
--- /dev/null
+++ b/offapi/com/sun/star/rendering/RepaintResult.idl
@@ -0,0 +1,50 @@
+/* -*- 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_RepaintResult_idl__
+#define __com_sun_star_rendering_RepaintResult_idl__
+
+module com { module sun { module star { module rendering {
+
+/** These constants specify the result of the
+ XCachedPrimitive render operation.<p>
+
+ @since OOo 2.0
+ */
+constants RepaintResult
+{
+ /** Repaint succeeded, primitive has been exactly reproduced.
+ */
+ const byte REDRAWN=1;
+
+
+ /** Repaint succeeded, primitive has been reproduced in preview quality.
+ */
+ const byte DRAFTED=2;
+
+
+ /** Repaint failed altogether.
+ */
+ const byte FAILED=3;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/StringContext.idl b/offapi/com/sun/star/rendering/StringContext.idl
new file mode 100644
index 000000000..76523e32f
--- /dev/null
+++ b/offapi/com/sun/star/rendering/StringContext.idl
@@ -0,0 +1,60 @@
+/* -*- 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_StringContext_idl__
+#define __com_sun_star_rendering_StringContext_idl__
+
+module com { module sun { module star { module rendering {
+
+/** Collection of string-related arguments used on all canvas text
+ interfaces.<p>
+
+ A possibly much larger string than later rendered is necessary
+ here, because in several languages, glyph selection is context
+ dependent.<p>
+
+ @since OOo 2.0
+ */
+struct StringContext
+{
+ /** The complete text, from which a subset is selected by the
+ parameters below.
+ */
+ string Text;
+
+
+ /** Start position within the string.<p>
+
+ The first character has index 0.<p>
+ */
+ long StartPosition;
+
+
+ /** Length of the substring to actually use.<p>
+
+ Must be within the range [0,INTMAX].<p>
+ */
+ long Length;
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/StrokeAttributes.idl b/offapi/com/sun/star/rendering/StrokeAttributes.idl
new file mode 100644
index 000000000..3e551e75b
--- /dev/null
+++ b/offapi/com/sun/star/rendering/StrokeAttributes.idl
@@ -0,0 +1,132 @@
+/* -*- 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_StrokeAttributes_idl__
+#define __com_sun_star_rendering_StrokeAttributes_idl__
+
+module com { module sun { module star { module rendering {
+
+/** This structure contains all attributes required for path stroking.<p>
+
+ Path stroking is the process of drawing a polygon with a thick
+ pen. The various attributes contained in this structure can be
+ used to customize that process.<p>
+ */
+struct StrokeAttributes
+{
+ /** Defines the width of the stroke, measured in user
+ coordinate space.
+
+ This value must be positive (or 0.0)
+ */
+ double StrokeWidth;
+
+
+ /** Determines the maximal length of the diagonal in mitered
+ corners.<p>
+
+ This attribute is only used when
+ StrokeAttributes::JoinType is set to
+ PathJoinType::MITER. Should the length of a
+ corner's diagonal exceed this limit, a beveled join is used
+ instead. This value must be positive (or 0.0, which is
+ equivalent to setting
+ StrokeAttributes::JoinType to
+ PathJoinType::BEVEL.<p>
+
+ Before performing the actual comparison, implementations will
+ multiply the MiterLimit with the current StrokeWidth, such
+ that, with phi being the angle between the two joining
+ segments, MiterLimit=1/sin(phi/2.0).<p>
+ */
+ double MiterLimit;
+
+
+ /** Array of ink on and off lengths, measured in user coordinate
+ space.<p>
+
+ The first element specifies the length of the first "on"
+ segment of the dashing, the second element the length of the
+ first "off" segment, and so forth. Give zero elements here for
+ solid strokes. This array always have an even number of
+ elements, with zero, as usual, counting as even
+ here. Furthermore, each entry in this array must have a value
+ that is positive (or 0.0)<p>
+ */
+ sequence<double> DashArray;
+
+
+ /** Array of line widths and spacings for multiple-line
+ strokes.<p>
+
+ The entries here are relative to the
+ StrokeAttributes::StrokeWidth attribute
+ above, i.e. the total width of all lines and spacings will
+ always equal
+ StrokeAttributes::StrokeWidth. The first
+ element specifies the width of the rightmost line, when
+ traveling from the start point of the path to the end
+ point. The second element specifies the space between the
+ first line and the second line, and so forth. If the array
+ ends with a spacing, this spacing is included in the total
+ width of the multiple-line stroke. That is, the stroke becomes
+ asymmetric.<p>
+ */
+ sequence<double> LineArray;
+
+
+ /** The start shape of the stroke.<p>
+
+ The start point is the first point of every polygon of the
+ path poly-polygon.<p>
+
+ @see PathCapType
+ */
+ byte StartCapType;
+
+
+ /** The end shape of the stroke.<p>
+
+ The end point is the last point of every polygon of the path
+ poly-polygon.<p>
+
+ @see PathCapType
+ */
+ byte EndCapType;
+
+
+ /** The join shape of the stroke.<p>
+
+ After every sub-stroke, i.e. after every line or curve segment
+ within a single path polygon, a shape of this type is inserted
+ into the stroke to glue the segments together. Please note
+ that distinct polygons within the path poly-polygon are not
+ connected, and therefore also not joined via the shape
+ specified here.<p>
+
+ @see PathJoinType
+ */
+ byte JoinType;
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/TextDirection.idl b/offapi/com/sun/star/rendering/TextDirection.idl
new file mode 100644
index 000000000..bc3bc9993
--- /dev/null
+++ b/offapi/com/sun/star/rendering/TextDirection.idl
@@ -0,0 +1,47 @@
+/* -*- 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_TextDirection_idl__
+#define __com_sun_star_rendering_TextDirection_idl__
+
+module com { module sun { module star { module rendering {
+
+/** Specifies main text direction in a text portion.<p>
+
+ This also changes the interpretation of the start point.<p>
+
+ @since OOo 2.0
+ */
+constants TextDirection
+{
+ /// Reference point is left, main direction is from left to right
+ const byte WEAK_LEFT_TO_RIGHT=0;
+ /// Reference point is left, main direction is from left to right
+ const byte STRONG_LEFT_TO_RIGHT=2;
+
+ /// Reference point is right, main direction is from right to left
+ const byte WEAK_RIGHT_TO_LEFT=1;
+ /// Reference point is right, main direction is from right to left
+ const byte STRONG_RIGHT_TO_LEFT=3;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/TextHit.idl b/offapi/com/sun/star/rendering/TextHit.idl
new file mode 100644
index 000000000..2b5591304
--- /dev/null
+++ b/offapi/com/sun/star/rendering/TextHit.idl
@@ -0,0 +1,64 @@
+/* -*- 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_TextHit_idl__
+#define __com_sun_star_rendering_TextHit_idl__
+
+module com { module sun { module star { module rendering {
+
+/** This structure contains hit information for XTextLayout.<p>
+
+ This structure is used from the XTextLayout interface
+ to transport information regarding hit tests.<p>
+
+ @since OOo 2.0
+ */
+struct TextHit
+{
+ /** This contains the entry index.<p>
+
+ The entry index is the index of the insertion point in the
+ character sequence. The insertion point denotes positions
+ <em>between</em> the actual characters in the string, and can
+ thus have values ranging from 0 up to the number of characters
+ in the string. Hereby, an index of 0 denotes an insertion
+ position <em>before</em> the first character, and an index
+ containing the number of characters denotes an insertion
+ <em>behind</em> the last character.<p>
+ */
+ long EntryIndex;
+
+ /** This member denotes whether the hit was on the leading
+ edge.<p>
+
+ Each character is divided in two halves, the leading and the
+ trailing part. The leading edge is the part of the glyph
+ encountered first when reading text of the corresponding
+ language (i.e. the leading edge of an Arabic glyph is the
+ right half of it, whereas it is the left half of a Latin
+ character). If the hit was on the leading edge, this member is
+ set to `TRUE`.
+ */
+ boolean IsLeadingEdge;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/Texture.idl b/offapi/com/sun/star/rendering/Texture.idl
new file mode 100644
index 000000000..78f223dd3
--- /dev/null
+++ b/offapi/com/sun/star/rendering/Texture.idl
@@ -0,0 +1,139 @@
+/* -*- 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_Texture_idl__
+#define __com_sun_star_rendering_Texture_idl__
+
+#include <com/sun/star/geometry/AffineMatrix2D.idl>
+#include <com/sun/star/rendering/StrokeAttributes.idl>
+
+module com { module sun { module star { module rendering {
+
+interface XBitmap;
+interface XParametricPolyPolygon2D;
+
+/** Contains all information needed to define a texture.<p>
+
+ This structure contains all information necessary to define a
+ texture. A texture describes the filled area of polygonal shapes,
+ providing its own transformation matrix, repeat mode, and
+ transparency.<p>
+
+ To achieve uniformity, if this texture has a bitmap set, it is
+ scaled in such a way that it will cover the same [0,1]x[0,1] box
+ as the hatch and the gradient. The transformation member can then
+ be used to scale the complete texture as it fits suit.<p>
+
+ @since OOo 2.0
+ */
+struct Texture
+{
+ /** Texture transformation from texture to primitive space.<p>
+
+ This member allows arbitrary transformations of the texture,
+ relative to the textured primitive. Thus, the total
+ transformation from the [0,1]x[0,1] texture space to the
+ device coordinate space is the concatenation of texture,
+ render state, and view state transformation (with only render
+ state and view state transformation being applied to the
+ textured primitive).<p>
+ */
+ ::com::sun::star::geometry::AffineMatrix2D AffineTransform;
+
+
+ /** Overall transparency of the texturing.<p>
+
+ The valid range for this value is [0,1], where 0 denotes
+ complete transparency, and 1 denotes fully opaque.<p>
+ */
+ double Alpha;
+
+
+ /** Specifies the number of parameterized polygons used for the texture.<p>
+
+ This member specifies the number of polygons the parametric
+ polygon interface is queried. The continuous range [0,1] of
+ the XParametricPolyPolygon::getOutline() method is divided up
+ into numberOfHatchPolygons equal parts, and for everyone of
+ these parts, the start of the interval is plugged into the
+ getOutline method. For example, if numberOfHatchPolygons is 2,
+ then getOutline is called twice, once with 0.0 and once with
+ 0.5. Use this parameter to control the density of the
+ hatching.<p>
+ */
+ long NumberOfHatchPolygons;
+
+
+ /** Texture bitmap.<p>
+
+ This member can be used together with gradient and hatching.<p>
+
+ The bitmap is scaled to a one-by-one rectangle, to cover the
+ same area as both the gradient and the hatching.<p>
+ */
+ XBitmap Bitmap;
+
+
+ /** Texture gradient.<p>
+
+ This member can be used together with bitmap and hatching. The
+ parametric polygons color value is used to fill the returned
+ polygonal outlines.<p>
+ */
+ XParametricPolyPolygon2D Gradient;
+
+
+ /** Texture hatching.<p>
+
+ This member can be used together with bitmap and gradient. The
+ parametric polygons color value is used to stroke the returned
+ polygonal outlines.<p>
+ */
+ XParametricPolyPolygon2D Hatching;
+
+
+ /** Specifies the stroke attributes used for hatching.<p>
+
+ Use 0.0 as the strokeWidth here to indicate hair lines.<p>
+ */
+ StrokeAttributes HatchAttributes;
+
+
+ /** Repeat mode of the texture, x direction.<p>
+
+ The repeat mode is separated into x and y direction, this is
+ the x direction part. Permissible values are from the
+ TexturingMode constants.<p>
+ */
+ byte RepeatModeX;
+
+ /** Repeat mode of the texture, y direction.<p>
+
+ The repeat mode is separated into x and y direction, this is
+ the y direction part. Permissible values are from the
+ TexturingMode constants.<p>
+ */
+ byte RepeatModeY;
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/TexturingMode.idl b/offapi/com/sun/star/rendering/TexturingMode.idl
new file mode 100644
index 000000000..fb5c61e7a
--- /dev/null
+++ b/offapi/com/sun/star/rendering/TexturingMode.idl
@@ -0,0 +1,62 @@
+/* -*- 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_TexturingMode_idl__
+#define __com_sun_star_rendering_TexturingMode_idl__
+
+module com { module sun { module star { module rendering {
+
+/** Enumeration of possible values to spread a texture across a
+ primitive.
+
+ @since OOo 2.0
+ */
+constants TexturingMode
+{
+ /** Pixel outside the texture area are fully transparent.<p>
+
+ This completely switches off pixel generation outside the
+ texture coordinate range [0,1]. This results in only one
+ instance of the texture generated per textured primitive.<p>
+ */
+ const byte NONE=0;
+
+
+ /** Clamp texture coordinate.<p>
+
+ This value clamps the texture coordinates to the range
+ [0,1]. This results in only one instance of the texture
+ generated per textured primitive, with the remaining area
+ filled with the color of the outermost texels<p>
+ */
+ const byte CLAMP=1;
+
+
+ /** Repeat the texture.<p>
+
+ This value repeats the texture over the textured primitive,
+ for the given texture coordinate.<p>
+ */
+ const byte REPEAT=2;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/ViewState.idl b/offapi/com/sun/star/rendering/ViewState.idl
new file mode 100644
index 000000000..a3c7e6aca
--- /dev/null
+++ b/offapi/com/sun/star/rendering/ViewState.idl
@@ -0,0 +1,68 @@
+/* -*- 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_ViewState_idl__
+#define __com_sun_star_rendering_ViewState_idl__
+
+#include <com/sun/star/geometry/AffineMatrix2D.idl>
+
+module com { module sun { module star { module rendering {
+
+interface XPolyPolygon2D;
+
+/** This structure contains information considered the view state.<p>
+
+ This structure contains information considered the view state,
+ i.e. the invariant setup used when painting a whole view of
+ something.<p>
+
+ @since OOo 2.0
+ */
+struct ViewState
+{
+ /** The affine transform associated with the view.<p>
+
+ This member is used to transform coordinates of draw
+ operations from user space to screen space.<p>
+ */
+ ::com::sun::star::geometry::AffineMatrix2D AffineTransform;
+
+
+ /** The clipping area associated with the view.<p>
+
+ This clipping is interpreted in the view coordinate systems,
+ i.e. subject to the view transform before mapping to the
+ device coordinate space.<p>
+
+ Specifying an empty interface denotes no clipping,
+ i.e. everything rendered to the canvas 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 rendered to the canvas will be
+ visible.<p>
+ */
+ XPolyPolygon2D Clip;
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/VolatileContentDestroyedException.idl b/offapi/com/sun/star/rendering/VolatileContentDestroyedException.idl
new file mode 100644
index 000000000..ad9f85fa4
--- /dev/null
+++ b/offapi/com/sun/star/rendering/VolatileContentDestroyedException.idl
@@ -0,0 +1,41 @@
+/* -*- 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_VolatileContentDestroyedException_idl__
+#define __com_sun_star_rendering_VolatileContentDestroyedException_idl__
+
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module rendering {
+
+ /** This exception indicates an invalid volatile bitmap content.<p>
+
+ When accessing or rendering XVolatileBitmap data, that has
+ been invalidated by the system, this exception will be thrown.<p>
+
+ @since OOo 2.0
+ */
+ exception VolatileContentDestroyedException : ::com::sun::star::uno::Exception
+ {
+ };
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XAnimatedSprite.idl b/offapi/com/sun/star/rendering/XAnimatedSprite.idl
new file mode 100644
index 000000000..adf9cf3e1
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XAnimatedSprite.idl
@@ -0,0 +1,173 @@
+/* -*- 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_XAnimatedSprite_idl__
+#define __com_sun_star_rendering_XAnimatedSprite_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/rendering/ViewState.idl>
+#include <com/sun/star/rendering/RenderState.idl>
+#include <com/sun/star/rendering/XSprite.idl>
+
+
+module com { module sun { module star { module rendering {
+
+/** This interface can be used to control an animated sprite object.<p>
+
+ This interface can be used to control an animated sprite object on
+ an XSpriteCanvas. Sprites are moving, animated objects.<p>
+
+ @since OOo 2.0
+ */
+interface XAnimatedSprite : XSprite
+{
+ /** Start animation sequence of this sprite.<p>
+
+ The speed of the animation is given in cycles per second
+ (where a cycle is defined as one full animation run, i.e. the
+ full [0,1] range of the XAnimation::render()'s
+ t parameter, or a full sequence of sprite bitmaps drawn). Once
+ an animation is running, the associated
+ XSpriteCanvas handles screen updates
+ automatically. That means, changes to position or alpha are
+ reflected on screen automatically. Please note further that
+ sprite visibility and animation are unrelated, i.e. a hidden
+ sprite can have a running animation, which then displays in
+ the middle of the animation sequence, when a show() is called
+ later on.<p>
+
+ @param nSpeed
+ The speed of the animation in cycles per second (where a cycle
+ is defined as one full animation run, i.e. the full [0,1]
+ range of the XAnimation::render()'s t
+ parameter, or a full sequence of sprite bitmaps drawn).
+ */
+ void startAnimation( [in] double nSpeed );
+
+
+ /** Stop the animation sequence.<p>
+
+ A subsequent XAnimatedSprite::startAnimation()
+ will commence the sequence at the point where it was stopped
+ with here. Once an animation is stopped, the associated
+ XSpriteCanvas does not update changed sprites
+ anymore.<p>
+ */
+ void stopAnimation();
+
+
+ /** Reset the animation sequence to start with the first frame.<p>
+
+ If the animation is currently running, the next frame that is
+ drawn after this method has finished, will be the first
+ one. Please note that if an animation is not started, the
+ associated XSpriteCanvas does not update changed
+ sprites automatically.<p>
+ */
+ void resetAnimation();
+
+
+ /** Issue an additional render call to this sprite's
+ animation.<p>
+
+ This method has no effect when called for a bitmap-sequence
+ sprite. Please note that if an animation is not started, the
+ associated XSpriteCanvas does not update changed
+ sprites automatically, but has to be told to do so via
+ XSpriteCanvas::updateScreen().<p>
+ */
+ void updateAnimation();
+
+
+ /** Changes the view state in place for this sprite's
+ animation.<p>
+
+ The state given here is used when calling the
+ XAnimation::render() method, or when drawing
+ the sprite's bitmaps, respectively. There's no need to call
+ XSpriteCanvas::updateAnimation() after this
+ method, as it automatically rerenders, if necessary. Please
+ note that if an animation is not started, the associated
+ XSpriteCanvas does not update changed sprites
+ automatically, but has to be told to do so via
+ XSpriteCanvas::updateScreen().<p>
+
+ @param aViewState
+ The state given here is used when calling the
+ XAnimation::render() method, or when drawing
+ the sprite's bitmaps, respectively.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the view transformation matrix is singular.
+ */
+ void setViewState( [in] ViewState aViewState )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Changes all of the sprite's attributes at one atomic
+ instance.<p>
+
+ This is useful at times where one does not want multiple
+ redraws for every state change.<p>
+
+ Please note that if an animation is not started, the
+ associated XSpriteCanvas does not update changed
+ sprites automatically, but has to be told to do so via
+ XSpriteCanvas::updateScreen().<p>
+
+ @param aNewPos
+ New left,top output position of the sprite. This position gets
+ transformed by the view and render state.
+
+ @param aViewState
+ New view state of the sprite, and part of the transformation
+ that is applied to aNewPos. The view transformation matrix
+ must not be singular.
+
+ @param aRenderState
+ New render state of the sprite, and part of the transformation
+ that is applied to aNewPos. The render transformation matrix
+ must not be singular.
+
+ @param nAlpha
+ New alpha value of the sprite. This value must be within the
+ [0,1] range.
+
+ @param bUpdateAnimation
+ Whether this method should implicitly call
+ XSpriteCanvas::updateAnimation() or not.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the passed parameters does not lie in the specified,
+ permissible range.
+ */
+ void setAll( [in] ::com::sun::star::geometry::RealPoint2D aNewPos,
+ [in] ViewState aViewState,
+ [in] RenderState aRenderState,
+ [in] double nAlpha,
+ [in] boolean bUpdateAnimation )
+ raises (com::sun::star::lang::IllegalArgumentException);
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XAnimation.idl b/offapi/com/sun/star/rendering/XAnimation.idl
new file mode 100644
index 000000000..0d92dc5b4
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XAnimation.idl
@@ -0,0 +1,106 @@
+/* -*- 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_XAnimation_idl__
+#define __com_sun_star_rendering_XAnimation_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/rendering/ViewState.idl>
+#include <com/sun/star/rendering/AnimationAttributes.idl>
+#include <com/sun/star/rendering/XCanvas.idl>
+
+
+module com { module sun { module star { module rendering {
+
+/* TODO: Have a property set here, to easily extend attributes? Think
+ that's advisable, because animations change the most. Implement
+ that with multiple inheritance interface types, please, not with
+ service description.
+*/
+
+/** This interface defines an animation sequence.<p>
+
+ This interface must be implemented by every animation object. It
+ is used by the XCanvas interface to render generic
+ animations.<p>
+
+ @since OOo 2.0
+ */
+interface XAnimation : ::com::sun::star::uno::XInterface
+{
+ /** Render the animation content at time t into the specified
+ canvas.<p>
+
+ Note that it is perfectly legal to e.g. map t in a nonlinear
+ fashion to internal frames, for example to achieve
+ acceleration or deceleration effects. It is required that the
+ render method has const semantics, i.e. when called with the
+ same parameter set, identical output must be generated. This
+ is because e.g. a Sprite might decide arbitrarily to render an
+ animation once and cache the result, or repaint it via
+ XAnimation::render every time.<p>
+
+ The rendered content, although, must be exactly the same for
+ identical viewState, canvas and t values. Or, for that
+ matters, must call the same canvas methods in the same order
+ with the same parameter sets, for identical viewState and t
+ values. Furthermore, when viewState has the identity
+ transformation set, rendered output must be contained in a
+ rectangle with upper left corner at (0,0) and width and height
+ given by the AnimationAttributes' untransformedSize
+ member. Any content exceeding this box might get clipped off.<p>
+
+ @param canvas
+ The target canvas to render this animation to.
+
+ @param viewState
+ The view state to be used when rendering this animation to the
+ target canvas. The view transformation matrix must not be
+ singular.
+
+ @param t
+ Time instant for which animation content is requested. The
+ range must always be [0,1], where 0 denotes the very beginning, and
+ 1 the end of the animation sequence.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the passed parameters does not lie in the specified,
+ permissible range.
+ */
+ void render( [in] XCanvas canvas, [in] ViewState viewState, [in] double t )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Request the attribute information for this animation.<p>
+
+ This method returns the AnimationAttributes
+ structure, which defines more closely how to play this
+ animation.<p>
+
+ @returns the requested AnimationAttributes
+ structure.
+ */
+ AnimationAttributes getAnimationAttributes();
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XBezierPolyPolygon2D.idl b/offapi/com/sun/star/rendering/XBezierPolyPolygon2D.idl
new file mode 100644
index 000000000..fd8ff0eec
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XBezierPolyPolygon2D.idl
@@ -0,0 +1,160 @@
+/* -*- 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_XBezierPolyPolygon2D_idl__
+#define __com_sun_star_rendering_XBezierPolyPolygon2D_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+#include <com/sun/star/rendering/XPolyPolygon2D.idl>
+#include <com/sun/star/geometry/RealBezierSegment2D.idl>
+
+module com { module sun { module star { module rendering {
+
+/** This is a specialized interface for a 2D poly-polygon containing
+ straight line and Bezier segments.<p>
+
+ This poly-polygon can contain polygons consisting of a mixture of
+ cubic Bezier curves and straight lines. As the straight line is a
+ special case of a cubic Bezier curve (control points collinear
+ with the line through start and end point), this can be expressed
+ uniformly with a sequence of RealBezierSegment2Ds.<p>
+
+ By convention, a RealBezierSegment2D is a straight
+ line segment, if all three contained points are strictly equal.<p>
+
+ @since OOo 2.0
+ */
+interface XBezierPolyPolygon2D : XPolyPolygon2D
+{
+ /** Query subset of this poly-polygon.<p>
+
+ Query subset of this poly-polygon, starting at the given
+ polygon and the given point within that polygon, and
+ containing the specified number of polygons and points in the
+ last polygon.<p>
+
+ @param nPolygonIndex
+ The index of the polygon to start point retrieval with. This
+ index must be in the range [0,numPolygons-1].
+
+ @param nNumberOfPolygons
+ The number of polygons to extract. This value must not exceed
+ numPolygons-nPolygonIndex.
+
+ @param nPointIndex
+ The index of the first point in the first polygon to
+ extract. This value must not exceed the number of points in
+ this polygon minus one.
+
+ @param nNumberOfPoints
+ The number of points to extract from the last polygon. This
+ value must not exceed the number of points in this last
+ polygon minus one.
+
+ @returns the sequence of extracted points.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if one of the given values exceed the permissible range.
+ */
+ sequence< sequence < ::com::sun::star::geometry::RealBezierSegment2D > > getBezierSegments( [in] long nPolygonIndex, [in] long nNumberOfPolygons, [in] long nPointIndex, [in] long nNumberOfPoints )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** Set the specified sequence of Bezier segments to the poly-polygon.
+
+ This method can either set the whole poly-polygon to the new
+ data, or insert the segments at the given index
+
+ @param points the points.
+
+ @param nPolygonIndex
+ The index of the polygon to start segment insertion with. This
+ index must be in the range [0,numPolygons], and the insertion
+ will take place <em>before</em> this position (i.e. when
+ specifying 0 here, the given Bezier sequence will precede all
+ existing polygons already within the poly-polygon). To append
+ to a poly-polygon, call setPoints() with
+ XBezierPolyPolygon2D::getNumberOfPolygons()
+ as the polygon index. If nPolygonIndex is -1, the given
+ Bezier sequence <em>replaces</em> the poly-polygon content,
+ such that after this method completes, it contains exactly the
+ specified Bezier segment data.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if one of the given values exceed the permissible range.
+ */
+ void setBezierSegments( [in] sequence< sequence< ::com::sun::star::geometry::RealBezierSegment2D > > points, [in] long nPolygonIndex )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** Get a single point from the poly-polygon.
+
+ @param nPolygonIndex
+ The index of the polygon where the point to be extract is
+ contained within. This index must be in the range
+ [0,numPolygons-1].
+
+ @param nPointIndex
+ The index of the point in the polygon specified by
+ nPolygonIndex, which is to be retrieved. This value must not
+ exceed the number of points in this polygon minus one.
+
+ @returns the requested point.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if one of the given values exceed the permissible range.
+
+ */
+ ::com::sun::star::geometry::RealBezierSegment2D getBezierSegment( [in] long nPolygonIndex, [in] long nPointIndex )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** Set a single point on the poly-polygon.<p>
+
+ The remaining points of the poly-polygon will not be changed by
+ this method. Use
+ XBezierPolyPolygon2D::getNumberOfPolygons()
+ or
+ XBezierPolyPolygon2D::getNumberOfPolygonPoints()
+ to append points or polygons, respectively.<p>
+
+ @param point
+ The point to be set at the poly-polygon.
+
+ @param nPolygonIndex
+ The index of the polygon to insert the point in. This index
+ must be in the range [0,numPolygons].
+
+ @param nPointIndex
+ The index of the point in the polygon specified by
+ nPolygonIndex, which is to be set. This value must not
+ exceed the number of points in this polygon.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if one of the given values exceed the permissible range.
+ */
+ void setBezierSegment( [in] ::com::sun::star::geometry::RealBezierSegment2D point, [in] long nPolygonIndex, [in] long nPointIndex )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XBitmap.idl b/offapi/com/sun/star/rendering/XBitmap.idl
new file mode 100644
index 000000000..ce6611bdc
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XBitmap.idl
@@ -0,0 +1,95 @@
+/* -*- 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_XBitmap_idl__
+#define __com_sun_star_rendering_XBitmap_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/geometry/IntegerSize2D.idl>
+#include <com/sun/star/geometry/RealSize2D.idl>
+#include <com/sun/star/rendering/VolatileContentDestroyedException.idl>
+
+module com { module sun { module star { module rendering {
+
+/** This is a generic interface to a bitmap.<p>
+
+ This interface contains the generic functionality to be used on
+ every XCanvas bitmap object. More format-specific
+ methods can be found at the XIntegerBitmap,
+ XIeeeDoubleBitmap, XIeeeFloatBitmap and
+ XHalfFloatBitmap interfaces.<p>
+
+ @since OOo 2.0
+ */
+interface XBitmap : ::com::sun::star::uno::XInterface
+{
+ /** Query the size of the bitmap.<p>
+
+ This method queries the bitmap size in pixel.<p>
+
+ @return the bitmap size in pixel.
+ */
+ ::com::sun::star::geometry::IntegerSize2D getSize();
+
+
+ /** Query transparency status of the bitmap.<p>
+
+ The method checks, whether the bitmap contains any alpha
+ information. The same information is also available at the
+ XColorSpace associated with this bitmap, though
+ much easier to access here (the color space then has a
+ component flagged
+ ColorComponentTag::ALPHA).<p>
+
+ @return `TRUE`, if the bitmap has alpha data, or `FALSE` if
+ not.
+ */
+ boolean hasAlpha();
+
+
+ /** Query a scaled copy of the original bitmap.
+
+ @param newSize
+ Requested size of the new bitmap. Both of the two size
+ components must be greater than zero.
+
+ @param beFast
+ When set to true, this parameter advises getScaledBitmap to
+ use the fastest available algorithm to scale the bitmap, which
+ might cause visible artifacts.
+
+ @returns the new scaled bitmap.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the size components are outside the specified range.
+
+ @throws VolatileContentDestroyedException
+ if the contents of a volatile bitmap have been destroyed, and
+ thus cannot be read to generate the scaled bitmap.
+ */
+ XBitmap getScaledBitmap( [in] ::com::sun::star::geometry::RealSize2D newSize, [in] boolean beFast )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ VolatileContentDestroyedException);
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XBitmapCanvas.idl b/offapi/com/sun/star/rendering/XBitmapCanvas.idl
new file mode 100644
index 000000000..c30b86a7d
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XBitmapCanvas.idl
@@ -0,0 +1,113 @@
+/* -*- 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_XBitmapCanvas_idl__
+#define __com_sun_star_rendering_XBitmapCanvas_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/geometry/RealRectangle2D.idl>
+#include <com/sun/star/rendering/RenderState.idl>
+#include <com/sun/star/rendering/XCanvas.idl>
+#include <com/sun/star/rendering/VolatileContentDestroyedException.idl>
+
+
+module com { module sun { module star { module rendering {
+
+/** This is a specialization of the canvas interface for bitmapped
+ canvases.<p>
+
+ This interface is a specialization of the canvas interface for
+ bitmapped canvases, where additional methods for accessing and
+ moving of bitmap content are provided.<p>
+
+ @since OOo 2.0
+ */
+interface XBitmapCanvas : XCanvas
+{
+ /** This method copies a rectangular area from a place of one
+ canvas to a place on another.<p>
+
+ This method copies a rectangular area from a place of one
+ canvas to a place on another. Source and destination areas are
+ permitted to overlap. If the source view or render state has a
+ clipping set, the regions clipped away from the source
+ rectangle are regarded fully transparent for the copy
+ operation. The device color for both source and destination
+ render state is ignored, the compositing mode only for the
+ source render state.<p>
+
+ @param sourceCanvas
+ Canvas from which to copy the bitmap data. Can be identical to
+ the canvas this method is called on, but must be valid.
+
+ @param sourceRect
+ Rectangle from which to copy the bitmap data. This rectangle
+ is subject to both view and render transformation, before
+ being applied. Thus, on screen, it does not necessarily
+ resemble a rectangle any more. The rectangle must be
+ non-empty, see
+ ::com::sun::star::geometry::RealRectangle2D
+ for details.
+
+ @param sourceViewState
+ The view state to apply to the source of this copy
+ operation. The view transformation must be non-singular.
+
+ @param sourceRenderState
+ The render state to apply to the source of this copy
+ operation. The render transformation must be non-singular, and
+ the compositing mode must be one of the
+ CompositingOperation values.
+
+ @param destRect
+ Rectangle into which to copy the bitmap data. This rectangle
+ is subject to both view and render transformation, before
+ being applied. Thus, on screen, it does not necessarily
+ resemble a rectangle any more. The rectangle must be
+ non-empty, see
+ ::com::sun::star::geometry::RealRectangle2D
+ for details.
+
+ @param destViewState
+ The view state to apply to the destination of this copy
+ operation. The view transformation must be non-singular.
+
+ @param destRenderState
+
+ The render state to apply to the destination of this copy
+ operation. The render transformation must be non-singular, and
+ the compositing mode must be one of the
+ CompositingOperation values.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the parameters are not within the specified range.
+ */
+ void copyRect( [in] XBitmapCanvas sourceCanvas,
+ [in] ::com::sun::star::geometry::RealRectangle2D sourceRect, [in] ViewState sourceViewState, [in] RenderState sourceRenderState,
+ [in] ::com::sun::star::geometry::RealRectangle2D destRect, [in] ViewState destViewState, [in] RenderState destRenderState )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ VolatileContentDestroyedException);
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XBitmapPalette.idl b/offapi/com/sun/star/rendering/XBitmapPalette.idl
new file mode 100644
index 000000000..0f67a3500
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XBitmapPalette.idl
@@ -0,0 +1,109 @@
+/* -*- 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_XBitmapPalette_idl__
+#define __com_sun_star_rendering_XBitmapPalette_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+#include <com/sun/star/rendering/XColorSpace.idl>
+
+
+module com { module sun { module star { module rendering {
+
+/** Interface to access the palette of a color-indexed bitmap.
+
+ @since OOo 2.0
+ */
+interface XBitmapPalette : ::com::sun::star::uno::XInterface
+{
+ /** Request the number of palette entries available.
+
+ @return the number of entries in this palette.
+ */
+ long getNumberOfEntries();
+
+
+ /** Request the color for the given palette entry.
+
+ @param entry
+ Output parameter for the color components at the given palette
+ entry.
+
+ @param nIndex
+ The index of the palette entry to be retrieved. Valid range is
+ [0,getNumberOfEntries()-1].
+
+ @return `TRUE`, if the given palette entry should be displayed
+ opaque, and `FALSE` if the entry should be displayed
+ transparent. This is sometimes used for so-called mask
+ transparency, by flagging certain palette entries to be fully
+ transparent when displaying the bitmap.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if the index is smaller than zero or larger than
+ XBitmapPalette::getNumberOfEntries()-1.
+ */
+ boolean getIndex( [out] sequence<ColorComponent> entry, [in] long nIndex )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** Set the color for the given palette entry.
+
+ @param color
+ Sequence of device color values in the associated bitmap's
+ device color format.
+
+ @param transparency
+ When `TRUE`, the specified palette entry is displayed as
+ opaque color. When `FALSE`, the given entry displays as fully
+ transparent during output.
+
+ @param nIndex
+ The index of the palette entry to be changed. Valid range is
+ [0,getNumberOfEntries()-1].
+
+ @return whether the palette entry was changed. For read-only
+ entries, this method always returns `FALSE`.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if the index is smaller than zero or larger than
+ XBitmapPalette::getNumberOfEntries()-1.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the given sequence of color components does not match the
+ associated bitmap's device color format.
+ */
+ boolean setIndex( [in] sequence<ColorComponent> color, [in] boolean transparency, [in] long nIndex )
+ raises (com::sun::star::lang::IndexOutOfBoundsException,
+ com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Query associated color space.<p>
+
+ @return the color space that is associated with this palette.
+ */
+ XColorSpace getColorSpace( );
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XBufferController.idl b/offapi/com/sun/star/rendering/XBufferController.idl
new file mode 100644
index 000000000..b9ddcf001
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XBufferController.idl
@@ -0,0 +1,121 @@
+/* -*- 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_XBufferController_idl__
+#define __com_sun_star_rendering_XBufferController_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+
+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 OOo 2.0
+ */
+interface XBufferController : ::com::sun::star::uno::XInterface
+{
+ /** Create the given number of background buffers.<p>
+
+ There's one buffer implicitly 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&lt;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 com::sun::star::lang::IllegalArgumentException
+ 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 com::sun::star::lang::IllegalArgumentException
+ 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
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XCachedPrimitive.idl b/offapi/com/sun/star/rendering/XCachedPrimitive.idl
new file mode 100644
index 000000000..ace6d7363
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XCachedPrimitive.idl
@@ -0,0 +1,61 @@
+/* -*- 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_XCachedPrimitive_idl__
+#define __com_sun_star_rendering_XCachedPrimitive_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/rendering/ViewState.idl>
+
+module com { module sun { module star { module rendering {
+
+/** Interface for cached repaint of already drawn XCanvas
+ primitives.<p>
+
+ This interface provides a method to quickly redraw some
+ XCanvas primitives, using cached data.<p>
+
+ @since OOo 2.0
+ */
+interface XCachedPrimitive : ::com::sun::star::uno::XInterface
+{
+ /** Redraw the cached primitive.<p>
+
+ Redraw the cached primitive, with a possibly new view state.<p>
+
+ @param aState
+ The view state to be used when redrawing the primitive. The
+ view state is of course permitted to differ from the one used
+ for initial rendering.
+
+ @return a value of type RepaintResult, denoting
+ the result of this operation.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the view transformation matrix is singular.
+ */
+ byte redraw( [in] ViewState aState )
+ raises (com::sun::star::lang::IllegalArgumentException);
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XCanvas.idl b/offapi/com/sun/star/rendering/XCanvas.idl
new file mode 100644
index 000000000..e393854b7
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XCanvas.idl
@@ -0,0 +1,666 @@
+/* -*- 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_XCanvas_idl__
+#define __com_sun_star_rendering_XCanvas_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/RealBezierSegment2D.idl>
+#include <com/sun/star/geometry/RealRectangle2D.idl>
+#include <com/sun/star/geometry/Matrix2D.idl>
+#include <com/sun/star/rendering/ViewState.idl>
+#include <com/sun/star/rendering/RenderState.idl>
+#include <com/sun/star/rendering/FontRequest.idl>
+#include <com/sun/star/rendering/FontInfo.idl>
+#include <com/sun/star/rendering/Texture.idl>
+#include <com/sun/star/rendering/StringContext.idl>
+#include <com/sun/star/rendering/StrokeAttributes.idl>
+#include <com/sun/star/rendering/VolatileContentDestroyedException.idl>
+#include <com/sun/star/beans/PropertyValue.idl>
+
+
+module com { module sun { module star { module geometry {
+ interface XMapping2D;
+}; }; }; };
+
+module com { module sun { module star { module rendering {
+
+interface XCanvasFont;
+interface XPolyPolygon2D;
+interface XCachedPrimitive;
+interface XBitmap;
+interface XGraphicDevice;
+interface XTextLayout;
+
+/** Central interface for rendering.<p>
+
+ This is the central interface for graphical output production, and
+ the place where all draw methods are located.<p>
+
+ Some notes are in order to explain the concepts used here. The
+ XCanvas interface is free of client-modifiable state,
+ i.e. it can be used safely and without external synchronization in
+ a multi-threaded environment. On the other hand, this implies that
+ for nearly every canvas operation, external state is
+ required. This is provided by ViewState and
+ RenderState in a unified fashion, supplemented by a
+ few extra state parameters for some methods (e.g. textured
+ polygons or text rendering).<p>
+
+ When used careless, this scheme can be inefficient to some extend,
+ because internally, view, render and other states have to be
+ combined before rendering. This is especially expensive for
+ complex clip polygons, i.e. when both ViewState and
+ RenderState have a complex clip polygon set, which
+ have to be intersected before rendering. It is therefore
+ recommended to combine ViewState and
+ RenderState already at the client side, when objects
+ are organized in a hierarchical way: the classic example are
+ grouped draw shapes, whose parent group object imposes a
+ common clipping and a common transformation on its siblings. The
+ group object would therefore merge the ViewState and
+ the RenderState it is called with into a new
+ ViewState, and call its siblings with a
+ RenderState containing only the local offset (and no
+ extra clipping).<p>
+
+ Further on, this stateless nature provides easy ways for
+ caching. Every non-trivial operation on XCanvas can
+ return a cache object, which, when called to redraw, renders the
+ primitive usually much more quickly than the original method. Note
+ that such caching is a lot more complicated, should the actual
+ rendering a method yields depend on internal state (which is the
+ case e.g. for the
+ ::com::sun::star::awt::XGraphics
+ interface). Please note, though, that deciding whether to return
+ an XCachedPrimitive is completely up to the
+ implementation - don't rely on the methods returning something
+ (this is because there might be cases when returning such a cache
+ object will actually be a pessimization, since it involves memory
+ allocation and comparisons).<p>
+
+ Things that need more than a small, fixed amount of data are
+ encapsulated in own interfaces, e.g. polygons and bitmaps. You
+ can, in principle, roll your own implementations of these
+ interfaces, wrap it around your internal representation of
+ polygons and bitmaps, and render them. It might just not be overly
+ fast, because the XCanvas would need to convert for
+ each render call. It is therefore recommended to create such
+ objects via the XGraphicDevice factory (to be
+ retrieved from every canvas object via the
+ getDevice() call) - they will then internally
+ optimize to the underlying graphics subsystem.<p>
+
+ @since OOo 2.0
+ */
+interface XCanvas : ::com::sun::star::uno::XInterface
+{
+ /** Clear the whole canvas area.<p>
+
+ This method clears the whole canvas area to the device default
+ color (e.g. white for a printer, transparent for an
+ XCustomSprite).
+ */
+ void clear();
+
+ /** Draw a point in device resolution on the device.
+
+ @param aPoint
+ The point to draw.
+
+ @param aViewState
+ The view state to be used when drawing this point.
+
+ @param aRenderState
+ The render state to be used when drawing this point.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+ */
+ void drawPoint( [in] ::com::sun::star::geometry::RealPoint2D aPoint, [in] ViewState aViewState, [in] RenderState aRenderState )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Draw a line in device resolution width (i.e. one device pixel
+ wide).
+
+ @param aStartPoint
+ The start point of the line to draw.
+
+ @param aEndPoint
+ The end point of the line to draw.
+
+ @param aViewState
+ The view state to be used when drawing this line.
+
+ @param aRenderState
+ The render state to be used when drawing this line.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+ */
+ void drawLine( [in] ::com::sun::star::geometry::RealPoint2D aStartPoint, [in] ::com::sun::star::geometry::RealPoint2D aEndPoint, [in] ViewState aViewState, [in] RenderState aRenderState )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Draw a cubic Bezier curve in device resolution width (i.e. one
+ device pixel wide).
+
+ @param aBezierSegment
+ The start and the two control points of the Bezier curve.
+
+ @param aEndPoint
+ The end point of the Bezier curve.
+
+ @param aViewState
+ The view state to be used when drawing this curve.
+
+ @param aRenderState
+ The render state to be used when drawing this curve.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+ */
+ void drawBezier( [in] ::com::sun::star::geometry::RealBezierSegment2D aBezierSegment, [in] ::com::sun::star::geometry::RealPoint2D aEndPoint, [in] ViewState aViewState, [in] RenderState aRenderState )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Draw a poly-polygon in device resolution line width (i.e. the
+ lines are one device pixel wide).
+
+ @param xPolyPolygon
+ The poly-polygon to draw.
+
+ @param aViewState
+ The view state to be used when drawing this polygon.
+
+ @param aRenderState
+ The render state to be used when drawing this polygon.
+
+ @return a handle to the cached rendering output.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+ */
+ XCachedPrimitive drawPolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Stroke each polygon of the provided poly-polygon with the
+ specified stroke attributes.<p>
+
+ This method considers the stroking of all polygons as an
+ atomic operation in relation to the RenderState's
+ CompositeOperationy operation. That means,
+ overlapping strokes from distinct polygons will look exactly
+ as overlapping segments of the same polygon, even with
+ transparency.<p>
+
+ @param xPolyPolygon
+ The poly-polygon to render.
+
+ @param aViewState
+ The view state to be used when stroking this polygon.
+
+ @param aRenderState
+ The render state to be used when stroking this polygon.
+
+ @param aStrokeAttributes
+ Further attributes used to parameterize the stroking.
+
+ @return a handle to the cached rendering output.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+ */
+ XCachedPrimitive strokePolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState, [in] StrokeAttributes aStrokeAttributes )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Stroke each polygon of the provided poly-polygon with the
+ specified stroke attributes, fill the stroked outline
+ with the specified texture graphics.<p>
+
+ This method considers the stroking of all polygons as an
+ atomic operation in relation to the RenderState's
+ CompositeOp operation. That means, overlapping
+ strokes from distinct polygons will look exactly as
+ overlapping segments of the same polygon, even with
+ transparency.<p>
+
+ @param xPolyPolygon
+ The poly-polygon to render.
+
+ @param aViewState
+ The view state to be used when strokes this polygon.
+
+ @param aRenderState
+ The render state to be used when stroking this polygon.
+
+ @param aTextures
+ A sequence of texture definitions, with which to fill the
+ stroked area.
+
+ @param aStrokeAttributes
+ Further attributes used to parameterize the stroking.
+
+ @return a handle to the cached rendering output.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+
+ @throws VolatileContentDestroyedException
+ if a texture bitmap was volatile, and the content was
+ destroyed before the rendering could take place.
+ */
+ XCachedPrimitive strokeTexturedPolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState, [in] sequence<Texture> aTextures, [in] StrokeAttributes aStrokeAttributes )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ VolatileContentDestroyedException);
+
+
+ /** Stroke each polygon of the provided poly-polygon with the
+ specified stroke attributes, fill the stroked outline
+ with the specified texture graphics, map the texture to the
+ outline via the specified texture mapping.<p>
+
+ This method considers the stroking of all polygons as an
+ atomic operation in relation to the RenderState's
+ CompositeOp operation. That means, overlapping
+ strokes from distinct polygons will look exactly as
+ overlapping segments of the same polygon, even with
+ transparency.
+
+ @param xPolyPolygon
+ The poly-polygon to render.
+
+ @param aViewState
+ The view state to be used when stroking this polygon.
+
+ @param aRenderState
+ The render state to be used when stroking this polygon.
+
+ @param aTextures
+ A sequence of texture definitions, with which to fill the
+ stroked area.
+
+ @param xMapping
+ A bilinear mapping function which defines the warping of the
+ textures on the output area.
+
+ @param aStrokeAttributes
+ Further attributes used to parameterize the stroking.
+
+ @return a handle to the cached rendering output.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+
+ @throws VolatileContentDestroyedException
+ if a texture bitmap was volatile, and the content was
+ destroyed before the rendering could take place.
+ */
+ XCachedPrimitive strokeTextureMappedPolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState, [in] sequence<Texture> aTextures, [in] ::com::sun::star::geometry::XMapping2D xMapping, [in] StrokeAttributes aStrokeAttributes )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ VolatileContentDestroyedException);
+
+
+ // [TODO: Method misplaced at this interface?]
+
+ /** Query the polygonal representation of the stroke outlines, as
+ it would be generated by the strokePolyPolygon methods.<p>
+
+ This method can be used to e.g. set a clipping which covers the same
+ area as a stroke.<p>
+
+ @param xPolyPolygon
+ The poly-polygon to render.
+
+ @param aViewState
+ The view state to be used when generating the outline.
+
+ @param aRenderState
+ The render state to be used when generating the outline.
+
+ @param aStrokeAttributes
+ Further attributes used to parameterize the stroking.
+
+ @return a poly-polygon describing the outline of the stroked
+ area.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+ */
+ XPolyPolygon2D queryStrokeShapes( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState, [in] StrokeAttributes aStrokeAttributes )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Fill the given poly-polygon.<p>
+
+ This method fills the given poly-polygon according to the
+ RenderState's color and the poly-polygon's fill
+ rule.<p>
+
+ @param xPolyPolygon
+ The poly-polygon to render.
+
+ @param aViewState
+ The view state to be used when filling this polygon.
+
+ @param aRenderState
+ The render state to be used when filling this polygon.
+
+ @return a handle to the cached rendering output.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+ */
+ XCachedPrimitive fillPolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Fill the given poly-polygon with a texture.<p>
+
+ This method fills the given poly-polygon according to the
+ RenderState's color, the given textures and
+ poly-polygon's fill rule.<p>
+
+ @param xPolyPolygon
+ The poly-polygon to render.
+
+ @param aViewState
+ The view state to be used when filling this polygon.
+
+ @param aRenderState
+ The render state to be used when filling this polygon.
+
+ @param xTextures
+ A sequence of texture definitions, with which to fill the
+ polygonal area.
+
+ @return a handle to the cached rendering output.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+
+ @throws VolatileContentDestroyedException
+ if a texture bitmap was volatile, and the content was
+ destroyed before the rendering could take place.
+ */
+ XCachedPrimitive fillTexturedPolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState, [in] sequence<Texture> xTextures )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ VolatileContentDestroyedException);
+
+
+ /** Fill the given poly-polygon with a mapped texture.<p>
+
+ This method fills the given poly-polygon according to the
+ RenderState's color, the given textures and
+ poly-polygon's fill rule. The texture is mapped to the
+ poly-polygon's interior via the given texture mapping.<p>
+
+ @param xPolyPolygon
+ The poly-polygon to render.
+
+ @param aViewState
+ The view state to be used when filling this polygon.
+
+ @param aRenderState
+ The render state to be used when filling this polygon.
+
+ @param xTextures
+ A sequence of texture definitions, with which to fill the
+ polygonal area.
+
+ @param xMapping
+ A bilinear mapping function which defines the warping of the
+ textures on the output area.
+
+ @return a handle to the cached rendering output.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+
+ @throws VolatileContentDestroyedException
+ if a texture bitmap was volatile, and the content was
+ destroyed before the rendering could take place.
+ */
+ XCachedPrimitive fillTextureMappedPolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState, [in] sequence<Texture> xTextures, [in] ::com::sun::star::geometry::XMapping2D xMapping )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ VolatileContentDestroyedException);
+
+
+ /** Create a suitable font for the specified font description.
+
+ @param aFontRequest
+
+ @param aExtraFontProperties
+ Additional font properties to be applied when selecting this
+ font. Normally, you should not need this parameter. Currently,
+ the following property is recognized:
+
+ - EmphasisMark: long integer that represents the emphasis mark.
+ @see ::com::sun::star::awt::FontEmphasisMark
+
+ @param aFontMatrix
+ Font-specific transformation matrix, which affects both the
+ glyphs as well as the advancement.
+
+ @returns the requested font, or an invalid reference, if the
+ request failed.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the parameters is not within the allowed range.
+ */
+ XCanvasFont createFont( [in] FontRequest aFontRequest, [in] sequence< ::com::sun::star::beans::PropertyValue > aExtraFontProperties, [in] ::com::sun::star::geometry::Matrix2D aFontMatrix )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Query font information, specific to this canvas.<p>
+
+ @param aFilter
+ Filter parameter to reduce the list of returned fonts. Every
+ member of FontInfo that is not the empty string
+ or the "don't care" value restricts the list of returned fonts
+ to contain only those that have the specified attribute.
+
+ @param aFontProperties
+ This interface can provide additional font properties to
+ filter the list of available fonts against.
+
+ @returns the list of fonts matching the filter set.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the font properties are invalid or not recognized,
+ or if one of the FontInfo members is not within
+ the permitted range.
+ */
+ sequence< FontInfo > queryAvailableFonts( [in] FontInfo aFilter, [in] sequence< ::com::sun::star::beans::PropertyValue > aFontProperties )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Draw the text given by the substring of the specified string
+ with the given font.<p>
+
+ The local origin of this output operation is either the left
+ end of the text baseline, for textDirection equal
+ LEFT_TO_RIGHT, or the right end of the baseline, for
+ textDirection equal to RIGHT_TO_LEFT, respectively.<p>
+
+ @param aText
+ The text to output.
+
+ @param xFont
+ The font retrieved from this canvas to be used when drawing
+ the text.
+
+ @param aViewState
+ The view state to be used when drawing this text.
+
+ @param aRenderState
+ The render state to be used when drawing this text.
+
+ @param nTextDirection
+ A value from the TextDirection collection,
+ denoting the main writing direction for this string. The main
+ writing direction determines the origin of the text output,
+ i.e. the left edge for left-to-right and the right edge for
+ right-to-left text.
+
+ @return a handle to the cached rendering output.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+ */
+ XCachedPrimitive drawText( [in] StringContext aText, [in] XCanvasFont xFont, [in] ViewState aViewState, [in] RenderState aRenderState, [in] byte nTextDirection )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Draw the formatted text given by the text layout.<p>
+
+ The glyphs as represented by the text layout are always output
+ with the reference position being the leftmost edge of the
+ layout object's baseline. If the layout contains more than one
+ baseline, the baseline of the first strong character in
+ logical order is used here (strong in this context means that
+ the character can be unambiguously assigned to a Unicode
+ script).<p>
+
+ @param xLayoutetText
+ An interface to the readily layouted text, obtained from a
+ XCanvasFont created at this canvas. The text
+ layout already carries intrinsic font information.
+
+ @param aViewState
+ The view state to be used when drawing this text.
+
+ @param aRenderState
+ The render state to be used when drawing this text.
+
+ @return a handle to the cached rendering output.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+ */
+ XCachedPrimitive drawTextLayout( [in] XTextLayout xLayoutetText, [in] ViewState aViewState, [in] RenderState aRenderState )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Render the given bitmap.<p>
+
+ This method renders the bitmap, at a position and shape as
+ specified by the combined view and render transformations. For
+ fast render speed, the bitmap should be created by the
+ corresponding XGraphicDevice's
+ XGraphicDevice::createCompatibleBitmap()
+ method.<p>
+
+ @param xBitmap
+ The bitmap to render.
+
+ @param aViewState
+ The view state to be used when drawing this text.
+
+ @param aRenderState
+ The render state to be used when drawing this text.
+
+ @return a handle to the cached rendering output.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+
+ @throws VolatileContentDestroyedException
+ if a texture bitmap was volatile, and the content was
+ destroyed before the rendering could take place.
+ */
+ XCachedPrimitive drawBitmap( [in] XBitmap xBitmap, [in] ViewState aViewState, [in] RenderState aRenderState )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ VolatileContentDestroyedException);
+
+ /** Render the given bitmap, with a global color modulation.<p>
+
+ This method renders the bitmap, at a position and shape as
+ specified by the combined view and render transformations. For
+ fast render speed, the bitmap should be created by the
+ corresponding XGraphicDevice's
+ XGraphicDevice::createCompatibleBitmap()
+ method. The bitmap's color channel values are multiplied with
+ the device color values as specified in the render state.<p>
+
+ @param xBitmap
+ The bitmap to render.
+
+ @param aViewState
+ The view state to be used when drawing this text.
+
+ @param aRenderState
+ The render state to be used when drawing this text. The device
+ color entry in the render state is multiplied with every pixel
+ color value, and only the result is rendered into the
+ canvas. If, for example, the bitmap should be rendered with
+ increased global transparency, set all device color channels
+ to 1.0, except for the alpha channel, which should be set to
+ the desired transparency.
+
+ @return a handle to the cached rendering output.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the view and render state parameters are outside the
+ specified range.
+
+ @throws VolatileContentDestroyedException
+ if a texture bitmap was volatile, and the content was
+ destroyed before the rendering could take place.
+ */
+ XCachedPrimitive drawBitmapModulated( [in] XBitmap xBitmap, [in] ViewState aViewState, [in] RenderState aRenderState )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ VolatileContentDestroyedException);
+
+
+ /** Request the associated graphic device for this canvas.<p>
+
+ A graphic device provides methods specific to the underlying
+ output device capabilities, which are common for all canvases
+ rendering to such a device. This includes device resolution,
+ color space, or bitmap formats.
+
+ @return the associated XGraphicDevice.
+ */
+ XGraphicDevice getDevice();
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XCanvasFont.idl b/offapi/com/sun/star/rendering/XCanvasFont.idl
new file mode 100644
index 000000000..d8b62f424
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XCanvasFont.idl
@@ -0,0 +1,109 @@
+/* -*- 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_XCanvasFont_idl__
+#define __com_sun_star_rendering_XCanvasFont_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/geometry/RealRectangle2D.idl>
+#include <com/sun/star/rendering/FontRequest.idl>
+#include <com/sun/star/rendering/FontMetrics.idl>
+#include <com/sun/star/rendering/RenderState.idl>
+#include <com/sun/star/rendering/ViewState.idl>
+#include <com/sun/star/rendering/StringContext.idl>
+#include <com/sun/star/beans/PropertyValue.idl>
+
+
+module com { module sun { module star { module rendering {
+
+interface XCanvas;
+interface XTextLayout;
+interface XPolyPolygon2D;
+
+/** This interface provides access to a specific, XCanvas-dependent
+ font incarnation. This font is not universally usable, but belongs
+ to the XCanvas it was queried from.
+ */
+interface XCanvasFont : ::com::sun::star::uno::XInterface
+{
+ /** Create a text layout interface.<p>
+
+ Create a text layout interface for the given string, using
+ this font to generate the glyphs from.<p>
+
+ @param aText
+ The text to layout.
+
+ @param nDirection
+ Main text direction for the string specified. The main text
+ direction is e.g. important for characters that are not
+ strong, i.e. that change affinity according to the current
+ writing direction. Make sure that across text portions and
+ lines, the direction is set consistently.
+
+ @param nRandomSeed
+ Optional random seed for OpenType glyph variations.
+ */
+ XTextLayout createTextLayout( [in] StringContext aText, [in] byte nDirection, [in] hyper nRandomSeed );
+
+
+ /** Query the FontRequest that was used to generate this object.
+ */
+ FontRequest getFontRequest();
+
+
+ /** Query metric information about the font, that is generic to
+ all its glyphs.<p>
+
+ Note that the metric values in the returned result are in the
+ font coordinate system, i.e. relative to the corresponding
+ size of this font. That is, when this font was created with a
+ cell size of 20 units, the metrics returned are calculated
+ relative to this size.
+ */
+ FontMetrics getFontMetrics();
+
+
+ /** Query the list of available font sizes.<p>
+
+ This method queries the list of available font sizes (in
+ device units) for this font. For scalable fonts that are not
+ restricted to discrete sizes, this list is <em>empty</em>,
+ meaning that every size is possible. Fonts that <em>do</em>
+ restrict the device size to certain discrete values, setting
+ an overall transformation that scales the
+ FontRequest::CellSize to something not
+ contained in the list returned by this method can lead to
+ visible disturbances.<p>
+ */
+ sequence< double > getAvailableSizes();
+
+
+ /** Query the list of additional font properties.<p>
+ */
+ sequence< ::com::sun::star::beans::PropertyValue > getExtraFontProperties();
+
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XColorSpace.idl b/offapi/com/sun/star/rendering/XColorSpace.idl
new file mode 100644
index 000000000..12d9c2705
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XColorSpace.idl
@@ -0,0 +1,244 @@
+/* -*- 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_XColorSpace_idl__
+#define __com_sun_star_rendering_XColorSpace_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/beans/PropertyValue.idl>
+#include <com/sun/star/rendering/ColorProfile.idl>
+#include <com/sun/star/rendering/ColorComponent.idl>
+#include <com/sun/star/rendering/RGBColor.idl>
+#include <com/sun/star/rendering/ARGBColor.idl>
+
+module com { module sun { module star { module rendering {
+
+/** Information how to interpret certain color data.<p>
+
+ This interface encapsulates all information that is necessary to
+ interpret color data, by defining a describing color space, like
+ for example CMYK or sRGB. You can either convert between this and
+ an arbitrary other color space, or into the standard RGB or ARGB
+ formats (because those are so overwhelmingly common in computer
+ graphics).<p>
+
+ All canvas interfaces standardize to sequences of IEEE doubles for
+ color representation. As this is overly verbose when used for
+ bitmap data, derived interfaces exist,
+ e.g. XIntegerBitmapColorSpace, which use sequences of
+ integers for color representation.<p>
+ */
+interface XColorSpace
+{
+ /** Query type of this color space.<p>
+
+ @return a value from the ColorSpaceType constant
+ group.
+ */
+ byte getType();
+
+ /** Query the kind for each color component.<p>
+
+ Color space components tend to correspond to physical
+ attributes like the amount of one specific colorant contained
+ in the final output color. This method returns a sequence of
+ tags, specifying for each component of a color value, to what
+ color attribute (if any) it corresponds. The values must be
+ one of the ColorComponentTag constants.<p>
+
+ At the same time, the number of elements in this sequence
+ corresponds to the number of color channels for this color
+ space.<p>
+
+ @remark For the standard RGB color space, ComponentTags
+ consists of three elements, containing RGB_RED, RGB_GREEN and
+ RGB_BLUE tags, respectively
+ */
+ sequence<byte> getComponentTags();
+
+ /** Query rendering intent of this color space.<p>
+
+ @return a value from the RenderingIntent constant
+ group.
+ */
+ byte getRenderingIntent();
+
+ /** Query various optional properties from the color space.<p>
+
+ If this color space has an ICC color profile, the sequence
+ contains an element named ICCProfile. Some color spaces also
+ have properties Gamma, Whitepoint and Blackpoint. Background
+ information for these is available <a
+ href="http://en.wikipedia.org/wiki/Color_temperature">here</a>.
+ */
+ sequence< ::com::sun::star::beans::PropertyValue > getProperties();
+
+
+
+ /** Convert to color of another color space.<p>
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.
+
+ @param targetColorSpace the color space to convert to.
+
+ @return the corresponding sequence of device colors in the
+ target color space (e.g. `sequence<double>` or
+ `sequence<byte>`).
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format
+ (e.g. if the number of components is wrong)
+ */
+ sequence<ColorComponent> convertColorSpace( [in] sequence<ColorComponent> deviceColor, [in] XColorSpace targetColorSpace )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert color value in this color space to sRGB color values.<p>
+
+ Any information not representable in the RGBColor
+ struct is discarded during the conversion. This includes alpha
+ information.
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.
+
+ @return the corresponding sequence of colors in the sRGB color
+ space.
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+
+ @see convertToARGB()
+ */
+ sequence<RGBColor> convertToRGB( [in] sequence<ColorComponent> deviceColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert color value in this color space to sRGB color values, with linear alpha.<p>
+
+ If the given input color does not carry alpha information, an
+ alpha value of 1.0 (fully opaque) is assumed.
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.
+
+ @return the corresponding sequence of colors in the sRGB color
+ space.
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+ */
+ sequence<ARGBColor> convertToARGB( [in] sequence<ColorComponent> deviceColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert color value in this color space to premultiplied sRGB
+ color values, with linear alpha.<p>
+
+ If the given input color does not carry alpha information, an
+ alpha value of 1.0 (fully opaque) is assumed. The resulting
+ individual RGB color values are premultiplied by the alpha
+ value (e.g. if alpha is 0.5, each color value has only half of
+ the original intensity).<p>
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.
+
+ @return the corresponding sequence of colors in the sRGB color
+ space.
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+ */
+ sequence<ARGBColor> convertToPARGB( [in] sequence<ColorComponent> deviceColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert sRGB color to a representation in this color space.<p>
+
+ If this color space conveys alpha information, it is assumed
+ be fully opaque for the given RGB color value.
+
+ @param rgbColor Sequence of sRGB color components. Is
+ permitted to contain more than one color element, therefore,
+ batch conversion of multiple color values is possible.
+
+ @return the corresponding sequence of device colors.
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+ */
+ sequence<ColorComponent> convertFromRGB( [in] sequence<RGBColor> rgbColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert sRGB color with linear alpha into this color space.<p>
+
+ If this color space does not convey alpha information, the
+ specified alpha value is silently ignored.
+
+ @param rgbColor Sequence of sRGB color components. Is
+ permitted to contain more than one color element, therefore,
+ batch conversion of multiple color values is possible.
+
+ @return the corresponding sequence of device colors.
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+ */
+ sequence<ColorComponent> convertFromARGB( [in] sequence<ARGBColor> rgbColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert premultiplied sRGB color with linear alpha into this
+ color space.<p>
+
+ If this color space does not convey alpha information, the
+ specified alpha value is silently ignored.
+
+ @param rgbColor Sequence of sRGB color components. Is
+ permitted to contain more than one color element, therefore,
+ batch conversion of multiple color values is possible. The
+ individual color values are assumed to be premultiplied by the
+ alpha value.
+
+ @return the corresponding sequence of device colors.
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+ */
+ sequence<ColorComponent> convertFromPARGB( [in] sequence<ARGBColor> rgbColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XCustomSprite.idl b/offapi/com/sun/star/rendering/XCustomSprite.idl
new file mode 100644
index 000000000..75b9bfa78
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XCustomSprite.idl
@@ -0,0 +1,63 @@
+/* -*- 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_XCustomSprite_idl__
+#define __com_sun_star_rendering_XCustomSprite_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/rendering/ViewState.idl>
+#include <com/sun/star/rendering/RenderState.idl>
+#include <com/sun/star/rendering/XSprite.idl>
+
+module com { module sun { module star { module rendering {
+
+interface XCanvas;
+
+/** Interface to control a custom sprite object on a XSpriteCanvas.<p>
+
+ Every change performed on XCustomSprite objects is only visible
+ after a XSpriteCanvas::updateScreen() call, to facilitate
+ synchronized screen updates.
+
+ TODO: Maybe more than alpha has to be overridden from render state.
+ TODO: Provide means to change the output area
+ */
+interface XCustomSprite : XSprite
+{
+
+ /** Query a render canvas for this sprite's content.<p>
+
+ Whatever is rendered to this canvas will become visible on the
+ screen only after a XSpriteCanvas::updateScreen() call at the
+ associated sprite canvas. This canvas is not equivalent to the
+ host canvas of the sprite. At the very least, all output
+ happens relative to the sprite's upper left corner, i.e. the
+ origin of the sprite's canvas device coordinate system will
+ move with the sprite across the screen.
+
+ @return the canvas the sprite content can be rendered into.
+ */
+ XCanvas getContentCanvas();
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XGraphicDevice.idl b/offapi/com/sun/star/rendering/XGraphicDevice.idl
new file mode 100644
index 000000000..a91becfe2
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XGraphicDevice.idl
@@ -0,0 +1,267 @@
+/* -*- 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_XGraphicDevice_idl__
+#define __com_sun_star_rendering_XGraphicDevice_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/geometry/IntegerSize2D.idl>
+#include <com/sun/star/geometry/RealSize2D.idl>
+#include <com/sun/star/rendering/XLinePolyPolygon2D.idl>
+#include <com/sun/star/rendering/XBezierPolyPolygon2D.idl>
+#include <com/sun/star/rendering/XColorSpace.idl>
+#include <com/sun/star/lang/XMultiServiceFactory.idl>
+
+module com { module sun { module star { module rendering {
+
+interface XBitmap;
+interface XVolatileBitmap;
+interface XBufferController;
+
+/* TODO: There's obviously a concept called window missing here, where
+ methods such as bufferController, fullscreen mode etc . belong
+ to. But see below
+ */
+
+/** This interface provides access to a graphic device, such as a
+ printer, or a screen device. Every canvas (@see XCanvas) has
+ exactly one associated graphic device, into which its output is
+ rendered.
+
+ For a typical windowing system, the graphic device is equivalent
+ to a distinct OS window, with its own clipped output area,
+ fullscreen and double-buffering attributes. That is, even if one
+ can have multiple canvases per system window, they all share the
+ same graphic device and thus e.g. fullscreen state. If the OS
+ restrictions are in such a way that fullscreen or double-buffering
+ is screen-exclusive, i.e. that per screen, only one object can
+ have this state, it might even be that all windows on the screen
+ share a common graphic device.
+ */
+interface XGraphicDevice : ::com::sun::star::uno::XInterface
+{
+ /** Query the controller for multi buffering functionality on this
+ graphic device.
+
+ If there is no such functionality available, the NULL
+ reference is returned.
+ */
+ XBufferController getBufferController();
+
+
+ /** Query the color space interface for this graphic device.
+
+ This is to be used when interpreting or setting device color
+ values.
+ */
+ XColorSpace getDeviceColorSpace();
+
+
+ /** Query the physical resolution of the device in pixel per
+ millimeter.
+
+ A special floating point value of +infinity here indicates
+ "unknown", i.e. at the time of rendering undetermined or
+ possibly infinite resolution along the corresponding
+ direction.
+ */
+ ::com::sun::star::geometry::RealSize2D getPhysicalResolution();
+
+
+ /** Query the physical dimensions of the device in millimeter.
+
+ A special floating point value of +infinity here indicates
+ "unknown", i.e. at the time of rendering undetermined or
+ possibly infinite resolution along the corresponding
+ direction.
+
+ @see XBitmap::getSize()
+ */
+ ::com::sun::star::geometry::RealSize2D getPhysicalSize();
+
+
+ /** Create a line poly-polygon which can internally use
+ device-optimized representations already.
+
+ @param points
+ The points of the poly-polygon, in a separate array for every polygon.
+ */
+ XLinePolyPolygon2D createCompatibleLinePolyPolygon( [in] sequence< sequence< ::com::sun::star::geometry::RealPoint2D > > points );
+
+
+ /** Create a Bezier poly-polygon which can internally use
+ device-optimized representations already.
+
+ @param points
+ The points of the poly-polygon, in a separate array for every polygon.
+ */
+ XBezierPolyPolygon2D createCompatibleBezierPolyPolygon( [in] sequence< sequence< ::com::sun::star::geometry::RealBezierSegment2D > > points );
+
+
+ /** Create a bitmap whose memory layout and sample model is
+ compatible to the graphic device.
+
+ @param size
+ Size of the requested bitmap in pixel. Both components of the
+ size must be greater than 0
+ */
+ XBitmap createCompatibleBitmap( [in] ::com::sun::star::geometry::IntegerSize2D size )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Create a volatile bitmap that is usable with this graphic device.
+
+ A volatile bitmap's difference in comparison to a plain bitmap
+ (e.g. generated via createCompatibleBitmap()) is the fact that
+ its content might vanish at any point in time (making any
+ operation with them produce a
+ VolatileContentDestroyedException). The benefit,
+ on the other hand, is that they might be easy to
+ hardware-accelerate on certain platforms, without the need to
+ keep a safety copy of the content internally.
+
+ @param size
+ Size of the requested bitmap in pixel. Both components of the
+ size must be greater than 0
+ */
+ XVolatileBitmap createVolatileBitmap( [in] ::com::sun::star::geometry::IntegerSize2D size )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Create a bitmap with alpha channel whose memory layout and
+ sample model is compatible to the graphic device.
+
+ @param size
+ Size of the requested bitmap in pixel. Both components of the
+ size must be greater than 0
+ */
+ XBitmap createCompatibleAlphaBitmap( [in] ::com::sun::star::geometry::IntegerSize2D size )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Create a volatile bitmap with alpha channel that is usable
+ with this graphic device.
+
+ A volatile bitmap's difference in comparison to a plain bitmap
+ (e.g. generated via createCompatibleBitmap()) is the fact that
+ its content might vanish at any point in time (making any
+ operation with them produce a
+ VolatileContentDestroyedException). The benefit,
+ on the other hand, is that they might be easy to
+ hardware-accelerate on certain platforms, without the need to
+ keep a safety copy of the content internally.
+
+ @param size
+ Size of the requested bitmap in pixel. Both components of the
+ size must be greater than 0
+ */
+ XVolatileBitmap createVolatileAlphaBitmap( [in] ::com::sun::star::geometry::IntegerSize2D size )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Get a reference to this device's parametric polygon factory.
+
+ @return a reference to this device's parametric polygon
+ factory. Although it is possible to use parametric polygons on
+ all canvases, regardless of the associated graphic device,
+ this is not advisable: each canvas implementation is free to
+ internally generate optimized parametric polygons, which can
+ be used more directly for e.g. texturing operations.
+
+ Available services (all canvas implementations should provide
+ this minimal set, though are free to add more; just check the
+ getAvailableServiceNames() on the returned interface):
+
+ - Gradients - all gradients need to support two construction
+ parameters, "Colors" being a `sequence&lt; Color &gt;`
+ and "Stops" being a `sequence&lt; double &gt;`. Both must
+ have the same length, and at least two elements. See
+ http://www.w3.org/TR/SVG11/pservers.html#GradientStops for
+ the semantics of gradient stops and colors.
+ Required gradient services:
+
+ - "LinearGradient" - the gradient varies linearly between
+ the given colors. without coordinate system
+ transformation, the color interpolation happens in
+ increasing x direction, and is constant in y
+ direction. Equivalent to svg linear gradient
+ http://www.w3.org/TR/SVG11/pservers.html#LinearGradients
+
+ - "EllipticalGradient" - this gradient has zeroth color
+ index in the middle, and varies linearly between center
+ and final color. The services takes an additional
+ parameter named "AspectRatio" of double
+ (width divided by height), if this aspect ratio is 1, the
+ gradient is circular. If it's not 1, the gradient is
+ elliptical, with the special twist that the aspect ratio
+ is maintained also for the center color: the gradient will
+ not collapse into a single point, but become a line of
+ center color. If "AspectRatio" is missing, or equal to 1,
+ this gradient yields similar results as the svg radial
+ gradient
+ http://www.w3.org/TR/SVG11/pservers.html#RadialGradients
+
+ - "RectangularGradient" - this gradient has zeroth color
+ index in the middle, and varies linearly between center
+ and final color via rectangular boxes
+ around the center point. The services takes an additional
+ parameter named "AspectRatio" of double
+ (width divided by height), if this aspect ratio is 1, the
+ gradient is quadratic. If it's not 1, the gradient is
+ rectangular, with the special twist that the aspect ratio
+ is maintained also for the center color: the gradient will
+ not collapse into a single point, but become a line of
+ center color.
+
+ - Hatch patterns - Required hatch services:
+
+ - "VerticalLineHatch" - this hatching consists of vertical lines
+ - "OrthogonalLinesHatch" - this hatching consists of
+ crossing vertical and horizontal lines
+ - "ThreeCrossingLinesHatch" - this hatching consists of
+ vertical and horizontal lines plus diagonal lines from
+ left, top to bottom, right.
+ - "FourCrossingLinesHatch" - this hatching consists of
+ vertical and horizontal lines plus diagonal lines in both
+ directions.
+ */
+ com::sun::star::lang::XMultiServiceFactory getParametricPolyPolygonFactory();
+
+
+ /** Tells whether this graphic device has a full screen mode,
+ i.e. whether a window can cover the whole screen exclusively.
+ */
+ boolean hasFullScreenMode();
+
+
+ /** Enter or leave the fullscreen mode, if possible. The return
+ value denotes the success of the operation.
+
+ @attention depending on the underlying operating system,
+ fullscreen mode can be left without an enterFullScreenMode(
+ false ) call.
+ */
+ boolean enterFullScreenMode( [in] boolean bEnter );
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XHalfFloatBitmap.idl b/offapi/com/sun/star/rendering/XHalfFloatBitmap.idl
new file mode 100644
index 000000000..b3583a3c1
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XHalfFloatBitmap.idl
@@ -0,0 +1,75 @@
+/* -*- 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_XHalfFloatBitmap_idl__
+#define __com_sun_star_rendering_XHalfFloatBitmap_idl__
+
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+#include <com/sun/star/rendering/FloatingPointBitmapLayout.idl>
+#include <com/sun/star/geometry/IntegerPoint2D.idl>
+#include <com/sun/star/geometry/IntegerRectangle2D.idl>
+#include <com/sun/star/rendering/XHalfFloatReadOnlyBitmap.idl>
+#include <com/sun/star/rendering/VolatileContentDestroyedException.idl>
+
+module com { module sun { module star { module rendering {
+
+/** Specialized interface for bitmaps containing half floats as their
+ color components.<p>
+
+ Half floats are 16 bit wide, and newer GPUs already have them as
+ supported frame buffer format.
+ */
+interface XHalfFloatBitmap : XHalfFloatReadOnlyBitmap
+{
+
+ /** Set raw data of a bitmap.<p>
+
+ Set raw data of a bitmap, in the format as defined by
+ getMemoryLayout(). With the given rectangle, a subset of the
+ bitmap can be changed. When setting subsets of the bitmap, the
+ same scanline padding takes place as when the whole bitmap is
+ changed.<p>
+
+ */
+ void setData( [in] sequence<short> data, [in] FloatingPointBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerRectangle2D rect )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** Set a single pixel of the bitmap with the given color
+ value.<p>
+
+ When setting data on volatile bitmaps, always call isValid()
+ before, and retrieve a new memory layout via
+ getMemoryLayout(). At least under Windows, the memory layout
+ can change for the same bitmap, if the user e.g. switches the
+ screen resolution. Thus, this method will throw an
+ IllegalArgumentException, if the memory layout changed between
+ a call to getMemoryLayout() and setData().<p>
+ */
+ void setPixel( [in] sequence<short> color, [in] FloatingPointBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerPoint2D pos )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::lang::IndexOutOfBoundsException);
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XHalfFloatReadOnlyBitmap.idl b/offapi/com/sun/star/rendering/XHalfFloatReadOnlyBitmap.idl
new file mode 100644
index 000000000..0e107574c
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XHalfFloatReadOnlyBitmap.idl
@@ -0,0 +1,91 @@
+/* -*- 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_XHalfFloatReadOnlyBitmap_idl__
+#define __com_sun_star_rendering_XHalfFloatReadOnlyBitmap_idl__
+
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+#include <com/sun/star/rendering/FloatingPointBitmapLayout.idl>
+#include <com/sun/star/geometry/IntegerPoint2D.idl>
+#include <com/sun/star/geometry/IntegerRectangle2D.idl>
+#include <com/sun/star/rendering/XBitmap.idl>
+#include <com/sun/star/rendering/VolatileContentDestroyedException.idl>
+
+module com { module sun { module star { module rendering {
+
+/** Specialized interface for bitmaps containing half floats as their
+ color components. Half floats are 16 bit wide, and some high-end
+ GPUs already have them as supported frame buffer format. In
+ contrast to XHalfFloatBitmap, this interface only
+ permits read-only access.<p>
+
+ Use this interface for e.g. bitmaps that are calculated
+ on-the-fly, or that are pure functional, and thus cannot be
+ modified.<p>
+
+ If you get passed an instance of
+ XHalfFloatReadOnlyBitmap that also supports the
+ XVolatileBitmap interface, things become a bit more
+ complicated. When reading data, one has to check for both
+ VolatileContentDestroyedException and mismatching
+ FloatingPointBitmapLayout return values. If either of them
+ occurs, the whole bitmap read operation should be repeated.<p>
+ */
+interface XHalfFloatReadOnlyBitmap : XBitmap
+{
+ /** Query the raw data of this bitmap.<p>
+
+ Query the raw data of this bitmap, in the format as defined by
+ getMemoryLayout(). With the given rectangle, a subset of the
+ whole bitmap can be queried. When querying subsets of the
+ bitmap, the same scanline padding takes place as when the
+ whole bitmap is requested. Note: as we currently have no 16
+ bit float UNO data type, the values are transported as 16 bit
+ integers across the API (which requires casting on both
+ sides).<p>
+
+ @throws VolatileContentDestroyedException
+ if the bitmap is volatile, and the content has been destroyed by the system.
+ */
+ sequence<short> getData( [in] ::com::sun::star::geometry::IntegerRectangle2D rect )
+ raises (com::sun::star::lang::IndexOutOfBoundsException,
+ VolatileContentDestroyedException);
+
+
+ /** Get a single pixel of the bitmap, returning its color
+ value.<p>
+
+ @throws VolatileContentDestroyedException
+ if the bitmap is volatile, and the content has been destroyed by the system.
+ */
+ sequence<short> getPixel( [in] ::com::sun::star::geometry::IntegerPoint2D pos )
+ raises (com::sun::star::lang::IndexOutOfBoundsException,
+ VolatileContentDestroyedException);
+
+
+ /** Query the memory layout for this bitmap.<p>
+ */
+ FloatingPointBitmapLayout getMemoryLayout();
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XIeeeDoubleBitmap.idl b/offapi/com/sun/star/rendering/XIeeeDoubleBitmap.idl
new file mode 100644
index 000000000..6c938d1b9
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XIeeeDoubleBitmap.idl
@@ -0,0 +1,119 @@
+/* -*- 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_XIeeeDoubleBitmap_idl__
+#define __com_sun_star_rendering_XIeeeDoubleBitmap_idl__
+
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+#include <com/sun/star/rendering/FloatingPointBitmapLayout.idl>
+#include <com/sun/star/geometry/IntegerPoint2D.idl>
+#include <com/sun/star/geometry/IntegerRectangle2D.idl>
+#include <com/sun/star/rendering/XIeeeDoubleReadOnlyBitmap.idl>
+#include <com/sun/star/rendering/VolatileContentDestroyedException.idl>
+
+
+module com { module sun { module star { module rendering {
+
+/** This is a specialized interface for bitmaps containing IEEE
+ doubles for their color components.<p>
+ */
+interface XIeeeDoubleBitmap : XIeeeDoubleReadOnlyBitmap
+{
+
+ /** Set raw data of a bitmap.<p>
+
+ Set raw data of a bitmap, in the format as defined by
+ getMemoryLayout(). With the given rectangle, a subset of the
+ bitmap can be changed. When setting subsets of the bitmap, the
+ same scanline padding takes place as when the whole bitmap is
+ changed.<p>
+
+ When setting data on volatile bitmaps, always call isValid()
+ before, and retrieve a new memory layout via
+ getMemoryLayout(). At least under Windows, the memory layout
+ can change for the same bitmap, if the user e.g. switches the
+ screen resolution. Thus, this method will throw an
+ IllegalArgumentException, if the memory layout changed between
+ a call to getMemoryLayout() and setData().<p>
+
+ @param data
+ Data to set
+
+ @param bitmapLayout
+ Layout of the data to set. Must match this bitmap's current
+ layout.
+
+ @param rect
+ Destination rectangle, within the bounds of the bitmap, to set
+ the data in.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if parts of the given rectangle are outside the permissible
+ bitmap area.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the given memory layout does not match this bitmap's
+ layout, or if the given data sequence has too few or too much
+ elements.
+ */
+ void setData( [in] sequence<double> data, [in] FloatingPointBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerRectangle2D rect )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** Set a single pixel of the bitmap with the given color
+ value.<p>
+
+ When setting data on volatile bitmaps, always call isValid()
+ before, and retrieve a new memory layout via
+ getMemoryLayout(). At least under Windows, the memory layout
+ can change for the same bitmap, if the user e.g. switches the
+ screen resolution. Thus, this method will throw an
+ IllegalArgumentException, if the memory layout changed between
+ a call to getMemoryLayout() and setPixel().<p>
+
+ @param color
+ The color value(s) to set
+
+ @param bitmapLayout
+ Layout of the color elements to set. Must match this bitmap's
+ current layout.
+
+ @param pos
+ Pixel position with the bounds of the bitmap to set.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if the given point is outside the permissible bitmap area.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the given memory layout does not match this bitmap's
+ layout, or if the given data sequence has too few or too much
+ elements.
+ */
+ void setPixel( [in] sequence<double> color, [in] FloatingPointBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerPoint2D pos )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::lang::IndexOutOfBoundsException);
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XIeeeDoubleReadOnlyBitmap.idl b/offapi/com/sun/star/rendering/XIeeeDoubleReadOnlyBitmap.idl
new file mode 100644
index 000000000..6df739bce
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XIeeeDoubleReadOnlyBitmap.idl
@@ -0,0 +1,118 @@
+/* -*- 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_XIeeeDoubleReadOnlyBitmap_idl__
+#define __com_sun_star_rendering_XIeeeDoubleReadOnlyBitmap_idl__
+
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+#include <com/sun/star/rendering/FloatingPointBitmapLayout.idl>
+#include <com/sun/star/geometry/IntegerPoint2D.idl>
+#include <com/sun/star/geometry/IntegerRectangle2D.idl>
+#include <com/sun/star/rendering/XBitmap.idl>
+#include <com/sun/star/rendering/VolatileContentDestroyedException.idl>
+
+
+module com { module sun { module star { module rendering {
+
+/** This is a specialized interface for bitmaps containing IEEE
+ doubles for their color components. In contrast to
+ XIeeeDoubleBitmap, this interface only permits
+ read-only access.<p>
+
+ Use this interface for e.g. bitmaps that are calculated
+ on-the-fly, or that are pure functional, and thus cannot be
+ modified.<p>
+
+ If you get passed an instance of
+ XHalfFloatReadOnlyBitmap that also supports the
+ XVolatileBitmap interface, things become a bit more
+ complicated. When reading data, one has to check for both
+ VolatileContentDestroyedException and mismatching
+ FloatingPointBitmapLayout return values. If either of them
+ occurs, the whole bitmap read operation should be repeated.<p>
+ */
+interface XIeeeDoubleReadOnlyBitmap : XBitmap
+{
+ /** Query the raw data of this bitmap.<p>
+
+ Query the raw data of this bitmap, in the format as defined by
+ getMemoryLayout(). With the given rectangle, a subset of the
+ whole bitmap can be queried. When querying subsets of the
+ bitmap, the same scanline padding takes place as when the
+ whole bitmap is requested.<p>
+
+ Note that the bitmap memory layout might change for volatile
+ bitmaps.<p>
+
+ @param bitmapLayout
+ The memory layout the returned data is in.
+
+ @param rect
+ A rectangle, within the bounds of the bitmap, to retrieve the
+ consent from.
+
+ @throws VolatileContentDestroyedException
+ if the bitmap is volatile, and the content has been destroyed by the system.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if parts of the given rectangle are outside the permissible
+ bitmap area.
+ */
+ sequence<double> getData( [out] FloatingPointBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerRectangle2D rect )
+ raises (com::sun::star::lang::IndexOutOfBoundsException,
+ VolatileContentDestroyedException);
+
+
+ /** Get a single pixel of the bitmap, returning its color
+ value.<p>
+
+ Note that the bitmap memory layout might change for volatile
+ bitmaps.<p>
+
+ @param bitmapLayout
+ The memory layout the returned data is in.
+
+ @param pos
+ A position, within the bounds of the bitmap, to retrieve the
+ color from.
+
+ @throws VolatileContentDestroyedException
+ if the bitmap is volatile, and the content has been destroyed by the system.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if the given position is outside the permissible bitmap area.
+ */
+ sequence<double> getPixel( [out] FloatingPointBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerPoint2D pos )
+ raises (com::sun::star::lang::IndexOutOfBoundsException,
+ VolatileContentDestroyedException);
+
+
+ /** Query the memory layout for this bitmap.<p>
+
+ Please note that for volatile bitmaps, the memory layout might
+ change between subsequent calls.<p>
+ */
+ FloatingPointBitmapLayout getMemoryLayout();
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XIeeeFloatBitmap.idl b/offapi/com/sun/star/rendering/XIeeeFloatBitmap.idl
new file mode 100644
index 000000000..92a1547f1
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XIeeeFloatBitmap.idl
@@ -0,0 +1,118 @@
+/* -*- 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_XIeeeFloatBitmap_idl__
+#define __com_sun_star_rendering_XIeeeFloatBitmap_idl__
+
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+#include <com/sun/star/rendering/FloatingPointBitmapLayout.idl>
+#include <com/sun/star/geometry/IntegerPoint2D.idl>
+#include <com/sun/star/geometry/IntegerRectangle2D.idl>
+#include <com/sun/star/rendering/XIeeeFloatReadOnlyBitmap.idl>
+#include <com/sun/star/rendering/VolatileContentDestroyedException.idl>
+
+
+module com { module sun { module star { module rendering {
+
+/** Specialized interface for bitmaps containing IEEE floats as their
+ color components.<p>
+ */
+interface XIeeeFloatBitmap : XIeeeFloatReadOnlyBitmap
+{
+
+ /** Set raw data of a bitmap.<p>
+
+ Set raw data of a bitmap, in the format as defined by
+ getMemoryLayout(). With the given rectangle, a subset of the
+ bitmap can be changed. When setting subsets of the bitmap, the
+ same scanline padding takes place as when the whole bitmap is
+ changed.<p>
+
+ When setting data on volatile bitmaps, always call isValid()
+ before, and retrieve a new memory layout via
+ getMemoryLayout(). At least under Windows, the memory layout
+ can change for the same bitmap, if the user e.g. switches the
+ screen resolution. Thus, this method will throw an
+ IllegalArgumentException, if the memory layout changed between
+ a call to getMemoryLayout() and setData().<p>
+
+ @param data
+ Data to set
+
+ @param bitmapLayout
+ Layout of the data to set. Must match this bitmap's current
+ layout.
+
+ @param rect
+ Destination rectangle, within the bounds of the bitmap, to set
+ the data in.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if parts of the given rectangle are outside the permissible
+ bitmap area.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the given memory layout does not match this bitmap's
+ layout, or if the given data sequence has too few or too much
+ elements.
+ */
+ void setData( [in] sequence<float> data, [in] FloatingPointBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerRectangle2D rect )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** Set a single pixel of the bitmap with the given color
+ value.<p>
+
+ When setting data on volatile bitmaps, always call isValid()
+ before, and retrieve a new memory layout via
+ getMemoryLayout(). At least under Windows, the memory layout
+ can change for the same bitmap, if the user e.g. switches the
+ screen resolution. Thus, this method will throw an
+ IllegalArgumentException, if the memory layout changed between
+ a call to getMemoryLayout() and setPixel().<p>
+
+ @param color
+ The color value(s) to set
+
+ @param bitmapLayout
+ Layout of the color elements to set. Must match this bitmap's
+ current layout.
+
+ @param pos
+ Pixel position with the bounds of the bitmap to set.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if the given point is outside the permissible bitmap area.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the given memory layout does not match this bitmap's
+ layout, or if the given data sequence has too few or too much
+ elements.
+ */
+ void setPixel( [in] sequence<float> color, [in] FloatingPointBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerPoint2D pos )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::lang::IndexOutOfBoundsException);
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XIeeeFloatReadOnlyBitmap.idl b/offapi/com/sun/star/rendering/XIeeeFloatReadOnlyBitmap.idl
new file mode 100644
index 000000000..c010d4326
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XIeeeFloatReadOnlyBitmap.idl
@@ -0,0 +1,117 @@
+/* -*- 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_XIeeeFloatReadOnlyBitmap_idl__
+#define __com_sun_star_rendering_XIeeeFloatReadOnlyBitmap_idl__
+
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+#include <com/sun/star/rendering/FloatingPointBitmapLayout.idl>
+#include <com/sun/star/geometry/IntegerPoint2D.idl>
+#include <com/sun/star/geometry/IntegerRectangle2D.idl>
+#include <com/sun/star/rendering/XBitmap.idl>
+#include <com/sun/star/rendering/VolatileContentDestroyedException.idl>
+
+
+module com { module sun { module star { module rendering {
+
+/** Specialized interface for bitmaps containing IEEE floats as their
+ color components. In contrast to XIeeeFloatBitmap,
+ this interface only permits read-only access.<p>
+
+ Use this interface for e.g. bitmaps that are calculated
+ on-the-fly, or that are pure functional, and thus cannot be
+ modified.<p>
+
+ If you get passed an instance of
+ XHalfFloatReadOnlyBitmap that also supports the
+ XVolatileBitmap interface, things become a bit more
+ complicated. When reading data, one has to check for both
+ VolatileContentDestroyedException and mismatching
+ FloatingPointBitmapLayout return values. If either of them
+ occurs, the whole bitmap read operation should be repeated.<p>
+ */
+interface XIeeeFloatReadOnlyBitmap : XBitmap
+{
+ /** Query the raw data of this bitmap.<p>
+
+ Query the raw data of this bitmap, in the format as defined by
+ getMemoryLayout(). With the given rectangle, a subset of the
+ whole bitmap can be queried. When querying subsets of the
+ bitmap, the same scanline padding takes place as when the
+ whole bitmap is requested.<p>
+
+ Note that the bitmap memory layout might change for volatile
+ bitmaps.<p>
+
+ @param bitmapLayout
+ The memory layout the returned data is in.
+
+ @param rect
+ A rectangle, within the bounds of the bitmap, to retrieve the
+ consent from.
+
+ @throws VolatileContentDestroyedException
+ if the bitmap is volatile, and the content has been destroyed by the system.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if parts of the given rectangle are outside the permissible
+ bitmap area.
+ */
+ sequence<float> getData( [out] FloatingPointBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerRectangle2D rect )
+ raises (com::sun::star::lang::IndexOutOfBoundsException,
+ VolatileContentDestroyedException);
+
+
+ /** Get a single pixel of the bitmap, returning its color
+ value.<p>
+
+ Note that the bitmap memory layout might change for volatile
+ bitmaps.<p>
+
+ @param bitmapLayout
+ The memory layout the returned data is in.
+
+ @param pos
+ A position, within the bounds of the bitmap, to retrieve the
+ color from.
+
+ @throws VolatileContentDestroyedException
+ if the bitmap is volatile, and the content has been destroyed by the system.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if the given position is outside the permissible bitmap area.
+ */
+ sequence<float> getPixel( [out] FloatingPointBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerPoint2D pos )
+ raises (com::sun::star::lang::IndexOutOfBoundsException,
+ VolatileContentDestroyedException);
+
+
+ /** Query the memory layout for this bitmap.<p>
+
+ Please note that for volatile bitmaps, the memory layout might
+ change between subsequent calls.<p>
+ */
+ FloatingPointBitmapLayout getMemoryLayout();
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XIntegerBitmap.idl b/offapi/com/sun/star/rendering/XIntegerBitmap.idl
new file mode 100644
index 000000000..2f4c6ae92
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XIntegerBitmap.idl
@@ -0,0 +1,127 @@
+/* -*- 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_XIntegerBitmap_idl__
+#define __com_sun_star_rendering_XIntegerBitmap_idl__
+
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+#include <com/sun/star/geometry/IntegerPoint2D.idl>
+#include <com/sun/star/geometry/IntegerRectangle2D.idl>
+#include <com/sun/star/rendering/IntegerBitmapLayout.idl>
+#include <com/sun/star/rendering/XIntegerReadOnlyBitmap.idl>
+
+
+module com { module sun { module star { module rendering {
+
+/** This is a specialized interface for bitmaps having integer color
+ channels.<p>
+
+ @since OOo 2.0
+ */
+interface XIntegerBitmap : XIntegerReadOnlyBitmap
+{
+
+ /** Set raw data of a bitmap.<p>
+
+ Set raw data of a bitmap, in the format as defined by
+ getMemoryLayout(). With the given rectangle, a subset of the
+ bitmap can be changed. If the internal data format's pixel are
+ not integer multiples of bytes (i.e. if one pixel occupies
+ less than a byte), the leftover content of the bytes at the
+ right of each scanline is ignored and left unchanged in the
+ bitmap. When setting subsets of the bitmap, the same scanline
+ padding takes place as when the whole bitmap is changed.<p>
+
+ When setting data on volatile bitmaps, always call isValid()
+ before, and retrieve a new memory layout via
+ getMemoryLayout(). At least under Windows, the memory layout
+ can change for the same bitmap, if the user e.g. switches the
+ screen resolution. Thus, this method will throw an
+ IllegalArgumentException, if the memory layout changed between
+ a call to getMemoryLayout() and setData().
+
+ @param data
+ Data to set
+
+ @param bitmapLayout
+ Layout of the data to set. Must match this bitmap's current
+ layout.
+
+ @param rect
+ Destination rectangle, within the bounds of the bitmap, to set
+ the data in.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if parts of the given rectangle are outside the permissible
+ bitmap area.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the given memory layout does not match this bitmap's
+ layout, or if the given data sequence has too few or too many
+ elements.
+ */
+ void setData( [in] sequence<byte> data, [in] IntegerBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerRectangle2D rect )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** Set a single pixel of the bitmap with the given color
+ value.<p>
+
+ If the internal data format's pixel are not integer multiples
+ of bytes (i.e. if one pixel occupies less than a byte), the
+ color value is expected in the least significant bits of the
+ single byte given as the color.<p>
+
+ When setting data on volatile bitmaps, always call isValid()
+ before, and retrieve a new memory layout via
+ getMemoryLayout(). At least under Windows, the memory layout
+ can change for the same bitmap, if the user e.g. switches the
+ screen resolution. Thus, this method will throw an
+ IllegalArgumentException, if the memory layout changed between
+ a call to getMemoryLayout() and setPixel().
+
+ @param color
+ The color value(s) to set
+
+ @param bitmapLayout
+ Layout of the color elements to set. Must match this bitmap's
+ current layout.
+
+ @param pos
+ Pixel position with the bounds of the bitmap to set.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if the given point is outside the permissible bitmap area.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the given memory layout does not match this bitmap's
+ layout, or if the given data sequence has too few or too many
+ elements.
+ */
+ void setPixel( [in] sequence<byte> color, [in] IntegerBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerPoint2D pos )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ com::sun::star::lang::IndexOutOfBoundsException);
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XIntegerBitmapColorSpace.idl b/offapi/com/sun/star/rendering/XIntegerBitmapColorSpace.idl
new file mode 100644
index 000000000..cf7fa97b2
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XIntegerBitmapColorSpace.idl
@@ -0,0 +1,272 @@
+/* -*- 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_XIntegerBitmapColorSpace_idl__
+#define __com_sun_star_rendering_XIntegerBitmapColorSpace_idl__
+
+#include <com/sun/star/rendering/XColorSpace.idl>
+
+module com { module sun { module star { module rendering {
+
+/** A color space for integer bitmap formats<p>
+
+ This interface encapsulates all information specific to a certain
+ integer bitmap color space, like for example 1555 ARGB. Note that
+ the individual elements of the integer color representation
+ sequence need not correspond to the color space's components -
+ instead, the color components might be packed back-to-back into
+ those bytes, as they appear in the raw bitmap data.<p>
+ */
+interface XIntegerBitmapColorSpace : XColorSpace
+{
+ /** Query number of bits used per bitmap pixel.<p>
+
+ This method yields the total number of bits used for a color
+ value. At the associated XIntegerBitmap, the
+ XIntegerBitmap::setPixel() method will expect
+ a sequence of ceil(BitsPerPixel/8) bytes, and the
+ XIntegerReadOnlyBitmap::getPixel() will
+ return that number of bytes. Similarly, the color conversion
+ expect input data in multiples of ceil(BitsPerPixel/8), and
+ also return converted data in chunks of this.<p>
+ */
+ long getBitsPerPixel();
+
+ /** Query the number of bits used for each component.<p>
+
+ This method returns a sequence of integers, each denoting the
+ number of bits occupied by the respective component. The sum
+ of all component bits must be less or equal than the value
+ returned from getBitsPerPixel(). If the sum is
+ less, excess bits are always kept in the most significant bits
+ of a pixel. Color components will appear in the byte sequences
+ returned from the XIntegerBitmap methods in the
+ order defined here, with the first element starting from the
+ least significant bits of the pixel, etc.<p>
+
+ @remark For the typical 32 bit RGBA color data, the four
+ values would all contain the value eight. For a 16 bit 1555
+ ARGB format, with mask values 0x8000 for alpha, 0x7C for red,
+ 0x3E for green and 0x1F for blue, the values would be 5, 5, 5,
+ 1, in that order.
+ */
+ sequence<long> getComponentBitCounts();
+
+ /** Query whether color data bytes need to be swapped.<p>
+
+ @return `TRUE`, This method returns the endianness of the color
+ data. The value is one of the Endianness
+ constants. If color data is represented using more than one
+ byte, the actual channel positions are specified using bit
+ positions. Therefore, depending on the architecture, the
+ actual color data bytes might need to get swapped, for the
+ bits to align properly.<p>
+
+ @remark with a 16 bit 565 RGB format, written on a big endian
+ architecture, a destination machine using little endian CPU
+ will need to swap the bytes, in order to keep the green
+ channel bits together.
+ */
+ byte getEndianness();
+
+
+ /** Convert integer bitmap color to generic IEEE double device
+ color of another color space.<p>
+
+ Color values are properly rounded and clipped, to be valid in
+ the target color space.<p>
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.<p>
+
+ @param targetColorSpace the color space to convert to.
+
+ @return the corresponding sequence of device colors in the
+ target color space
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+ */
+ sequence<ColorComponent> convertFromIntegerColorSpace( [in] sequence<byte> deviceColor, [in] XColorSpace targetColorSpace )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert integer bitmap color to integer bitmap color of
+ another integer bitmap color space.<p>
+
+ Color values are properly rounded and clipped, to be valid in
+ the target color space.<p>
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.<p>
+
+ @param targetColorSpace the color space to convert to.
+
+ @return the corresponding sequence of device colors in the
+ target color space
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+ */
+ sequence<byte> convertToIntegerColorSpace( [in] sequence<byte> deviceColor, [in] XIntegerBitmapColorSpace targetColorSpace )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert color value in this color space to sRGB color values.<p>
+
+ Any information not representable in the RGBColor
+ struct is discarded during the conversion. This includes alpha
+ information. Color values are properly rounded and clipped,
+ to be valid in the target color space.<p>
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.
+
+ @return the corresponding sequence of sRGB colors.
+
+ @see XIntegerBitmapColorSpace::convertIntegerToARGB()
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+ */
+ sequence<RGBColor> convertIntegerToRGB( [in] sequence<byte> deviceColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert color value in this color space to sRGB color values,
+ with linear alpha.<p>
+
+ If the given input color does not carry alpha information, an
+ alpha value of 1.0 (fully opaque) is assumed. Color values
+ are properly rounded and clipped, to be valid in the target
+ color space.<p>
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.
+
+ @return the corresponding sequence of sRGB colors.
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+ */
+ sequence<ARGBColor> convertIntegerToARGB( [in] sequence<byte> deviceColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert color value in this color space to premultiplied sRGB
+ color values, with linear alpha.<p>
+
+ If the given input color does not carry alpha information, an
+ alpha value of 1.0 (fully opaque) is assumed. Color values
+ are properly rounded and clipped, to be valid in the target
+ color space. The resulting individual RGB color values are
+ premultiplied by the alpha value (e.g. if alpha is 0.5, each
+ color value has only half of the original intensity).<p>
+
+ @param deviceColor Sequence of device color components. Is
+ permitted to contain more than one device color element,
+ therefore, batch conversion of multiple color values is
+ possible.
+
+ @return the corresponding sequence of sRGB colors.
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+ */
+ sequence<ARGBColor> convertIntegerToPARGB( [in] sequence<byte> deviceColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert sRGB color to an integer representation in this color
+ space.<p>
+
+ If this color space conveys alpha information, it is assumed
+ be fully opaque for the given RGB color value. Color values
+ are properly rounded and clipped, to be valid in the target
+ color space.<p>
+
+ @param rgbColor Sequence of sRGB color components. Is
+ permitted to contain more than one color element, therefore,
+ batch conversion of multiple color values is possible.
+
+ @return the corresponding sequence of device colors.
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+ */
+ sequence<byte> convertIntegerFromRGB( [in] sequence<RGBColor> rgbColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert sRGB color with linear alpha into this color space.<p>
+
+ If this color space does not convey alpha information, the
+ specified alpha value is silently ignored. Color values are
+ properly rounded and clipped, to be valid in the target color
+ space.<p>
+
+ @param rgbColor Sequence of sRGB color components. Is
+ permitted to contain more than one color element, therefore,
+ batch conversion of multiple color values is possible.
+
+ @return the corresponding sequence of device colors.
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+ */
+ sequence<byte> convertIntegerFromARGB( [in] sequence<ARGBColor> rgbColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Convert premultiplied sRGB color with linear alpha into this
+ color space.<p>
+
+ If this color space does not convey alpha information, the
+ specified alpha value is silently ignored. Color values are
+ properly rounded and clipped, to be valid in the target color
+ space.<p>
+
+ @param rgbColor Sequence of sRGB color components. Is
+ permitted to contain more than one color element, therefore,
+ batch conversion of multiple color values is possible. The
+ individual RGB color values are assumed to be premultiplied by
+ the alpha value already.
+
+ @return the corresponding sequence of device colors.
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the input sequence does not match the device color format.
+ */
+ sequence<byte> convertIntegerFromPARGB( [in] sequence<ARGBColor> rgbColor )
+ raises (com::sun::star::lang::IllegalArgumentException);
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XIntegerReadOnlyBitmap.idl b/offapi/com/sun/star/rendering/XIntegerReadOnlyBitmap.idl
new file mode 100644
index 000000000..616389f39
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XIntegerReadOnlyBitmap.idl
@@ -0,0 +1,138 @@
+/* -*- 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_XIntegerReadOnlyBitmap_idl__
+#define __com_sun_star_rendering_XIntegerReadOnlyBitmap_idl__
+
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+#include <com/sun/star/geometry/IntegerPoint2D.idl>
+#include <com/sun/star/geometry/IntegerRectangle2D.idl>
+#include <com/sun/star/rendering/IntegerBitmapLayout.idl>
+#include <com/sun/star/rendering/XBitmap.idl>
+#include <com/sun/star/rendering/VolatileContentDestroyedException.idl>
+
+
+module com { module sun { module star { module rendering {
+
+interface XBitmapPalette;
+
+/** This is a specialized interface for bitmaps having integer color
+ channels. In contrast to XIntegerBitmap, this
+ interface only permits read-only access.<p>
+
+ Use this interface for e.g. bitmaps that are calculated
+ on-the-fly, or that are pure functional, and thus cannot be
+ modified.<p>
+
+ If you get passed an instance of
+ XIntegerReadOnlyBitmap that also supports the
+ XVolatileBitmap interface, things become a bit more
+ complicated. When reading data, one has to check for both
+ VolatileContentDestroyedException and mismatching
+ IntegerBitmapLayout return values. If either of them
+ occurs, the whole bitmap read operation should be repeated, if you
+ need consistent information.<p>
+ */
+interface XIntegerReadOnlyBitmap : XBitmap
+{
+ /** Query the raw data of this bitmap.<p>
+
+ Query the raw data of this bitmap, in the format as defined by
+ getMemoryLayout(). With the given rectangle, a subset of the
+ whole bitmap can be queried. If the internal data format's
+ pixel are not integer multiples of bytes (i.e. if one pixel
+ occupies less than a byte), the leftover content of the bytes
+ at the right of each scanline is filled with zeros. The
+ details of the scanline padding are to be retrieved from the
+ passed bitmap layout.<p>
+
+ Note that the bitmap memory layout might change over time for
+ volatile bitmaps.<p>
+
+ @param bitmapLayout
+ The memory layout the returned data is in. Note that the color
+ space returned therein needs to always match the current color
+ space as would have been returned by getMemoryLayout(). This
+ is necessary to ensure correct operation under changing
+ XVolatileBitmap.
+
+ @param rect
+ A rectangle, within the bounds of the bitmap, to retrieve the
+ consent from.
+
+ @throws VolatileContentDestroyedException
+ if the bitmap is volatile, and the content has been destroyed by the system.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if parts of the given rectangle are outside the permissible
+ bitmap area.
+ */
+ sequence<byte> getData( [out] IntegerBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerRectangle2D rect )
+ raises (com::sun::star::lang::IndexOutOfBoundsException,
+ VolatileContentDestroyedException);
+
+
+ /** Get a single pixel of the bitmap, returning its color
+ value.<p>
+
+ If the internal data format's pixel are not integer multiples
+ of bytes (i.e. if one pixel occupies less than a byte - the
+ case of more than one byte per pixel is not specified), the
+ color value is returned in the least significant bits of the
+ single byte returned as the color. The details of the returned
+ pixel data are to be retrieved from the passed bitmap layout.<p>
+
+ Note that the bitmap memory layout might change for volatile
+ bitmaps.<p>
+
+ @param bitmapLayout
+ The memory layout the returned data is in. Note that the color
+ space returned therein needs to always match the current color
+ space as would have been returned by getMemoryLayout(). This
+ is necessary to ensure correct operation under changing
+ XVolatileBitmap.
+
+ @param pos
+ A position, within the bounds of the bitmap, to retrieve the
+ color from.
+
+ @throws VolatileContentDestroyedException
+ if the bitmap is volatile, and the content has been destroyed by the system.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if the given position is outside the permissible bitmap area.
+ */
+ sequence<byte> getPixel( [out] IntegerBitmapLayout bitmapLayout, [in] ::com::sun::star::geometry::IntegerPoint2D pos )
+ raises (com::sun::star::lang::IndexOutOfBoundsException,
+ VolatileContentDestroyedException);
+
+
+ /** Query the memory layout for this bitmap.<p>
+
+ Please note that for volatile bitmaps, the memory layout might
+ change between subsequent calls.<p>
+ */
+ IntegerBitmapLayout getMemoryLayout();
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XLinePolyPolygon2D.idl b/offapi/com/sun/star/rendering/XLinePolyPolygon2D.idl
new file mode 100644
index 000000000..578747949
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XLinePolyPolygon2D.idl
@@ -0,0 +1,108 @@
+/* -*- 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_XLinePolyPolygon2D_idl__
+#define __com_sun_star_rendering_XLinePolyPolygon2D_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+#include <com/sun/star/geometry/RealPoint2D.idl>
+#include <com/sun/star/rendering/XPolyPolygon2D.idl>
+
+module com { module sun { module star { module rendering {
+
+/** Specialized interface for a 2D poly-polygon containing only straight line segments.
+
+ @since OOo 2.0
+ */
+interface XLinePolyPolygon2D : XPolyPolygon2D
+{
+ /** Query subset of this poly-polygon, starting at the given
+ polygon and the given point within that polygon, and
+ containing the specified number of polygons and points in the
+ last polygon.
+
+ @param nPolygonIndex
+ The index number of the polygon to start with extracting
+ points. Set to 0 to start with the first polygon.
+
+ @param nNumberOfPolygons
+ The number of polygons, starting with nPolygonIndex, to
+ extract points from. Set to -1 to extract all polygons,
+ starting with nPolygonIndex (i.e. a total of
+ getNumberOfPolygons() - nPolygonIndex polygons is extracted).
+
+ @param nPointIndex
+ The index of the point within the first polygon (that with the
+ index number nPolygonIndex) to start extraction with. Set to 0
+ to start with the first point in this polygon.
+
+ @param nNumberOfPoints
+ The number of points in the last polygon of the extraction
+ sequence, to be extracted. Set to -1 to extract all points
+ from the last polygon.
+ */
+ sequence< sequence< ::com::sun::star::geometry::RealPoint2D > > getPoints( [in] long nPolygonIndex, [in] long nNumberOfPolygons, [in] long nPointIndex, [in] long nNumberOfPoints )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** Set the specified sequence of points to the poly-polygon.
+
+ This method can either set the whole poly-polygon to the new
+ data, or insert the points at the given index
+
+ @param points the points.
+
+ @param nPolygonIndex
+ The index of the polygon to start point insertion with. This
+ index must be in the range [0,numPolygons], and the insertion
+ will take place <em>before</em> this position (i.e. when
+ specifying 0 here, the given point sequence will precede all
+ existing polygons already within the poly-polygon). To append
+ to a poly-polygon, call setPoints() with
+ XLinePolyPolygon2D::getNumberOfPolygons()
+ as the polygon index. If nPolygonIndex is -1, the given
+ sequence of points <em>replaces</em> the poly-polygon content,
+ such that after this method completes, it contains exactly the
+ specified point data.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if one of the given values exceed the permissible range.
+ */
+ void setPoints( [in] sequence< sequence< ::com::sun::star::geometry::RealPoint2D > > points, [in] long nPolygonIndex )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** Get a single point from the poly-polygon
+ */
+ ::com::sun::star::geometry::RealPoint2D getPoint( [in] long nPolygonIndex, [in] long nPointIndex )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** Set a single point on the poly-polygon. The remaining points of
+ the poly-polygon will not be changed by this method.
+ */
+ void setPoint( [in] ::com::sun::star::geometry::RealPoint2D point, [in] long nPolygonIndex, [in] long nPointIndex )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XMtfRenderer.idl b/offapi/com/sun/star/rendering/XMtfRenderer.idl
new file mode 100644
index 000000000..1cd0c22be
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XMtfRenderer.idl
@@ -0,0 +1,37 @@
+/* -*- 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_XMtfRenderer_idl__
+#define __com_sun_star_rendering_XMtfRenderer_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+
+module com { module sun { module star { module rendering {
+
+ interface XMtfRenderer : ::com::sun::star::uno::XInterface
+ {
+ void setMetafile( [in] sequence< byte > aMtf );
+ void draw( [in] double fScaleX, [in] double fScaleY );
+ };
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XParametricPolyPolygon2D.idl b/offapi/com/sun/star/rendering/XParametricPolyPolygon2D.idl
new file mode 100644
index 000000000..97b8190b8
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XParametricPolyPolygon2D.idl
@@ -0,0 +1,89 @@
+/* -*- 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_XParametricPolyPolygon2D_idl__
+#define __com_sun_star_rendering_XParametricPolyPolygon2D_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/rendering/XPolyPolygon2D.idl>
+#include <com/sun/star/rendering/XColorSpace.idl>
+
+module com { module sun { module star { module rendering {
+
+/** Interface to a dynamic poly-polygon generator, that generates
+ poly-polygons depending on a given parameter value.<p>
+
+ The returned poly-polygon should normally be contained in the
+ [0,1]x[0,1] rectangle. At least that is the dimension expected at
+ other places. e.g. Texture.
+ */
+interface XParametricPolyPolygon2D : ::com::sun::star::uno::XInterface
+{
+ /** Query the polygonal outline at the specified value.
+
+ The returned outline should be clipped to the [0,1]x[0,1]
+ rectangle.
+
+ @param t
+ Parameter value in the range [0,1]. During painting, this
+ range is swept through starting from 0. When using such a
+ parametric poly-polygon for gradients, the area covered by the
+ returned XPolyPolygon2D should be monotonically decreasing
+ with t (unless singularities in e.g. the resulting gradient
+ are desired).
+ */
+ XPolyPolygon2D getOutline( [in] double t )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Query the color value for the polygonal area at the specified
+ parameter value.
+
+ @param t
+ Parameter value in the range [0,1]. During painting, this
+ range is swept through starting from 0.
+ */
+ sequence<ColorComponent> getColor( [in] double t )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Query the color for a dedicated point in the plane.
+
+ @param point
+ The permissible parameter range for point is [0,1]x[0,1]
+ */
+ sequence<ColorComponent> getPointColor( [in] ::com::sun::star::geometry::RealPoint2D point )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Query the color space employed by this object
+
+ @return the color space the colors generated by this object
+ are to be interpreted in.
+ */
+ XColorSpace getColorSpace();
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XPolyPolygon2D.idl b/offapi/com/sun/star/rendering/XPolyPolygon2D.idl
new file mode 100644
index 000000000..c286a1648
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XPolyPolygon2D.idl
@@ -0,0 +1,114 @@
+/* -*- 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_XPolyPolygon2D_idl__
+#define __com_sun_star_rendering_XPolyPolygon2D_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/rendering/FillRule.idl>
+#include <com/sun/star/geometry/RealPoint2D.idl>
+
+module com { module sun { module star { module rendering {
+
+/** Generic interface for poly-polygons in 2D.
+
+ @since OOo 2.0
+ */
+interface XPolyPolygon2D : ::com::sun::star::uno::XInterface
+{
+ /** Add the specified poly-polygon at the given position.
+
+ One can do symbolic path construction with this method. The
+ poly-polygons added by this method are not joined in the sense
+ that they participate in mutual fill rule calculations like
+ the polygons inside a single poly-polygon do. When rendering
+ such a poly-polygon without transparency, it will look like the
+ constituting poly-polygons rendered separately on top of
+ another. Alas, when rendering with transparency, separate
+ rendering will combine the alpha of overlapping areas, whereas
+ addPolyPolygon results in constant alpha, regardless how many
+ internal poly-polygons overlap at a single place.
+
+ @param position
+ The poly-polygon will be added at the given position, i.e. the
+ upper, left edge of the referenced poly-polygon will be at
+ this position relative to the target poly-polygon.
+
+ @param polyPolygon
+ The poly-polygon to add. Note that the content of this
+ poly-polygon is copied, later changes to polyPolygon will have
+ no effect on the poly-polygon it was added to.
+
+ @throws a
+ com::sun::star::lang::IllegalArgumentException,
+ if the XPolyPolygon2D parameter does not support one of the
+ data-providing derivative interfaces
+ (XBezierPolyPolygon2D,
+ XLinePolyPolygon2D).
+ */
+ void addPolyPolygon( [in] ::com::sun::star::geometry::RealPoint2D position, [in] XPolyPolygon2D polyPolygon )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Query number of polygons inside this poly-polygon
+ */
+ long getNumberOfPolygons();
+
+
+ /** Query number of points inside given polygon
+
+ @param polygon
+ The index of the polygon to query the number of points
+ for. Must be in the range [0,getNumberOfPolygons()-1].
+ */
+ long getNumberOfPolygonPoints( [in] long polygon )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** Query the rule used to determine inside and outside of the
+ poly-polygon.
+ */
+ FillRule getFillRule();
+
+
+ /** Set the rule used to determine inside and outside of the
+ poly-polygon.
+ */
+ void setFillRule( [in] FillRule fillRule );
+
+
+ /** Query whether the specified polygon outline is closed.
+ */
+ boolean isClosed( [in] long index )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** Set the close state of the specified polygon outline. Use -1
+ as the index to affect all polygons of this poly-polygon.
+ */
+ void setClosed( [in] long index, [in] boolean closedState )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XSimpleCanvas.idl b/offapi/com/sun/star/rendering/XSimpleCanvas.idl
new file mode 100644
index 000000000..0e81b7f8c
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XSimpleCanvas.idl
@@ -0,0 +1,246 @@
+/* -*- 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_XSimpleCanvas_idl__
+#define __com_sun_star_rendering_XSimpleCanvas_idl__
+
+#include <com/sun/star/util/Color.idl>
+#include <com/sun/star/geometry/RealPoint2D.idl>
+#include <com/sun/star/geometry/RealRectangle2D.idl>
+#include <com/sun/star/geometry/AffineMatrix2D.idl>
+#include <com/sun/star/rendering/StringContext.idl>
+#include <com/sun/star/rendering/ViewState.idl>
+#include <com/sun/star/rendering/RenderState.idl>
+#include <com/sun/star/rendering/FontMetrics.idl>
+
+
+module com { module sun { module star { module rendering {
+
+interface XCanvas;
+interface XCanvasFont;
+interface XBitmap;
+interface XGraphicDevice;
+interface XPolyPolygon2D;
+
+/** Provides the basic graphical output operations for a canvas.<p>
+
+ This interface is a simplified version of the XCanvas
+ interface. It holds explicit state, i.e. the pen and fill color,
+ the current transformation, clip and font are persistently
+ remembered.<p>
+
+ In contrast to the XCanvas interface, XSimpleCanvas
+ does not distinguish between stroke and fill operations; instead,
+ switching between stroke and fill (or taking both) works by
+ setting appropriate pen and fill colors.<p>
+ */
+interface XSimpleCanvas: com::sun::star::uno::XInterface
+{
+ /** Select a font.<p>
+
+ This method selects the specified font (or a close substitute)
+ as the current font for text output.<p>
+
+ @param sFontName
+ The name of the font (like e.g. Arial)
+
+ @param size
+ The size of the font (note that this is not the usual points
+ unit, but in the same coordinate system as the other rendering
+ operations - usually, device pixel).
+
+ @param bold
+ When true, selected font is bold.
+
+ @param italic
+ When true, selected font is italic
+ */
+ void selectFont( [in] string sFontName, [in]double size, [in] boolean bold, [in] boolean italic );
+
+
+ /** Sets the color used by line and text operations.<p>
+
+ To disable stroking, simply set this color to something with
+ zero alpha (i.e. fully transparent).<p>
+
+ @param nsRgbaColor
+ RGBA color tuple, interpreted in the sRGB color space.
+ */
+ void setPenColor( [in] com::sun::star::util::Color nsRgbaColor );
+
+
+ /** Sets the fill color.<p>
+
+ To disable filling, simply set this color to something with
+ zero alpha (i.e. fully transparent).<p>
+
+ @param nsRgbaColor
+ RGBA color tuple, interpreted in the sRGB color space.
+ */
+ void setFillColor( [in] com::sun::star::util::Color nsRgbaColor );
+
+
+ /** Sets the clip to the specified rectangle.<p>
+ */
+ void setRectClip( [in] ::com::sun::star::geometry::RealRectangle2D aRect );
+
+
+ /** Set the current transform matrix.<p>
+ */
+ void setTransformation( [in] ::com::sun::star::geometry::AffineMatrix2D aTransform );
+
+
+ /** Sets a single pixel on the canvas.<p>
+ */
+ void drawPixel( [in] ::com::sun::star::geometry::RealPoint2D aPoint );
+
+
+ /** Draws a line on the canvas.<p>
+ */
+ void drawLine( [in] ::com::sun::star::geometry::RealPoint2D aStartPoint,
+ [in] ::com::sun::star::geometry::RealPoint2D aEndPoint );
+
+
+ /** Draws a rectangle on the canvas.<p>
+ */
+ void drawRect( [in] ::com::sun::star::geometry::RealRectangle2D aRect );
+
+
+ /** Draws a poly-polygon on the canvas.<p>
+ */
+ void drawPolyPolygon( [in] XPolyPolygon2D xPolyPolygon );
+
+
+ /** Draws text on the canvas.<p>
+
+ @param aText
+ Text to render. The text color is the current pen color.
+
+ @param aOutPos
+ Output position of the text. This is the left or right edge,
+ depending on nTextDirection. Output position is always
+ relative to the font baseline.
+
+ @param nTextDirection
+ A value from the TextDirection collection,
+ denoting the main writing direction for this string. The main
+ writing direction determines the origin of the text output,
+ i.e. the left edge for left-to-right and the right edge for
+ right-to-left text.
+ */
+ void drawText( [in] StringContext aText,
+ [in] ::com::sun::star::geometry::RealPoint2D aOutPos,
+ [in] byte nTextDirection );
+
+
+ /** Draws the bitmap on the canvas.<p>
+
+ @param xBitmap
+ Bitmap to render
+
+ @param aLeftTop
+ Left, top position of the bitmap on the destination canvas.
+ */
+ void drawBitmap( [in] XBitmap xBitmap,
+ [in] ::com::sun::star::geometry::RealPoint2D aLeftTop );
+
+
+ /** Request the associated graphic device for this canvas.<p>
+
+ A graphic device provides methods specific to the underlying
+ output device capabilities, which are common for all canvases
+ rendering to such a device. This includes device resolution,
+ color space, or bitmap formats.<p>
+
+ @return the associated XGraphicDevice.
+ */
+ XGraphicDevice getDevice();
+
+
+ /** Query the underlying XCanvas.<p>
+
+ @return the canvas interface this object is internally based
+ on.
+ */
+ XCanvas getCanvas();
+
+
+ /** Request the font metrics of the current font.<p>
+
+ @return the font metrics of the currently selected font.
+ */
+ FontMetrics getFontMetrics();
+
+
+ /** Retrieve currently selected font.<p>
+
+ @return the font instance that's currently used for rendering
+ text.
+ */
+ XCanvasFont getCurrentFont();
+
+
+ /** Retrieve color currently used for lines.
+ */
+ com::sun::star::util::Color getCurrentPenColor();
+
+
+ /** Retrieve color currently used for fills
+ */
+ com::sun::star::util::Color getCurrentFillColor();
+
+
+ /** Retrieve current clip rect
+ */
+ com::sun::star::geometry::RealRectangle2D getCurrentClipRect();
+
+
+ /** Retrieve current transformation matrix
+ */
+ com::sun::star::geometry::AffineMatrix2D getCurrentTransformation();
+
+
+ /** Retrieve view state.<p>
+
+ @return the view state, that would generate matching output,
+ when rendering to an XCanvas instead.
+ */
+ ViewState getCurrentViewState();
+
+
+ /** Retrieve render state.<p>
+
+ @param bUseFillColor
+ When true, the Color member of the RenderState is initialized
+ with the current fill color; when false, the current pen color
+ is used.
+
+ @return the render state, that would generate matching output,
+ when rendering to an XCanvas instead.
+ */
+ RenderState getCurrentRenderState( [in] boolean bUseFillColor );
+
+
+};
+
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
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: */
diff --git a/offapi/com/sun/star/rendering/XSpriteCanvas.idl b/offapi/com/sun/star/rendering/XSpriteCanvas.idl
new file mode 100644
index 000000000..f15b02b8e
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XSpriteCanvas.idl
@@ -0,0 +1,145 @@
+/* -*- 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_XSpriteCanvas_idl__
+#define __com_sun_star_rendering_XSpriteCanvas_idl__
+
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/rendering/XBitmapCanvas.idl>
+#include <com/sun/star/rendering/XAnimation.idl>
+#include <com/sun/star/rendering/VolatileContentDestroyedException.idl>
+
+module com { module sun { module star { module rendering {
+
+interface XSprite;
+interface XAnimatedSprite;
+interface XCustomSprite;
+
+/** Specialization of a XCanvas, where moving, animated objects
+ (called sprites) are supported.<p>
+
+ @attention The screen output of canvas drawing operations is
+ undefined, unless XSpriteCanvas::updateScreen() is called. This is
+ because a sprite canvas might choose to employ double buffering to
+ reduce animation flicker, and cannot know the instant suitable to
+ display the newly rendered canvas content. When using external
+ double-buffering via XBufferController on a sprite canvas, the
+ implementation takes care of this issue, and in this case is able
+ to render correctly even without explicit updateScreen() calls
+ (because there's a defined moment in time where content display
+ can happen, namely the XBufferController::showBuffer()) call. If
+ you don't need sprite functionality, and don't want the
+ updateScreen hassle, simply use the XCanvas.
+ */
+interface XSpriteCanvas : XCanvas
+{
+ /** Create a sprite object from the specified animation
+ sequence. A sprite is a back-buffered object with its own,
+ independent animation.
+ */
+ XAnimatedSprite createSpriteFromAnimation( [in] XAnimation animation )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Create a sprite object from the specified animation
+ sequence.
+
+ A sprite is a back-buffered object with its own,
+ independent animation.
+
+ @param animationBitmaps
+ Sequence of bitmaps. The bitmaps don't need to have the same
+ size, but they are all rendered with their left, top edges
+ aligned.
+
+ @param interpolationMode
+ Value of InterpolationMode, to determine whether
+ and how to interpolate between the provided bitmaps, if
+ animation runs fast enough.
+
+ @throws VolatileContentDestroyedException
+ if at least one of the bitmap is volatile, and its content has been destroyed by the system.
+ */
+ XAnimatedSprite createSpriteFromBitmaps( [in] sequence<XBitmap> animationBitmaps, [in] byte interpolationMode )
+ raises (com::sun::star::lang::IllegalArgumentException,
+ VolatileContentDestroyedException);
+
+ /** Create a custom, user-handles-it-all sprite object.
+
+ A sprite is a back-buffered object with its own, independent
+ animation.
+
+ @param spriteSize
+ The required size of the sprite in device
+ coordinates. Everything that is rendered outside this area
+ might be clipped on output. Both components of the size must
+ be greater than zero.
+
+ @return an interface to a custom sprite object.
+ */
+ XCustomSprite createCustomSprite( [in] ::com::sun::star::geometry::RealSize2D spriteSize )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Create a cloned version of an already existing sprite
+ object.
+
+ The cloned sprite always shows the same content as its
+ original, but of course the sprite position, visibility, alpha
+ etc. can be modified independently.
+
+ @param original
+ The original sprite to copy the content from. This sprite must
+ have been created by the same XSpriteCanvas instance as this
+ method is called on. Other sprite instances will generate an
+ IllegalArgumentException.
+
+ @return an interface to a sprite object.
+ */
+ XSprite createClonedSprite( [in] XSprite original )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ /** Tells the sprite canvas to now update the screen
+ representation.
+
+ Required to display rendered changes to the canvas, and
+ updates to stopped animations and XCustomSprites in
+ general. This method will return only after the screen update
+ is done, or earlier if an error happened.<p>
+
+ If double buffering is enabled via XBufferController, no
+ explicit call of updateScreen() is necessary, since the
+ XBufferController methods will automatically notify all
+ associated XSpriteCanvas instances.<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 `TRUE`, if the screen update was successfully
+ performed
+ */
+ boolean updateScreen( [in] boolean bUpdateAll );
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XTextLayout.idl b/offapi/com/sun/star/rendering/XTextLayout.idl
new file mode 100644
index 000000000..dc71f857e
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XTextLayout.idl
@@ -0,0 +1,396 @@
+/* -*- 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_XTextLayout_idl__
+#define __com_sun_star_rendering_XTextLayout_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+#include <com/sun/star/geometry/RealPoint2D.idl>
+#include <com/sun/star/geometry/RealBezierSegment2D.idl>
+#include <com/sun/star/geometry/RealRectangle2D.idl>
+#include <com/sun/star/rendering/ViewState.idl>
+#include <com/sun/star/rendering/RenderState.idl>
+#include <com/sun/star/rendering/StringContext.idl>
+#include <com/sun/star/rendering/TextHit.idl>
+#include <com/sun/star/rendering/Caret.idl>
+
+
+module com { module sun { module star { module rendering {
+
+interface XCanvas;
+interface XCanvasFont;
+interface XPolyPolygon2D;
+
+/** This is the central interface for text layouting.<p>
+
+ This is the central interface for text-related tasks more
+ complicated than simple string rendering. Note that all query
+ methods are subject to the current layout state of this
+ object. That is, calls to XTextLayout::justify()
+ or XTextLayout::applyLogicalAdvancements() are
+ likely to change subsequent output of those query methods.<p>
+
+ Similar to XCanvasFont, all measurements and
+ coordinates accepted and returned by this interface are relative
+ to the font's local coordinate system (which only equals device
+ coordinate space, if the combined render transformation used
+ during text output is the identity transformation). Conversely, if
+ the combined transformation used during text output is
+ <em>not</em> the identity transformation, all measurements
+ returned by this interface should be subjected to that
+ transformation, to yield values in device coordinate space.
+ Depending on the underlying font technology, actual device output
+ might be off by up to one device pixel from the transformed
+ metrics.<p>
+
+ @since OOo 2.0
+ */
+interface XTextLayout : ::com::sun::star::uno::XInterface
+{
+ /** Extract the polygonal shapes of the layouted text.<p>
+
+ Each glyph is represented by a separate
+ XPolyPolygon2D in the returned sequence.<p>
+
+ @returns a sequence of XPolyPolygon2D in font
+ coordinate space, one for every glyph.
+ */
+ sequence<XPolyPolygon2D> queryTextShapes();
+
+
+ /** Query the ink bounding boxes for every glyph in the layouted
+ text.<p>
+
+ Ink, or tight bounding boxes in this case means that for
+ e.g. an "a", the bounding box for the
+ XPolyPolygon2D describing the glyph "a" is
+ returned, not the logical dimensions of the character in the
+ font.<p>
+
+ @returns a sequence of rectangles in font coordinate space,
+ specifying the bounds, one for every glyph.
+
+ @see XTextLayout::queryMeasures()
+ */
+ sequence<::com::sun::star::geometry::RealRectangle2D > queryInkMeasures();
+
+
+ /** Query the logical bounding boxes of every character in the
+ given text string.<p>
+
+ Logical bounding boxes means the space that the font allocates
+ for the given character, which, e.g. for a ".", might be
+ significantly broader than the bounds returned via
+ XTextLayout::queryInkMeasures().
+
+ @returns a sequence of rectangles specifying the bounds in
+ font coordinate space, one for every glyph.
+
+ @see XTextLayout::queryInkMeasures()
+ */
+ sequence<::com::sun::star::geometry::RealRectangle2D> queryMeasures();
+
+
+ /** Query the advancements for every character in the input string.<p>
+
+ This method returns a sequence of advancements, one for each
+ character in the input string (<em>not</em> for every
+ glyph. There might be multiple glyphs per input character, or
+ multiple input characters per glyph).
+
+ An advancement value is the distance of the glyph to the beginning
+ edge, which is left for LTR text and is right for RTL text. The
+ maximum of the advancements can be deemed as the width of the whole
+ text layout.
+
+ This method can be used to query for the layout's default
+ advancements, which can subsequently be changed and applied to
+ the layout via
+ XTextLayout::applyLogicalAdvancements().<p>
+
+ @returns a sequence of double specifying the
+ advancements per character in font coordinate space.
+
+ @see XTextLayout::applyLogicalAdvancements()
+ */
+ sequence<double> queryLogicalAdvancements();
+
+
+ /** Apply explicit advancements for every character in the layout
+ string.<p>
+
+ This method applies the specified advancements to every
+ logical character in the input string (<em>not</em> for every
+ glyph. There might be multiple glyphs per input character, or
+ multiple input characters per glyph). This is useful to
+ explicitly manipulate the exact output positions of
+ characters, e.g. relative to a reference output device.<p>
+
+ @param aAdvancements
+ A sequence of character advancements, in font coordinate
+ space.
+
+ @see XTextLayout::queryLogicalAdvancements()
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if the size of aAdvancements does not match the number of
+ characters in the text.
+ */
+ void applyLogicalAdvancements( [in] sequence< double > aAdvancements )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Query the overall bounding box of the text.<p>
+
+ This method is similar to
+ XTextLayout::queryTextMeasures(), only that the
+ overall bounds are returned by this method.<p>
+
+ @return the overall bounding box for the given layout, in font
+ coordinate space.
+ */
+ ::com::sun::star::geometry::RealRectangle2D queryTextBounds();
+
+
+ /** Justify the text to the given size.<p>
+
+ This method is the core of the XTextLayout
+ interface, because it layouts the text in a typographically
+ correct way into the available space.<p>
+
+ @param nSize
+ The requested size of the text after justification (either
+ width or height, depending on the writing mode). This
+ parameter is interpreted in font coordinate space.
+
+ @return the actual size of the text after the justification in
+ the font coordinate space. Depending on the font and the
+ script type, this might be somewhat different from the size
+ requested. If the requested size was smaller than the
+ justification algorithm could compress the text, this value
+ might even be significantly larger than nSize.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if nSize is 0 or negative.
+ */
+ double justify( [in] double nSize )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** Justify a number of text layouts to the given size.<p>
+
+ This method can be used to combine the layout of a text line
+ into a single justification run. This is e.g. useful if the
+ line consists of several text portions (e.g. because of
+ different fonts or colors), but it is desirable to spread the
+ available space more globally across the different layout
+ objects. If, for example, one layout object contains
+ significantly more whitespace or Kashidas than the rest, this
+ method can assign proportionally more space to this layout
+ object.<p>
+
+ @param aNextLayouts
+ A sequence of layouts following this one in logical text
+ order.
+
+ @param nSize
+ The requested size of the text for <em>all</em>
+ XTextLayouts after justification in font
+ coordinate space (either width or height, depending on the
+ writing mode).
+
+ @return the actual size of the text after the justification,
+ in font coordinate space. Depending on the font and the
+ script type, this might be somewhat different from the size
+ requested. If the requested size was smaller than the
+ justification algorithm could compress the text, this value
+ might even be significantly larger than nSize.
+
+ @throws com::sun::star::lang::IllegalArgumentException
+ if one of the parameters are not in the valid range.
+ */
+ double combinedJustify( [in] sequence< XTextLayout > aNextLayouts, [in] double nSize )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+
+ /** This method determines the hit position in the text.<p>
+
+ This method determines the index of the character hit at the
+ specified position (in font coordinate space).<p>
+
+ @param aHitPoint
+ The position in font coordinate space to determine the
+ underlying character index for.
+
+ */
+ TextHit getTextHit( [in] ::com::sun::star::geometry::RealPoint2D aHitPoint );
+
+
+ /** This method converts an insertion index to a caret.<p>
+
+ This method generates caret information for a given insertion
+ point in the layout text.<p>
+
+ @param nInsertionIndex
+ The insertion index, as e.g. returned by
+ XTextLayout::getTextHit(). This value must be
+ in the range 0 up to the number of characters in the string.
+
+ @param bExcludeLigatures
+ Set this to `TRUE` to skip the positions inside ligatures as
+ valid caret placements. For example, this would avoid setting
+ the caret between the "f" and the "i" in a "fi" ligature.
+
+ @returns the generated Caret structure.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if nInsertionIndex is outside the permissible range.
+ */
+ Caret getCaret( [in] long nInsertionIndex,
+ [in] boolean bExcludeLigatures )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** This method calculates a new insertion index.<p>
+
+ This method calculates a new insertion index, given a start
+ index and the number of characters to skip. This is most
+ useful for caret traveling.<p>
+
+ @param nStartIndex
+ The insertion index to start from.
+
+ @param nCaretAdvancement
+ For values greater than 0, the caret is visually moved to the
+ right. For values smaller than 0, the caret is visually moved
+ to the left.
+
+ @param bExcludeLigatures
+ Set this to `TRUE` to skip the positions inside ligatures as
+ valid caret placements. For example, this would avoid setting
+ the caret between the "f" and the "i" in a "fi" ligature.
+
+ @returns the new insertion index.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if nStartIndex or nCaretAdvancement is outside the permissible
+ range.
+ */
+ long getNextInsertionIndex( [in] long nStartIndex,
+ [in] long nCaretAdvancement,
+ [in] boolean bExcludeLigatures )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** This method generates a highlight polygon.<p>
+
+ This method generates a highlighting polygon from two
+ insertion indices. This polygon will be visually continuous,
+ i.e. will not have non-highlighted text in between.<p>
+
+ @param nStartIndex
+ Start of the selection range.
+
+ @param nEndIndex
+ End of the selection range.
+
+ @return the highlight polygon in the font coordinate space.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if nStartIndex or nEndIndex are outside the permissible
+ range.
+ */
+ XPolyPolygon2D queryVisualHighlighting( [in] long nStartIndex,
+ [in] long nEndIndex )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** This method generates a highlight polygon.<p>
+
+ This method generates a highlighting polygon from two
+ insertion indices. This polygon will not always be visually
+ continuous, if e.g. the text direction changes in the middle
+ of the selection, the might be parts visually between start
+ and end position that are not selected.<p>
+
+ @param nStartIndex
+ Start of the selection range.
+
+ @param nEndIndex
+ End of the selection range.
+
+ @return the highlight polygon in the font coordinate space.
+
+ @throws com::sun::star::lang::IndexOutOfBoundsException
+ if nStartIndex or nEndIndex are outside the permissible
+ range.
+ */
+ XPolyPolygon2D queryLogicalHighlighting( [in] long nStartIndex,
+ [in] long nEndIndex )
+ raises (com::sun::star::lang::IndexOutOfBoundsException);
+
+
+ /** This method yields the baseline offset.<p>
+
+ This method returns the baseline offset for this layout
+ object, either measured from the top or the left edge,
+ depending on the writing direction (horizontally or
+ vertically). Since rendering this layout via
+ XCanvas::drawTextLayout() outputs relative to
+ the layout object's baseline, this method can be used to
+ e.g. output relative to the left, top edge.<p>
+
+ @returns the distance of the main baseline from the top or the
+ left edge of this object, depending on the writing direction.
+ */
+ double getBaselineOffset();
+
+
+ /** This method returns the main writing direction.<p>
+
+ This method returns the main writing direction of this layout,
+ i.e. either LEFT_TO_RIGHT or RIGHT_TO_LEFT.<p>
+
+ @returns the main text direction of this layout.
+ */
+ byte getMainTextDirection();
+
+
+ /** Request the associated font for this layout.
+
+ @returns the associated font for this layout.
+ */
+ XCanvasFont getFont();
+
+
+ /** Request the text this layout contains.
+
+ @returns the text this layout contains.
+ */
+ StringContext getText();
+
+
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/rendering/XVolatileBitmap.idl b/offapi/com/sun/star/rendering/XVolatileBitmap.idl
new file mode 100644
index 000000000..7924ccf1f
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XVolatileBitmap.idl
@@ -0,0 +1,46 @@
+/* -*- 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_XVolatileBitmap_idl__
+#define __com_sun_star_rendering_XVolatileBitmap_idl__
+
+#include <com/sun/star/rendering/XBitmap.idl>
+
+module com { module sun { module star { module rendering {
+
+/** This is a specialized interface to a volatile bitmap (which can
+ become invalid at any point in time).
+ */
+interface XVolatileBitmap : XBitmap
+{
+ /** Query whether this volatile bitmap still has valid content.
+
+ As the video RAM allocated to this bitmap can be reclaimed at
+ any time, a return value of true here does not imply that the
+ next draw operation with this bitmap will succeed. Instead,
+ the exception VolatileContentDestroyed might then be thrown,
+ if lost bitmap data is accessed.
+ */
+ boolean isValid();
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */