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