1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski #include "oox/drawingml/textparagraphproperties.hxx"
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski #include <com/sun/star/text/XNumberingRulesSupplier.hpp>
27*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XIndexReplace.hpp>
28*b1cdbd2cSJim Jagielski #include <com/sun/star/text/HoriOrientation.hpp>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontDescriptor.hpp>
30*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/XBitmap.hpp>
31*b1cdbd2cSJim Jagielski #include <com/sun/star/graphic/XGraphic.hpp>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyValue.hpp>
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski #include "oox/helper/helper.hxx"
35*b1cdbd2cSJim Jagielski #include "oox/helper/propertyset.hxx"
36*b1cdbd2cSJim Jagielski #include "oox/core/xmlfilterbase.hxx"
37*b1cdbd2cSJim Jagielski #include "oox/drawingml/drawingmltypes.hxx"
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim Jagielski using rtl::OUString;
40*b1cdbd2cSJim Jagielski using namespace ::oox::core;
41*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
42*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
43*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::style;
44*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::text;
45*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::container;
46*b1cdbd2cSJim Jagielski using ::com::sun::star::awt::FontDescriptor;
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielski namespace oox { namespace drawingml {
49*b1cdbd2cSJim Jagielski
BulletList()50*b1cdbd2cSJim Jagielski BulletList::BulletList( )
51*b1cdbd2cSJim Jagielski : maBulletColorPtr( new Color() )
52*b1cdbd2cSJim Jagielski {
53*b1cdbd2cSJim Jagielski }
54*b1cdbd2cSJim Jagielski
is() const55*b1cdbd2cSJim Jagielski bool BulletList::is() const
56*b1cdbd2cSJim Jagielski {
57*b1cdbd2cSJim Jagielski return mnNumberingType.hasValue();
58*b1cdbd2cSJim Jagielski }
59*b1cdbd2cSJim Jagielski
setBulletChar(const::rtl::OUString & sChar)60*b1cdbd2cSJim Jagielski void BulletList::setBulletChar( const ::rtl::OUString & sChar )
61*b1cdbd2cSJim Jagielski {
62*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::CHAR_SPECIAL;
63*b1cdbd2cSJim Jagielski msBulletChar <<= sChar;
64*b1cdbd2cSJim Jagielski }
65*b1cdbd2cSJim Jagielski
setGraphic(::com::sun::star::uno::Reference<::com::sun::star::graphic::XGraphic> & rXGraphic)66*b1cdbd2cSJim Jagielski void BulletList::setGraphic( ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic >& rXGraphic )
67*b1cdbd2cSJim Jagielski {
68*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::BITMAP;
69*b1cdbd2cSJim Jagielski maGraphic <<= rXGraphic;
70*b1cdbd2cSJim Jagielski }
71*b1cdbd2cSJim Jagielski
setNone()72*b1cdbd2cSJim Jagielski void BulletList::setNone( )
73*b1cdbd2cSJim Jagielski {
74*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::NUMBER_NONE;
75*b1cdbd2cSJim Jagielski }
76*b1cdbd2cSJim Jagielski
setSuffixParenBoth()77*b1cdbd2cSJim Jagielski void BulletList::setSuffixParenBoth()
78*b1cdbd2cSJim Jagielski {
79*b1cdbd2cSJim Jagielski msNumberingSuffix <<= CREATE_OUSTRING( ")" );
80*b1cdbd2cSJim Jagielski msNumberingPrefix <<= CREATE_OUSTRING( "(" );
81*b1cdbd2cSJim Jagielski }
82*b1cdbd2cSJim Jagielski
setSuffixParenRight()83*b1cdbd2cSJim Jagielski void BulletList::setSuffixParenRight()
84*b1cdbd2cSJim Jagielski {
85*b1cdbd2cSJim Jagielski msNumberingSuffix <<= CREATE_OUSTRING( ")" );
86*b1cdbd2cSJim Jagielski msNumberingPrefix <<= OUString();
87*b1cdbd2cSJim Jagielski }
88*b1cdbd2cSJim Jagielski
setSuffixPeriod()89*b1cdbd2cSJim Jagielski void BulletList::setSuffixPeriod()
90*b1cdbd2cSJim Jagielski {
91*b1cdbd2cSJim Jagielski msNumberingSuffix <<= CREATE_OUSTRING( "." );
92*b1cdbd2cSJim Jagielski msNumberingPrefix <<= OUString();
93*b1cdbd2cSJim Jagielski }
94*b1cdbd2cSJim Jagielski
setSuffixNone()95*b1cdbd2cSJim Jagielski void BulletList::setSuffixNone()
96*b1cdbd2cSJim Jagielski {
97*b1cdbd2cSJim Jagielski msNumberingSuffix <<= OUString();
98*b1cdbd2cSJim Jagielski msNumberingPrefix <<= OUString();
99*b1cdbd2cSJim Jagielski }
100*b1cdbd2cSJim Jagielski
setSuffixMinusRight()101*b1cdbd2cSJim Jagielski void BulletList::setSuffixMinusRight()
102*b1cdbd2cSJim Jagielski {
103*b1cdbd2cSJim Jagielski msNumberingSuffix <<= CREATE_OUSTRING( "-" );
104*b1cdbd2cSJim Jagielski msNumberingPrefix <<= OUString();
105*b1cdbd2cSJim Jagielski }
106*b1cdbd2cSJim Jagielski
setType(sal_Int32 nType)107*b1cdbd2cSJim Jagielski void BulletList::setType( sal_Int32 nType )
108*b1cdbd2cSJim Jagielski {
109*b1cdbd2cSJim Jagielski // OSL_TRACE( "OOX: set list numbering type %d", nType);
110*b1cdbd2cSJim Jagielski switch( nType )
111*b1cdbd2cSJim Jagielski {
112*b1cdbd2cSJim Jagielski case XML_alphaLcParenBoth:
113*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::CHARS_LOWER_LETTER;
114*b1cdbd2cSJim Jagielski setSuffixParenBoth();
115*b1cdbd2cSJim Jagielski break;
116*b1cdbd2cSJim Jagielski case XML_alphaLcParenR:
117*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::CHARS_LOWER_LETTER;
118*b1cdbd2cSJim Jagielski setSuffixParenRight();
119*b1cdbd2cSJim Jagielski break;
120*b1cdbd2cSJim Jagielski case XML_alphaLcPeriod:
121*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::CHARS_LOWER_LETTER;
122*b1cdbd2cSJim Jagielski setSuffixPeriod();
123*b1cdbd2cSJim Jagielski break;
124*b1cdbd2cSJim Jagielski case XML_alphaUcParenBoth:
125*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::CHARS_UPPER_LETTER;
126*b1cdbd2cSJim Jagielski setSuffixParenBoth();
127*b1cdbd2cSJim Jagielski break;
128*b1cdbd2cSJim Jagielski case XML_alphaUcParenR:
129*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::CHARS_UPPER_LETTER;
130*b1cdbd2cSJim Jagielski setSuffixParenRight();
131*b1cdbd2cSJim Jagielski break;
132*b1cdbd2cSJim Jagielski case XML_alphaUcPeriod:
133*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::CHARS_UPPER_LETTER;
134*b1cdbd2cSJim Jagielski setSuffixPeriod();
135*b1cdbd2cSJim Jagielski break;
136*b1cdbd2cSJim Jagielski case XML_arabic1Minus:
137*b1cdbd2cSJim Jagielski case XML_arabic2Minus:
138*b1cdbd2cSJim Jagielski case XML_arabicDbPeriod:
139*b1cdbd2cSJim Jagielski case XML_arabicDbPlain:
140*b1cdbd2cSJim Jagielski // TODO
141*b1cdbd2cSJim Jagielski break;
142*b1cdbd2cSJim Jagielski case XML_arabicParenBoth:
143*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::ARABIC;
144*b1cdbd2cSJim Jagielski setSuffixParenBoth();
145*b1cdbd2cSJim Jagielski break;
146*b1cdbd2cSJim Jagielski case XML_arabicParenR:
147*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::ARABIC;
148*b1cdbd2cSJim Jagielski setSuffixParenRight();
149*b1cdbd2cSJim Jagielski break;
150*b1cdbd2cSJim Jagielski case XML_arabicPeriod:
151*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::ARABIC;
152*b1cdbd2cSJim Jagielski setSuffixPeriod();
153*b1cdbd2cSJim Jagielski break;
154*b1cdbd2cSJim Jagielski case XML_arabicPlain:
155*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::ARABIC;
156*b1cdbd2cSJim Jagielski setSuffixNone();
157*b1cdbd2cSJim Jagielski break;
158*b1cdbd2cSJim Jagielski case XML_circleNumDbPlain:
159*b1cdbd2cSJim Jagielski case XML_circleNumWdBlackPlain:
160*b1cdbd2cSJim Jagielski case XML_circleNumWdWhitePlain:
161*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::CIRCLE_NUMBER;
162*b1cdbd2cSJim Jagielski break;
163*b1cdbd2cSJim Jagielski case XML_ea1ChsPeriod:
164*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::NUMBER_UPPER_ZH;
165*b1cdbd2cSJim Jagielski setSuffixPeriod();
166*b1cdbd2cSJim Jagielski break;
167*b1cdbd2cSJim Jagielski case XML_ea1ChsPlain:
168*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::NUMBER_UPPER_ZH;
169*b1cdbd2cSJim Jagielski setSuffixNone();
170*b1cdbd2cSJim Jagielski break;
171*b1cdbd2cSJim Jagielski case XML_ea1ChtPeriod:
172*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::NUMBER_UPPER_ZH_TW;
173*b1cdbd2cSJim Jagielski setSuffixPeriod();
174*b1cdbd2cSJim Jagielski break;
175*b1cdbd2cSJim Jagielski case XML_ea1ChtPlain:
176*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::NUMBER_UPPER_ZH_TW;
177*b1cdbd2cSJim Jagielski setSuffixNone();
178*b1cdbd2cSJim Jagielski break;
179*b1cdbd2cSJim Jagielski case XML_ea1JpnChsDbPeriod:
180*b1cdbd2cSJim Jagielski case XML_ea1JpnKorPeriod:
181*b1cdbd2cSJim Jagielski case XML_ea1JpnKorPlain:
182*b1cdbd2cSJim Jagielski break;
183*b1cdbd2cSJim Jagielski case XML_hebrew2Minus:
184*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::CHARS_HEBREW;
185*b1cdbd2cSJim Jagielski setSuffixMinusRight();
186*b1cdbd2cSJim Jagielski break;
187*b1cdbd2cSJim Jagielski case XML_hindiAlpha1Period:
188*b1cdbd2cSJim Jagielski case XML_hindiAlphaPeriod:
189*b1cdbd2cSJim Jagielski case XML_hindiNumParenR:
190*b1cdbd2cSJim Jagielski case XML_hindiNumPeriod:
191*b1cdbd2cSJim Jagielski // TODO
192*b1cdbd2cSJim Jagielski break;
193*b1cdbd2cSJim Jagielski case XML_romanLcParenBoth:
194*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::ROMAN_LOWER;
195*b1cdbd2cSJim Jagielski setSuffixParenBoth();
196*b1cdbd2cSJim Jagielski break;
197*b1cdbd2cSJim Jagielski case XML_romanLcParenR:
198*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::ROMAN_LOWER;
199*b1cdbd2cSJim Jagielski setSuffixParenRight();
200*b1cdbd2cSJim Jagielski break;
201*b1cdbd2cSJim Jagielski case XML_romanLcPeriod:
202*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::ROMAN_LOWER;
203*b1cdbd2cSJim Jagielski setSuffixPeriod();
204*b1cdbd2cSJim Jagielski break;
205*b1cdbd2cSJim Jagielski case XML_romanUcParenBoth:
206*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::ROMAN_UPPER;
207*b1cdbd2cSJim Jagielski setSuffixParenBoth();
208*b1cdbd2cSJim Jagielski break;
209*b1cdbd2cSJim Jagielski case XML_romanUcParenR:
210*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::ROMAN_UPPER;
211*b1cdbd2cSJim Jagielski setSuffixParenRight();
212*b1cdbd2cSJim Jagielski break;
213*b1cdbd2cSJim Jagielski case XML_romanUcPeriod:
214*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::ROMAN_UPPER;
215*b1cdbd2cSJim Jagielski setSuffixPeriod();
216*b1cdbd2cSJim Jagielski break;
217*b1cdbd2cSJim Jagielski case XML_thaiAlphaParenBoth:
218*b1cdbd2cSJim Jagielski case XML_thaiNumParenBoth:
219*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::CHARS_THAI;
220*b1cdbd2cSJim Jagielski setSuffixParenBoth();
221*b1cdbd2cSJim Jagielski break;
222*b1cdbd2cSJim Jagielski case XML_thaiAlphaParenR:
223*b1cdbd2cSJim Jagielski case XML_thaiNumParenR:
224*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::CHARS_THAI;
225*b1cdbd2cSJim Jagielski setSuffixParenRight();
226*b1cdbd2cSJim Jagielski break;
227*b1cdbd2cSJim Jagielski case XML_thaiAlphaPeriod:
228*b1cdbd2cSJim Jagielski case XML_thaiNumPeriod:
229*b1cdbd2cSJim Jagielski mnNumberingType <<= NumberingType::CHARS_THAI;
230*b1cdbd2cSJim Jagielski setSuffixPeriod();
231*b1cdbd2cSJim Jagielski break;
232*b1cdbd2cSJim Jagielski }
233*b1cdbd2cSJim Jagielski }
234*b1cdbd2cSJim Jagielski
setBulletSize(sal_Int16 nSize)235*b1cdbd2cSJim Jagielski void BulletList::setBulletSize(sal_Int16 nSize)
236*b1cdbd2cSJim Jagielski {
237*b1cdbd2cSJim Jagielski mnSize <<= nSize;
238*b1cdbd2cSJim Jagielski }
239*b1cdbd2cSJim Jagielski
240*b1cdbd2cSJim Jagielski
setFontSize(sal_Int16 nSize)241*b1cdbd2cSJim Jagielski void BulletList::setFontSize(sal_Int16 nSize)
242*b1cdbd2cSJim Jagielski {
243*b1cdbd2cSJim Jagielski mnFontSize <<= nSize;
244*b1cdbd2cSJim Jagielski }
245*b1cdbd2cSJim Jagielski
apply(const BulletList & rSource)246*b1cdbd2cSJim Jagielski void BulletList::apply( const BulletList& rSource )
247*b1cdbd2cSJim Jagielski {
248*b1cdbd2cSJim Jagielski if ( rSource.maBulletColorPtr->isUsed() )
249*b1cdbd2cSJim Jagielski maBulletColorPtr = rSource.maBulletColorPtr;
250*b1cdbd2cSJim Jagielski if ( rSource.mbBulletColorFollowText.hasValue() )
251*b1cdbd2cSJim Jagielski mbBulletColorFollowText = rSource.mbBulletColorFollowText;
252*b1cdbd2cSJim Jagielski if ( rSource.mbBulletFontFollowText.hasValue() )
253*b1cdbd2cSJim Jagielski mbBulletFontFollowText = rSource.mbBulletFontFollowText;
254*b1cdbd2cSJim Jagielski maBulletFont.assignIfUsed( rSource.maBulletFont );
255*b1cdbd2cSJim Jagielski if ( rSource.msBulletChar.hasValue() )
256*b1cdbd2cSJim Jagielski msBulletChar = rSource.msBulletChar;
257*b1cdbd2cSJim Jagielski if ( rSource.mnStartAt.hasValue() )
258*b1cdbd2cSJim Jagielski mnStartAt = rSource.mnStartAt;
259*b1cdbd2cSJim Jagielski if ( rSource.mnNumberingType.hasValue() )
260*b1cdbd2cSJim Jagielski mnNumberingType = rSource.mnNumberingType;
261*b1cdbd2cSJim Jagielski if ( rSource.msNumberingPrefix.hasValue() )
262*b1cdbd2cSJim Jagielski msNumberingPrefix = rSource.msNumberingPrefix;
263*b1cdbd2cSJim Jagielski if ( rSource.msNumberingSuffix.hasValue() )
264*b1cdbd2cSJim Jagielski msNumberingSuffix = rSource.msNumberingSuffix;
265*b1cdbd2cSJim Jagielski if ( rSource.mnSize.hasValue() )
266*b1cdbd2cSJim Jagielski mnSize = rSource.mnSize;
267*b1cdbd2cSJim Jagielski if ( rSource.mnFontSize.hasValue() )
268*b1cdbd2cSJim Jagielski mnFontSize = rSource.mnFontSize;
269*b1cdbd2cSJim Jagielski if ( rSource.maStyleName.hasValue() )
270*b1cdbd2cSJim Jagielski maStyleName = rSource.maStyleName;
271*b1cdbd2cSJim Jagielski if ( rSource.maGraphic.hasValue() )
272*b1cdbd2cSJim Jagielski maGraphic = rSource.maGraphic;
273*b1cdbd2cSJim Jagielski }
274*b1cdbd2cSJim Jagielski
pushToPropMap(const::oox::core::XmlFilterBase & rFilterBase,PropertyMap & rPropMap) const275*b1cdbd2cSJim Jagielski void BulletList::pushToPropMap( const ::oox::core::XmlFilterBase& rFilterBase, PropertyMap& rPropMap ) const
276*b1cdbd2cSJim Jagielski {
277*b1cdbd2cSJim Jagielski if( msNumberingPrefix.hasValue() )
278*b1cdbd2cSJim Jagielski rPropMap[ PROP_Prefix ] = msNumberingPrefix;
279*b1cdbd2cSJim Jagielski if( msNumberingSuffix.hasValue() )
280*b1cdbd2cSJim Jagielski rPropMap[ PROP_Suffix ] = msNumberingSuffix;
281*b1cdbd2cSJim Jagielski if( mnStartAt.hasValue() )
282*b1cdbd2cSJim Jagielski rPropMap[ PROP_StartWith ] = mnStartAt;
283*b1cdbd2cSJim Jagielski rPropMap[ PROP_Adjust ] <<= HoriOrientation::LEFT;
284*b1cdbd2cSJim Jagielski
285*b1cdbd2cSJim Jagielski if( mnNumberingType.hasValue() )
286*b1cdbd2cSJim Jagielski rPropMap[ PROP_NumberingType ] = mnNumberingType;
287*b1cdbd2cSJim Jagielski
288*b1cdbd2cSJim Jagielski OUString aBulletFontName;
289*b1cdbd2cSJim Jagielski sal_Int16 nBulletFontPitch = 0;
290*b1cdbd2cSJim Jagielski sal_Int16 nBulletFontFamily = 0;
291*b1cdbd2cSJim Jagielski if( maBulletFont.getFontData( aBulletFontName, nBulletFontPitch, nBulletFontFamily, rFilterBase ) )
292*b1cdbd2cSJim Jagielski {
293*b1cdbd2cSJim Jagielski FontDescriptor aFontDesc;
294*b1cdbd2cSJim Jagielski sal_Int16 nFontSize = 0;
295*b1cdbd2cSJim Jagielski if( mnFontSize >>= nFontSize )
296*b1cdbd2cSJim Jagielski aFontDesc.Height = nFontSize;
297*b1cdbd2cSJim Jagielski
298*b1cdbd2cSJim Jagielski // TODO move the to the TextFont struct.
299*b1cdbd2cSJim Jagielski aFontDesc.Name = aBulletFontName;
300*b1cdbd2cSJim Jagielski aFontDesc.Pitch = nBulletFontPitch;
301*b1cdbd2cSJim Jagielski aFontDesc.Family = nBulletFontFamily;
302*b1cdbd2cSJim Jagielski rPropMap[ PROP_BulletFont ] <<= aFontDesc;
303*b1cdbd2cSJim Jagielski rPropMap[ PROP_BulletFontName ] <<= aBulletFontName;
304*b1cdbd2cSJim Jagielski }
305*b1cdbd2cSJim Jagielski if ( msBulletChar.hasValue() )
306*b1cdbd2cSJim Jagielski rPropMap[ PROP_BulletChar ] = msBulletChar;
307*b1cdbd2cSJim Jagielski if ( maGraphic.hasValue() )
308*b1cdbd2cSJim Jagielski {
309*b1cdbd2cSJim Jagielski Reference< com::sun::star::awt::XBitmap > xBitmap( maGraphic, UNO_QUERY );
310*b1cdbd2cSJim Jagielski if ( xBitmap.is() )
311*b1cdbd2cSJim Jagielski rPropMap[ PROP_Graphic ] <<= xBitmap;
312*b1cdbd2cSJim Jagielski }
313*b1cdbd2cSJim Jagielski if( mnSize.hasValue() )
314*b1cdbd2cSJim Jagielski rPropMap[ PROP_BulletRelSize ] = mnSize;
315*b1cdbd2cSJim Jagielski if ( maStyleName.hasValue() )
316*b1cdbd2cSJim Jagielski rPropMap[ PROP_CharStyleName ] <<= maStyleName;
317*b1cdbd2cSJim Jagielski if ( maBulletColorPtr->isUsed() )
318*b1cdbd2cSJim Jagielski rPropMap[ PROP_BulletColor ] <<= maBulletColorPtr->getColor( rFilterBase.getGraphicHelper() );
319*b1cdbd2cSJim Jagielski }
320*b1cdbd2cSJim Jagielski
TextParagraphProperties()321*b1cdbd2cSJim Jagielski TextParagraphProperties::TextParagraphProperties()
322*b1cdbd2cSJim Jagielski : mnLevel( 0 )
323*b1cdbd2cSJim Jagielski {
324*b1cdbd2cSJim Jagielski }
325*b1cdbd2cSJim Jagielski
~TextParagraphProperties()326*b1cdbd2cSJim Jagielski TextParagraphProperties::~TextParagraphProperties()
327*b1cdbd2cSJim Jagielski {
328*b1cdbd2cSJim Jagielski }
329*b1cdbd2cSJim Jagielski
apply(const TextParagraphProperties & rSourceProps)330*b1cdbd2cSJim Jagielski void TextParagraphProperties::apply( const TextParagraphProperties& rSourceProps )
331*b1cdbd2cSJim Jagielski {
332*b1cdbd2cSJim Jagielski maTextParagraphPropertyMap.insert( rSourceProps.maTextParagraphPropertyMap.begin(), rSourceProps.maTextParagraphPropertyMap.end() );
333*b1cdbd2cSJim Jagielski maBulletList.apply( rSourceProps.maBulletList );
334*b1cdbd2cSJim Jagielski maTextCharacterProperties.assignUsed( rSourceProps.maTextCharacterProperties );
335*b1cdbd2cSJim Jagielski if ( rSourceProps.maParaTopMargin.bHasValue )
336*b1cdbd2cSJim Jagielski maParaTopMargin = rSourceProps.maParaTopMargin;
337*b1cdbd2cSJim Jagielski if ( rSourceProps.maParaBottomMargin.bHasValue )
338*b1cdbd2cSJim Jagielski maParaBottomMargin = rSourceProps.maParaBottomMargin;
339*b1cdbd2cSJim Jagielski if ( rSourceProps.moParaLeftMargin )
340*b1cdbd2cSJim Jagielski moParaLeftMargin = rSourceProps.moParaLeftMargin;
341*b1cdbd2cSJim Jagielski if ( rSourceProps.moFirstLineIndentation )
342*b1cdbd2cSJim Jagielski moFirstLineIndentation = rSourceProps.moFirstLineIndentation;
343*b1cdbd2cSJim Jagielski }
344*b1cdbd2cSJim Jagielski
pushToPropSet(const::oox::core::XmlFilterBase & rFilterBase,const Reference<XPropertySet> & xPropSet,PropertyMap & rioBulletMap,const BulletList * pMasterBuList,sal_Bool bApplyBulletMap,float fCharacterSize) const345*b1cdbd2cSJim Jagielski void TextParagraphProperties::pushToPropSet( const ::oox::core::XmlFilterBase& rFilterBase,
346*b1cdbd2cSJim Jagielski const Reference < XPropertySet >& xPropSet, PropertyMap& rioBulletMap, const BulletList* pMasterBuList, sal_Bool bApplyBulletMap, float fCharacterSize ) const
347*b1cdbd2cSJim Jagielski {
348*b1cdbd2cSJim Jagielski PropertySet aPropSet( xPropSet );
349*b1cdbd2cSJim Jagielski aPropSet.setProperties( maTextParagraphPropertyMap );
350*b1cdbd2cSJim Jagielski
351*b1cdbd2cSJim Jagielski sal_Int32 nNumberingType = NumberingType::NUMBER_NONE;
352*b1cdbd2cSJim Jagielski if ( maBulletList.mnNumberingType.hasValue() )
353*b1cdbd2cSJim Jagielski maBulletList.mnNumberingType >>= nNumberingType;
354*b1cdbd2cSJim Jagielski else if ( pMasterBuList && pMasterBuList->mnNumberingType.hasValue() )
355*b1cdbd2cSJim Jagielski pMasterBuList->mnNumberingType >>= nNumberingType;
356*b1cdbd2cSJim Jagielski if ( nNumberingType == NumberingType::NUMBER_NONE )
357*b1cdbd2cSJim Jagielski aPropSet.setProperty< sal_Int16 >( PROP_NumberingLevel, -1 );
358*b1cdbd2cSJim Jagielski
359*b1cdbd2cSJim Jagielski maBulletList.pushToPropMap( rFilterBase, rioBulletMap );
360*b1cdbd2cSJim Jagielski
361*b1cdbd2cSJim Jagielski if ( maParaTopMargin.bHasValue )
362*b1cdbd2cSJim Jagielski aPropSet.setProperty( PROP_ParaTopMargin, maParaTopMargin.toMargin( getCharHeightPoints( 18.0 ) ) );
363*b1cdbd2cSJim Jagielski if ( maParaBottomMargin.bHasValue )
364*b1cdbd2cSJim Jagielski aPropSet.setProperty( PROP_ParaBottomMargin, maParaBottomMargin.toMargin( getCharHeightPoints( 18.0 ) ) );
365*b1cdbd2cSJim Jagielski if ( nNumberingType == NumberingType::BITMAP )
366*b1cdbd2cSJim Jagielski {
367*b1cdbd2cSJim Jagielski fCharacterSize = getCharHeightPoints( fCharacterSize );
368*b1cdbd2cSJim Jagielski
369*b1cdbd2cSJim Jagielski com::sun::star::awt::Size aBulletSize;
370*b1cdbd2cSJim Jagielski aBulletSize.Width = aBulletSize.Height = static_cast< sal_Int32 >( ( fCharacterSize * ( 2540.0 / 72.0 ) * 0.8 ) );
371*b1cdbd2cSJim Jagielski rioBulletMap[ PROP_GraphicSize ] <<= aBulletSize;
372*b1cdbd2cSJim Jagielski }
373*b1cdbd2cSJim Jagielski
374*b1cdbd2cSJim Jagielski boost::optional< sal_Int32 > noParaLeftMargin( moParaLeftMargin );
375*b1cdbd2cSJim Jagielski boost::optional< sal_Int32 > noFirstLineIndentation( moFirstLineIndentation );
376*b1cdbd2cSJim Jagielski
377*b1cdbd2cSJim Jagielski if ( nNumberingType != NumberingType::NUMBER_NONE )
378*b1cdbd2cSJim Jagielski {
379*b1cdbd2cSJim Jagielski if ( noParaLeftMargin )
380*b1cdbd2cSJim Jagielski {
381*b1cdbd2cSJim Jagielski rioBulletMap[ PROP_LeftMargin ] <<= static_cast< sal_Int32 >( *noParaLeftMargin );
382*b1cdbd2cSJim Jagielski noParaLeftMargin = boost::optional< sal_Int32 >( 0 );
383*b1cdbd2cSJim Jagielski }
384*b1cdbd2cSJim Jagielski if ( noFirstLineIndentation )
385*b1cdbd2cSJim Jagielski {
386*b1cdbd2cSJim Jagielski rioBulletMap[ PROP_FirstLineOffset ] <<= static_cast< sal_Int32 >( *noFirstLineIndentation );
387*b1cdbd2cSJim Jagielski noFirstLineIndentation = boost::optional< sal_Int32 >( 0 );
388*b1cdbd2cSJim Jagielski }
389*b1cdbd2cSJim Jagielski }
390*b1cdbd2cSJim Jagielski
391*b1cdbd2cSJim Jagielski if ( bApplyBulletMap )
392*b1cdbd2cSJim Jagielski {
393*b1cdbd2cSJim Jagielski Reference< XIndexReplace > xNumRule;
394*b1cdbd2cSJim Jagielski aPropSet.getProperty( xNumRule, PROP_NumberingRules );
395*b1cdbd2cSJim Jagielski OSL_ENSURE( xNumRule.is(), "can't get Numbering rules");
396*b1cdbd2cSJim Jagielski
397*b1cdbd2cSJim Jagielski if( xNumRule.is() )
398*b1cdbd2cSJim Jagielski {
399*b1cdbd2cSJim Jagielski if( !rioBulletMap.empty() )
400*b1cdbd2cSJim Jagielski {
401*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aBulletPropSeq = rioBulletMap.makePropertyValueSequence();
402*b1cdbd2cSJim Jagielski xNumRule->replaceByIndex( getLevel(), makeAny( aBulletPropSeq ) );
403*b1cdbd2cSJim Jagielski }
404*b1cdbd2cSJim Jagielski
405*b1cdbd2cSJim Jagielski aPropSet.setProperty( PROP_NumberingRules, xNumRule );
406*b1cdbd2cSJim Jagielski }
407*b1cdbd2cSJim Jagielski }
408*b1cdbd2cSJim Jagielski if ( noParaLeftMargin )
409*b1cdbd2cSJim Jagielski aPropSet.setProperty( PROP_ParaLeftMargin, *noParaLeftMargin );
410*b1cdbd2cSJim Jagielski if ( noFirstLineIndentation )
411*b1cdbd2cSJim Jagielski aPropSet.setProperty( PROP_ParaFirstLineIndent, *noFirstLineIndentation );
412*b1cdbd2cSJim Jagielski }
413*b1cdbd2cSJim Jagielski
getCharHeightPoints(float fDefault) const414*b1cdbd2cSJim Jagielski float TextParagraphProperties::getCharHeightPoints( float fDefault ) const
415*b1cdbd2cSJim Jagielski {
416*b1cdbd2cSJim Jagielski return maTextCharacterProperties.getCharHeightPoints( fDefault );
417*b1cdbd2cSJim Jagielski }
418*b1cdbd2cSJim Jagielski
419*b1cdbd2cSJim Jagielski } }
420