1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove 25*b1cdbd2cSJim Jagielski #include "precompiled_canvas.hxx" 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include <com/sun/star/geometry/AffineMatrix2D.hpp> 28*b1cdbd2cSJim Jagielski #include <com/sun/star/geometry/Matrix2D.hpp> 29*b1cdbd2cSJim Jagielski #include <com/sun/star/geometry/RealPoint2D.hpp> 30*b1cdbd2cSJim Jagielski #include <com/sun/star/geometry/RealSize2D.hpp> 31*b1cdbd2cSJim Jagielski #include <com/sun/star/geometry/IntegerPoint2D.hpp> 32*b1cdbd2cSJim Jagielski #include <com/sun/star/geometry/IntegerSize2D.hpp> 33*b1cdbd2cSJim Jagielski #include <com/sun/star/geometry/RealRectangle2D.hpp> 34*b1cdbd2cSJim Jagielski #include <com/sun/star/geometry/RealBezierSegment2D.hpp> 35*b1cdbd2cSJim Jagielski #include <com/sun/star/rendering/RenderState.hpp> 36*b1cdbd2cSJim Jagielski #include <com/sun/star/rendering/ViewState.hpp> 37*b1cdbd2cSJim Jagielski #include <com/sun/star/rendering/XCanvas.hpp> 38*b1cdbd2cSJim Jagielski #include <com/sun/star/rendering/CompositeOperation.hpp> 39*b1cdbd2cSJim Jagielski #include <com/sun/star/rendering/TexturingMode.hpp> 40*b1cdbd2cSJim Jagielski #include <com/sun/star/util/Endianness.hpp> 41*b1cdbd2cSJim Jagielski #include <com/sun/star/rendering/PathCapType.hpp> 42*b1cdbd2cSJim Jagielski #include <com/sun/star/rendering/PathJoinType.hpp> 43*b1cdbd2cSJim Jagielski #include <com/sun/star/rendering/IntegerBitmapLayout.hpp> 44*b1cdbd2cSJim Jagielski #include <com/sun/star/rendering/FloatingPointBitmapFormat.hpp> 45*b1cdbd2cSJim Jagielski #include <com/sun/star/rendering/FloatingPointBitmapLayout.hpp> 46*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp> 47*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XServiceInfo.hpp> 48*b1cdbd2cSJim Jagielski 49*b1cdbd2cSJim Jagielski #include <basegfx/matrix/b2dhommatrix.hxx> 50*b1cdbd2cSJim Jagielski #include <basegfx/range/b2drange.hxx> 51*b1cdbd2cSJim Jagielski #include <basegfx/range/b2irange.hxx> 52*b1cdbd2cSJim Jagielski #include <basegfx/range/b2drectangle.hxx> 53*b1cdbd2cSJim Jagielski #include <basegfx/point/b2dpoint.hxx> 54*b1cdbd2cSJim Jagielski #include <basegfx/tools/canvastools.hxx> 55*b1cdbd2cSJim Jagielski #include <basegfx/polygon/b2dpolygon.hxx> 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski #include <canvas/verifyinput.hxx> 58*b1cdbd2cSJim Jagielski #include <canvas/canvastools.hxx> 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski using namespace ::com::sun::star; 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski namespace canvas 64*b1cdbd2cSJim Jagielski { 65*b1cdbd2cSJim Jagielski namespace tools 66*b1cdbd2cSJim Jagielski { verifyInput(const geometry::RealPoint2D & rPoint,const char * pStr,const uno::Reference<uno::XInterface> & xIf,::sal_Int16 nArgPos)67*b1cdbd2cSJim Jagielski void verifyInput( const geometry::RealPoint2D& rPoint, 68*b1cdbd2cSJim Jagielski const char* pStr, 69*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 70*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos ) 71*b1cdbd2cSJim Jagielski { 72*b1cdbd2cSJim Jagielski (void)pStr; (void)xIf; (void)nArgPos; 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 75*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rPoint.X ) ) 76*b1cdbd2cSJim Jagielski { 77*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 78*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 79*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): point X value contains infinite or NAN"), 80*b1cdbd2cSJim Jagielski xIf, 81*b1cdbd2cSJim Jagielski nArgPos ); 82*b1cdbd2cSJim Jagielski } 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rPoint.Y ) ) 85*b1cdbd2cSJim Jagielski { 86*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 87*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 88*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): point X value contains infinite or NAN"), 89*b1cdbd2cSJim Jagielski xIf, 90*b1cdbd2cSJim Jagielski nArgPos ); 91*b1cdbd2cSJim Jagielski } 92*b1cdbd2cSJim Jagielski #else 93*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rPoint.X ) || 94*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( rPoint.Y ) ) 95*b1cdbd2cSJim Jagielski { 96*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 97*b1cdbd2cSJim Jagielski } 98*b1cdbd2cSJim Jagielski #endif 99*b1cdbd2cSJim Jagielski } 100*b1cdbd2cSJim Jagielski verifyInput(const geometry::RealSize2D & rSize,const char * pStr,const uno::Reference<uno::XInterface> & xIf,::sal_Int16 nArgPos)101*b1cdbd2cSJim Jagielski void verifyInput( const geometry::RealSize2D& rSize, 102*b1cdbd2cSJim Jagielski const char* pStr, 103*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 104*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos ) 105*b1cdbd2cSJim Jagielski { 106*b1cdbd2cSJim Jagielski (void)pStr; (void)xIf; (void)nArgPos; 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 109*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rSize.Width ) ) 110*b1cdbd2cSJim Jagielski { 111*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 112*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 113*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): size.Width value contains infinite or NAN"), 114*b1cdbd2cSJim Jagielski xIf, 115*b1cdbd2cSJim Jagielski nArgPos ); 116*b1cdbd2cSJim Jagielski } 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rSize.Height ) ) 119*b1cdbd2cSJim Jagielski { 120*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 121*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 122*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): size.Height value contains infinite or NAN"), 123*b1cdbd2cSJim Jagielski xIf, 124*b1cdbd2cSJim Jagielski nArgPos ); 125*b1cdbd2cSJim Jagielski } 126*b1cdbd2cSJim Jagielski #else 127*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rSize.Width ) || 128*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( rSize.Height ) ) 129*b1cdbd2cSJim Jagielski { 130*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 131*b1cdbd2cSJim Jagielski } 132*b1cdbd2cSJim Jagielski #endif 133*b1cdbd2cSJim Jagielski } 134*b1cdbd2cSJim Jagielski verifyInput(const geometry::RealBezierSegment2D & rSegment,const char * pStr,const uno::Reference<uno::XInterface> & xIf,::sal_Int16 nArgPos)135*b1cdbd2cSJim Jagielski void verifyInput( const geometry::RealBezierSegment2D& rSegment, 136*b1cdbd2cSJim Jagielski const char* pStr, 137*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 138*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos ) 139*b1cdbd2cSJim Jagielski { 140*b1cdbd2cSJim Jagielski (void)pStr; (void)xIf; (void)nArgPos; 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 143*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rSegment.Px ) ) 144*b1cdbd2cSJim Jagielski { 145*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 146*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 147*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bezier segment's Px value contains infinite or NAN"), 148*b1cdbd2cSJim Jagielski xIf, 149*b1cdbd2cSJim Jagielski nArgPos ); 150*b1cdbd2cSJim Jagielski } 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rSegment.Py ) ) 153*b1cdbd2cSJim Jagielski { 154*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 155*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 156*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bezier segment's Py value contains infinite or NAN"), 157*b1cdbd2cSJim Jagielski xIf, 158*b1cdbd2cSJim Jagielski nArgPos ); 159*b1cdbd2cSJim Jagielski } 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rSegment.C1x ) ) 162*b1cdbd2cSJim Jagielski { 163*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 164*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 165*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bezier segment's C1x value contains infinite or NAN"), 166*b1cdbd2cSJim Jagielski xIf, 167*b1cdbd2cSJim Jagielski nArgPos ); 168*b1cdbd2cSJim Jagielski } 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rSegment.C1y ) ) 171*b1cdbd2cSJim Jagielski { 172*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 173*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 174*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bezier segment's C1y value contains infinite or NAN"), 175*b1cdbd2cSJim Jagielski xIf, 176*b1cdbd2cSJim Jagielski nArgPos ); 177*b1cdbd2cSJim Jagielski } 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rSegment.C2x ) ) 180*b1cdbd2cSJim Jagielski { 181*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 182*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 183*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bezier segment's C2x value contains infinite or NAN"), 184*b1cdbd2cSJim Jagielski xIf, 185*b1cdbd2cSJim Jagielski nArgPos ); 186*b1cdbd2cSJim Jagielski } 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rSegment.C2y ) ) 189*b1cdbd2cSJim Jagielski { 190*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 191*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 192*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bezier segment's C2y value contains infinite or NAN"), 193*b1cdbd2cSJim Jagielski xIf, 194*b1cdbd2cSJim Jagielski nArgPos ); 195*b1cdbd2cSJim Jagielski } 196*b1cdbd2cSJim Jagielski #else 197*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rSegment.Px ) || 198*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( rSegment.Py ) || 199*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( rSegment.C1x ) || 200*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( rSegment.C1y ) || 201*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( rSegment.C2x ) || 202*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( rSegment.C2y ) ) 203*b1cdbd2cSJim Jagielski { 204*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 205*b1cdbd2cSJim Jagielski } 206*b1cdbd2cSJim Jagielski #endif 207*b1cdbd2cSJim Jagielski } 208*b1cdbd2cSJim Jagielski verifyInput(const geometry::RealRectangle2D & rRect,const char * pStr,const uno::Reference<uno::XInterface> & xIf,::sal_Int16 nArgPos)209*b1cdbd2cSJim Jagielski void verifyInput( const geometry::RealRectangle2D& rRect, 210*b1cdbd2cSJim Jagielski const char* pStr, 211*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 212*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos ) 213*b1cdbd2cSJim Jagielski { 214*b1cdbd2cSJim Jagielski (void)pStr; (void)xIf; (void)nArgPos; 215*b1cdbd2cSJim Jagielski 216*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 217*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rRect.X1 ) ) 218*b1cdbd2cSJim Jagielski { 219*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 220*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 221*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): rectangle point X1 contains infinite or NAN"), 222*b1cdbd2cSJim Jagielski xIf, 223*b1cdbd2cSJim Jagielski nArgPos ); 224*b1cdbd2cSJim Jagielski } 225*b1cdbd2cSJim Jagielski 226*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rRect.Y1 ) ) 227*b1cdbd2cSJim Jagielski { 228*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 229*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 230*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): rectangle point Y1 contains infinite or NAN"), 231*b1cdbd2cSJim Jagielski xIf, 232*b1cdbd2cSJim Jagielski nArgPos ); 233*b1cdbd2cSJim Jagielski } 234*b1cdbd2cSJim Jagielski 235*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rRect.X2 ) ) 236*b1cdbd2cSJim Jagielski { 237*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 238*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 239*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): rectangle point X2 contains infinite or NAN"), 240*b1cdbd2cSJim Jagielski xIf, 241*b1cdbd2cSJim Jagielski nArgPos ); 242*b1cdbd2cSJim Jagielski } 243*b1cdbd2cSJim Jagielski 244*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rRect.Y2 ) ) 245*b1cdbd2cSJim Jagielski { 246*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 247*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 248*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): rectangle point Y2 contains infinite or NAN"), 249*b1cdbd2cSJim Jagielski xIf, 250*b1cdbd2cSJim Jagielski nArgPos ); 251*b1cdbd2cSJim Jagielski } 252*b1cdbd2cSJim Jagielski #else 253*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rRect.X1 ) || 254*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( rRect.Y1 ) || 255*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( rRect.X2 ) || 256*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( rRect.Y2 ) ) 257*b1cdbd2cSJim Jagielski { 258*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 259*b1cdbd2cSJim Jagielski } 260*b1cdbd2cSJim Jagielski #endif 261*b1cdbd2cSJim Jagielski } 262*b1cdbd2cSJim Jagielski verifyInput(const geometry::AffineMatrix2D & matrix,const char * pStr,const uno::Reference<uno::XInterface> & xIf,::sal_Int16 nArgPos)263*b1cdbd2cSJim Jagielski void verifyInput( const geometry::AffineMatrix2D& matrix, 264*b1cdbd2cSJim Jagielski const char* pStr, 265*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 266*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos ) 267*b1cdbd2cSJim Jagielski { 268*b1cdbd2cSJim Jagielski (void)pStr; (void)xIf; (void)nArgPos; 269*b1cdbd2cSJim Jagielski 270*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 271*b1cdbd2cSJim Jagielski const sal_Int32 nBinaryState( 272*b1cdbd2cSJim Jagielski 100000 * !::rtl::math::isFinite( matrix.m00 ) + 273*b1cdbd2cSJim Jagielski 10000 * !::rtl::math::isFinite( matrix.m01 ) + 274*b1cdbd2cSJim Jagielski 1000 * !::rtl::math::isFinite( matrix.m02 ) + 275*b1cdbd2cSJim Jagielski 100 * !::rtl::math::isFinite( matrix.m10 ) + 276*b1cdbd2cSJim Jagielski 10 * !::rtl::math::isFinite( matrix.m11 ) + 277*b1cdbd2cSJim Jagielski 1 * !::rtl::math::isFinite( matrix.m12 ) ); 278*b1cdbd2cSJim Jagielski 279*b1cdbd2cSJim Jagielski if( nBinaryState ) 280*b1cdbd2cSJim Jagielski { 281*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 282*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 283*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): AffineMatrix2D contains infinite or NAN value(s) at the following positions (m00-m12): ") + 284*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(nBinaryState), 285*b1cdbd2cSJim Jagielski xIf, 286*b1cdbd2cSJim Jagielski nArgPos ); 287*b1cdbd2cSJim Jagielski } 288*b1cdbd2cSJim Jagielski #else 289*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( matrix.m00 ) || 290*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( matrix.m01 ) || 291*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( matrix.m02 ) || 292*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( matrix.m10 ) || 293*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( matrix.m11 ) || 294*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( matrix.m12 ) ) 295*b1cdbd2cSJim Jagielski { 296*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 297*b1cdbd2cSJim Jagielski } 298*b1cdbd2cSJim Jagielski #endif 299*b1cdbd2cSJim Jagielski } 300*b1cdbd2cSJim Jagielski verifyInput(const geometry::Matrix2D & matrix,const char * pStr,const uno::Reference<uno::XInterface> & xIf,::sal_Int16 nArgPos)301*b1cdbd2cSJim Jagielski void verifyInput( const geometry::Matrix2D& matrix, 302*b1cdbd2cSJim Jagielski const char* pStr, 303*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 304*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos ) 305*b1cdbd2cSJim Jagielski { 306*b1cdbd2cSJim Jagielski (void)pStr; (void)xIf; (void)nArgPos; 307*b1cdbd2cSJim Jagielski 308*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 309*b1cdbd2cSJim Jagielski const sal_Int32 nBinaryState( 310*b1cdbd2cSJim Jagielski 1000 * !::rtl::math::isFinite( matrix.m00 ) + 311*b1cdbd2cSJim Jagielski 100 * !::rtl::math::isFinite( matrix.m01 ) + 312*b1cdbd2cSJim Jagielski 10 * !::rtl::math::isFinite( matrix.m10 ) + 313*b1cdbd2cSJim Jagielski 1 * !::rtl::math::isFinite( matrix.m11 ) ); 314*b1cdbd2cSJim Jagielski 315*b1cdbd2cSJim Jagielski if( nBinaryState ) 316*b1cdbd2cSJim Jagielski { 317*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 318*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 319*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): Matrix2D contains infinite or NAN value(s) at the following positions (m00-m11): ") + 320*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(nBinaryState), 321*b1cdbd2cSJim Jagielski xIf, 322*b1cdbd2cSJim Jagielski nArgPos ); 323*b1cdbd2cSJim Jagielski } 324*b1cdbd2cSJim Jagielski #else 325*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( matrix.m00 ) || 326*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( matrix.m01 ) || 327*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( matrix.m10 ) || 328*b1cdbd2cSJim Jagielski !::rtl::math::isFinite( matrix.m11 ) ) 329*b1cdbd2cSJim Jagielski { 330*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 331*b1cdbd2cSJim Jagielski } 332*b1cdbd2cSJim Jagielski #endif 333*b1cdbd2cSJim Jagielski } 334*b1cdbd2cSJim Jagielski verifyInput(const rendering::ViewState & viewState,const char * pStr,const uno::Reference<uno::XInterface> & xIf,::sal_Int16 nArgPos)335*b1cdbd2cSJim Jagielski void verifyInput( const rendering::ViewState& viewState, 336*b1cdbd2cSJim Jagielski const char* pStr, 337*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 338*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos ) 339*b1cdbd2cSJim Jagielski { 340*b1cdbd2cSJim Jagielski verifyInput( viewState.AffineTransform, 341*b1cdbd2cSJim Jagielski pStr, xIf, nArgPos ); 342*b1cdbd2cSJim Jagielski } 343*b1cdbd2cSJim Jagielski verifyInput(const rendering::RenderState & renderState,const char * pStr,const uno::Reference<uno::XInterface> & xIf,::sal_Int16 nArgPos,sal_Int32 nMinColorComponents)344*b1cdbd2cSJim Jagielski void verifyInput( const rendering::RenderState& renderState, 345*b1cdbd2cSJim Jagielski const char* pStr, 346*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 347*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos, 348*b1cdbd2cSJim Jagielski sal_Int32 nMinColorComponents ) 349*b1cdbd2cSJim Jagielski { 350*b1cdbd2cSJim Jagielski verifyInput( renderState.AffineTransform, 351*b1cdbd2cSJim Jagielski pStr, xIf, nArgPos ); 352*b1cdbd2cSJim Jagielski 353*b1cdbd2cSJim Jagielski if( renderState.DeviceColor.getLength() < nMinColorComponents ) 354*b1cdbd2cSJim Jagielski { 355*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 356*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 357*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 358*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): render state's device color has too few components (") + 359*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(nMinColorComponents) + 360*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(" expected, ") + 361*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(renderState.DeviceColor.getLength()) + 362*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(" provided)"), 363*b1cdbd2cSJim Jagielski xIf, 364*b1cdbd2cSJim Jagielski nArgPos ); 365*b1cdbd2cSJim Jagielski #else 366*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 367*b1cdbd2cSJim Jagielski #endif 368*b1cdbd2cSJim Jagielski } 369*b1cdbd2cSJim Jagielski 370*b1cdbd2cSJim Jagielski if( renderState.CompositeOperation < rendering::CompositeOperation::CLEAR || 371*b1cdbd2cSJim Jagielski renderState.CompositeOperation > rendering::CompositeOperation::SATURATE ) 372*b1cdbd2cSJim Jagielski { 373*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 374*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 375*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 376*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): render state's CompositeOperation value out of range (") + 377*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(sal::static_int_cast<sal_Int32>(renderState.CompositeOperation)) + 378*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(" not known)"), 379*b1cdbd2cSJim Jagielski xIf, 380*b1cdbd2cSJim Jagielski nArgPos ); 381*b1cdbd2cSJim Jagielski #else 382*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 383*b1cdbd2cSJim Jagielski #endif 384*b1cdbd2cSJim Jagielski } 385*b1cdbd2cSJim Jagielski } 386*b1cdbd2cSJim Jagielski verifyInput(const rendering::Texture & texture,const char * pStr,const uno::Reference<uno::XInterface> & xIf,::sal_Int16 nArgPos)387*b1cdbd2cSJim Jagielski void verifyInput( const rendering::Texture& texture, 388*b1cdbd2cSJim Jagielski const char* pStr, 389*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 390*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos ) 391*b1cdbd2cSJim Jagielski { 392*b1cdbd2cSJim Jagielski verifyInput( texture.AffineTransform, 393*b1cdbd2cSJim Jagielski pStr, xIf, nArgPos ); 394*b1cdbd2cSJim Jagielski 395*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( texture.Alpha ) || 396*b1cdbd2cSJim Jagielski texture.Alpha < 0.0 || 397*b1cdbd2cSJim Jagielski texture.Alpha > 1.0 ) 398*b1cdbd2cSJim Jagielski { 399*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 400*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 401*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 402*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): textures' alpha value out of range (is ") + 403*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(texture.Alpha) + 404*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(")"), 405*b1cdbd2cSJim Jagielski xIf, 406*b1cdbd2cSJim Jagielski nArgPos ); 407*b1cdbd2cSJim Jagielski #else 408*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 409*b1cdbd2cSJim Jagielski #endif 410*b1cdbd2cSJim Jagielski } 411*b1cdbd2cSJim Jagielski 412*b1cdbd2cSJim Jagielski if( texture.NumberOfHatchPolygons < 0 ) 413*b1cdbd2cSJim Jagielski { 414*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 415*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 416*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 417*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): textures' NumberOfHatchPolygons is negative"), 418*b1cdbd2cSJim Jagielski xIf, 419*b1cdbd2cSJim Jagielski nArgPos ); 420*b1cdbd2cSJim Jagielski #else 421*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 422*b1cdbd2cSJim Jagielski #endif 423*b1cdbd2cSJim Jagielski } 424*b1cdbd2cSJim Jagielski 425*b1cdbd2cSJim Jagielski if( texture.RepeatModeX < rendering::TexturingMode::NONE || 426*b1cdbd2cSJim Jagielski texture.RepeatModeX > rendering::TexturingMode::REPEAT ) 427*b1cdbd2cSJim Jagielski { 428*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 429*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 430*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 431*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): textures' RepeatModeX value is out of range (") + 432*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(sal::static_int_cast<sal_Int32>(texture.RepeatModeX)) + 433*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(" not known)"), 434*b1cdbd2cSJim Jagielski xIf, 435*b1cdbd2cSJim Jagielski nArgPos ); 436*b1cdbd2cSJim Jagielski #else 437*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 438*b1cdbd2cSJim Jagielski #endif 439*b1cdbd2cSJim Jagielski } 440*b1cdbd2cSJim Jagielski 441*b1cdbd2cSJim Jagielski if( texture.RepeatModeY < rendering::TexturingMode::NONE || 442*b1cdbd2cSJim Jagielski texture.RepeatModeY > rendering::TexturingMode::REPEAT ) 443*b1cdbd2cSJim Jagielski { 444*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 445*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 446*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 447*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): textures' RepeatModeY value is out of range (") + 448*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(sal::static_int_cast<sal_Int32>(texture.RepeatModeY)) + 449*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(" not known)"), 450*b1cdbd2cSJim Jagielski xIf, 451*b1cdbd2cSJim Jagielski nArgPos ); 452*b1cdbd2cSJim Jagielski #else 453*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 454*b1cdbd2cSJim Jagielski #endif 455*b1cdbd2cSJim Jagielski } 456*b1cdbd2cSJim Jagielski } 457*b1cdbd2cSJim Jagielski 458*b1cdbd2cSJim Jagielski namespace 459*b1cdbd2cSJim Jagielski { 460*b1cdbd2cSJim Jagielski struct VerifyDashValue 461*b1cdbd2cSJim Jagielski { VerifyDashValuecanvas::tools::__anon2f8ffd900111::VerifyDashValue462*b1cdbd2cSJim Jagielski VerifyDashValue( const char* pStr, 463*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 464*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos ) : 465*b1cdbd2cSJim Jagielski mpStr( pStr ), 466*b1cdbd2cSJim Jagielski mrIf( xIf ), 467*b1cdbd2cSJim Jagielski mnArgPos( nArgPos ) 468*b1cdbd2cSJim Jagielski { 469*b1cdbd2cSJim Jagielski } 470*b1cdbd2cSJim Jagielski operator ()canvas::tools::__anon2f8ffd900111::VerifyDashValue471*b1cdbd2cSJim Jagielski void operator()( const double& rVal ) 472*b1cdbd2cSJim Jagielski { 473*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( rVal ) || rVal < 0.0 ) 474*b1cdbd2cSJim Jagielski { 475*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 476*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 477*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(mpStr) + 478*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): one of stroke attributes' DashArray value out of range (is ") + 479*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(rVal) + 480*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(")"), 481*b1cdbd2cSJim Jagielski mrIf, 482*b1cdbd2cSJim Jagielski mnArgPos ); 483*b1cdbd2cSJim Jagielski #else 484*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 485*b1cdbd2cSJim Jagielski #endif 486*b1cdbd2cSJim Jagielski } 487*b1cdbd2cSJim Jagielski } 488*b1cdbd2cSJim Jagielski 489*b1cdbd2cSJim Jagielski const char* mpStr; 490*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& mrIf; 491*b1cdbd2cSJim Jagielski sal_Int16 mnArgPos; 492*b1cdbd2cSJim Jagielski }; 493*b1cdbd2cSJim Jagielski } 494*b1cdbd2cSJim Jagielski verifyInput(const rendering::StrokeAttributes & strokeAttributes,const char * pStr,const uno::Reference<uno::XInterface> & xIf,::sal_Int16 nArgPos)495*b1cdbd2cSJim Jagielski void verifyInput( const rendering::StrokeAttributes& strokeAttributes, 496*b1cdbd2cSJim Jagielski const char* pStr, 497*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 498*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos ) 499*b1cdbd2cSJim Jagielski { 500*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( strokeAttributes.StrokeWidth ) || 501*b1cdbd2cSJim Jagielski strokeAttributes.StrokeWidth < 0.0 ) 502*b1cdbd2cSJim Jagielski { 503*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 504*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 505*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 506*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): stroke attributes' StrokeWidth value out of range (is ") + 507*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(strokeAttributes.StrokeWidth) + 508*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(")"), 509*b1cdbd2cSJim Jagielski xIf, 510*b1cdbd2cSJim Jagielski nArgPos ); 511*b1cdbd2cSJim Jagielski #else 512*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 513*b1cdbd2cSJim Jagielski #endif 514*b1cdbd2cSJim Jagielski } 515*b1cdbd2cSJim Jagielski 516*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( strokeAttributes.MiterLimit ) || 517*b1cdbd2cSJim Jagielski strokeAttributes.MiterLimit < 0.0 ) 518*b1cdbd2cSJim Jagielski { 519*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 520*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 521*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 522*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): stroke attributes' MiterLimit value out of range (is ") + 523*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(strokeAttributes.MiterLimit) + 524*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(")"), 525*b1cdbd2cSJim Jagielski xIf, 526*b1cdbd2cSJim Jagielski nArgPos ); 527*b1cdbd2cSJim Jagielski #else 528*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 529*b1cdbd2cSJim Jagielski #endif 530*b1cdbd2cSJim Jagielski } 531*b1cdbd2cSJim Jagielski 532*b1cdbd2cSJim Jagielski ::std::for_each( strokeAttributes.DashArray.getConstArray(), 533*b1cdbd2cSJim Jagielski strokeAttributes.DashArray.getConstArray() + strokeAttributes.DashArray.getLength(), 534*b1cdbd2cSJim Jagielski VerifyDashValue( pStr, xIf, nArgPos ) ); 535*b1cdbd2cSJim Jagielski 536*b1cdbd2cSJim Jagielski ::std::for_each( strokeAttributes.LineArray.getConstArray(), 537*b1cdbd2cSJim Jagielski strokeAttributes.LineArray.getConstArray() + strokeAttributes.LineArray.getLength(), 538*b1cdbd2cSJim Jagielski VerifyDashValue( pStr, xIf, nArgPos ) ); 539*b1cdbd2cSJim Jagielski 540*b1cdbd2cSJim Jagielski if( strokeAttributes.StartCapType < rendering::PathCapType::BUTT || 541*b1cdbd2cSJim Jagielski strokeAttributes.StartCapType > rendering::PathCapType::SQUARE ) 542*b1cdbd2cSJim Jagielski { 543*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 544*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 545*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 546*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): stroke attributes' StartCapType value is out of range (") + 547*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(sal::static_int_cast<sal_Int32>(strokeAttributes.StartCapType)) + 548*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(" not known)"), 549*b1cdbd2cSJim Jagielski xIf, 550*b1cdbd2cSJim Jagielski nArgPos ); 551*b1cdbd2cSJim Jagielski #else 552*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 553*b1cdbd2cSJim Jagielski #endif 554*b1cdbd2cSJim Jagielski } 555*b1cdbd2cSJim Jagielski 556*b1cdbd2cSJim Jagielski if( strokeAttributes.EndCapType < rendering::PathCapType::BUTT || 557*b1cdbd2cSJim Jagielski strokeAttributes.EndCapType > rendering::PathCapType::SQUARE ) 558*b1cdbd2cSJim Jagielski { 559*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 560*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 561*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 562*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): stroke attributes' StartCapType value is out of range (") + 563*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(sal::static_int_cast<sal_Int32>(strokeAttributes.EndCapType)) + 564*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(" not known)"), 565*b1cdbd2cSJim Jagielski xIf, 566*b1cdbd2cSJim Jagielski nArgPos ); 567*b1cdbd2cSJim Jagielski #else 568*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 569*b1cdbd2cSJim Jagielski #endif 570*b1cdbd2cSJim Jagielski } 571*b1cdbd2cSJim Jagielski 572*b1cdbd2cSJim Jagielski if( strokeAttributes.JoinType < rendering::PathJoinType::NONE || 573*b1cdbd2cSJim Jagielski strokeAttributes.JoinType > rendering::PathJoinType::BEVEL ) 574*b1cdbd2cSJim Jagielski { 575*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 576*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 577*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 578*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): stroke attributes' JoinType value is out of range (") + 579*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(sal::static_int_cast<sal_Int32>(strokeAttributes.JoinType)) + 580*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(" not known)"), 581*b1cdbd2cSJim Jagielski xIf, 582*b1cdbd2cSJim Jagielski nArgPos ); 583*b1cdbd2cSJim Jagielski #else 584*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 585*b1cdbd2cSJim Jagielski #endif 586*b1cdbd2cSJim Jagielski } 587*b1cdbd2cSJim Jagielski } 588*b1cdbd2cSJim Jagielski verifyInput(const rendering::IntegerBitmapLayout & bitmapLayout,const char * pStr,const uno::Reference<uno::XInterface> & xIf,::sal_Int16 nArgPos)589*b1cdbd2cSJim Jagielski void verifyInput( const rendering::IntegerBitmapLayout& bitmapLayout, 590*b1cdbd2cSJim Jagielski const char* pStr, 591*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 592*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos ) 593*b1cdbd2cSJim Jagielski { 594*b1cdbd2cSJim Jagielski (void)pStr; (void)xIf; (void)nArgPos; 595*b1cdbd2cSJim Jagielski 596*b1cdbd2cSJim Jagielski if( bitmapLayout.ScanLines < 0 ) 597*b1cdbd2cSJim Jagielski { 598*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 599*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 600*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 601*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bitmap layout's ScanLines is negative"), 602*b1cdbd2cSJim Jagielski xIf, 603*b1cdbd2cSJim Jagielski nArgPos ); 604*b1cdbd2cSJim Jagielski #else 605*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 606*b1cdbd2cSJim Jagielski #endif 607*b1cdbd2cSJim Jagielski } 608*b1cdbd2cSJim Jagielski 609*b1cdbd2cSJim Jagielski if( bitmapLayout.ScanLineBytes < 0 ) 610*b1cdbd2cSJim Jagielski { 611*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 612*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 613*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 614*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bitmap layout's ScanLineBytes is negative"), 615*b1cdbd2cSJim Jagielski xIf, 616*b1cdbd2cSJim Jagielski nArgPos ); 617*b1cdbd2cSJim Jagielski #else 618*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 619*b1cdbd2cSJim Jagielski #endif 620*b1cdbd2cSJim Jagielski } 621*b1cdbd2cSJim Jagielski 622*b1cdbd2cSJim Jagielski if( !bitmapLayout.ColorSpace.is() ) 623*b1cdbd2cSJim Jagielski { 624*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 625*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 626*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 627*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bitmap layout's ColorSpace is invalid"), 628*b1cdbd2cSJim Jagielski xIf, 629*b1cdbd2cSJim Jagielski nArgPos ); 630*b1cdbd2cSJim Jagielski #else 631*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 632*b1cdbd2cSJim Jagielski #endif 633*b1cdbd2cSJim Jagielski } 634*b1cdbd2cSJim Jagielski else 635*b1cdbd2cSJim Jagielski { 636*b1cdbd2cSJim Jagielski if( bitmapLayout.ColorSpace->getBitsPerPixel() < 0 ) 637*b1cdbd2cSJim Jagielski { 638*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 639*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 640*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 641*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bitmap layout's ColorSpace getBitsPerPixel() is negative"), 642*b1cdbd2cSJim Jagielski xIf, 643*b1cdbd2cSJim Jagielski nArgPos ); 644*b1cdbd2cSJim Jagielski #else 645*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 646*b1cdbd2cSJim Jagielski #endif 647*b1cdbd2cSJim Jagielski } 648*b1cdbd2cSJim Jagielski 649*b1cdbd2cSJim Jagielski if( bitmapLayout.ColorSpace->getEndianness() < util::Endianness::LITTLE || 650*b1cdbd2cSJim Jagielski bitmapLayout.ColorSpace->getEndianness() > util::Endianness::BIG ) 651*b1cdbd2cSJim Jagielski { 652*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 653*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 654*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 655*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bitmap layout's ColorSpace getEndianness() value is out of range (") + 656*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(sal::static_int_cast<sal_Int32>(bitmapLayout.ColorSpace->getEndianness())) + 657*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(" not known)"), 658*b1cdbd2cSJim Jagielski xIf, 659*b1cdbd2cSJim Jagielski nArgPos ); 660*b1cdbd2cSJim Jagielski #else 661*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 662*b1cdbd2cSJim Jagielski #endif 663*b1cdbd2cSJim Jagielski } 664*b1cdbd2cSJim Jagielski } 665*b1cdbd2cSJim Jagielski } 666*b1cdbd2cSJim Jagielski verifyInput(const rendering::FloatingPointBitmapLayout & bitmapLayout,const char * pStr,const uno::Reference<uno::XInterface> & xIf,::sal_Int16 nArgPos)667*b1cdbd2cSJim Jagielski void verifyInput( const rendering::FloatingPointBitmapLayout& bitmapLayout, 668*b1cdbd2cSJim Jagielski const char* pStr, 669*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 670*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos ) 671*b1cdbd2cSJim Jagielski { 672*b1cdbd2cSJim Jagielski (void)pStr; (void)xIf; (void)nArgPos; 673*b1cdbd2cSJim Jagielski 674*b1cdbd2cSJim Jagielski if( bitmapLayout.ScanLines < 0 ) 675*b1cdbd2cSJim Jagielski { 676*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 677*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 678*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 679*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bitmap layout's ScanLines is negative"), 680*b1cdbd2cSJim Jagielski xIf, 681*b1cdbd2cSJim Jagielski nArgPos ); 682*b1cdbd2cSJim Jagielski #else 683*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 684*b1cdbd2cSJim Jagielski #endif 685*b1cdbd2cSJim Jagielski } 686*b1cdbd2cSJim Jagielski 687*b1cdbd2cSJim Jagielski if( bitmapLayout.ScanLineBytes < 0 ) 688*b1cdbd2cSJim Jagielski { 689*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 690*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 691*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 692*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bitmap layout's ScanLineBytes is negative"), 693*b1cdbd2cSJim Jagielski xIf, 694*b1cdbd2cSJim Jagielski nArgPos ); 695*b1cdbd2cSJim Jagielski #else 696*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 697*b1cdbd2cSJim Jagielski #endif 698*b1cdbd2cSJim Jagielski } 699*b1cdbd2cSJim Jagielski 700*b1cdbd2cSJim Jagielski if( !bitmapLayout.ColorSpace.is() ) 701*b1cdbd2cSJim Jagielski { 702*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 703*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 704*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 705*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bitmap layout's ColorSpace is invalid"), 706*b1cdbd2cSJim Jagielski xIf, 707*b1cdbd2cSJim Jagielski nArgPos ); 708*b1cdbd2cSJim Jagielski #else 709*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 710*b1cdbd2cSJim Jagielski #endif 711*b1cdbd2cSJim Jagielski } 712*b1cdbd2cSJim Jagielski 713*b1cdbd2cSJim Jagielski if( bitmapLayout.NumComponents < 0 ) 714*b1cdbd2cSJim Jagielski { 715*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 716*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 717*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 718*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bitmap layout's NumComponents is negative"), 719*b1cdbd2cSJim Jagielski xIf, 720*b1cdbd2cSJim Jagielski nArgPos ); 721*b1cdbd2cSJim Jagielski #else 722*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 723*b1cdbd2cSJim Jagielski #endif 724*b1cdbd2cSJim Jagielski } 725*b1cdbd2cSJim Jagielski 726*b1cdbd2cSJim Jagielski if( bitmapLayout.Endianness < util::Endianness::LITTLE || 727*b1cdbd2cSJim Jagielski bitmapLayout.Endianness > util::Endianness::BIG ) 728*b1cdbd2cSJim Jagielski { 729*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 730*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 731*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 732*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bitmap layout's Endianness value is out of range (") + 733*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(sal::static_int_cast<sal_Int32>(bitmapLayout.Endianness)) + 734*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(" not known)"), 735*b1cdbd2cSJim Jagielski xIf, 736*b1cdbd2cSJim Jagielski nArgPos ); 737*b1cdbd2cSJim Jagielski #else 738*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 739*b1cdbd2cSJim Jagielski #endif 740*b1cdbd2cSJim Jagielski } 741*b1cdbd2cSJim Jagielski 742*b1cdbd2cSJim Jagielski if( bitmapLayout.Format < rendering::FloatingPointBitmapFormat::HALFFLOAT || 743*b1cdbd2cSJim Jagielski bitmapLayout.Format > rendering::FloatingPointBitmapFormat::DOUBLE ) 744*b1cdbd2cSJim Jagielski { 745*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 746*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 747*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 748*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): bitmap layout's Format value is out of range (") + 749*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(sal::static_int_cast<sal_Int32>(bitmapLayout.Format)) + 750*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(" not known)"), 751*b1cdbd2cSJim Jagielski xIf, 752*b1cdbd2cSJim Jagielski nArgPos ); 753*b1cdbd2cSJim Jagielski #else 754*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 755*b1cdbd2cSJim Jagielski #endif 756*b1cdbd2cSJim Jagielski } 757*b1cdbd2cSJim Jagielski } 758*b1cdbd2cSJim Jagielski verifyInput(const rendering::FontInfo &,const char *,const uno::Reference<uno::XInterface> &,::sal_Int16)759*b1cdbd2cSJim Jagielski void verifyInput( const rendering::FontInfo& /*fontInfo*/, 760*b1cdbd2cSJim Jagielski const char* /*pStr*/, 761*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& /*xIf*/, 762*b1cdbd2cSJim Jagielski ::sal_Int16 /*nArgPos*/ ) 763*b1cdbd2cSJim Jagielski { 764*b1cdbd2cSJim Jagielski // TODO(E3): Implement FontDescription checks, once the 765*b1cdbd2cSJim Jagielski // Panose stuff is ready. 766*b1cdbd2cSJim Jagielski } 767*b1cdbd2cSJim Jagielski verifyInput(const rendering::FontRequest & fontRequest,const char * pStr,const uno::Reference<uno::XInterface> & xIf,::sal_Int16 nArgPos)768*b1cdbd2cSJim Jagielski void verifyInput( const rendering::FontRequest& fontRequest, 769*b1cdbd2cSJim Jagielski const char* pStr, 770*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf, 771*b1cdbd2cSJim Jagielski ::sal_Int16 nArgPos ) 772*b1cdbd2cSJim Jagielski { 773*b1cdbd2cSJim Jagielski verifyInput( fontRequest.FontDescription, 774*b1cdbd2cSJim Jagielski pStr, xIf, nArgPos ); 775*b1cdbd2cSJim Jagielski 776*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( fontRequest.CellSize ) ) 777*b1cdbd2cSJim Jagielski { 778*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 779*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 780*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 781*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): font request's CellSize value contains infinite or NAN"), 782*b1cdbd2cSJim Jagielski xIf, 783*b1cdbd2cSJim Jagielski nArgPos ); 784*b1cdbd2cSJim Jagielski #else 785*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 786*b1cdbd2cSJim Jagielski #endif 787*b1cdbd2cSJim Jagielski } 788*b1cdbd2cSJim Jagielski 789*b1cdbd2cSJim Jagielski if( !::rtl::math::isFinite( fontRequest.ReferenceAdvancement ) ) 790*b1cdbd2cSJim Jagielski { 791*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 792*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 793*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 794*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): font request's ReferenceAdvancement value contains infinite or NAN"), 795*b1cdbd2cSJim Jagielski xIf, 796*b1cdbd2cSJim Jagielski nArgPos ); 797*b1cdbd2cSJim Jagielski #else 798*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 799*b1cdbd2cSJim Jagielski #endif 800*b1cdbd2cSJim Jagielski } 801*b1cdbd2cSJim Jagielski 802*b1cdbd2cSJim Jagielski if( fontRequest.CellSize != 0.0 && 803*b1cdbd2cSJim Jagielski fontRequest.ReferenceAdvancement != 0.0 ) 804*b1cdbd2cSJim Jagielski { 805*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 806*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 807*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 808*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyInput(): font request's CellSize and ReferenceAdvancement are mutually exclusive, one of them must be 0.0"), 809*b1cdbd2cSJim Jagielski xIf, 810*b1cdbd2cSJim Jagielski nArgPos ); 811*b1cdbd2cSJim Jagielski #else 812*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 813*b1cdbd2cSJim Jagielski #endif 814*b1cdbd2cSJim Jagielski } 815*b1cdbd2cSJim Jagielski } 816*b1cdbd2cSJim Jagielski verifyIndexRange(const geometry::IntegerRectangle2D & rect,const geometry::IntegerSize2D & size)817*b1cdbd2cSJim Jagielski void verifyIndexRange( const geometry::IntegerRectangle2D& rect, 818*b1cdbd2cSJim Jagielski const geometry::IntegerSize2D& size ) 819*b1cdbd2cSJim Jagielski { 820*b1cdbd2cSJim Jagielski const ::basegfx::B2IRange aRect( 821*b1cdbd2cSJim Jagielski ::basegfx::unotools::b2IRectangleFromIntegerRectangle2D( 822*b1cdbd2cSJim Jagielski rect ) ); 823*b1cdbd2cSJim Jagielski 824*b1cdbd2cSJim Jagielski if( aRect.getMinX() < 0 || 825*b1cdbd2cSJim Jagielski aRect.getMaxX() > size.Width || 826*b1cdbd2cSJim Jagielski aRect.getMinY() < 0 || 827*b1cdbd2cSJim Jagielski aRect.getMaxY() > size.Height ) 828*b1cdbd2cSJim Jagielski { 829*b1cdbd2cSJim Jagielski throw ::com::sun::star::lang::IndexOutOfBoundsException(); 830*b1cdbd2cSJim Jagielski } 831*b1cdbd2cSJim Jagielski } 832*b1cdbd2cSJim Jagielski verifyIndexRange(const geometry::IntegerPoint2D & pos,const geometry::IntegerSize2D & size)833*b1cdbd2cSJim Jagielski void verifyIndexRange( const geometry::IntegerPoint2D& pos, 834*b1cdbd2cSJim Jagielski const geometry::IntegerSize2D& size ) 835*b1cdbd2cSJim Jagielski { 836*b1cdbd2cSJim Jagielski if( pos.X < 0 || 837*b1cdbd2cSJim Jagielski pos.X > size.Width || 838*b1cdbd2cSJim Jagielski pos.Y < 0 || 839*b1cdbd2cSJim Jagielski pos.Y > size.Height ) 840*b1cdbd2cSJim Jagielski { 841*b1cdbd2cSJim Jagielski throw ::com::sun::star::lang::IndexOutOfBoundsException(); 842*b1cdbd2cSJim Jagielski } 843*b1cdbd2cSJim Jagielski } 844*b1cdbd2cSJim Jagielski verifyBitmapSize(const geometry::IntegerSize2D & size,const char * pStr,const uno::Reference<uno::XInterface> & xIf)845*b1cdbd2cSJim Jagielski void verifyBitmapSize( const geometry::IntegerSize2D& size, 846*b1cdbd2cSJim Jagielski const char* pStr, 847*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf ) 848*b1cdbd2cSJim Jagielski { 849*b1cdbd2cSJim Jagielski (void)pStr; (void)xIf; 850*b1cdbd2cSJim Jagielski 851*b1cdbd2cSJim Jagielski if( size.Width <= 0 ) 852*b1cdbd2cSJim Jagielski { 853*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 854*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 855*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 856*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyBitmapSize(): size has 0 or negative width (value: ") + 857*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(size.Width) + 858*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(")"), 859*b1cdbd2cSJim Jagielski xIf, 860*b1cdbd2cSJim Jagielski 0 ); 861*b1cdbd2cSJim Jagielski #else 862*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 863*b1cdbd2cSJim Jagielski #endif 864*b1cdbd2cSJim Jagielski } 865*b1cdbd2cSJim Jagielski 866*b1cdbd2cSJim Jagielski if( size.Height <= 0 ) 867*b1cdbd2cSJim Jagielski { 868*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 869*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 870*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 871*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifyBitmapSize(): size has 0 or negative height (value: ") + 872*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(size.Height) + 873*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(")"), 874*b1cdbd2cSJim Jagielski xIf, 875*b1cdbd2cSJim Jagielski 0 ); 876*b1cdbd2cSJim Jagielski #else 877*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 878*b1cdbd2cSJim Jagielski #endif 879*b1cdbd2cSJim Jagielski } 880*b1cdbd2cSJim Jagielski } 881*b1cdbd2cSJim Jagielski verifySpriteSize(const geometry::RealSize2D & size,const char * pStr,const uno::Reference<uno::XInterface> & xIf)882*b1cdbd2cSJim Jagielski void verifySpriteSize( const geometry::RealSize2D& size, 883*b1cdbd2cSJim Jagielski const char* pStr, 884*b1cdbd2cSJim Jagielski const uno::Reference< uno::XInterface >& xIf ) 885*b1cdbd2cSJim Jagielski { 886*b1cdbd2cSJim Jagielski (void)pStr; (void)xIf; 887*b1cdbd2cSJim Jagielski 888*b1cdbd2cSJim Jagielski if( size.Width <= 0.0 ) 889*b1cdbd2cSJim Jagielski { 890*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 891*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 892*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 893*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifySpriteSize(): size has 0 or negative width (value: ") + 894*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(size.Width) + 895*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(")"), 896*b1cdbd2cSJim Jagielski xIf, 897*b1cdbd2cSJim Jagielski 0 ); 898*b1cdbd2cSJim Jagielski #else 899*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 900*b1cdbd2cSJim Jagielski #endif 901*b1cdbd2cSJim Jagielski } 902*b1cdbd2cSJim Jagielski 903*b1cdbd2cSJim Jagielski if( size.Height <= 0.0 ) 904*b1cdbd2cSJim Jagielski { 905*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 0 906*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException( 907*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(pStr) + 908*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(": verifySpriteSize(): size has 0 or negative height (value: ") + 909*b1cdbd2cSJim Jagielski ::rtl::OUString::valueOf(size.Height) + 910*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii(")"), 911*b1cdbd2cSJim Jagielski xIf, 912*b1cdbd2cSJim Jagielski 0 ); 913*b1cdbd2cSJim Jagielski #else 914*b1cdbd2cSJim Jagielski throw lang::IllegalArgumentException(); 915*b1cdbd2cSJim Jagielski #endif 916*b1cdbd2cSJim Jagielski } 917*b1cdbd2cSJim Jagielski } 918*b1cdbd2cSJim Jagielski 919*b1cdbd2cSJim Jagielski 920*b1cdbd2cSJim Jagielski } // namespace tools 921*b1cdbd2cSJim Jagielski 922*b1cdbd2cSJim Jagielski } // namespace canvas 923