summaryrefslogtreecommitdiff
path: root/xmloff/source/style/xmlnumi.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xmloff/source/style/xmlnumi.cxx')
-rw-r--r--xmloff/source/style/xmlnumi.cxx1397
1 files changed, 0 insertions, 1397 deletions
diff --git a/xmloff/source/style/xmlnumi.cxx b/xmloff/source/style/xmlnumi.cxx
deleted file mode 100644
index 0b7c37ed4b..0000000000
--- a/xmloff/source/style/xmlnumi.cxx
+++ /dev/null
@@ -1,1397 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_xmloff.hxx"
-
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/awt/Size.hpp>
-#include <com/sun/star/awt/FontDescriptor.hpp>
-#include <com/sun/star/text/HoriOrientation.hpp>
-#include <com/sun/star/text/VertOrientation.hpp>
-#include <com/sun/star/text/PositionAndSpaceMode.hpp>
-#include <com/sun/star/text/LabelFollow.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/style/XStyle.hpp>
-#include <com/sun/star/io/XOutputStream.hpp>
-
-#include <rtl/ustrbuf.hxx>
-
-#include <tools/urlobj.hxx>
-#include <tools/debug.hxx>
-#include <tools/fontenum.hxx>
-
-#include <xmloff/xmltkmap.hxx>
-#include <xmloff/nmspmap.hxx>
-#include "xmloff/xmlnmspe.hxx"
-#include <xmloff/xmlimp.hxx>
-#include <xmloff/XMLBase64ImportContext.hxx>
-#include <xmloff/xmltoken.hxx>
-
-#include <xmloff/i18nmap.hxx>
-#include <xmloff/xmluconv.hxx>
-#include "fonthdl.hxx"
-#include <xmloff/XMLFontStylesContext.hxx>
-#include <xmloff/families.hxx>
-#include <xmloff/maptype.hxx>
-
-#include <xmloff/xmlnumi.hxx>
-
-#define _SVSTDARR_USHORTS
-#include <svl/svstdarr.hxx>
-
-
-using ::rtl::OUString;
-using ::rtl::OUStringBuffer;
-
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::style;
-using namespace ::com::sun::star::text;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::frame;
-using namespace ::xmloff::token;
-using namespace ::com::sun::star::io;
-
-using rtl::OUString;
-using rtl::OUStringBuffer;
-
-static sal_Char const XML_UNO_NAME_NRULE_SYMBOL_TEXT_DISTANCE[] =
- "SymbolTextDistance";
-static sal_Char const XML_UNO_NAME_NRULE_PARENT_NUMBERING[] =
- "ParentNumbering";
-static sal_Char const XML_UNO_NAME_NRULE_CHAR_STYLE_NAME[] =
- "CharStyleName";
-static sal_Char const XML_UNO_NAME_NRULE_BULLET_CHAR[] ="BulletChar";
-static sal_Char const XML_UNO_NAME_NRULE_BULLET_RELSIZE[] = "BulletRelSize";
-static sal_Char const XML_UNO_NAME_NRULE_GRAPHIC_SIZE[] =
- "GraphicSize";
-static sal_Char const XML_UNO_NAME_NRULE_VERT_ORIENT[] ="VertOrient";
-
-static sal_Char const XML_UNO_NAME_NRULE_NUMBERINGTYPE[] = "NumberingType";
-static sal_Char const XML_UNO_NAME_NRULE_PREFIX[] = "Prefix";
-static sal_Char const XML_UNO_NAME_NRULE_SUFFIX[] = "Suffix";
-static sal_Char const XML_UNO_NAME_NRULE_ADJUST[] = "Adjust";
-static sal_Char const XML_UNO_NAME_NRULE_LEFT_MARGIN[] = "LeftMargin";
-static sal_Char const XML_UNO_NAME_NRULE_FIRST_LINE_OFFSET[] =
- "FirstLineOffset";
-static sal_Char const XML_UNO_NAME_NRULE_BULLET_FONT[] = "BulletFont";
-static sal_Char const XML_UNO_NAME_NRULE_GRAPHICURL[] = "GraphicURL";
-static sal_Char const XML_UNO_NAME_NRULE_START_WITH[] = "StartWith";
-static sal_Char const XML_UNO_NAME_NRULE_BULLET_COLOR[] = "BulletColor";
-static sal_Char const XML_UNO_NAME_NRULE_POSITION_AND_SPACE_MODE[] = "PositionAndSpaceMode";
-static sal_Char const XML_UNO_NAME_NRULE_LABEL_FOLLOWED_BY[] = "LabelFollowedBy";
-static sal_Char const XML_UNO_NAME_NRULE_LISTTAB_STOP_POSITION[] = "ListtabStopPosition";
-static sal_Char const XML_UNO_NAME_NRULE_FIRST_LINE_INDENT[] = "FirstLineIndent";
-static sal_Char const XML_UNO_NAME_NRULE_INDENT_AT[] = "IndentAt";
-
-// ---------------------------------------------------------------------
-
-class SvxXMLListLevelStyleContext_Impl;
-
-class SvxXMLListLevelStyleAttrContext_Impl : public SvXMLImportContext
-{
- SvxXMLListLevelStyleContext_Impl& rListLevel;
-
-public:
-
- SvxXMLListLevelStyleAttrContext_Impl(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const Reference< xml::sax::XAttributeList >& xAttrList,
- SvxXMLListLevelStyleContext_Impl& rLLevel );
- virtual ~SvxXMLListLevelStyleAttrContext_Impl();
-
- virtual SvXMLImportContext *CreateChildContext(
- sal_uInt16 nPrefix, const OUString& rLocalName,
- const Reference< xml::sax::XAttributeList > & xAttrList );
-};
-
-// ---------------------------------------------------------------------
-
-class SvxXMLListLevelStyleLabelAlignmentAttrContext_Impl : public SvXMLImportContext
-{
- SvxXMLListLevelStyleContext_Impl& rListLevel;
-
-public:
-
- SvxXMLListLevelStyleLabelAlignmentAttrContext_Impl(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const Reference< xml::sax::XAttributeList >& xAttrList,
- SvxXMLListLevelStyleContext_Impl& rLLevel );
- virtual ~SvxXMLListLevelStyleLabelAlignmentAttrContext_Impl();
-};
-
-// ---------------------------------------------------------------------
-
-enum SvxXMLTextListLevelStyleAttrTokens
-{
- XML_TOK_TEXT_LEVEL_ATTR_LEVEL,
- XML_TOK_TEXT_LEVEL_ATTR_STYLE_NAME,
- XML_TOK_TEXT_LEVEL_ATTR_BULLET_CHAR,
- XML_TOK_TEXT_LEVEL_ATTR_HREF,
- XML_TOK_TEXT_LEVEL_ATTR_TYPE,
- XML_TOK_TEXT_LEVEL_ATTR_SHOW,
- XML_TOK_TEXT_LEVEL_ATTR_ACTUATE,
- XML_TOK_TEXT_LEVEL_ATTR_NUM_FORMAT,
- XML_TOK_TEXT_LEVEL_ATTR_NUM_PREFIX,
- XML_TOK_TEXT_LEVEL_ATTR_NUM_SUFFIX,
- XML_TOK_TEXT_LEVEL_ATTR_NUM_LETTER_SYNC,
- XML_TOK_TEXT_LEVEL_ATTR_START_VALUE,
- XML_TOK_TEXT_LEVEL_ATTR_DISPLAY_LEVELS,
-
- XML_TOK_TEXT_LEVEL_ATTR_END=XML_TOK_UNKNOWN
-};
-
-const SvXMLTokenMapEntry* lcl_getLevelAttrTokenMap()
-{
- static SvXMLTokenMapEntry aLevelAttrTokenMap[] =
- {
- { XML_NAMESPACE_TEXT, XML_LEVEL, XML_TOK_TEXT_LEVEL_ATTR_LEVEL },
- { XML_NAMESPACE_TEXT, XML_STYLE_NAME, XML_TOK_TEXT_LEVEL_ATTR_STYLE_NAME },
- { XML_NAMESPACE_TEXT, XML_BULLET_CHAR, XML_TOK_TEXT_LEVEL_ATTR_BULLET_CHAR },
- { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXT_LEVEL_ATTR_HREF },
- { XML_NAMESPACE_XLINK, XML_TYPE, XML_TOK_TEXT_LEVEL_ATTR_TYPE },
- { XML_NAMESPACE_XLINK, XML_SHOW, XML_TOK_TEXT_LEVEL_ATTR_SHOW },
- { XML_NAMESPACE_XLINK, XML_ACTUATE, XML_TOK_TEXT_LEVEL_ATTR_ACTUATE },
-
- { XML_NAMESPACE_STYLE, XML_NUM_FORMAT, XML_TOK_TEXT_LEVEL_ATTR_NUM_FORMAT },
- { XML_NAMESPACE_STYLE, XML_NUM_PREFIX, XML_TOK_TEXT_LEVEL_ATTR_NUM_PREFIX },
- { XML_NAMESPACE_STYLE, XML_NUM_SUFFIX, XML_TOK_TEXT_LEVEL_ATTR_NUM_SUFFIX },
- { XML_NAMESPACE_STYLE, XML_NUM_LETTER_SYNC, XML_TOK_TEXT_LEVEL_ATTR_NUM_LETTER_SYNC },
- { XML_NAMESPACE_TEXT, XML_START_VALUE, XML_TOK_TEXT_LEVEL_ATTR_START_VALUE },
- { XML_NAMESPACE_TEXT, XML_DISPLAY_LEVELS, XML_TOK_TEXT_LEVEL_ATTR_DISPLAY_LEVELS },
-
- XML_TOKEN_MAP_END
- };
- return aLevelAttrTokenMap;
-}
-
-class SvxXMLListLevelStyleContext_Impl : public SvXMLImportContext
-{
- friend class SvxXMLListLevelStyleAttrContext_Impl;
- const OUString sStarBats;
- const OUString sStarMath;
-
- OUString sPrefix;
- OUString sSuffix;
- OUString sTextStyleName;
- OUString sNumFormat;
- OUString sNumLetterSync;
- OUString sBulletFontName;
- OUString sBulletFontStyleName;
- OUString sImageURL;
-
- Reference < XOutputStream > xBase64Stream;
-
- sal_Int32 nLevel;
- sal_Int32 nSpaceBefore;
- sal_Int32 nMinLabelWidth;
- sal_Int32 nMinLabelDist;
- sal_Int32 nImageWidth;
- sal_Int32 nImageHeight;
- sal_Int16 nNumStartValue;
- sal_Int16 nNumDisplayLevels;
-
- sal_Int16 eAdjust;
- sal_Int16 eBulletFontFamily;
- sal_Int16 eBulletFontPitch;
- rtl_TextEncoding eBulletFontEncoding;
- sal_Int16 eImageVertOrient;
-
- sal_Unicode cBullet;
-
- sal_Int16 nRelSize;
- Color aColor;
-
- sal_Int16 ePosAndSpaceMode;
- sal_Int16 eLabelFollowedBy;
- sal_Int32 nListtabStopPosition;
- sal_Int32 nFirstLineIndent;
- sal_Int32 nIndentAt;
-
- sal_Bool bBullet : 1;
- sal_Bool bImage : 1;
- sal_Bool bNum : 1;
- sal_Bool bHasColor : 1;
-
- void SetRelSize( sal_Int16 nRel ) { nRelSize = nRel; }
- void SetColor( sal_Int32 _aColor ) { aColor = _aColor; bHasColor = sal_True; }
- void SetSpaceBefore( sal_Int32 nSet ) { nSpaceBefore = nSet; }
- void SetMinLabelWidth( sal_Int32 nSet ) { nMinLabelWidth = nSet; }
- void SetMinLabelDist( sal_Int32 nSet ) { nMinLabelDist = nSet; }
- void SetAdjust( sal_Int16 eSet ) { eAdjust = eSet; }
-
- void SetBulletFontName( const OUString& rSet ) { sBulletFontName = rSet; }
- void SetBulletFontStyleName( const OUString& rSet )
- { sBulletFontStyleName = rSet; }
- void SetBulletFontFamily( sal_Int16 eSet ) { eBulletFontFamily = eSet; }
- void SetBulletFontPitch( sal_Int16 eSet ) { eBulletFontPitch = eSet; }
- void SetBulletFontEncoding( rtl_TextEncoding eSet )
- { eBulletFontEncoding = eSet; }
-
- void SetImageWidth( sal_Int32 nSet ) { nImageWidth = nSet; }
- void SetImageHeight( sal_Int32 nSet ) { nImageHeight = nSet; }
- void SetImageVertOrient( sal_Int16 eSet )
- { eImageVertOrient = eSet; }
-
-public:
-
- SvxXMLListLevelStyleContext_Impl(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const Reference< xml::sax::XAttributeList > & xAttrList );
- virtual ~SvxXMLListLevelStyleContext_Impl();
-
- virtual SvXMLImportContext *CreateChildContext(
- sal_uInt16 nPrefix, const OUString& rLocalName,
- const Reference< xml::sax::XAttributeList > & xAttrList );
-
- sal_Int32 GetLevel() const { return nLevel; }
- Sequence<beans::PropertyValue> GetProperties(
- const SvI18NMap *pI18NMap=0 );
-
- inline void SetPosAndSpaceMode( sal_Int16 eValue )
- {
- ePosAndSpaceMode = eValue;
- }
- inline void SetLabelFollowedBy( sal_Int16 eValue )
- {
- eLabelFollowedBy = eValue;
- }
- inline void SetListtabStopPosition( sal_Int32 nValue )
- {
- nListtabStopPosition = nValue;
- }
- inline void SetFirstLineIndent( sal_Int32 nValue )
- {
- nFirstLineIndent = nValue;
- }
- inline void SetIndentAt( sal_Int32 nValue )
- {
- nIndentAt = nValue;
- }
-};
-
-SvxXMLListLevelStyleContext_Impl::SvxXMLListLevelStyleContext_Impl(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const Reference< xml::sax::XAttributeList > & xAttrList )
-
-: SvXMLImportContext( rImport, nPrfx, rLName )
-, sStarBats( RTL_CONSTASCII_USTRINGPARAM( "StarBats" ) )
-, sStarMath( RTL_CONSTASCII_USTRINGPARAM( "StarMath" ) )
-, sNumFormat( OUString(RTL_CONSTASCII_USTRINGPARAM("1")) )
-, nLevel( -1L )
-, nSpaceBefore( 0L )
-, nMinLabelWidth( 0L )
-, nMinLabelDist( 0L )
-, nImageWidth( 0L )
-, nImageHeight( 0L )
-, nNumStartValue( 1 )
-, nNumDisplayLevels( 1 )
-, eAdjust( HoriOrientation::LEFT )
-, eBulletFontFamily( FAMILY_DONTKNOW )
-, eBulletFontPitch( PITCH_DONTKNOW )
-, eBulletFontEncoding( RTL_TEXTENCODING_DONTKNOW )
-, eImageVertOrient(0)
-, cBullet( 0 )
-, nRelSize(0)
-, aColor( 0 )
-, ePosAndSpaceMode( PositionAndSpaceMode::LABEL_WIDTH_AND_POSITION )
-, eLabelFollowedBy( LabelFollow::LISTTAB )
-, nListtabStopPosition( 0 )
-, nFirstLineIndent( 0 )
-, nIndentAt( 0 )
-, bBullet( sal_False )
-, bImage( sal_False )
-, bNum( sal_False )
-, bHasColor( sal_False )
-{
- if( IsXMLToken( rLName, XML_LIST_LEVEL_STYLE_NUMBER ) ||
- IsXMLToken( rLName, XML_OUTLINE_LEVEL_STYLE ) )
- bNum = sal_True;
- else if( IsXMLToken( rLName, XML_LIST_LEVEL_STYLE_BULLET ) )
- bBullet = sal_True;
- else if( IsXMLToken( rLName, XML_LIST_LEVEL_STYLE_IMAGE ) )
- bImage = sal_True;
-
- SvXMLTokenMap aTokenMap( lcl_getLevelAttrTokenMap() );
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
- {
- const OUString& rAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix =
- GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
- &aLocalName );
- const OUString& rValue = xAttrList->getValueByIndex( i );
-
- switch( aTokenMap.Get( nPrefix, aLocalName ) )
- {
- case XML_TOK_TEXT_LEVEL_ATTR_LEVEL:
- nLevel = rValue.toInt32();
- if( nLevel >= 1L )
- nLevel--;
- else
- nLevel = 0;
- break;
- case XML_TOK_TEXT_LEVEL_ATTR_STYLE_NAME:
- sTextStyleName = rValue;
- break;
- case XML_TOK_TEXT_LEVEL_ATTR_BULLET_CHAR:
- cBullet = rValue[0];
- break;
- case XML_TOK_TEXT_LEVEL_ATTR_HREF:
- if( bImage )
- sImageURL = rValue;
- break;
- case XML_TOK_TEXT_LEVEL_ATTR_TYPE:
- case XML_TOK_TEXT_LEVEL_ATTR_SHOW:
- case XML_TOK_TEXT_LEVEL_ATTR_ACTUATE:
- // This properties will be ignored
- break;
- case XML_TOK_TEXT_LEVEL_ATTR_NUM_FORMAT:
- if( bNum )
- sNumFormat = rValue;
- break;
- case XML_TOK_TEXT_LEVEL_ATTR_NUM_PREFIX:
- sPrefix = rValue;
- break;
- case XML_TOK_TEXT_LEVEL_ATTR_NUM_SUFFIX:
- sSuffix = rValue;
- break;
- case XML_TOK_TEXT_LEVEL_ATTR_NUM_LETTER_SYNC:
- if( bNum )
- sNumLetterSync = rValue;
- break;
- case XML_TOK_TEXT_LEVEL_ATTR_START_VALUE:
- if( bNum )
- {
- sal_Int32 nTmp = rValue.toInt32();
- nNumStartValue =
- (nTmp < 0L) ? 1 : ( (nTmp>SHRT_MAX) ? SHRT_MAX
- : (sal_Int16)nTmp );
- }
- break;
- case XML_TOK_TEXT_LEVEL_ATTR_DISPLAY_LEVELS:
- if( bNum )
- {
- sal_Int32 nTmp = rValue.toInt32();
- nNumDisplayLevels =
- (nTmp < 1L) ? 1 : ( (nTmp>SHRT_MAX) ? SHRT_MAX
- : (sal_Int16)nTmp );
- }
- break;
- }
- }
-}
-
-SvxXMLListLevelStyleContext_Impl::~SvxXMLListLevelStyleContext_Impl()
-{
-}
-
-SvXMLImportContext *SvxXMLListLevelStyleContext_Impl::CreateChildContext(
- sal_uInt16 nPrefix, const OUString& rLocalName,
- const Reference< xml::sax::XAttributeList > & xAttrList )
-{
- SvXMLImportContext *pContext = 0;
- if( XML_NAMESPACE_STYLE == nPrefix &&
- ( IsXMLToken( rLocalName, XML_LIST_LEVEL_PROPERTIES ) ||
- IsXMLToken( rLocalName, XML_TEXT_PROPERTIES ) ) )
- {
- pContext = new SvxXMLListLevelStyleAttrContext_Impl( GetImport(),
- nPrefix,
- rLocalName,
- xAttrList,
- *this );
- }
- else if( (XML_NAMESPACE_OFFICE == nPrefix) && xmloff::token::IsXMLToken( rLocalName,
- xmloff::token::XML_BINARY_DATA ) )
- {
- if( bImage && !sImageURL.getLength() && !xBase64Stream.is() )
- {
- xBase64Stream = GetImport().GetStreamForGraphicObjectURLFromBase64();
- if( xBase64Stream.is() )
- pContext = new XMLBase64ImportContext( GetImport(), nPrefix,
- rLocalName, xAttrList,
- xBase64Stream );
- }
- }
- if( !pContext )
- {
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
- }
-
- return pContext;
-}
-
-Sequence<beans::PropertyValue> SvxXMLListLevelStyleContext_Impl::GetProperties(
- const SvI18NMap *pI18NMap )
-{
- sal_Int16 eType;
-
- sal_Int32 nCount = 0;
- if( bBullet )
- {
- eType = NumberingType::CHAR_SPECIAL;
- nCount = cBullet ? 15 : 14;
- }
- if( bImage )
- {
- eType = NumberingType::BITMAP;
- nCount = 15;
-
- if( (sImageURL.getLength() > 0L) || xBase64Stream.is() )
- nCount++;
- }
- if( bNum )
- {
- eType = NumberingType::ARABIC;
- GetImport().GetMM100UnitConverter().convertNumFormat(
- eType, sNumFormat, sNumLetterSync, sal_True );
- nCount = 15;
- }
-
- if( ( bBullet || bNum ) && nRelSize )
- nCount++;
-
- if( !bImage && bHasColor )
- {
- nCount++;
- }
-
- if (bBullet && sSuffix.getLength())
- {
- sal_uInt16 const nVersion(GetImport().getGeneratorVersion());
- sal_Int32 nUPD;
- sal_Int32 nBuildId;
- if (GetImport().getBuildIds(nUPD, nBuildId)
- && ( (SvXMLImport::OOo_1x == nVersion)
- || (SvXMLImport::OOo_2x == nVersion)
- || (310 == nUPD) || (320 == nUPD) || (330 == nUPD)
- || ((300 == nUPD) && (nBuildId <= 9573))))
- {
- // #i93908# OOo < 3.4 wrote a bogus suffix for bullet chars
- sSuffix = ::rtl::OUString(); // clear it
- }
- }
-
- Sequence<beans::PropertyValue> aPropSeq( nCount );
- if( nCount > 0 )
- {
- beans::PropertyValue *pProps = aPropSeq.getArray();
- sal_Int32 nPos = 0;
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_NUMBERINGTYPE ));
- pProps[nPos++].Value <<= (sal_Int16)eType ;
-
- pProps[nPos].Name = OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_PREFIX ));
- pProps[nPos++].Value <<= sPrefix;
-
- pProps[nPos].Name = OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_SUFFIX ));
- pProps[nPos++].Value <<= sSuffix;
-
- pProps[nPos].Name = OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_ADJUST ));
- pProps[nPos++].Value <<= eAdjust;
-
- sal_Int32 nLeftMargin = nSpaceBefore + nMinLabelWidth;
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_LEFT_MARGIN ));
- pProps[nPos++].Value <<= (sal_Int32)nLeftMargin;
-
- sal_Int32 nFirstLineOffset = -nMinLabelWidth;
-
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_FIRST_LINE_OFFSET ));
- pProps[nPos++].Value <<= (sal_Int32)nFirstLineOffset;
-
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM(XML_UNO_NAME_NRULE_SYMBOL_TEXT_DISTANCE));
- pProps[nPos++].Value <<= (sal_Int16)nMinLabelDist;
-
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM(XML_UNO_NAME_NRULE_POSITION_AND_SPACE_MODE));
- pProps[nPos++].Value <<= (sal_Int16)ePosAndSpaceMode;
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM(XML_UNO_NAME_NRULE_LABEL_FOLLOWED_BY));
- pProps[nPos++].Value <<= (sal_Int16)eLabelFollowedBy;
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM(XML_UNO_NAME_NRULE_LISTTAB_STOP_POSITION));
- pProps[nPos++].Value <<= (sal_Int32)nListtabStopPosition;
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM(XML_UNO_NAME_NRULE_FIRST_LINE_INDENT));
- pProps[nPos++].Value <<= (sal_Int32)nFirstLineIndent;
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM(XML_UNO_NAME_NRULE_INDENT_AT));
- pProps[nPos++].Value <<= (sal_Int32)nIndentAt;
-
- OUString sDisplayTextStyleName = GetImport().GetStyleDisplayName(
- XML_STYLE_FAMILY_TEXT_TEXT, sTextStyleName );
- OUString sStyleName = sDisplayTextStyleName;
- if( sStyleName.getLength() && pI18NMap )
- sStyleName = pI18NMap->Get( SFX_STYLE_FAMILY_CHAR, sStyleName );
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_CHAR_STYLE_NAME ));
- pProps[nPos++].Value <<= sDisplayTextStyleName;
-
- if( bBullet )
- {
- awt::FontDescriptor aFDesc;
- aFDesc.Name = sBulletFontName;
- if( sBulletFontName.getLength() )
- {
- aFDesc.StyleName = sBulletFontStyleName;
- aFDesc.Family = eBulletFontFamily;
- aFDesc.Pitch = eBulletFontPitch;
- aFDesc.CharSet = eBulletFontEncoding;
- aFDesc.Weight = WEIGHT_DONTKNOW;
- sal_Bool bStarSymbol = sal_False;
- if( aFDesc.Name.equalsIgnoreAsciiCase( sStarBats ) )
- {
- cBullet = GetImport().ConvStarBatsCharToStarSymbol( cBullet );
- bStarSymbol = sal_True;
- }
- else if( aFDesc.Name.equalsIgnoreAsciiCase( sStarMath ) )
- {
- cBullet = GetImport().ConvStarMathCharToStarSymbol( cBullet );
- bStarSymbol = sal_True;
- }
- if( bStarSymbol )
- aFDesc.Name =
- OUString( RTL_CONSTASCII_USTRINGPARAM("StarSymbol" ) );
- }
-
- if( cBullet )
- {
- OUStringBuffer sTmp(1);
- sTmp.append( cBullet );
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_BULLET_CHAR ));
- pProps[nPos++].Value <<= sTmp.makeStringAndClear();
- }
-
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_BULLET_FONT ));
- pProps[nPos++].Value <<= aFDesc;
-
- }
-
- if( bImage )
- {
- OUString sStr( sImageURL );
- if( sImageURL.getLength() )
- {
- sStr = GetImport().ResolveGraphicObjectURL( sImageURL,
- sal_False );
- }
- else if( xBase64Stream.is() )
- {
- sStr = GetImport().ResolveGraphicObjectURLFromBase64( xBase64Stream );
- }
-
- if( sStr.getLength() )
- {
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_GRAPHICURL ));
- pProps[nPos++].Value <<= sStr;
- }
-
- awt::Size aSize( nImageWidth, nImageHeight );
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_GRAPHIC_SIZE ));
- pProps[nPos++].Value <<= aSize;
-
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_VERT_ORIENT ));
- pProps[nPos++].Value <<= (sal_Int16)eImageVertOrient;
- }
-
- if( bNum )
- {
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_START_WITH ));
- pProps[nPos++].Value <<= (sal_Int16)nNumStartValue;
-
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM(XML_UNO_NAME_NRULE_PARENT_NUMBERING));
- pProps[nPos++].Value <<= (sal_Int16)nNumDisplayLevels;
- }
-
- if( ( bNum || bBullet ) && nRelSize )
- {
- pProps[nPos].Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_BULLET_RELSIZE ));
- pProps[nPos++].Value <<= nRelSize;
- }
-
- if( !bImage && bHasColor )
- {
- pProps[nPos].Name = OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_BULLET_COLOR ));
- pProps[nPos++].Value <<= (sal_Int32)aColor.GetColor();
- }
-
- DBG_ASSERT( nPos == nCount, "array under/overflow" );
- }
-
- return aPropSeq;
-}
-
-// ---------------------------------------------------------------------
-
-enum SvxXMLStyleAttributesAttrTokens
-{
- XML_TOK_STYLE_ATTRIBUTES_ATTR_SPACE_BEFORE,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_MIN_LABEL_WIDTH,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_MIN_LABEL_DIST,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_TEXT_ALIGN,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_NAME,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_FAMILY,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_FAMILY_GENERIC,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_STYLENAME,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_PITCH,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_CHARSET,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_VERTICAL_POS,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_VERTICAL_REL,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_WIDTH,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_HEIGHT,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_COLOR,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_WINDOW_FONT_COLOR,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_SIZE,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_POSITION_AND_SPACE_MODE,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_END=XML_TOK_UNKNOWN
-};
-const SvXMLTokenMapEntry* lcl_getStyleAttributesAttrTokenMap()
-{
- static SvXMLTokenMapEntry aStyleAttributesAttrTokenMap[] =
- {
- { XML_NAMESPACE_TEXT, XML_SPACE_BEFORE,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_SPACE_BEFORE },
- { XML_NAMESPACE_TEXT, XML_MIN_LABEL_WIDTH,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_MIN_LABEL_WIDTH },
- { XML_NAMESPACE_TEXT, XML_MIN_LABEL_DISTANCE,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_MIN_LABEL_DIST },
- { XML_NAMESPACE_FO, XML_TEXT_ALIGN,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_TEXT_ALIGN },
- { XML_NAMESPACE_STYLE, XML_FONT_NAME,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_NAME },
- { XML_NAMESPACE_FO, XML_FONT_FAMILY,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_FAMILY },
- { XML_NAMESPACE_STYLE, XML_FONT_FAMILY_GENERIC,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_FAMILY_GENERIC },
- { XML_NAMESPACE_STYLE, XML_FONT_STYLE_NAME,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_STYLENAME },
- { XML_NAMESPACE_STYLE, XML_FONT_PITCH,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_PITCH },
- { XML_NAMESPACE_STYLE, XML_FONT_CHARSET,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_CHARSET },
- { XML_NAMESPACE_STYLE, XML_VERTICAL_POS,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_VERTICAL_POS },
- { XML_NAMESPACE_STYLE, XML_VERTICAL_REL,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_VERTICAL_REL },
- { XML_NAMESPACE_FO, XML_WIDTH,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_WIDTH },
- { XML_NAMESPACE_FO, XML_HEIGHT,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_HEIGHT },
- { XML_NAMESPACE_FO, XML_COLOR,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_COLOR },
- { XML_NAMESPACE_STYLE, XML_USE_WINDOW_FONT_COLOR,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_WINDOW_FONT_COLOR },
- { XML_NAMESPACE_FO, XML_FONT_SIZE,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_SIZE },
- { XML_NAMESPACE_TEXT, XML_LIST_LEVEL_POSITION_AND_SPACE_MODE,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_POSITION_AND_SPACE_MODE },
- XML_TOKEN_MAP_END
- };
- return aStyleAttributesAttrTokenMap;
-}
-SvxXMLListLevelStyleAttrContext_Impl::SvxXMLListLevelStyleAttrContext_Impl(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const Reference< xml::sax::XAttributeList > & xAttrList,
- SvxXMLListLevelStyleContext_Impl& rLLevel ) :
- SvXMLImportContext( rImport, nPrfx, rLName ),
- rListLevel( rLLevel )
-{
- SvXMLTokenMap aTokenMap( lcl_getStyleAttributesAttrTokenMap() );
- SvXMLUnitConverter& rUnitConv = GetImport().GetMM100UnitConverter();
-
- OUString sFontName, sFontFamily, sFontStyleName, sFontFamilyGeneric,
- sFontPitch, sFontCharset;
- OUString sVerticalPos, sVerticalRel;
-
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
- {
- const OUString& rAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix =
- GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
- &aLocalName );
- const OUString& rValue = xAttrList->getValueByIndex( i );
-
- sal_Int32 nVal;
- switch( aTokenMap.Get( nPrefix, aLocalName ) )
- {
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_SPACE_BEFORE:
- if( rUnitConv.convertMeasure( nVal, rValue, SHRT_MIN, SHRT_MAX ) )
- rListLevel.SetSpaceBefore( nVal );
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_MIN_LABEL_WIDTH:
- if( rUnitConv.convertMeasure( nVal, rValue, 0, SHRT_MAX ) )
- rListLevel.SetMinLabelWidth( nVal );
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_MIN_LABEL_DIST:
- if( rUnitConv.convertMeasure( nVal, rValue, 0, USHRT_MAX ) )
- rListLevel.SetMinLabelDist( nVal );
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_TEXT_ALIGN:
- if( rValue.getLength() )
- {
- sal_Int16 eAdjust = HoriOrientation::LEFT;
- if( IsXMLToken( rValue, XML_CENTER ) )
- eAdjust = HoriOrientation::CENTER;
- else if( IsXMLToken( rValue, XML_END ) )
- eAdjust = HoriOrientation::RIGHT;
- rListLevel.SetAdjust( eAdjust );
- }
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_NAME:
- sFontName = rValue;
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_FAMILY:
- sFontFamily = rValue;
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_FAMILY_GENERIC:
- sFontFamilyGeneric = rValue;
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_STYLENAME:
- sFontStyleName = rValue;
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_PITCH:
- sFontPitch = rValue;
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_CHARSET:
- sFontCharset = rValue;
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_VERTICAL_POS:
- sVerticalPos = rValue;
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_VERTICAL_REL:
- sVerticalRel = rValue;
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_WIDTH:
- if( rUnitConv.convertMeasure( nVal, rValue, 0, SAL_MAX_INT32) )
- rListLevel.SetImageWidth( nVal );
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_HEIGHT:
- if( rUnitConv.convertMeasure( nVal, rValue, 0, SAL_MAX_INT32) )
- rListLevel.SetImageHeight( nVal );
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_COLOR:
- {
- Color aColor;
- if( SvXMLUnitConverter::convertColor( aColor, rValue ) )
- rListLevel.SetColor( (sal_Int32)aColor.GetColor() );
- }
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_WINDOW_FONT_COLOR:
- {
- if( IsXMLToken( rValue, XML_TRUE ) )
- rListLevel.SetColor( (sal_Int32)0xffffffff );
- }
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_FONT_SIZE:
- if(SvXMLUnitConverter::convertPercent( nVal, rValue ) )
- rListLevel.SetRelSize( (sal_Int16)nVal );
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_POSITION_AND_SPACE_MODE:
- {
- sal_Int16 ePosAndSpaceMode = PositionAndSpaceMode::LABEL_WIDTH_AND_POSITION;
- if( IsXMLToken( rValue, XML_LABEL_ALIGNMENT ) )
- ePosAndSpaceMode = PositionAndSpaceMode::LABEL_ALIGNMENT;
- rListLevel.SetPosAndSpaceMode( ePosAndSpaceMode );
- }
- break;
- }
- }
-
- if( sFontName.getLength() )
- {
- const XMLFontStylesContext *pFontDecls =
- GetImport().GetTextImport()->GetFontDecls();
- if( pFontDecls )
- {
- ::std::vector < XMLPropertyState > aProps;
- if( pFontDecls->FillProperties( sFontName, aProps, 0, 1, 2, 3, 4 ) )
- {
- OUString sTmp;
- sal_Int16 nTmp = 0;
- ::std::vector< XMLPropertyState >::iterator i;
- for( i = aProps.begin(); i != aProps.end(); ++i )
- {
- switch( i->mnIndex )
- {
- case 0:
- i->maValue >>= sTmp;
- rListLevel.SetBulletFontName( sTmp);
- break;
- case 1:
- i->maValue >>= sTmp;
- rListLevel.SetBulletFontStyleName( sTmp );
- break;
- case 2:
- i->maValue >>= nTmp;
- rListLevel.SetBulletFontFamily( nTmp );
- break;
- case 3:
- i->maValue >>= nTmp;
- rListLevel.SetBulletFontPitch( nTmp );
- break;
- case 4:
- i->maValue >>= nTmp;
- rListLevel.SetBulletFontEncoding( nTmp );
- break;
- }
- }
- }
- }
- }
- if( sFontFamily.getLength() )
- {
- String sEmpty;
- Any aAny;
-
- XMLFontFamilyNamePropHdl aFamilyNameHdl;
- if( aFamilyNameHdl.importXML( sFontFamily, aAny, rUnitConv ) )
- {
- OUString sTmp;
- aAny >>= sTmp;
- rListLevel.SetBulletFontName( sTmp);
- }
-
- XMLFontFamilyPropHdl aFamilyHdl;
- if( sFontFamilyGeneric.getLength() &&
- aFamilyHdl.importXML( sFontFamilyGeneric, aAny, rUnitConv ) )
- {
- sal_Int16 nTmp = 0;
- aAny >>= nTmp;
- rListLevel.SetBulletFontFamily( nTmp );
- }
-
- if( sFontStyleName.getLength() )
- rListLevel.SetBulletFontStyleName( sFontStyleName );
-
- XMLFontPitchPropHdl aPitchHdl;
- if( sFontPitch.getLength() &&
- aPitchHdl.importXML( sFontPitch, aAny, rUnitConv ) )
- {
- sal_Int16 nTmp = 0;
- aAny >>= nTmp;
- rListLevel.SetBulletFontPitch( nTmp );
- }
-
- XMLFontEncodingPropHdl aEncHdl;
- if( sFontCharset.getLength() &&
- aEncHdl.importXML( sFontCharset, aAny, rUnitConv ) )
- {
- sal_Int16 nTmp = 0;
- aAny >>= nTmp;
- rListLevel.SetBulletFontEncoding( nTmp );
- }
- }
-
- sal_Int16 eVertOrient = VertOrientation::LINE_CENTER;
- if( sVerticalPos.getLength() )
- {
- if( IsXMLToken( sVerticalPos, XML_TOP ) )
- eVertOrient = VertOrientation::LINE_TOP;
- else if( IsXMLToken( sVerticalPos, XML_BOTTOM ) )
- eVertOrient = VertOrientation::LINE_BOTTOM;
- }
- if( sVerticalRel.getLength() )
- {
- if( IsXMLToken( sVerticalRel, XML_BASELINE ) )
- {
- // TOP and BOTTOM are exchanged for a baseline relation
- switch( eVertOrient )
- {
- case VertOrientation::LINE_TOP:
- eVertOrient = VertOrientation::BOTTOM;
- break;
- case VertOrientation::LINE_CENTER:
- eVertOrient = VertOrientation::CENTER;
- break;
- case VertOrientation::LINE_BOTTOM:
- eVertOrient = VertOrientation::TOP;
- break;
- }
- }
- else if( IsXMLToken( sVerticalRel, XML_CHAR ) )
- {
- switch( eVertOrient )
- {
- case VertOrientation::LINE_TOP:
- eVertOrient = VertOrientation::CHAR_TOP;
- break;
- case VertOrientation::LINE_CENTER:
- eVertOrient = VertOrientation::CHAR_CENTER;
- break;
- case VertOrientation::LINE_BOTTOM:
- eVertOrient = VertOrientation::CHAR_BOTTOM;
- break;
- }
- }
- }
- rListLevel.SetImageVertOrient( eVertOrient );
-}
-
-SvxXMLListLevelStyleAttrContext_Impl::~SvxXMLListLevelStyleAttrContext_Impl()
-{
-}
-
-SvXMLImportContext* SvxXMLListLevelStyleAttrContext_Impl::CreateChildContext(
- sal_uInt16 nPrefix, const OUString& rLocalName,
- const Reference< xml::sax::XAttributeList > & xAttrList )
-{
- SvXMLImportContext *pContext = 0;
- if ( XML_NAMESPACE_STYLE == nPrefix &&
- IsXMLToken( rLocalName, XML_LIST_LEVEL_LABEL_ALIGNMENT ) )
- {
- pContext = new SvxXMLListLevelStyleLabelAlignmentAttrContext_Impl( GetImport(),
- nPrefix,
- rLocalName,
- xAttrList,
- rListLevel );
- }
- if( !pContext )
- {
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
- }
-
- return pContext;
-}
-
-// ---------------------------------------------------------------------
-
-enum SvxXMLStyleAttributesLabelAlignmentAttrTokens
-{
- XML_TOK_STYLE_ATTRIBUTES_ATTR_LABEL_FOLLOWED_BY,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_LISTTAB_STOP_POSITION,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FIRST_LINE_INDENT,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_INDENT_AT,
-
- XML_TOK_STYLE_ATTRIBUTES_LABEL_ALIGNMENT_ATTR_END=XML_TOK_UNKNOWN
-};
-const SvXMLTokenMapEntry* lcl_getStyleAlignmentAttributesAttrTokenMap()
-{
- static SvXMLTokenMapEntry aStyleAlignmentAttributesAttrTokenMap[] =
- {
- { XML_NAMESPACE_TEXT, XML_LABEL_FOLLOWED_BY,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_LABEL_FOLLOWED_BY },
- { XML_NAMESPACE_TEXT, XML_LIST_TAB_STOP_POSITION,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_LISTTAB_STOP_POSITION },
- { XML_NAMESPACE_FO, XML_TEXT_INDENT,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_FIRST_LINE_INDENT },
- { XML_NAMESPACE_FO, XML_MARGIN_LEFT,
- XML_TOK_STYLE_ATTRIBUTES_ATTR_INDENT_AT },
-
- XML_TOKEN_MAP_END
- };
- return aStyleAlignmentAttributesAttrTokenMap;
-}
-SvxXMLListLevelStyleLabelAlignmentAttrContext_Impl::SvxXMLListLevelStyleLabelAlignmentAttrContext_Impl(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const Reference< xml::sax::XAttributeList > & xAttrList,
- SvxXMLListLevelStyleContext_Impl& rLLevel ) :
- SvXMLImportContext( rImport, nPrfx, rLName ),
- rListLevel( rLLevel )
-{
- SvXMLTokenMap aTokenMap( lcl_getStyleAlignmentAttributesAttrTokenMap() );
- SvXMLUnitConverter& rUnitConv = GetImport().GetMM100UnitConverter();
-
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
- {
- const OUString& rAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix =
- GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
- &aLocalName );
- const OUString& rValue = xAttrList->getValueByIndex( i );
-
- sal_Int32 nVal;
- switch( aTokenMap.Get( nPrefix, aLocalName ) )
- {
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_LABEL_FOLLOWED_BY:
- {
- sal_Int16 eLabelFollowedBy = LabelFollow::LISTTAB;
- if( IsXMLToken( rValue, XML_SPACE ) )
- eLabelFollowedBy = LabelFollow::SPACE;
- else if( IsXMLToken( rValue, XML_NOTHING ) )
- eLabelFollowedBy = LabelFollow::NOTHING;
- rListLevel.SetLabelFollowedBy( eLabelFollowedBy );
- }
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_LISTTAB_STOP_POSITION:
- if( rUnitConv.convertMeasure( nVal, rValue, 0, SHRT_MAX ) )
- rListLevel.SetListtabStopPosition( nVal );
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_FIRST_LINE_INDENT:
- if( rUnitConv.convertMeasure( nVal, rValue, SHRT_MIN, SHRT_MAX ) )
- rListLevel.SetFirstLineIndent( nVal );
- break;
- case XML_TOK_STYLE_ATTRIBUTES_ATTR_INDENT_AT:
- if( rUnitConv.convertMeasure( nVal, rValue, SHRT_MIN, SHRT_MAX ) )
- rListLevel.SetIndentAt( nVal );
- break;
- }
- }
-}
-
-SvxXMLListLevelStyleLabelAlignmentAttrContext_Impl::~SvxXMLListLevelStyleLabelAlignmentAttrContext_Impl()
-{
-}
-
-// ---------------------------------------------------------------------
-
-typedef SvxXMLListLevelStyleContext_Impl *SvxXMLListLevelStyleContext_ImplPtr;
-SV_DECL_PTRARR( SvxXMLListStyle_Impl, SvxXMLListLevelStyleContext_ImplPtr,
- 10, 5 )
-
-void SvxXMLListStyleContext::SetAttribute( sal_uInt16 nPrefixKey,
- const OUString& rLocalName,
- const OUString& rValue )
-{
- if( XML_NAMESPACE_TEXT == nPrefixKey &&
- IsXMLToken( rLocalName, XML_CONSECUTIVE_NUMBERING ) )
- {
- bConsecutive = IsXMLToken( rValue, XML_TRUE );
- }
- else
- {
- SvXMLStyleContext::SetAttribute( nPrefixKey, rLocalName, rValue );
- }
-}
-
-
-SvxXMLListStyleContext::SvxXMLListStyleContext( SvXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const Reference< xml::sax::XAttributeList > & xAttrList,
- sal_Bool bOutl )
-: SvXMLStyleContext( rImport, nPrfx, rLName, xAttrList, bOutl ? XML_STYLE_FAMILY_TEXT_OUTLINE : XML_STYLE_FAMILY_TEXT_LIST )
-, sIsPhysical( RTL_CONSTASCII_USTRINGPARAM( "IsPhysical" ) )
-, sNumberingRules( RTL_CONSTASCII_USTRINGPARAM( "NumberingRules" ) )
-, sName( RTL_CONSTASCII_USTRINGPARAM( "Name" ) )
-, sIsContinuousNumbering( RTL_CONSTASCII_USTRINGPARAM( "IsContinuousNumbering" ) )
-, pLevelStyles( 0 )
-, nLevels( 0 )
-, bConsecutive( sal_False )
-, bOutline( bOutl )
-{
-}
-
-SvxXMLListStyleContext::~SvxXMLListStyleContext()
-{
- if( pLevelStyles )
- {
- while( pLevelStyles->Count() )
- {
- sal_uInt16 n = pLevelStyles->Count() - 1;
- SvxXMLListLevelStyleContext_Impl *pStyle = (*pLevelStyles)[n];
- pLevelStyles->Remove( n, 1 );
- pStyle->ReleaseRef();
- }
- }
-
- delete pLevelStyles;
-}
-
-TYPEINIT1( SvxXMLListStyleContext, SvXMLStyleContext );
-
-SvXMLImportContext *SvxXMLListStyleContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference< xml::sax::XAttributeList > & xAttrList )
-{
- SvXMLImportContext *pContext = 0;
-
- if( XML_NAMESPACE_TEXT == nPrefix &&
- ( bOutline
- ? IsXMLToken( rLocalName, XML_OUTLINE_LEVEL_STYLE )
- : ( IsXMLToken( rLocalName, XML_LIST_LEVEL_STYLE_NUMBER ) ||
- IsXMLToken( rLocalName, XML_LIST_LEVEL_STYLE_BULLET ) ||
- IsXMLToken( rLocalName, XML_LIST_LEVEL_STYLE_IMAGE ) ) ) )
- {
- SvxXMLListLevelStyleContext_Impl *pLevelStyle =
- new SvxXMLListLevelStyleContext_Impl( GetImport(), nPrefix,
- rLocalName, xAttrList );
- if( !pLevelStyles )
- pLevelStyles = new SvxXMLListStyle_Impl;
- pLevelStyles->Insert( pLevelStyle, pLevelStyles->Count() );
- pLevelStyle->AddRef();
-
- pContext = pLevelStyle;
- }
- else
- {
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
- }
-
- return pContext;
-}
-
-void SvxXMLListStyleContext::FillUnoNumRule(
- const Reference< container::XIndexReplace > & rNumRule,
- const SvI18NMap *pI18NMap ) const
-{
- try
- {
- if( pLevelStyles && rNumRule.is() )
- {
- sal_uInt16 nCount = pLevelStyles->Count();
- sal_Int32 l_nLevels = rNumRule->getCount();
- for( sal_uInt16 i=0; i < nCount; i++ )
- {
- SvxXMLListLevelStyleContext_Impl *pLevelStyle =
- (*pLevelStyles)[i];
- sal_Int32 nLevel = pLevelStyle->GetLevel();
- if( nLevel >= 0 && nLevel < l_nLevels )
- {
- Sequence<beans::PropertyValue> aProps =
- pLevelStyle->GetProperties( pI18NMap );
- Any aAny;
- aAny <<= aProps;
- rNumRule->replaceByIndex( nLevel, aAny );
- }
- }
- }
-
- Reference < XPropertySet > xPropSet( rNumRule, UNO_QUERY );
- Reference< XPropertySetInfo > xPropSetInfo;
- if (xPropSet.is())
- xPropSetInfo = xPropSet->getPropertySetInfo();
- if( xPropSetInfo.is() &&
- xPropSetInfo->hasPropertyByName( sIsContinuousNumbering ) )
- {
- Any aAny;
- sal_Bool bTmp = bConsecutive;
- aAny.setValue( &bTmp, ::getBooleanCppuType() );
- xPropSet->setPropertyValue( sIsContinuousNumbering, aAny );
- }
- }
- catch( Exception& )
- {
- OSL_FAIL( "SvxXMLListStyleContext::FillUnoNumRule - Exception catched" );
- }
-}
-
-void SvxXMLListStyleContext::CreateAndInsertLate( sal_Bool bOverwrite )
-{
- if( bOutline )
- {
- if( bOverwrite )
- {
- const Reference< XIndexReplace >& rNumRule =
- GetImport().GetTextImport()->GetChapterNumbering();
- // We don't set xNumberingRules here, to avoid using them
- // as numbering rules.
- if( rNumRule.is() )
- FillUnoNumRule( rNumRule, 0 );
- }
- }
- else
- {
- Reference < XStyle > xStyle;
- const OUString& rName = GetDisplayName();
- if( 0 == rName.getLength() )
- {
- SetValid( sal_False );
- return;
- }
-
- const Reference < XNameContainer >& rNumStyles =
- GetImport().GetTextImport()->GetNumberingStyles();
- if( !rNumStyles.is() )
- {
- SetValid( sal_False );
- return;
- }
-
- sal_Bool bNew = sal_False;
- if( rNumStyles->hasByName( rName ) )
- {
- Any aAny = rNumStyles->getByName( rName );
- aAny >>= xStyle;
- }
- else
- {
- Reference< XMultiServiceFactory > xFactory( GetImport().GetModel(),
- UNO_QUERY );
- DBG_ASSERT( xFactory.is(), "no factory" );
- if( !xFactory.is() )
- return;
-
- Reference < XInterface > xIfc = xFactory->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.style.NumberingStyle")) );
- if( !xIfc.is() )
- return;
- Reference < XStyle > xTmp( xIfc, UNO_QUERY );
- xStyle = xTmp;
- if( !xStyle.is() )
- return;
-
- Any aAny;
- aAny <<= xStyle;
- rNumStyles->insertByName( rName, aAny );
- bNew = sal_True;
- }
-
- Reference < XPropertySet > xPropSet( xStyle, UNO_QUERY );
- Reference< XPropertySetInfo > xPropSetInfo =
- xPropSet->getPropertySetInfo();
- if( !bNew && xPropSetInfo->hasPropertyByName( sIsPhysical ) )
- {
- Any aAny = xPropSet->getPropertyValue( sIsPhysical );
- bNew = !*(sal_Bool *)aAny.getValue();
- }
- if( rName != GetName() )
- GetImport().AddStyleDisplayName( XML_STYLE_FAMILY_TEXT_LIST,
- GetName(), rName );
-
- Any aAny = xPropSet->getPropertyValue( sNumberingRules );
- aAny >>= xNumRules;
- nLevels = xNumRules->getCount();
- if( bOverwrite || bNew )
- {
- FillUnoNumRule( xNumRules, 0 );
- aAny <<= xNumRules;
- xPropSet->setPropertyValue( sNumberingRules, aAny );
- }
- else
- {
- SetValid( sal_False );
- }
-
- SetNew( bNew );
- }
-}
-
-void SvxXMLListStyleContext::CreateAndInsertAuto() const
-{
- DBG_ASSERT( !bOutline, "Outlines cannot be inserted here" );
- DBG_ASSERT( !xNumRules.is(), "Numbering Rule is existing already" );
-
- const OUString& rName = GetName();
- if( bOutline || xNumRules.is() || 0 == rName.getLength() )
- {
- ((SvxXMLListStyleContext *)this)->SetValid( sal_False );
- return;
- }
-
- ((SvxXMLListStyleContext *)this)->xNumRules = CreateNumRule(
- GetImport().GetModel() );
- ((SvxXMLListStyleContext *)this)->nLevels = xNumRules->getCount();
-
- FillUnoNumRule( xNumRules, 0 );
-}
-
-Reference < XIndexReplace > SvxXMLListStyleContext::CreateNumRule(
- const Reference < XModel > & rModel )
-{
- Reference<XIndexReplace> xNumRule;
-
- Reference< XMultiServiceFactory > xFactory( rModel, UNO_QUERY );
- DBG_ASSERT( xFactory.is(), "no factory" );
- if( !xFactory.is() )
- return xNumRule;
-
- Reference < XInterface > xIfc = xFactory->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.text.NumberingRules")) );
- if( !xIfc.is() )
- return xNumRule;
-
- xNumRule = Reference<XIndexReplace>( xIfc, UNO_QUERY );
- DBG_ASSERT( xNumRule.is(), "go no numbering rule" );
-
- return xNumRule;
-}
-
-void SvxXMLListStyleContext::SetDefaultStyle(
- const Reference < XIndexReplace > & rNumRule,
- sal_Int16 nLevel,
- sal_Bool bOrdered )
-{
- Sequence<beans::PropertyValue> aPropSeq( bOrdered ? 1 : 4 );
- beans::PropertyValue *pProps = aPropSeq.getArray();
-
- pProps->Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_NUMBERINGTYPE ));
- (pProps++)->Value <<= (sal_Int16)(bOrdered ? NumberingType::ARABIC
- : NumberingType::CHAR_SPECIAL );
- if( !bOrdered )
- {
- // TODO: Bullet-Font
- awt::FontDescriptor aFDesc;
- aFDesc.Name = OUString(
-#if defined UNX
- RTL_CONSTASCII_USTRINGPARAM( "starbats" )
-#else
- RTL_CONSTASCII_USTRINGPARAM( "StarBats" )
-#endif
- );
- aFDesc.Family = FAMILY_DONTKNOW ;
- aFDesc.Pitch = PITCH_DONTKNOW ;
- aFDesc.CharSet = RTL_TEXTENCODING_SYMBOL ;
- aFDesc.Weight = WEIGHT_DONTKNOW;
- pProps->Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_BULLET_FONT ));
- (pProps++)->Value <<= aFDesc;
-
- OUStringBuffer sTmp(1);
- sTmp.append( (sal_Unicode)(0xF000 + 149) );
- pProps->Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_BULLET_CHAR ));
- (pProps++)->Value <<= sTmp.makeStringAndClear();
- pProps->Name =
- OUString(RTL_CONSTASCII_USTRINGPARAM( XML_UNO_NAME_NRULE_CHAR_STYLE_NAME ));
- (pProps++)->Value <<=
- OUString( RTL_CONSTASCII_USTRINGPARAM( "Numbering Symbols" ) );
- }
-
- Any aAny;
- aAny <<= aPropSeq;
- rNumRule->replaceByIndex( nLevel, aAny );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */