xref: /trunk/main/basegfx/inc/basegfx/tools/canvastools.hxx (revision 914d351e5f5b84e4342a86d6ab8d4aca7308b9bd)
1ce9c7ef7SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3ce9c7ef7SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4ce9c7ef7SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5ce9c7ef7SAndrew Rist  * distributed with this work for additional information
6ce9c7ef7SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7ce9c7ef7SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8ce9c7ef7SAndrew Rist  * "License"); you may not use this file except in compliance
9ce9c7ef7SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11ce9c7ef7SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13ce9c7ef7SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14ce9c7ef7SAndrew Rist  * software distributed under the License is distributed on an
15ce9c7ef7SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16ce9c7ef7SAndrew Rist  * KIND, either express or implied.  See the License for the
17ce9c7ef7SAndrew Rist  * specific language governing permissions and limitations
18ce9c7ef7SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20ce9c7ef7SAndrew Rist  *************************************************************/
21ce9c7ef7SAndrew Rist 
22ce9c7ef7SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _BGFX_TOOLS_CANVASTOOLS_HXX
25cdf0e10cSrcweir #define _BGFX_TOOLS_CANVASTOOLS_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <com/sun/star/uno/Reference.hxx>
28cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.hxx>
29*b63233d8Sdamjan #include <basegfx/basegfxdllapi.h>
30cdf0e10cSrcweir 
31cdf0e10cSrcweir 
32cdf0e10cSrcweir namespace com { namespace sun { namespace star { namespace geometry
33cdf0e10cSrcweir {
34cdf0e10cSrcweir     struct AffineMatrix2D;
35cdf0e10cSrcweir     struct AffineMatrix3D;
36cdf0e10cSrcweir     struct Matrix2D;
37cdf0e10cSrcweir     struct RealPoint2D;
38cdf0e10cSrcweir     struct RealSize2D;
39cdf0e10cSrcweir     struct RealRectangle2D;
40cdf0e10cSrcweir     struct RealRectangle3D;
41cdf0e10cSrcweir     struct IntegerPoint2D;
42cdf0e10cSrcweir     struct IntegerSize2D;
43cdf0e10cSrcweir     struct IntegerRectangle2D;
44cdf0e10cSrcweir     struct RealBezierSegment2D;
45cdf0e10cSrcweir } } } }
46cdf0e10cSrcweir 
47cdf0e10cSrcweir namespace com { namespace sun { namespace star { namespace rendering
48cdf0e10cSrcweir {
49cdf0e10cSrcweir     class  XGraphicDevice;
50cdf0e10cSrcweir     class  XPolyPolygon2D;
51cdf0e10cSrcweir } } } }
52cdf0e10cSrcweir 
53cdf0e10cSrcweir namespace com { namespace sun { namespace star { namespace awt
54cdf0e10cSrcweir {
55cdf0e10cSrcweir     struct Point;
56cdf0e10cSrcweir     struct Size;
57cdf0e10cSrcweir     struct Rectangle;
58cdf0e10cSrcweir } } } }
59cdf0e10cSrcweir 
60cdf0e10cSrcweir namespace basegfx
61cdf0e10cSrcweir {
62cdf0e10cSrcweir     class B2DHomMatrix;
63cdf0e10cSrcweir     class B3DHomMatrix;
64cdf0e10cSrcweir     class B2DVector;
65cdf0e10cSrcweir     class B2DPoint;
66cdf0e10cSrcweir     class B2DRange;
67cdf0e10cSrcweir     class B3DRange;
68cdf0e10cSrcweir     class B2IVector;
69cdf0e10cSrcweir     class B2IPoint;
70cdf0e10cSrcweir     class B2IRange;
71cdf0e10cSrcweir     class B2DPolygon;
72cdf0e10cSrcweir     class B2DPolyPolygon;
73cdf0e10cSrcweir 
74cdf0e10cSrcweir     namespace unotools
75cdf0e10cSrcweir     {
76cdf0e10cSrcweir         // Polygon conversions
77cdf0e10cSrcweir         // ===================================================================
78cdf0e10cSrcweir 
79*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XPolyPolygon2D >
80cdf0e10cSrcweir             xPolyPolygonFromB2DPolygon( const ::com::sun::star::uno::Reference<
81cdf0e10cSrcweir                                             ::com::sun::star::rendering::XGraphicDevice >&  xGraphicDevice,
82cdf0e10cSrcweir                                         const ::basegfx::B2DPolygon&                        rPoly    );
83cdf0e10cSrcweir 
84*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XPolyPolygon2D >
85cdf0e10cSrcweir             xPolyPolygonFromB2DPolyPolygon( const ::com::sun::star::uno::Reference<
86cdf0e10cSrcweir                                                 ::com::sun::star::rendering::XGraphicDevice >&  xGraphicDevice,
87cdf0e10cSrcweir                                             const ::basegfx::B2DPolyPolygon&                    rPolyPoly    );
88cdf0e10cSrcweir 
89cdf0e10cSrcweir 
90*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::uno::Sequence<
91cdf0e10cSrcweir             ::com::sun::star::uno::Sequence<
92cdf0e10cSrcweir                 ::com::sun::star::geometry::RealBezierSegment2D > >
93cdf0e10cSrcweir                     bezierSequenceSequenceFromB2DPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly );
94cdf0e10cSrcweir 
95*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::uno::Sequence<
96cdf0e10cSrcweir             ::com::sun::star::uno::Sequence<
97cdf0e10cSrcweir                 ::com::sun::star::geometry::RealPoint2D > >
98cdf0e10cSrcweir                     pointSequenceSequenceFromB2DPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly );
99cdf0e10cSrcweir 
100*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2DPolygon polygonFromPoint2DSequence(
101cdf0e10cSrcweir             const ::com::sun::star::uno::Sequence<
102cdf0e10cSrcweir                 ::com::sun::star::geometry::RealPoint2D >& rPoints );
103cdf0e10cSrcweir 
104*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2DPolyPolygon polyPolygonFromPoint2DSequenceSequence(
105cdf0e10cSrcweir             const ::com::sun::star::uno::Sequence<
106cdf0e10cSrcweir                 ::com::sun::star::uno::Sequence< ::com::sun::star::geometry::RealPoint2D > >& rPoints );
107cdf0e10cSrcweir 
108*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2DPolygon polygonFromBezier2DSequence(
109cdf0e10cSrcweir             const ::com::sun::star::uno::Sequence<
110cdf0e10cSrcweir                 ::com::sun::star::geometry::RealBezierSegment2D >& rPoints );
111cdf0e10cSrcweir 
112*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2DPolyPolygon polyPolygonFromBezier2DSequenceSequence(
113cdf0e10cSrcweir             const ::com::sun::star::uno::Sequence<
114cdf0e10cSrcweir                 ::com::sun::star::uno::Sequence< ::com::sun::star::geometry::RealBezierSegment2D > >& rPoints );
115cdf0e10cSrcweir 
116*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2DPolyPolygon b2DPolyPolygonFromXPolyPolygon2D(
117cdf0e10cSrcweir             const ::com::sun::star::uno::Reference<
118cdf0e10cSrcweir                      ::com::sun::star::rendering::XPolyPolygon2D >& rPoly );
119cdf0e10cSrcweir 
120cdf0e10cSrcweir         // Matrix conversions
121cdf0e10cSrcweir         // ===================================================================
122cdf0e10cSrcweir 
123*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::geometry::AffineMatrix2D&
124cdf0e10cSrcweir             affineMatrixFromHomMatrix( ::com::sun::star::geometry::AffineMatrix2D&  matrix,
125cdf0e10cSrcweir                                        const ::basegfx::B2DHomMatrix&               transform);
126cdf0e10cSrcweir 
127*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::geometry::AffineMatrix3D& affineMatrixFromHomMatrix3D(
128cdf0e10cSrcweir             ::com::sun::star::geometry::AffineMatrix3D& matrix,
129cdf0e10cSrcweir             const ::basegfx::B3DHomMatrix& transform);
130cdf0e10cSrcweir 
131*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2DHomMatrix&
132cdf0e10cSrcweir             homMatrixFromAffineMatrix( ::basegfx::B2DHomMatrix&                             transform,
133cdf0e10cSrcweir                                        const ::com::sun::star::geometry::AffineMatrix2D&    matrix );
134cdf0e10cSrcweir 
135*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2DHomMatrix homMatrixFromAffineMatrix( const ::com::sun::star::geometry::AffineMatrix2D& matrix );
136*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B3DHomMatrix homMatrixFromAffineMatrix3D( const ::com::sun::star::geometry::AffineMatrix3D& matrix );
137cdf0e10cSrcweir 
138*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::geometry::Matrix2D&
139cdf0e10cSrcweir             matrixFromHomMatrix( ::com::sun::star::geometry::Matrix2D& matrix,
140cdf0e10cSrcweir                                  const ::basegfx::B2DHomMatrix&        transform);
141cdf0e10cSrcweir 
142*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2DHomMatrix&
143cdf0e10cSrcweir             homMatrixFromMatrix( ::basegfx::B2DHomMatrix&                    transform,
144cdf0e10cSrcweir                                  const ::com::sun::star::geometry::Matrix2D& matrix );
145cdf0e10cSrcweir 
146cdf0e10cSrcweir         // Geometry conversions
147cdf0e10cSrcweir         // ===================================================================
148cdf0e10cSrcweir 
149*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::geometry::RealSize2D        size2DFromB2DSize( const ::basegfx::B2DVector& );
150*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::geometry::RealPoint2D       point2DFromB2DPoint( const ::basegfx::B2DPoint& );
151*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::geometry::RealRectangle2D   rectangle2DFromB2DRectangle( const ::basegfx::B2DRange& );
152*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::geometry::RealRectangle3D   rectangle3DFromB3DRectangle( const ::basegfx::B3DRange& );
153cdf0e10cSrcweir 
154*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2DVector      b2DSizeFromRealSize2D( const ::com::sun::star::geometry::RealSize2D& );
155*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2DPoint       b2DPointFromRealPoint2D( const ::com::sun::star::geometry::RealPoint2D& );
156*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2DRange       b2DRectangleFromRealRectangle2D( const ::com::sun::star::geometry::RealRectangle2D& );
157*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B3DRange       b3DRectangleFromRealRectangle3D( const ::com::sun::star::geometry::RealRectangle3D& );
158cdf0e10cSrcweir 
159*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::geometry::IntegerSize2D         integerSize2DFromB2ISize( const ::basegfx::B2IVector& );
160*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::geometry::IntegerPoint2D    integerPoint2DFromB2IPoint( const ::basegfx::B2IPoint& );
161*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::geometry::IntegerRectangle2D    integerRectangle2DFromB2IRectangle( const ::basegfx::B2IRange& );
162cdf0e10cSrcweir 
163*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2IVector      b2ISizeFromIntegerSize2D( const ::com::sun::star::geometry::IntegerSize2D& );
164*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2IPoint       b2IPointFromIntegerPoint2D( const ::com::sun::star::geometry::IntegerPoint2D& );
165*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2IRange       b2IRectangleFromIntegerRectangle2D( const ::com::sun::star::geometry::IntegerRectangle2D& );
166cdf0e10cSrcweir 
167*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::awt::Size       awtSizeFromB2ISize( const ::basegfx::B2IVector& );
168*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::awt::Point          awtPointFromB2IPoint( const ::basegfx::B2IPoint& );
169*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::com::sun::star::awt::Rectangle  awtRectangleFromB2IRectangle( const ::basegfx::B2IRange& );
170cdf0e10cSrcweir 
171*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2IVector      b2ISizeFromAwtSize( const ::com::sun::star::awt::Size& );
172*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2IPoint       b2IPointFromAwtPoint( const ::com::sun::star::awt::Point& );
173*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2IRange       b2IRectangleFromAwtRectangle( const ::com::sun::star::awt::Rectangle& );
174cdf0e10cSrcweir 
175cdf0e10cSrcweir         // Geometry comparisons
176cdf0e10cSrcweir         // ===================================================================
177cdf0e10cSrcweir 
178*b63233d8Sdamjan         BASEGFX_DLLPUBLIC bool RealSize2DAreEqual( const ::com::sun::star::geometry::RealSize2D& rA, const ::com::sun::star::geometry::RealSize2D& rB );
179*b63233d8Sdamjan         BASEGFX_DLLPUBLIC bool RealPoint2DAreEqual( const ::com::sun::star::geometry::RealPoint2D& rA, const ::com::sun::star::geometry::RealPoint2D& rB );
180*b63233d8Sdamjan         BASEGFX_DLLPUBLIC bool RealRectangle2DAreEqual( const ::com::sun::star::geometry::RealRectangle2D& rA, const ::com::sun::star::geometry::RealRectangle2D& rB );
181*b63233d8Sdamjan         BASEGFX_DLLPUBLIC bool RealRectangle3DAreEqual( const ::com::sun::star::geometry::RealRectangle3D& rA, const ::com::sun::star::geometry::RealRectangle3D& rB );
182*b63233d8Sdamjan         BASEGFX_DLLPUBLIC bool AffineMatrix2DAreEqual( const ::com::sun::star::geometry::AffineMatrix2D& rA, const ::com::sun::star::geometry::AffineMatrix2D& rB );
183cdf0e10cSrcweir 
184*b63233d8Sdamjan         BASEGFX_DLLPUBLIC bool IntegerSize2DAreEqual( const ::com::sun::star::geometry::IntegerSize2D& rA, const ::com::sun::star::geometry::IntegerSize2D& rB );
185*b63233d8Sdamjan         BASEGFX_DLLPUBLIC bool IntegerPoint2DAreEqual( const ::com::sun::star::geometry::IntegerPoint2D& rA, const ::com::sun::star::geometry::IntegerPoint2D& rB );
186*b63233d8Sdamjan         BASEGFX_DLLPUBLIC bool IntegerRectangle2DAreEqual( const ::com::sun::star::geometry::IntegerRectangle2D& rA, const ::com::sun::star::geometry::IntegerRectangle2D& rB );
187cdf0e10cSrcweir 
188*b63233d8Sdamjan         BASEGFX_DLLPUBLIC bool awtSizeAreEqual( const ::com::sun::star::awt::Size& rA, const ::com::sun::star::awt::Size& rB );
189*b63233d8Sdamjan         BASEGFX_DLLPUBLIC bool awtPointAreEqual( const ::com::sun::star::awt::Point& rA, const ::com::sun::star::awt::Point& rB );
190*b63233d8Sdamjan         BASEGFX_DLLPUBLIC bool awtRectangleAreEqual( const ::com::sun::star::awt::Rectangle& rA, const ::com::sun::star::awt::Rectangle& rB );
191cdf0e10cSrcweir 
192cdf0e10cSrcweir         /** Return smalltest integer range, which completely contains
193cdf0e10cSrcweir             given floating point range.
194cdf0e10cSrcweir 
195cdf0e10cSrcweir             @param rRange
196cdf0e10cSrcweir             Input range. Values must be within the representable
197cdf0e10cSrcweir             bounds of sal_Int32
198cdf0e10cSrcweir 
199cdf0e10cSrcweir             @return the closest integer range, which completely
200cdf0e10cSrcweir             contains rRange.
201cdf0e10cSrcweir          */
202*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2IRange   b2ISurroundingRangeFromB2DRange( const ::basegfx::B2DRange& rRange );
203cdf0e10cSrcweir 
204cdf0e10cSrcweir         /** Return smalltest B2DRange with integer values, which
205cdf0e10cSrcweir             completely contains given floating point range.
206cdf0e10cSrcweir 
207cdf0e10cSrcweir             @param rRange
208cdf0e10cSrcweir             Input range.
209cdf0e10cSrcweir 
210cdf0e10cSrcweir             @return the closest B2DRange with integer coordinates,
211cdf0e10cSrcweir             which completely contains rRange.
212cdf0e10cSrcweir          */
213*b63233d8Sdamjan         BASEGFX_DLLPUBLIC ::basegfx::B2DRange   b2DSurroundingIntegerRangeFromB2DRange( const ::basegfx::B2DRange& rRange );
214cdf0e10cSrcweir 
215cdf0e10cSrcweir     }
216cdf0e10cSrcweir }
217cdf0e10cSrcweir 
218cdf0e10cSrcweir #endif /* _BGFX_TOOLS_CANVASTOOLS_HXX */
219