/* -*- 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_table_CellProperties_idl__
#define __com_sun_star_table_CellProperties_idl__

#include <com/sun/star/util/Color.idl>
#include <com/sun/star/beans/XPropertySet.idl>
#include <com/sun/star/table/ShadowFormat.idl>
#include <com/sun/star/table/CellHoriJustify.idl>
#include <com/sun/star/table/CellVertJustify.idl>
#include <com/sun/star/table/CellOrientation.idl>
#include <com/sun/star/util/CellProtection.idl>
#include <com/sun/star/table/TableBorder.idl>
#include <com/sun/star/table/TableBorder2.idl>
#include <com/sun/star/table/BorderLine.idl>
#include <com/sun/star/table/BorderLine2.idl>
#include <com/sun/star/container/XNameContainer.idl>


module com {  module sun {  module star {  module table {


/** contains the properties of a table cell.

    @see com::sun::star::table::Cell
    @see com::sun::star::table::CellRange
 */
published service CellProperties
{

//!published service PropertySet
    /** provides access to the properties.
     */
    interface com::sun::star::beans::XPropertySet;


    /** contains the name of the style of the cell.
     */
    [optional, property] string CellStyle;


    /** contains the cell background color.
     */
    [property] com::sun::star::util::Color CellBackColor;


    /** is `TRUE`, if the cell background is transparent.

        <p>In this case the CellProperties::CellBackColor
        value is not used.</p>
     */
    [property] boolean IsCellBackgroundTransparent;


    /** contains the horizontal alignment of the cell contents.
     */
    [property] com::sun::star::table::CellHoriJustify HoriJustify;


    /** contains the vertical alignment of the cell contents.

        changed from com::sun::star::table::CellVertJustify to long in LibO 3.5

        @see com::sun::star::table::CellVertJustify2
     */
    [property] long VertJustify;


    /** is `TRUE`, if text in the cells will be wrapped automatically
        at the right border.
     */
    [property] boolean IsTextWrapped;


    /** defines the indentation of the cell contents (in 1/100 mm).
     */
    [property] short ParaIndent;


    /** contains the orientation of the cell contents.

        <p>If the CellProperties::RotateAngle property
        is non-zero, this value is not used.</p>
     */
    [property] com::sun::star::table::CellOrientation Orientation;


    /** defines how much the content of cells is rotated (in 1/100 degrees).
     */
    [property] long RotateAngle;


    /** defines at which edge rotated cells are aligned.

        changed from com::sun::star::table::CellVertJustify to long in LibO 3.5

        @see com::sun::star::table::CellVertJustify2
     */
    [property] long RotateReference;


    /** selects Asian character orientation in vertical orientation.

        <p>If the CellProperties::Orientation property is
        CellOrientation::STACKED, in Asian mode only Asian
        characters are printed in horizontal orientation instead of all
        characters.
        For other values of CellProperties::Orientation,
        this value is not used.</p>
     */
    [optional, property] boolean AsianVerticalMode;


    /** contains a description of the cell or cell range border.

        <p>If used with a cell range, the top, left, right, and bottom
        lines are at the edges of the entire range, not at the edges of
        the individual cell.</p>
     */
    [property] com::sun::star::table::TableBorder TableBorder;


    /** contains a description of the top border line of each cell.
     */
    [property] com::sun::star::table::BorderLine TopBorder;


    /** contains a description of the bottom border line of each cell.
    */
    [property] com::sun::star::table::BorderLine BottomBorder;


    /** contains a description of the left border line of each cell.
     */
    [property] com::sun::star::table::BorderLine LeftBorder;


    /** contains a description of the right border line of each cell.
     */
    [property] com::sun::star::table::BorderLine RightBorder;


    /** contains the index of the number format that is used in the cells.

        <p>The proper value can be determined by using the
        com::sun::star::util::NumberFormatter
        interface of the document.</p>
     */
    [property] long NumberFormat;


    /** contains a description of the shadow.
     */
    [property] com::sun::star::table::ShadowFormat ShadowFormat;


    /** contains a description of the cell protection.

        <p>Cell protection is active only if the sheet is protected.</p>
     */
    [property] com::sun::star::util::CellProtection CellProtection;


    /** stores additional attributes.

        <p>This property is used i.e. by the XML filters to load and
        restore unknown attributes.</p>
        */
    [optional, property] com::sun::star::container::XNameContainer
        UserDefinedAttributes;


    /** contains a description of the top left to bottom right diagonal line of each cell.
     */
    [optional, property] com::sun::star::table::BorderLine DiagonalTLBR;


    /** contains a description of the bottom left to top right diagonal line of each cell.
     */
    [optional, property] com::sun::star::table::BorderLine DiagonalBLTR;


    /** is `TRUE`, if the cell content will be shrunk to fit in the cell.
     */
    [optional, property] boolean ShrinkToFit;


    //=== BorderLine2 / TableBorder2 optional properties, preferred ===========

    /** contains a description of the cell or cell range border.
        Preferred over TableBorder #TableBorder.

        <p>If used with a cell range, the top, left, right, and bottom
        lines are at the edges of the entire range, not at the edges of
        the individual cell.</p>

        @since LibreOffice 3.6
     */
    [optional, property] com::sun::star::table::TableBorder2 TableBorder2;


    /** contains a description of the top border line of each cell.
        Preferred over BorderLine #TopBorder.

        @since LibreOffice 3.6
     */
    [optional, property] com::sun::star::table::BorderLine2 TopBorder2;


    /** contains a description of the bottom border line of each cell.
        Preferred over BorderLine #BottomBorder.

        @since LibreOffice 3.6
    */
    [optional, property] com::sun::star::table::BorderLine2 BottomBorder2;


    /** contains a description of the left border line of each cell.
        Preferred over BorderLine #LeftBorder.

        @since LibreOffice 3.6
     */
    [optional, property] com::sun::star::table::BorderLine2 LeftBorder2;


    /** contains a description of the right border line of each cell.
        Preferred over BorderLine #RightBorder.

        @since LibreOffice 3.6
     */
    [optional, property] com::sun::star::table::BorderLine2 RightBorder2;


    /** contains a description of the top left to bottom right diagonal line of each cell.
        Preferred over BorderLine #DiagonalTLBR.

        @since LibreOffice 3.6
     */
    [optional, property] com::sun::star::table::BorderLine2 DiagonalTLBR2;


    /** contains a description of the bottom left to top right diagonal line of each cell.
        Preferred over BorderLine #DiagonalBLTR.

        @since LibreOffice 3.6
     */
    [optional, property] com::sun::star::table::BorderLine2 DiagonalBLTR2;

    /** Grab bag of cell properties, used as a string-any map for interim interop purposes.

        @since LibreOffice 4.3

        <p>This property is intentionally not handled by the ODF filter. Any
        member that should be handled there should be first moved out from this grab
        bag to a separate property.</p>
    */
    [optional, property] sequence<com::sun::star::beans::PropertyValue> CellInteropGrabBag;

};


}; }; }; };

#endif

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