/* -*- 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 .
*/
namespace com::sun::star::uno { template <class E> class Sequence; }
namespace canvas
{ namespace tools
{
// Input checking facilities
// This header provides methods to check all common // css::rendering::* method input parameters against // compliance to the API specification.
/** Verify that the given transformation contains valid floating point values.
@param rMatrix Matrix to check
@param xIf The interface that should be reported as the one generating the exception.
@param nArgPos Argument position on the call site (i.e. the position of the argument, checked here, on the UNO interface method. Counting starts at 0).
@throws a lang::IllegalArgumentException, if anything is wrong
*/
CANVASTOOLS_DLLPUBLIC void verifyInput( const css::geometry::AffineMatrix2D& rMatrix, constchar* pStr, const css::uno::Reference< css::uno::XInterface >& xIf,
::sal_Int16 nArgPos );
/** Verify that the given transformation contains valid floating point values.
@param rMatrix Matrix to check
@param xIf The interface that should be reported as the one generating the exception.
@param nArgPos Argument position on the call site (i.e. the position of the argument, checked here, on the UNO interface method. Counting starts at 0).
@throws a lang::IllegalArgumentException, if anything is wrong
*/
CANVASTOOLS_DLLPUBLIC void verifyInput( const css::geometry::Matrix2D& rMatrix, constchar* pStr, const css::uno::Reference< css::uno::XInterface >& xIf,
::sal_Int16 nArgPos );
/** Verify that the given point contains valid floating point values.
@param rPoint Point to check
@param xIf The interface that should be reported as the one generating the exception.
@param nArgPos Argument position on the call site (i.e. the position of the argument, checked here, on the UNO interface method. Counting starts at 0).
@throws a lang::IllegalArgumentException, if anything is wrong
*/
CANVASTOOLS_DLLPUBLIC void verifyInput( const css::geometry::RealPoint2D& rPoint, constchar* pStr, const css::uno::Reference< css::uno::XInterface >& xIf,
::sal_Int16 nArgPos );
/** Verify that the given bezier segment contains valid floating point values.
@param rSegment Segment to check
@param xIf The interface that should be reported as the one generating the exception.
@param nArgPos Argument position on the call site (i.e. the position of the argument, checked here, on the UNO interface method. Counting starts at 0).
@throws a lang::IllegalArgumentException, if anything is wrong
*/
CANVASTOOLS_DLLPUBLIC void verifyInput( const css::geometry::RealBezierSegment2D& rSegment, constchar* pStr, const css::uno::Reference< css::uno::XInterface >& xIf,
::sal_Int16 nArgPos );
/** Verify that the given rectangle contains valid floating point values.
@param rRect Rect to check
@param xIf The interface that should be reported as the one generating the exception.
@param nArgPos Argument position on the call site (i.e. the position of the argument, checked here, on the UNO interface method. Counting starts at 0).
@throws a lang::IllegalArgumentException, if anything is wrong
*/
CANVASTOOLS_DLLPUBLIC void verifyInput( const css::geometry::RealRectangle2D& rRect, constchar* pStr, const css::uno::Reference< css::uno::XInterface >& xIf,
::sal_Int16 nArgPos );
/** Basic check for view state validity.
@param viewState Viewstate to check
@param xIf The interface that should be reported as the one generating the exception.
@param nArgPos Argument position on the call site (i.e. the position of the argument, checked here, on the UNO interface method. Counting starts at 0).
@throws a lang::IllegalArgumentException, if anything is wrong
*/
CANVASTOOLS_DLLPUBLIC void verifyInput( const css::rendering::ViewState& viewState, constchar* pStr, const css::uno::Reference< css::uno::XInterface >& xIf,
::sal_Int16 nArgPos );
/** Basic check for render state validity.
@param renderState Renderstate to check
@param xIf The interface that should be reported as the one generating the exception.
@param nArgPos Argument position on the call site (i.e. the position of the argument, checked here, on the UNO interface method. Counting starts at 0).
@param nMinColorComponents Minimal number of color components available in RenderState::DeviceColor
@throws a lang::IllegalArgumentException, if anything is wrong
*/
CANVASTOOLS_DLLPUBLIC void verifyInput( const css::rendering::RenderState& renderState, constchar* pStr, const css::uno::Reference< css::uno::XInterface >& xIf,
::sal_Int16 nArgPos,
sal_Int32 nMinColorComponents=0 );
/** Basic check for stroke attributes validity.
@param strokeAttributes Attributes to check
@param xIf The interface that should be reported as the one generating the exception.
@param nArgPos Argument position on the call site (i.e. the position of the argument, checked here, on the UNO interface method. Counting starts at 0).
@throws a lang::IllegalArgumentException, if anything is wrong
*/
CANVASTOOLS_DLLPUBLIC void verifyInput( const css::rendering::StrokeAttributes& strokeAttributes, constchar* pStr, const css::uno::Reference< css::uno::XInterface >& xIf,
::sal_Int16 nArgPos );
/** Basic check for texture validity.
@param texture Texture to check
@param xIf The interface that should be reported as the one generating the exception.
@param nArgPos Argument position on the call site (i.e. the position of the argument, checked here, on the UNO interface method. Counting starts at 0).
@throws a lang::IllegalArgumentException, if anything is wrong
*/
CANVASTOOLS_DLLPUBLIC void verifyInput( const css::rendering::Texture& texture, constchar* pStr, const css::uno::Reference< css::uno::XInterface >& xIf,
::sal_Int16 nArgPos );
/** Basic check for bitmap layout validity.
@param bitmapLayout Bitmap layout to check
@param xIf The interface that should be reported as the one generating the exception.
@param nArgPos Argument position on the call site (i.e. the position of the argument, checked here, on the UNO interface method. Counting starts at 0).
@throws a lang::IllegalArgumentException, if anything is wrong
*/
CANVASTOOLS_DLLPUBLIC void verifyInput( const css::rendering::IntegerBitmapLayout& bitmapLayout, constchar* pStr, const css::uno::Reference< css::uno::XInterface >& xIf,
::sal_Int16 nArgPos );
/** Basic check for font request validity.
@param fontRequest Font request to check
@param xIf The interface that should be reported as the one generating the exception.
@param nArgPos Argument position on the call site (i.e. the position of the argument, checked here, on the UNO interface method. Counting starts at 0).
@throws a lang::IllegalArgumentException, if anything is wrong
*/
CANVASTOOLS_DLLPUBLIC void verifyInput( const css::rendering::FontRequest& fontRequest, constchar* pStr, const css::uno::Reference< css::uno::XInterface >& xIf,
::sal_Int16 nArgPos );
/** Templatized check for uno::Reference validity.
@param rRef Reference to check against non-NILness
@param xIf The interface that should be reported as the one generating the exception.
@param nArgPos Argument position on the call site (i.e. the position of the argument, checked here, on the UNO interface method. Counting starts at 0).
/** Templatized check for content-of-sequence validity.
@param rSequence Sequence of things to check
@param xIf The interface that should be reported as the one generating the exception.
@param nArgPos Argument position on the call site (i.e. the position of the argument, checked here, on the UNO interface method. Counting starts at 0).
@throws a lang::IllegalArgumentException, if anything is wrong
*/ template< typename SequenceContent > void verifyInput( const css::uno::Sequence< SequenceContent >& rSequence, constchar* pStr, const css::uno::Reference< css::uno::XInterface >& xIf,
::sal_Int16 nArgPos )
{ for (auto& element : rSequence)
verifyInput(element, pStr, xIf, nArgPos);
}
/// Catch-all, to handle cases that DON'T need input checking (i.e. the Integer geometry ones) template< typename T > void verifyInput( const T& /*rDummy*/, constchar* /*pStr*/, const css::uno::Reference< css::uno::XInterface >& /*xIf*/,
::sal_Int16 /*nArgPos*/ )
{
}
// TODO(Q2): Employ some template arglist magic here, to avoid // this duplication of code...
/** Range checker, which throws css::lang::IllegalArgument exception, when range is violated
*/ template< typename NumType > inlinevoid verifyRange( NumType arg, NumType lowerBound, NumType upperBound )
{ if( arg < lowerBound ||
arg > upperBound )
{ throw css::lang::IllegalArgumentException();
}
}
/** Range checker, which throws css::lang::IllegalArgument exception, when range is violated
The checked range is half open, i.e. only bound by the specified value.
@param arg Arg to check
@param bound Bound to check against
@param bLowerBound When true, given bound is the lower bound. When false, given bound is the upper bound.
*/ template< typename NumType > inlinevoid verifyRange( NumType arg, NumType bound, bool bLowerBound=true )
{ if( (bLowerBound && arg < bound) ||
(!bLowerBound && arg > bound) )
{ throw css::lang::IllegalArgumentException();
}
}
/** Range checker, which throws css::lang::IndexOutOfBounds exception, when index range is violated
@param rect Rect to verify
@param size Given rectangle must be within ((0,0), (size.Width, size.Height))
*/
CANVASTOOLS_DLLPUBLIC void verifyIndexRange( const css::geometry::IntegerRectangle2D& rect, const css::geometry::IntegerSize2D& size );
/** Range checker, which throws css::lang::IndexOutOfBounds exception, when index range is violated
@param pos Position to verify
@param size Given position must be within ((0,0), (size.Width, size.Height))
*/
CANVASTOOLS_DLLPUBLIC void verifyIndexRange( const css::geometry::IntegerPoint2D& pos, const css::geometry::IntegerSize2D& size );
/** Range checker, which throws css::lang::IndexOutOfBounds exception, when the size is negative or null
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.