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

#include <com/sun/star/beans/PropertySet.idl>
#include <com/sun/star/drawing/FillProperties.idl>
#include <com/sun/star/awt/Gradient.idl>
#include <com/sun/star/style/XStyle.idl>
#include <com/sun/star/drawing/Hatch.idl>
#include <com/sun/star/drawing/LineDash.idl>
#include <com/sun/star/drawing/BitmapMode.idl>
#include <com/sun/star/drawing/FillStyle.idl>
#include <com/sun/star/drawing/LineStyle.idl>
#include <com/sun/star/drawing/RectanglePoint.idl>
#include <com/sun/star/chart2/DataPointLabel.idl>
#include <com/sun/star/chart2/Symbol.idl>
#include <com/sun/star/chart2/XFormattedString2.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;

    /** to give access to the fill properties

        Note that there is access for some of them
        through some alias.

        @since LibreOffice 5.1
    */
    service ::com::sun::star::drawing::FillProperties;


    /** 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 #Color 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
        com::sun::star::container::XNameContainer
        "com.sun.star.drawing.LineDashTable", that can be created via
        the
        com::sun::star::uno::XMultiServiceFactory
        of the ChartDocument.
     */
    [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
        com::sun::star::container::XNameContainer
        "com.sun.star.drawing.LineDashTable", that can be created via
        the
        com::sun::star::uno::XMultiServiceFactory
        of the ChartDocument.
     */
    [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 an 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 data point.
        Number is one of constant group DataPointGeometry3D.
        <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 text with possible fields that is used as a data point label,
        if set then Label property is ignored

        @since LibreOffice 6.1
    */
    [optional, property] sequence<XDataPointCustomLabelField>  CustomLabelFields;

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

    /** specifies if the text of a data label (caption) must be wrapped

        @since LibreOffice 5.1
     */
    [optional, property] boolean TextWordWrap;

    /** 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 com::sun::star::beans::XPropertySet
        must support the service ErrorBar.</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 com::sun::star::beans::XPropertySet
        must support the service ErrorBar.</p>
     */
    [optional, maybevoid, property] com::sun::star::beans::XPropertySet      ErrorBarY;

    /** In case #ErrorBarX and
        #ErrorBarY 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

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