/**************************************************************
 * 
 * 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
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/


#ifndef __com_sun_star_drawing_FillProperties_idl__
#define __com_sun_star_drawing_FillProperties_idl__

#ifndef __com_sun_star_drawing_FillStyle_idl__
#include <com/sun/star/drawing/FillStyle.idl>
#endif

#ifndef __com_sun_star_util_Color_idl__
#include <com/sun/star/util/Color.idl>
#endif

#ifndef __com_sun_star_awt_Gradient_idl__
#include <com/sun/star/awt/Gradient.idl>
#endif

#ifndef __com_sun_star_drawing_Hatch_idl__
#include <com/sun/star/drawing/Hatch.idl>
#endif

#ifndef __com_sun_star_drawing_BitmapMode_idl__
#include <com/sun/star/drawing/BitmapMode.idl>
#endif

#ifndef __com_sun_star_awt_XBitmap_idl__
#include <com/sun/star/awt/XBitmap.idl>
#endif

#ifndef __com_sun_star_drawing_RectanglePoint_idl__
#include <com/sun/star/drawing/RectanglePoint.idl>
#endif


//=============================================================================

module com { module sun { module star { module drawing {

//=============================================================================

/** This is a set of properties to describe the style for rendering an area.
 */
published service FillProperties
{
	//-------------------------------------------------------------------------
    /** This enumeration selects the style the area will be filled with.
	*/
    [property] FillStyle FillStyle;

	//-------------------------------------------------------------------------
    /** If the property <member>FillStyle</member> is set to <const>
        FillStyle::SOLID</const>, this is the color used.
	*/
	[property] com::sun::star::util::Color FillColor;

	//-------------------------------------------------------------------------
	/** This is the transparence of the filled area.

        <p>This property is only valid if the property <member>FillStyle
        </member> is set to <const>FillStyle::SOLID</const>.
	*/
	[property] short FillTransparence;

	//-------------------------------------------------------------------------
	/** If a gradient is used for transparency, this is the name of the
		used transparence gradient style or it is empty. If you set the name
		of a transparence gradient style contained in the document, this
		style used.
	*/
	[property] string FillTransparenceGradientName;


	//-------------------------------------------------------------------------
	/** This describes the transparency of the fill area as a gradient.
	*/
	[optional, property] com::sun::star::awt::Gradient FillTransparenceGradient;

	//-------------------------------------------------------------------------
    /** If the property <member>FillStyle</member> is set to <const>
        FillStyle::GRADIENT</const>, this is the name of the used fill
        gradient style.
	*/
	[property] string FillGradientName;

	//-------------------------------------------------------------------------
    /** If the property <member>FillStyle</member> is set to <const>
        FillStyle::GRADIENT</const>, this describes the gradient used.
	*/
	[optional, property] com::sun::star::awt::Gradient FillGradient;

	//-------------------------------------------------------------------------
    /** If the property <member>FillStyle</member> is set to <const>
        FillStyle::HATCH</const>, this is the name of the used fill hatch
        style.
	*/
	[property] string FillHatchName;

	//-------------------------------------------------------------------------
    /** If the property <member>FillStyle</member> is set to <const>
        FillStyle::HATCH</const>, this describes the hatch used.
	*/
    [optional, property] Hatch FillHatch;

    //-------------------------------------------------------------------------
    /** if this is <TRUE/>, the transparent background of a
        hatch filled area is drawn in the current background color.
    */
    [property] boolean FillBackground;

	//-------------------------------------------------------------------------
    /** If the property <memebr>FillStyle</member> is set to <const>
        FillStyle::BITMAP</const>, this is the name of the used fill bitmap
        style.
	*/
	[property] string FillBitmapName;

	//-------------------------------------------------------------------------
    /** If the property <member>FillStyle</member> is set to <const>
        FillStyle::BITMAP</const>, this is the bitmap used.
	*/
	[optional, property] com::sun::star::awt::XBitmap FillBitmap;

	//-------------------------------------------------------------------------
    /** If the property <member>FillStyle</member> is set to <const>
        FillStyle::BITMAP</const>, this is a URL to the bitmap used.
	*/
	[optional, property] string FillBitmapURL;

	//-------------------------------------------------------------------------
    /** This is the horizontal offset where the tile starts.

        <p>It is given in percent in relation to the width of the bitmap.</p>
	*/
	[property] short FillBitmapPositionOffsetX;

	//-------------------------------------------------------------------------
    /** This is the vertical offset where the tile starts.

        <p>It is given in percent in relation to the height of the bitmap.</p>
	*/
	[property] short FillBitmapPositionOffsetY;

    //-------------------------------------------------------------------------
    /** Every second line of tiles is moved the given percent of the
        witdh of the bitmap.
    */
    [property] short FillBitmapOffsetX;

    //-------------------------------------------------------------------------
    /** Every second row of tiles is moved the given percent of the
        height of the bitmap.
    */
    [property] short FillBitmapOffsetY;

	//-------------------------------------------------------------------------
	/** The RectanglePoint specifies the position inside of the bitmap to
		use as the top left position for rendering.
	*/
    [property] RectanglePoint FillBitmapRectanglePoint;

	//-------------------------------------------------------------------------
    /** specifies if the size is given in percentage or as an absolute value.

        <p>If this is <TRUE/>, the properties <member>FillBitmapSizeX</member>
        and <member>FillBitmapSizeY</member> contain the size of the tile in
        percent of the size of the original bitmap. If this is <FALSE/>, the
        size of the tile is specified with 1/100th mm.
	*/
	[property] boolean FillBitmapLogicalSize;

	//-------------------------------------------------------------------------
	/** This is the width of the tile for filling.

        <p>Depending on the property <member>FillBitmapLogicalSize</member>,
        this is either relative or absolute.
	*/
	[property] long FillBitmapSizeX;

	//-------------------------------------------------------------------------
	/** This is the height of the tile for filling.

        <p>Depending on the property <member>FillBitmapLogicalSize</member>,
        this is either relative or absolute.
	*/
	[property] long FillBitmapSizeY;

	//-------------------------------------------------------------------------
	/** this enum selects how a area is filled with a single bitmap.

        <p>This property corresponds to the properties <member>
        FillBitmapStretch</member> and <member>FillBitmapTile</member>.</p>

        <p>If set to <const>BitmapMode::REPEAT</const>, the property
        FillBitmapStretch is set to <FALSE/>, and the property FillBitmapTile
        is set to <TRUE/>.</p>

        <p>If set to <const>BitmapMode::STRETCH</const>, the property
        FillBitmapStretch is set to <TRUE/>, and the property FillBitmapTile
        is set to <FALSE/>.</p>

        <p>If set to <const>BitmapMode::NO_REPEAT</const>, both properties
        FillBitmapStretch and FillBitmapTile are set to <FALSE/>.</p>
	*/
    [property] BitmapMode FillBitmapMode;

    //-------------------------------------------------------------------------
    /** if set, the fill bitmap is stretched to fill the area of the shape.

        <p>This property should not be used anymore and is included here for
        completeness. The <member>FillBitmapMode</member> property can be used
        instead to set all supported bitmap modes.</p>

        <p>If set to <TRUE/>, the value of the FillBitmapMode property changes
        to <const>BitmapMode::STRETCH</const>. BUT: behaviour is undefined, if
        the property <member>FillBitmapTile</member> is <TRUE/> too.</p>

        <p>If set to <FALSE/>, the value of the FillBitmapMode property
        changes to <const>BitmapMode::REPEAT</const> or <const>
        BitmapMode::NO_REPEAT</const>, depending on the current value of the
        <member>FillBitmapTile</member> property.</p>
     */
    [optional, property] boolean FillBitmapStretch;

    //-------------------------------------------------------------------------
    /** if set, the fill bitmap is repeated to fill the area of the shape.

        <p>This property should not be used anymore and is included here for
        completeness. The <member>FillBitmapMode</member> property can be used
        instead to set all supported bitmap modes.</p>

        <p>If set to <TRUE/>, the value of the FillBitmapMode property changes
        to <const>BitmapMode::REPEAT</const>. BUT: behaviour is undefined, if
        the property <member>FillBitmapStretch</member> is <TRUE/> too.</p>

        <p>If set to <FALSE/>, the value of the FillBitmapMode property
        changes to <const>BitmapMode::STRETCH</const> or <const>
        BitmapMode::NO_REPEAT</const>, depending on the current value of the
        <member>FillBitmapStretch</member> property.</p>
     */
    [optional, property] boolean FillBitmapTile;

	//-------------------------------------------------------------------------
};

//=============================================================================

}; }; }; };

#endif