/*************************************************************************
 *
 *  OpenOffice.org - a multi-platform office productivity suite
 *
 *  $RCSfile: ParagraphProperties.idl,v $
 *
 *  $Revision: 1.21 $
 *
 *  last change: $Author: rt $ $Date: 2005/09/08 05:31:10 $
 *
 *  The Contents of this file are made available subject to
 *  the terms of GNU Lesser General Public License Version 2.1.
 *
 *
 *    GNU Lesser General Public License Version 2.1
 *    =============================================
 *    Copyright 2005 by Sun Microsystems, Inc.
 *    901 San Antonio Road, Palo Alto, CA 94303, USA
 *
 *    This library is free software; you can redistribute it and/or
 *    modify it under the terms of the GNU Lesser General Public
 *    License version 2.1, as published by the Free Software Foundation.
 *
 *    This library is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *    Lesser General Public License for more details.
 *
 *    You should have received a copy of the GNU Lesser General Public
 *    License along with this library; if not, write to the Free Software
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *    MA  02111-1307  USA
 *
 ************************************************************************/
#ifndef __com_sun_star_style_ParagraphProperties_idl__
#define __com_sun_star_style_ParagraphProperties_idl__

#ifndef __com_sun_star_style_ParagraphAdjust_idl__
#include <com/sun/star/style/ParagraphAdjust.idl>
#endif

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

#ifndef __com_sun_star_style_LineSpacing_idl__
#include <com/sun/star/style/LineSpacing.idl>
#endif

#ifndef __com_sun_star_style_GraphicLocation_idl__
#include <com/sun/star/style/GraphicLocation.idl>
#endif

#ifndef __com_sun_star_style_TabStop_idl__
#include <com/sun/star/style/TabStop.idl>
#endif

#ifndef __com_sun_star_style_DropCapFormat_idl__
#include <com/sun/star/style/DropCapFormat.idl>
#endif

#ifndef __com_sun_star_container_XIndexReplace_idl__
#include <com/sun/star/container/XIndexReplace.idl>
#endif
#ifndef __com_sun_star_table_ShadowFormat_idl__
#include <com/sun/star/table/ShadowFormat.idl>
#endif
#ifndef __com_sun_star_table_BorderLine_idl__
#include <com/sun/star/table/BorderLine.idl>
#endif
#ifndef __com_sun_star_style_BreakType_idl__
#include <com/sun/star/style/BreakType.idl>
#endif
#ifndef __com_sun_star_container_XNameContainer_idl__
#include <com/sun/star/container/XNameContainer.idl>
#endif

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

 module com {  module sun {  module star {  module style {

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

// DocMerge from xml: service com::sun::star::style::ParagraphProperties
/** describes the style of paragraphs.
 */
published service ParagraphProperties
{
	//-------------------------------------------------------------------------

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaAdjust
	/** determines the adjustment of a paragraph.
	 */
	[property] com::sun::star::style::ParagraphAdjust ParaAdjust;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaLineSpacing
	/** contains the type of the line spacing of a paragraph.
	 */
	[optional, property] com::sun::star::style::LineSpacing ParaLineSpacing;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaBackColor
	/** contains the paragraph background color.
	 */
	[optional, property] com::sun::star::util::Color ParaBackColor;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaBackTransparent
	/** This value is <TRUE/> if the paragraph background color
		is set to transparent.
	 */
	[optional, property] boolean ParaBackTransparent;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaBackGraphicURL
	/** contains the value of a link for the background graphic of a paragraph.
	 */
	[optional, property] string ParaBackGraphicURL;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaBackGraphicFilter
	/** contains the name of the graphic filter for the background graphic of a paragraph.
	 */
	[optional, property] string ParaBackGraphicFilter;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaBackGraphicLocation
	/** contains the value for the position of a background graphic.

		@see com::sun::star::style::GraphicLocation
	 */
	[optional, property] com::sun::star::style::GraphicLocation ParaBackGraphicLocation;

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

	/** determines the adjustment of the last line.
        <p>It is only valid if <member>ParagraphProperties::ParaAdjust</member>
		is set to <const>ParagraphAdjust::BLOCK</const>.</p>
	 */
	[property] short ParaLastLineAdjust;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaExpandSingleWord
	/** determines if single words are stretched.

		<p>It is only valid if <member>ParagraphProperties::ParaAdjust</member> and
		<member>ParagraphProperties::ParaLastLineAdjust</member> are also valid.</p>
	 */
	[optional, property] boolean ParaExpandSingleWord;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaLeftMargin
	/** determines the left margin of the paragraph in 100th mm.
	 */
	[property] long ParaLeftMargin;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaRightMargin
	/** determines the right margin of the paragraph in 100th mm.
	 */
	[property] long ParaRightMargin;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaTopMargin
	/** determines the top margin of the paragraph in 100th mm.

		<p>The distance between two paragraphs is specified by:</p>
		<ul>
		<li>either the bottom margin of the previous paragraph.</li>
		<li>or the top margin of the following paragraph.</li>
		</ul>
		The greater one is chosen.
	 */
	[property] long ParaTopMargin;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaBottomMargin
	/** determines the bottom margin of the paragraph in 100th mm.

		<p>The distance between two paragraphs is specified by:</p>
		<ul>
		<li>either the bottom margin of the previous paragraph
		</li>
		<li>or the top margin of the following paragraph.
		</li>
		</ul>
		The greater one is chosen.
	 */
	[property] long ParaBottomMargin;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaLineNumberCount
	/** determines if the paragraph is included in the
		line numbering.
	 */
	[optional, property] boolean ParaLineNumberCount;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaLineNumberStartValue
	/** contains the start value for the line numbering.
	 */
	[optional, property] long ParaLineNumberStartValue;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::PageDescName
	/** If this property is set, it creates a page break before the
		paragraph it belongs to and assigns the value as the name
		of the new page style sheet to use.
	 */
	[optional, property] string PageDescName;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::PageNumberOffset
	/** If a page break property is set at a paragraph, this property contains the new value for the page number.
	 */
	[optional, property] short PageNumberOffset;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaRegisterModeActive
	/** determines if the register mode is applied to a
		paragraph.



		<p>Remark: Register mode is only used if the register
		mode property of the page style is switched on.</p>
	 */
	[optional, property] boolean ParaRegisterModeActive;

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

	// DocMerge from idl: property com::sun::star::style::ParagraphProperties::ParaTabStops
	/** specifies the positions and kinds of thei tab stops within this
				paragraph.
	 */
	[optional, property] sequence<com::sun::star::style::TabStop> ParaTabStops;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaStyleName
	/** contains the name of the current paragraph style.
	 */
	[optional, property] string ParaStyleName;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::DropCapFormat
	/** specifies whether the first characters of the
		paragraph are displayed in capital letters and how they are
		formatted.
	 */
	[optional, property] com::sun::star::style::DropCapFormat DropCapFormat;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::DropCapWholeWord
	/** specifies if the property <var>DropCapFormat</var>
		is applied to the whole first word.
	 */
	[optional, property] boolean DropCapWholeWord;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaKeepTogether
	/** Setting this property to <TRUE/> prevents page or column
		breaks between this and the following paragraph.


		<p>This feature is useful for preventing title paragraphs to be
		the last line on a page or column.</p>
	 */
	[optional, property] boolean ParaKeepTogether;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaSplit
	/** Setting this property to <FALSE/> prevents the paragraph from
		getting split into two pages or columns.
	 */
	[optional, property] boolean ParaSplit;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::NumberingLevel
	/** specifies the numbering level of the	paragraph.
	 */
	[optional, property] short NumberingLevel;

	//-------------------------------------------------------------------------
	/** contains the numbering rules applied to this paragraph.
	 */
        [optional, property] com::sun::star::container::XIndexReplace NumberingRules;

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

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::NumberingStartValue
	/** specifies the start value for numbering if a new numbering starts at this paragraph.
	 */
	[optional, property] short NumberingStartValue;

	//-------------------------------------------------------------------------
	/** determines if the numbering rules restart, counting at the current paragraph.
	 */
	[optional, property] boolean ParaIsNumberingRestart;
	//-------------------------------------------------------------------------

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::NumberingStyleName
	/** specifies the name of the style for the numbering.


		<p>The name must be one of the names which are available via
		<type>XStyleFamiliesSupplier</type>.</p>
	 */
	[optional, property] string NumberingStyleName;
	//-------------------------------------------------------------------------

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaOrphans
	/** specifies the minimum number of lines of the paragraph that have
		to be at bottom of a page if the paragraph is spread over more than
		one page.
	 */
	[optional, property] byte ParaOrphans;
	//-------------------------------------------------------------------------

	// DocMerge from xml: property com::sun::star::style::ParagraphProperties::ParaWidows
	/** specifies the minimum number of lines of the paragraph that have
		to be at top of a page if the paragraph is spread over more than
		one page.
	 */
	[optional, property] byte ParaWidows;
	//-------------------------------------------------------------------------
	/** determines the type, color, and size of the shadow.
	 @see com.sun.star.table.ShadowFormat
	 */
	[optional, property] com::sun::star::table::ShadowFormat ParaShadowFormat;
	//-------------------------------------------------------------------------
	/** contains the left border of the object.
	 */
        [property, optional] com::sun::star::table::BorderLine LeftBorder;

	//-------------------------------------------------------------------------
	/** contains the right border of the object.
	 */
        [property, optional] com::sun::star::table::BorderLine RightBorder;

	//-------------------------------------------------------------------------
	/** contains the top border of the object.
	 */
        [property, optional] com::sun::star::table::BorderLine TopBorder;

	//-------------------------------------------------------------------------
	/** contains the bottom border of the object.
	 */
        [property, optional] com::sun::star::table::BorderLine BottomBorder;

	//-------------------------------------------------------------------------
	/** contains the distance from the border to the object.
	 */
        [property, optional] long BorderDistance;

	//-------------------------------------------------------------------------
	/** contains the distance from the left border to the object.
	 */
        [property, optional] long LeftBorderDistance;

	//-------------------------------------------------------------------------
	/** contains the distance from the right border to the object.
	 */
        [property, optional] long RightBorderDistance;

	//-------------------------------------------------------------------------
	/** contains the distance from the top border to the object.
	 */
        [property, optional] long TopBorderDistance;

	//-------------------------------------------------------------------------
	/** contains the distance from the bottom border to the object.
	 */
        [property, optional] long BottomBorderDistance;

	//-------------------------------------------------------------------------
        /** determins the type of break that is applied at the beginning of the table.
            @see com.sun.star.style.BreakType
         */
        [optional, property] com::sun::star::style::BreakType BreakType;

        //-------------------------------------------------------------------------
        /** specifies the character style name for drop caps.
         */
        [optional, property] string DropCapCharStyleName;

        //-------------------------------------------------------------------------
        /** specifies the indent for the first line.
         */
        [optional, property] long ParaFirstLineIndent;

        //-------------------------------------------------------------------------
        /** determines if the first line should be indented automatically.
         */
        [optional, property] boolean ParaIsAutoFirstLineIndent;

        //-------------------------------------------------------------------------
        /** specifies if automatic hyphenation is applied.
         */
        [property] boolean ParaIsHyphenation;

        //-------------------------------------------------------------------------
        /** specifies the maximum number of consecutive hyphens.
         */
        [optional, property] short ParaHyphenationMaxHyphens;

        //-------------------------------------------------------------------------
        /** specifies the maximum number of characters to remain before the
            hyphen character (when hyphenation is applied).
         */
        [optional, property] short ParaHyphenationMaxLeadingChars;

        //-------------------------------------------------------------------------
        /** specifies the maximum number of characters to remain after the
            hyphen character (when hyphenation is applied).
         */
        [optional, property] short ParaHyphenationMaxTrailingChars;

        //-------------------------------------------------------------------------
        /** specifies the vertical alignment of a paragraph.

            @see com::sun::star::text::ParagraphVertAlign
         */
        [optional, property] short ParaVertAlignment;

        //-------------------------------------------------------------------------
        /** this property stores xml attributes.
            They will be saved to and restored from automatic styles inside xml files.

            @see com::sun::star::xml::AttributeContainer
         */
        [optional, property] com::sun::star::container::XNameContainer ParaUserDefinedAttributes;

        //-------------------------------------------------------------------------
        /** returns </TRUE> if the numbering of a paragraph is a number but
            has no symbol.

            <p>If the paragraph is not part of a numbering the property is void.</p>
         */
        [optional, property, maybevoid] boolean NumberingIsNumber;
        //-------------------------------------------------------------------------
        /** the property determines if borders set at a paragraph are merged with the 
         previous paragraph.
         <p>Borders are only merged if they are identical.</p>
         */
        [optional, property, maybevoid] boolean ParaIsConnectBorder;

};

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

}; }; }; };

#endif
