/* -*- 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 .
 */
#ifndef __com_sun_star_drawing_FillProperties_idl__
#define __com_sun_star_drawing_FillProperties_idl__

#include <com/sun/star/drawing/FillStyle.idl>
#include <com/sun/star/util/Color.idl>
#include <com/sun/star/awt/Gradient.idl>
#include <com/sun/star/drawing/Hatch.idl>
#include <com/sun/star/drawing/BitmapMode.idl>
#include <com/sun/star/awt/XBitmap.idl>
#include <com/sun/star/drawing/RectanglePoint.idl>



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 #FillStyle is set to
        FillStyle::SOLID, 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 #FillStyle
        is set to FillStyle::SOLID.
    */
    [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 #FillStyle is set to
        FillStyle::GRADIENT, this is the name of the used fill
        gradient style.
    */
    [property] string FillGradientName;

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

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

    /** If the property #FillStyle is set to
        FillStyle::HATCH, 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 #FillStyle is set to
        FillStyle::BITMAP, this is the name of the used fill bitmap
        style.
    */
    [property] string FillBitmapName;

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

    /** If the property #FillStyle is set to
        FillStyle::BITMAP, 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
        width 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 #FillBitmapSizeX
        and #FillBitmapSizeY 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 #FillBitmapLogicalSize,
        this is either relative or absolute.
    */
    [property] long FillBitmapSizeX;

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

        <p>Depending on the property #FillBitmapLogicalSize,
        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
        #FillBitmapStretch and #FillBitmapTile.</p>

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

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

        <p>If set to BitmapMode::NO_REPEAT, 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 #FillBitmapMode 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 BitmapMode::STRETCH. BUT: behavior is undefined, if
        the property #FillBitmapTile is `TRUE` too.</p>

        <p>If set to `FALSE`, the value of the FillBitmapMode property
        changes to BitmapMode::REPEAT or BitmapMode::NO_REPEAT,
        depending on the current value of the
        #FillBitmapTile 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 #FillBitmapMode 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 BitmapMode::REPEAT. BUT: behavior is undefined, if
        the property #FillBitmapStretch is `TRUE` too.</p>

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

    /** contains the cropping of the object.

        If the property #FillBitmapMode is set to BitmapMode::STRETCH,
        this is the cropping, otherwise it is empty.

        @see com::sun::star::text::GraphicCrop
        @since LibreOffice 4.3
     */
    [optional, property] com::sun::star::text::GraphicCrop GraphicCrop;

};


}; }; }; };

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
