summaryrefslogtreecommitdiffstats
path: root/offapi/com/sun/star/geometry
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:06:44 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:06:44 +0000
commited5640d8b587fbcfed7dd7967f3de04b37a76f26 (patch)
tree7a5f7c6c9d02226d7471cb3cc8fbbf631b415303 /offapi/com/sun/star/geometry
parentInitial commit. (diff)
downloadlibreoffice-upstream/4%7.4.7.tar.xz
libreoffice-upstream/4%7.4.7.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 '')
-rw-r--r--offapi/com/sun/star/geometry/AffineMatrix2D.idl87
-rw-r--r--offapi/com/sun/star/geometry/AffineMatrix3D.idl107
-rw-r--r--offapi/com/sun/star/geometry/EllipticalArc.idl80
-rw-r--r--offapi/com/sun/star/geometry/IntegerBezierSegment2D.idl61
-rw-r--r--offapi/com/sun/star/geometry/IntegerPoint2D.idl45
-rw-r--r--offapi/com/sun/star/geometry/IntegerRectangle2D.idl70
-rw-r--r--offapi/com/sun/star/geometry/IntegerSize2D.idl44
-rw-r--r--offapi/com/sun/star/geometry/Matrix2D.idl84
-rw-r--r--offapi/com/sun/star/geometry/RealBezierSegment2D.idl61
-rw-r--r--offapi/com/sun/star/geometry/RealPoint2D.idl45
-rw-r--r--offapi/com/sun/star/geometry/RealRectangle2D.idl70
-rw-r--r--offapi/com/sun/star/geometry/RealRectangle3D.idl68
-rw-r--r--offapi/com/sun/star/geometry/RealSize2D.idl44
-rw-r--r--offapi/com/sun/star/geometry/XMapping2D.idl61
14 files changed, 927 insertions, 0 deletions
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.<p>
+
+ 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].<p>
+
+ An affine mapping, as performed by this matrix, can be written out
+ as follows, where <code>xs</code> and <code>ys</code> are the source, and
+ <code>xd</code> and <code>yd</code> the corresponding result coordinates:
+
+ <code>
+ xd = m00*xs + m01*ys + m02;
+ yd = m10*xs + m11*ys + m12;
+ </code><p>
+
+ 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.<p>
+
+ 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.<p>
+
+ @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.<p>
+
+ 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].<p>
+
+ An affine mapping, as performed by this matrix, can be written out
+ as follows, where <code>xs, ys</code> and <code>zs</code> are the source, and
+ <code>xd, yd</code> and <code>zd</code> the corresponding result coordinates:
+
+ <code>
+ xd = m00*xs + m01*ys + m02*zs + m03;
+ yd = m10*xs + m11*ys + m12*zs + m13;
+ zd = m20*xs + m21*ys + m22*zs + m23;
+ </code><p>
+
+ 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.<p>
+
+ 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.<p>
+
+ @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 <com/sun/star/geometry/RealPoint2D.idl>
+
+module com { module sun { module star { module geometry {
+
+/** This structure specifies an arbitrary elliptical arc.<p>
+
+ This structure contains all parameters necessary to specify
+ arbitrary elliptical arcs. The parameters are modeled closely
+ after the <a href="http://www.w3c.org">SVG</a> specification.<p>
+
+ 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.<p>
+
+ @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.<p>
+
+ 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.<p>
+
+ @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.<p>
+*/
+
+/** This structure contains the necessary information for a
+ two-dimensional rectangle.<p>
+
+ @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.<p>
+
+ Must be greater than X1 for non-empty rectangles.<p>
+ */
+ long X2;
+
+
+ /** Y coordinate of lower right corner.<p>
+
+ Must be greater than y1 for non-empty rectangles.<p>
+ */
+ 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.<p>
+
+ The data is stored integer-valued.<p>
+
+ @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.<p>
+
+ This constitutes a linear mapping of a point in 2D to another
+ point in 2D.<p>
+
+ 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.<p>
+
+ A linear mapping, as performed by this matrix, can be written out
+ as follows, where <code>xs</code> and <code>ys</code> are the source, and
+ <code>xd</code> and <code>yd</code> the corresponding result coordinates:
+
+ <code>
+ xd = m00*xs + m01*ys;
+ yd = m10*xs + m11*ys;
+ </code><p>
+
+ 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.<p>
+
+ 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.<p>
+
+ @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.<p>
+
+ 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.<p>
+
+ @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.<p>
+*/
+
+/** This structure contains the necessary information for a
+ two-dimensional rectangle.<p>
+
+ @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.<p>
+
+ Must be greater than x1 for non-empty rectangles.<p>.
+ */
+ double X2;
+
+
+ /** Y coordinate of lower right corner.<p>
+
+ Must be greater than y1 for non-empty rectangles.<p>
+ */
+ 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.<p>
+
+ @since OOo 2.0
+ */
+struct RealRectangle3D
+{
+ /// minimum X coordinate.
+ double X1;
+
+
+ /// minimum Y coordinate.
+ double Y1;
+
+
+ /// minimum Z coordinate.
+ double Z1;
+
+
+ /** maximum X coordinate.<p>
+
+ Must be greater than X1 for non-empty cubes.<p>.
+ */
+ double X2;
+
+
+ /** maximum Y coordinate.<p>
+
+ Must be greater than Y1 for non-empty cubes.<p>
+ */
+ double Y2;
+
+
+ /** maximum Z coordinate.<p>
+
+ Must be greater than Z1 for non-empty cubes.<p>
+ */
+ 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.<p>
+
+ The data is stored real-valued.<p>
+
+ @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 <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/geometry/RealPoint2D.idl>
+
+module com { module sun { module star { module geometry {
+
+/** Interface defining an arbitrary bijective mapping from R^2 to R^2.<p>
+
+ 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.<p>
+
+ @since OOo 2.0
+ */
+interface XMapping2D : ::com::sun::star::uno::XInterface
+{
+ /** Forward 2D mapping function
+ */
+ RealPoint2D map( [in] RealPoint2D aPoint );
+
+
+ /** Inverse 2D mapping function.<p>
+
+ The following invariant must hold:
+ <code>map(mapInverse(p))=p</code>. This effectively rules out
+ non-bijective mappings.<p>
+ */
+ RealPoint2D mapInverse( [in] RealPoint2D aPoint );
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */