From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- offapi/com/sun/star/geometry/AffineMatrix2D.idl | 87 +++++++++++++++++ offapi/com/sun/star/geometry/AffineMatrix3D.idl | 107 +++++++++++++++++++++ offapi/com/sun/star/geometry/EllipticalArc.idl | 80 +++++++++++++++ .../sun/star/geometry/IntegerBezierSegment2D.idl | 61 ++++++++++++ offapi/com/sun/star/geometry/IntegerPoint2D.idl | 45 +++++++++ .../com/sun/star/geometry/IntegerRectangle2D.idl | 70 ++++++++++++++ offapi/com/sun/star/geometry/IntegerSize2D.idl | 44 +++++++++ offapi/com/sun/star/geometry/Matrix2D.idl | 84 ++++++++++++++++ .../com/sun/star/geometry/RealBezierSegment2D.idl | 61 ++++++++++++ offapi/com/sun/star/geometry/RealPoint2D.idl | 45 +++++++++ offapi/com/sun/star/geometry/RealRectangle2D.idl | 70 ++++++++++++++ offapi/com/sun/star/geometry/RealRectangle3D.idl | 68 +++++++++++++ offapi/com/sun/star/geometry/RealSize2D.idl | 44 +++++++++ offapi/com/sun/star/geometry/XMapping2D.idl | 61 ++++++++++++ 14 files changed, 927 insertions(+) create mode 100644 offapi/com/sun/star/geometry/AffineMatrix2D.idl create mode 100644 offapi/com/sun/star/geometry/AffineMatrix3D.idl create mode 100644 offapi/com/sun/star/geometry/EllipticalArc.idl create mode 100644 offapi/com/sun/star/geometry/IntegerBezierSegment2D.idl create mode 100644 offapi/com/sun/star/geometry/IntegerPoint2D.idl create mode 100644 offapi/com/sun/star/geometry/IntegerRectangle2D.idl create mode 100644 offapi/com/sun/star/geometry/IntegerSize2D.idl create mode 100644 offapi/com/sun/star/geometry/Matrix2D.idl create mode 100644 offapi/com/sun/star/geometry/RealBezierSegment2D.idl create mode 100644 offapi/com/sun/star/geometry/RealPoint2D.idl create mode 100644 offapi/com/sun/star/geometry/RealRectangle2D.idl create mode 100644 offapi/com/sun/star/geometry/RealRectangle3D.idl create mode 100644 offapi/com/sun/star/geometry/RealSize2D.idl create mode 100644 offapi/com/sun/star/geometry/XMapping2D.idl (limited to 'offapi/com/sun/star/geometry') diff --git a/offapi/com/sun/star/geometry/AffineMatrix2D.idl b/offapi/com/sun/star/geometry/AffineMatrix2D.idl new file mode 100644 index 000000000..1d7df6fc0 --- /dev/null +++ b/offapi/com/sun/star/geometry/AffineMatrix2D.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_geometry_AffineMatrix2D_idl__ +#define __com_sun_star_geometry_AffineMatrix2D_idl__ + +module com { module sun { module star { module geometry { + +/** This structure defines a 2 by 3 affine matrix.

+ + The matrix defined by this structure constitutes an affine mapping + of a point in 2D to another point in 2D. The last line of a + complete 3 by 3 matrix is omitted, since it is implicitly assumed + to be [0,0,1].

+ + An affine mapping, as performed by this matrix, can be written out + as follows, where xs and ys are the source, and + xd and yd the corresponding result coordinates: + + + xd = m00*xs + m01*ys + m02; + yd = m10*xs + m11*ys + m12; +

+ + Thus, in common matrix language, with M being the + AffineMatrix2D and vs=[xs,ys]^T, vd=[xd,yd]^T two 2D + vectors, the affine transformation is written as + vd=M*vs. Concatenation of transformations amounts to + multiplication of matrices, i.e. a translation, given by T, + followed by a rotation, given by R, is expressed as vd=R*(T*vs) in + the above notation. Since matrix multiplication is associative, + this can be shortened to vd=(R*T)*vs=M'*vs. Therefore, a set of + consecutive transformations can be accumulated into a single + AffineMatrix2D, by multiplying the current transformation with the + additional transformation from the left.

+ + Due to this transformational approach, all geometry data types are + points in abstract integer or real coordinate spaces, without any + physical dimensions attached to them. This physical measurement + units are typically only added when using these data types to + render something onto a physical output device, like a screen or a + printer, Then, the total transformation matrix and the device + resolution determine the actual measurement unit.

+ + @since OOo 2.0 + */ +struct AffineMatrix2D +{ + /// The top, left matrix entry. + double m00; + + /// The top, middle matrix entry. + double m01; + + /// The top, right matrix entry. + double m02; + + /// The bottom, left matrix entry. + double m10; + + /// The bottom, middle matrix entry. + double m11; + + /// The bottom, right matrix entry. + double m12; +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/geometry/AffineMatrix3D.idl b/offapi/com/sun/star/geometry/AffineMatrix3D.idl new file mode 100644 index 000000000..4602907c3 --- /dev/null +++ b/offapi/com/sun/star/geometry/AffineMatrix3D.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_geometry_AffineMatrix3D_idl__ +#define __com_sun_star_geometry_AffineMatrix3D_idl__ + +module com { module sun { module star { module geometry { + +/** This structure defines a 3 by 4 affine matrix.

+ + The matrix defined by this structure constitutes an affine mapping + of a point in 3D to another point in 3D. The last line of a + complete 4 by 4 matrix is omitted, since it is implicitly assumed + to be [0,0,0,1].

+ + An affine mapping, as performed by this matrix, can be written out + as follows, where xs, ys and zs are the source, and + xd, yd and zd the corresponding result coordinates: + + + xd = m00*xs + m01*ys + m02*zs + m03; + yd = m10*xs + m11*ys + m12*zs + m13; + zd = m20*xs + m21*ys + m22*zs + m23; +

+ + Thus, in common matrix language, with M being the + AffineMatrix3D and vs=[xs,ys,zs]^T, vd=[xd,yd,zd]^T two 3D + vectors, the affine transformation is written as + vd=M*vs. Concatenation of transformations amounts to + multiplication of matrices, i.e. a translation, given by T, + followed by a rotation, given by R, is expressed as vd=R*(T*vs) in + the above notation. Since matrix multiplication is associative, + this can be shortened to vd=(R*T)*vs=M'*vs. Therefore, a set of + consecutive transformations can be accumulated into a single + AffineMatrix3D, by multiplying the current transformation with the + additional transformation from the left.

+ + Due to this transformational approach, all geometry data types are + points in abstract integer or real coordinate spaces, without any + physical dimensions attached to them. This physical measurement + units are typically only added when using these data types to + render something onto a physical output device. For 3D coordinates + there is also a projection from 3D to 2D device coordinates needed. + Only then the total transformation matrix (including projection to 2D) + and the device resolution determine the actual measurement unit in 3D.

+ + @since OOo 2.0 + */ +struct AffineMatrix3D +{ + /// The top, left matrix entry. + double m00; + + /// The top, left middle matrix entry. + double m01; + + /// The top, right middle matrix entry. + double m02; + + /// The top, right matrix entry. + double m03; + + /// The middle, left matrix entry. + double m10; + + /// The middle, middle left matrix entry. + double m11; + + /// The middle, middle right matrix entry. + double m12; + + /// The middle, right matrix entry. + double m13; + + /// The bottom, left matrix entry. + double m20; + + /// The bottom, middle left matrix entry. + double m21; + + /// The bottom, middle right matrix entry. + double m22; + + /// The bottom, right matrix entry. + double m23; +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/geometry/EllipticalArc.idl b/offapi/com/sun/star/geometry/EllipticalArc.idl new file mode 100644 index 000000000..7fe9b40e9 --- /dev/null +++ b/offapi/com/sun/star/geometry/EllipticalArc.idl @@ -0,0 +1,80 @@ +/* -*- 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_geometry_EllipticalArc_idl__ +#define __com_sun_star_geometry_EllipticalArc_idl__ + +#include + +module com { module sun { module star { module geometry { + +/** This structure specifies an arbitrary elliptical arc.

+ + This structure contains all parameters necessary to specify + arbitrary elliptical arcs. The parameters are modeled closely + after the SVG specification.

+ + As with the parameters below, there are mostly four different + ellipses arcs (two different ellipses, on which four different + arcs connect start and end point) which satisfy the given set of + constrains. Thus, there are two flags indicating which one of those + ellipses should be taken.

+ + @since OOo 2.0 + */ +struct EllipticalArc +{ + /// Start point of the arc. + RealPoint2D StartPosition; + + + /// End point of the arc. + RealPoint2D EndPosition; + + + /// Main radius in x direction of the ellipse this arc is part of. + double RadiusX; + + + /// Main radius in y direction of the ellipse this arc is part of. + double RadiusY; + + + /** Rotation angle of the x axis of the ellipse relative to the x + axis of the reference coordinate system. + */ + double XAxisRotation; + + + /** If `TRUE`, and there's a choice, take the longer one of two arcs + connecting start and end point. + */ + boolean IsLargeArc; + + + /** If `TRUE`, and there's a choice, take the arc that goes + clock-wise from start to end point. + */ + boolean IsClockwiseSweep; +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/geometry/IntegerBezierSegment2D.idl b/offapi/com/sun/star/geometry/IntegerBezierSegment2D.idl new file mode 100644 index 000000000..ae054104a --- /dev/null +++ b/offapi/com/sun/star/geometry/IntegerBezierSegment2D.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_geometry_IntegerBezierSegment2D_idl__ +#define __com_sun_star_geometry_IntegerBezierSegment2D_idl__ + +module com { module sun { module star { module geometry { + +/** This structure contains the relevant data for a cubic Bezier + curve.

+ + The data is stored integer-valued. The last point of the segment + is taken from the first point of the following segment, and thus + not included herein. That is, when forming a polygon out of cubic + Bezier segments, each two consecutive IntegerBezierSegment2Ds + define the actual curve, with the very last segment providing only + the end point of the last curve, and the remaining members + ignored.

+ + @see com::sun::star::rendering::XBezierPolyPolygon2D + @since OOo 2.0 + */ +struct IntegerBezierSegment2D +{ + /// The x coordinate of the start point. + long Px; + /// The y coordinate of the start point. + long Py; + + /// The x coordinate of the first control point. + long C1x; + /// The y coordinate of the first control point. + long C1y; + + /// The x coordinate of the second control point. + long C2x; + /// The y coordinate of the second control point. + long C2y; + +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/geometry/IntegerPoint2D.idl b/offapi/com/sun/star/geometry/IntegerPoint2D.idl new file mode 100644 index 000000000..e7f1575c5 --- /dev/null +++ b/offapi/com/sun/star/geometry/IntegerPoint2D.idl @@ -0,0 +1,45 @@ +/* -*- 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_geometry_IntegerPoint2D_idl__ +#define __com_sun_star_geometry_IntegerPoint2D_idl__ + +module com { module sun { module star { module geometry { + +/** This structure defines a two-dimensional point + + This structure contains x and y integer-valued coordinates of a + two-dimensional point. + + @since OOo 2.0 + */ +struct IntegerPoint2D +{ + /// The x coordinate of the point. + long X; + + + /// The x coordinate of the point. + long Y; +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/geometry/IntegerRectangle2D.idl b/offapi/com/sun/star/geometry/IntegerRectangle2D.idl new file mode 100644 index 000000000..010a8e7a8 --- /dev/null +++ b/offapi/com/sun/star/geometry/IntegerRectangle2D.idl @@ -0,0 +1,70 @@ +/* -*- 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_geometry_IntegerRectangle2D_idl__ +#define __com_sun_star_geometry_IntegerRectangle2D_idl__ + +module com { module sun { module star { module geometry { + +/* Removed, because XCanvas is private API until further notice. + + The values are stored as integers. Please note that the + com.sun.star.rendering.XCanvas defines the + screen representation of rectangles in such a way that the lower + and the rightmost line of the rectangle are not drawn on + screen. Thus, if for two rectangles R1 and R2, R1.x2 equals R2.x1, + the screen representation of these rectangles will not overlap, + but being exactly adjacent. That also means, that an + IntegerRectangle2D with X1 equal X2 or Y1 equal Y2 can be + considered empty.

+*/ + +/** This structure contains the necessary information for a + two-dimensional rectangle.

+ + @since OOo 2.0 + */ +struct IntegerRectangle2D +{ + /// X coordinate of upper left corner. + long X1; + + + /// Y coordinate of upper left corner. + long Y1; + + + /** X coordinate of lower right corner.

+ + Must be greater than X1 for non-empty rectangles.

+ */ + long X2; + + + /** Y coordinate of lower right corner.

+ + Must be greater than y1 for non-empty rectangles.

+ */ + long Y2; +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/geometry/IntegerSize2D.idl b/offapi/com/sun/star/geometry/IntegerSize2D.idl new file mode 100644 index 000000000..5d3e58f30 --- /dev/null +++ b/offapi/com/sun/star/geometry/IntegerSize2D.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_geometry_IntegerSize2D_idl__ +#define __com_sun_star_geometry_IntegerSize2D_idl__ + +module com { module sun { module star { module geometry { + +/** This structure contains data representing a two-dimensional size.

+ + The data is stored integer-valued.

+ + @since OOo 2.0 + */ +struct IntegerSize2D +{ + /// Amount of space occupied in the x direction. + long Width; + + + /// Amount of space occupied in the y direction. + long Height; +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/geometry/Matrix2D.idl b/offapi/com/sun/star/geometry/Matrix2D.idl new file mode 100644 index 000000000..d64e155c3 --- /dev/null +++ b/offapi/com/sun/star/geometry/Matrix2D.idl @@ -0,0 +1,84 @@ +/* -*- 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_geometry_Matrix2D_idl__ +#define __com_sun_star_geometry_Matrix2D_idl__ + +module com { module sun { module star { module geometry { + +/** This structure defines a 2 by 2 matrix.

+ + This constitutes a linear mapping of a point in 2D to another + point in 2D.

+ + The matrix defined by this structure constitutes a linear + mapping of a point in 2D to another point in 2D. In contrast to + the com.sun.star.geometry.AffineMatrix2D, this + matrix does not include any translational components.

+ + A linear mapping, as performed by this matrix, can be written out + as follows, where xs and ys are the source, and + xd and yd the corresponding result coordinates: + + + xd = m00*xs + m01*ys; + yd = m10*xs + m11*ys; +

+ + Thus, in common matrix language, with M being the + Matrix2D and vs=[xs,ys]^T, vd=[xd,yd]^T two 2D + vectors, the linear mapping is written as + vd=M*vs. Concatenation of transformations amounts to + multiplication of matrices, i.e. a scaling, given by S, + followed by a rotation, given by R, is expressed as vd=R*(S*vs) in + the above notation. Since matrix multiplication is associative, + this can be shortened to vd=(R*S)*vs=M'*vs. Therefore, a set of + consecutive transformations can be accumulated into a single + Matrix2D, by multiplying the current transformation with the + additional transformation from the left.

+ + Due to this transformational approach, all geometry data types are + points in abstract integer or real coordinate spaces, without any + physical dimensions attached to them. This physical measurement + units are typically only added when using these data types to + render something onto a physical output device, like a screen or a + printer. Then, the total transformation matrix and the device + resolution determine the actual measurement unit.

+ + @since OOo 2.0 + */ +struct Matrix2D +{ + /// The top, left matrix entry. + double m00; + + /// The top, right matrix entry. + double m01; + + /// The bottom, left matrix entry. + double m10; + + /// The bottom, right matrix entry. + double m11; +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/geometry/RealBezierSegment2D.idl b/offapi/com/sun/star/geometry/RealBezierSegment2D.idl new file mode 100644 index 000000000..6899d7ef5 --- /dev/null +++ b/offapi/com/sun/star/geometry/RealBezierSegment2D.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_geometry_RealBezierSegment2D_idl__ +#define __com_sun_star_geometry_RealBezierSegment2D_idl__ + +module com { module sun { module star { module geometry { + +/** This structure contains the relevant data for a cubic Bezier + curve.

+ + The data is stored real-valued. The last point of the segment is + taken from the first point of the following segment, and thus not + included herein. That is, when forming a polygon out of cubic + Bezier segments, each two consecutive RealBezierSegment2D + define the actual curve, with the very last segment providing only + the end point of the last curve, and the remaining members + ignored.

+ + @see com::sun::star::rendering::XBezierPolyPolygon2D + @since OOo 2.0 + */ +struct RealBezierSegment2D +{ + /// The x coordinate of the start point. + double Px; + /// The y coordinate of the start point. + double Py; + + /// The x coordinate of the first control point. + double C1x; + /// The y coordinate of the first control point. + double C1y; + + /// The x coordinate of the second control point. + double C2x; + /// The y coordinate of the second control point. + double C2y; + +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/geometry/RealPoint2D.idl b/offapi/com/sun/star/geometry/RealPoint2D.idl new file mode 100644 index 000000000..ff7d26306 --- /dev/null +++ b/offapi/com/sun/star/geometry/RealPoint2D.idl @@ -0,0 +1,45 @@ +/* -*- 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_geometry_RealPoint2D_idl__ +#define __com_sun_star_geometry_RealPoint2D_idl__ + +module com { module sun { module star { module geometry { + +/** This structure defines a two-dimensional point + + This structure contains x and y real-valued coordinates of a + two-dimensional point. + + @since OOo 2.0 + */ +struct RealPoint2D +{ + /// The x coordinate of the point. + double X; + + + /// The x coordinate of the point. + double Y; +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/geometry/RealRectangle2D.idl b/offapi/com/sun/star/geometry/RealRectangle2D.idl new file mode 100644 index 000000000..19f38e0c3 --- /dev/null +++ b/offapi/com/sun/star/geometry/RealRectangle2D.idl @@ -0,0 +1,70 @@ +/* -*- 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_geometry_RealRectangle2D_idl__ +#define __com_sun_star_geometry_RealRectangle2D_idl__ + +module com { module sun { module star { module geometry { + +/* Removed, because XCanvas is private API until further notice. + + The values are stored as reals. Please note that the + com.sun.star.rendering.XCanvas defines the + screen representation of rectangles in such a way that the lower + and the rightmost line of the rectangle are not drawn on + screen. Thus, if for two rectangles R1 and R2, R1.x2 equals R2.x1, + the screen representation of these rectangles will not overlap, + but being exactly adjacent. That also means, that an + IntegerRectangle2D with X1 equal X2 or Y1 equal Y2 can be + considered empty.

+*/ + +/** This structure contains the necessary information for a + two-dimensional rectangle.

+ + @since OOo 2.0 + */ +struct RealRectangle2D +{ + /// X coordinate of upper left corner . + double X1; + + + /// Y coordinate of upper left corner. + double Y1; + + + /** X coordinate of lower right corner.

+ + Must be greater than x1 for non-empty rectangles.

. + */ + double X2; + + + /** Y coordinate of lower right corner.

+ + Must be greater than y1 for non-empty rectangles.

+ */ + double Y2; +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/geometry/RealRectangle3D.idl b/offapi/com/sun/star/geometry/RealRectangle3D.idl new file mode 100644 index 000000000..839f4b422 --- /dev/null +++ b/offapi/com/sun/star/geometry/RealRectangle3D.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_geometry_RealRectangle3D_idl__ +#define __com_sun_star_geometry_RealRectangle3D_idl__ + +module com { module sun { module star { module geometry { + +/** This structure contains the necessary information for a + three-dimensional cube.

+ + @since OOo 2.0 + */ +struct RealRectangle3D +{ + /// minimum X coordinate. + double X1; + + + /// minimum Y coordinate. + double Y1; + + + /// minimum Z coordinate. + double Z1; + + + /** maximum X coordinate.

+ + Must be greater than X1 for non-empty cubes.

. + */ + double X2; + + + /** maximum Y coordinate.

+ + Must be greater than Y1 for non-empty cubes.

+ */ + double Y2; + + + /** maximum Z coordinate.

+ + Must be greater than Z1 for non-empty cubes.

+ */ + double Z2; +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/geometry/RealSize2D.idl b/offapi/com/sun/star/geometry/RealSize2D.idl new file mode 100644 index 000000000..6bb95c4ab --- /dev/null +++ b/offapi/com/sun/star/geometry/RealSize2D.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_geometry_RealSize2D_idl__ +#define __com_sun_star_geometry_RealSize2D_idl__ + +module com { module sun { module star { module geometry { + +/** This structure contains data representing a two-dimensional size.

+ + The data is stored real-valued.

+ + @since OOo 2.0 + */ +struct RealSize2D +{ + /// Amount of space occupied in the x direction. + double Width; + + + /// Amount of space occupied in the y direction. + double Height; +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/geometry/XMapping2D.idl b/offapi/com/sun/star/geometry/XMapping2D.idl new file mode 100644 index 000000000..eda7c50d4 --- /dev/null +++ b/offapi/com/sun/star/geometry/XMapping2D.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_geometry_XMapping2D_idl__ +#define __com_sun_star_geometry_XMapping2D_idl__ + +#include +#include + +module com { module sun { module star { module geometry { + +/** Interface defining an arbitrary bijective mapping from R^2 to R^2.

+ + This interface provides methods to define an arbitrary bijective + mapping from R^2 to R^2, i.e. from the two-dimensional space of + real numbers onto itself, as is representable by the + double floating point type. The mapping must be + bijective, i.e. map a pair of real numbers to exactly one other + pair of real numbers and vice versa, to facilitate a working + inverse. Bijectiveness also implies completeness, i.e. for every + pair of real numbers there must be another pair that is mapped + upon them.

+ + @since OOo 2.0 + */ +interface XMapping2D : ::com::sun::star::uno::XInterface +{ + /** Forward 2D mapping function + */ + RealPoint2D map( [in] RealPoint2D aPoint ); + + + /** Inverse 2D mapping function.

+ + The following invariant must hold: + map(mapInverse(p))=p. This effectively rules out + non-bijective mappings.

+ */ + RealPoint2D mapInverse( [in] RealPoint2D aPoint ); +}; + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3