diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
commit | ed5640d8b587fbcfed7dd7967f3de04b37a76f26 (patch) | |
tree | 7a5f7c6c9d02226d7471cb3cc8fbbf631b415303 /offapi/com/sun/star/rendering | |
parent | Initial commit. (diff) | |
download | libreoffice-ed5640d8b587fbcfed7dd7967f3de04b37a76f26.tar.xz libreoffice-ed5640d8b587fbcfed7dd7967f3de04b37a76f26.zip |
Adding upstream version 4:7.4.7.upstream/4%7.4.7upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
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<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< Color >` + and "Stops" being a `sequence< double >`. 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: */ |