/**************************************************************
 *
 * 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_chart2_DataPointProperties_idl
#define com_sun_star_chart2_DataPointProperties_idl

#include <com/sun/star/beans/PropertySet.idl>

#include <com/sun/star/awt/Gradient.idl>
#include <com/sun/star/drawing/Hatch.idl>
#include <com/sun/star/drawing/LineDash.idl>
#include <com/sun/star/style/XStyle.idl>

#include <com/sun/star/chart2/BitmapProperty.idl>
#include <com/sun/star/chart2/TransparencyStyle.idl>
#include <com/sun/star/chart2/DataCaptionStyle.idl>
#include <com/sun/star/chart2/Symbol.idl>

module com
{
module sun
{
module star
{
module chart2
{

service DataPointProperties
{
    /** to give access to the properties required by this service.
    */
    service ::com::sun::star::beans::PropertySet;

    // ----------------------------------------------------------------------

    /** points to a style that also supports this service (but not
        this property) that is used as default, if the PropertyState
        of a property is <code>DEFAULT_VALUE</code>.
     */
//     [optional, property] ::com::sun::star::style::XStyle        Style;

    // Common Properties
    // -----------------


    /** This is the main color of a data point.

        <p>For charts with filled areas, like bar-charts, this should
        map to the <code>FillColor</code> of the objects.  For
        line-charts this should map to the <code>LineColor</code>
        property.</p>

        @see com::sun::star::drawing::FillProperties
        @see com::sun::star::drawing::LineProperties
     */
    [property] long                                   Color;

    /** This is the main transparency value of a data point.

        <p>For charts with filled areas, like bar-charts, this should
        map to the <code>FillTransparence</code> of the objects.  For
        line-charts this should map to the
        <code>LineTransparence</code> property.</p>

        @see com::sun::star::drawing::FillProperties
        @see com::sun::star::drawing::LineProperties
     */
    [property] short                                  Transparency;


    // Fill Properties
    // ---------------

	/** This enumeration selects the style with which the area will be filled.
	*/
    [property] ::com::sun::star::drawing::FillStyle   FillStyle;

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

	[property] string TransparencyGradientName;
	[property] string GradientName;
	[property] string HatchName;
	[property] string FillBitmapName;

    /** If <TRUE/>, fills the background of a hatch with the color
        given in the <member>Color</member> property.
     */
    [property] boolean FillBackground;

    /** Is used for borders around filled objects.  See
        <code>LineColor</code>.

        @see com::sun::star::drawing::LineProperties
     */
    [property] long                                   BorderColor;
    /** Is used for borders around filled objects.  See
        <code>LineStyle</code>.

        @see com::sun::star::drawing::LineProperties
     */
	[property] ::com::sun::star::drawing::LineStyle   BorderStyle;
    /** Is used for borders around filled objects.  See
        <code>LineWidth</code>.

        @see com::sun::star::drawing::LineProperties
     */
    [property] long                                   BorderWidth;
    /** Is used for borders around filled objects.  See
        <code>LineDash</code>.

        @see com::sun::star::drawing::LineProperties
     */
    [property] ::com::sun::star::drawing::LineDash    BorderDash;

    /** The name of a dash that can be found in the
        <type scope="com::sun::star::container">XNameContainer</type>
        "com.sun.star.drawing.LineDashTable", that can be created via
        the
        <type scope="com::sun::star::uno">XMultiServiceFactory</type>
        of the <type>ChartDocument</type>.
     */
    [optional, property] string                       BorderDashName;

    /** Is used for borders around filled objects.  See
        <code>LineTransparence</code>.

        @see com::sun::star::drawing::LineProperties
     */
    [optional, property] short                        BorderTransparency;


    // Line Properties
    // ---------------
    [property] ::com::sun::star::drawing::LineStyle   LineStyle;
    /** Is only used for line-chart types.

        @see com::sun::star::drawing::LineProperties
     */
    [property] long                                   LineWidth;
    /** Is only used for line-chart types.

        @see com::sun::star::drawing::LineProperties
     */
    [property] ::com::sun::star::drawing::LineDash    LineDash;

    /** The name of a dash that can be found in the
        <type scope="com::sun::star::container">XNameContainer</type>
        "com.sun.star.drawing.LineDashTable", that can be created via
        the
        <type scope="com::sun::star::uno">XMultiServiceFactory</type>
        of the <type>ChartDocument</type>.
     */
    [optional, property] string                       LineDashName;

	//-------------------------------------------------------------------------

    // bitmap properties /copied from drawing::FillProperties

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

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

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

		It is given in percent in relation to the width of the bitmap.
	*/
	[property] short FillBitmapOffsetY;

	/** Every second line of tiles is moved the given percent of the
		width of the bitmap.
	*/
	[property] short FillBitmapPositionOffsetX;

	/** Every second row of tiles is moved the given percent of the
		width of the bitmap.
	*/
	[property] short FillBitmapPositionOffsetY;

	/** The RectanglePoint specifies the position inside of the bitmap to
		use as the top left position for rendering.
	*/
	[property] com::sun::star::drawing::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.
	*/
	[property] com::sun::star::drawing::BitmapMode FillBitmapMode;

	//-------------------------------------------------------------------------

    /**
     */
    [optional, property] Symbol                       Symbol;

    /** describes a value by which a data point is moved from its
        default position in percent of the maximum allowed distance.

        <p>This is especially useful for the explosion of pie-chart
        segments.</p>
     */
    [optional, property] double                       Offset;

    /** describes the geometry of a 3 dimensional datapoint.
        Number is one of constant group <type>DataPointGeometry3D</type>.
        <p>This is especially used for 3D bar-charts.</p>
        <p>CUBOID==0 CYLINDER==1 CONE==2 PYRAMID==3 CUBOID==else</p>
    */
    [optional, property] long                         Geometry3D;

    [property] DataPointLabel                         Label;

    /** specifies a string that is used to separate the parts of a data label (caption)
	 */
    [optional, property] string LabelSeparator;

    /** specifies a number format for the display of the value in the data label
	 */
    [optional, property] long NumberFormat;

    /** specifies a number format for the display of the percentage value in the data label
	 */
    [optional, property] long PercentageNumberFormat;

    /** specifies a relative position for the data label

        @see ::com::sun::star::chart::DataLabelPlacement
	 */
    [optional, property] long LabelPlacement;

    /** The size of the page at the moment when the font size for
        data labels was set.

        <p>This size is used to resize text in the view when the size
        of the page has changed since the font sizes were set
        (automatic text scaling).</p>
     */
    [maybevoid, property] com::sun::star::awt::Size   ReferencePageSize;

    // statistics

    /** If void, no error bars are shown for the data point in
        x-direction.

        <p>The <type scope="com::sun::star::beans">XPropertySet</type>
        must support the service <type>ErrorBar</type>.</p>
     */
    [optional, maybevoid, property] com::sun::star::beans::XPropertySet      ErrorBarX;

    /** If void, no error bars are shown for the data point in
        y-direction.

        <p>The <type scope="com::sun::star::beans">XPropertySet</type>
        must support the service <type>ErrorBar</type>.</p>
     */
    [optional, maybevoid, property] com::sun::star::beans::XPropertySet      ErrorBarY;

    /** In case <member>ErrorBarX</member> and
        <member>ErrorBarY</member> both are set, and error bars are
        shown, a box spanning all error-indicators is rendered.
     */
    [optional, maybevoid, property] boolean           ShowErrorBox;


    /** A value between 0 and 100 indicating the percentage how round an edge should be.
    */
    [optional, maybevoid, property] short             PercentDiagonal;
};

} ; // chart2
} ; // com
} ; // sun
} ; // star


#endif
