Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <vector>
21 :
22 : #include <svl/itemset.hxx>
23 : #include <svl/stritem.hxx>
24 : #include <svl/intitem.hxx>
25 : #include <svl/itempool.hxx>
26 : #include <svl/eitem.hxx>
27 : #include <vcl/svapp.hxx>
28 : #include <vcl/settings.hxx>
29 :
30 : #include <sal/macros.h>
31 : #include <officecfg/Office/Math.hxx>
32 : #include "cfgitem.hxx"
33 :
34 : #include "starmath.hrc"
35 : #include "smdll.hxx"
36 : #include "format.hxx"
37 :
38 : using namespace com::sun::star;
39 : using namespace com::sun::star::uno;
40 : using namespace com::sun::star::beans;
41 :
42 : static const char aRootName[] = "Office.Math";
43 :
44 : #define SYMBOL_LIST "SymbolList"
45 : #define FONT_FORMAT_LIST "FontFormatList"
46 :
47 24 : static Sequence< OUString > lcl_GetFontPropertyNames()
48 : {
49 : return Sequence< OUString > {
50 : "Name",
51 : "CharSet",
52 : "Family",
53 : "Pitch",
54 : "Weight",
55 : "Italic"
56 24 : };
57 : }
58 :
59 660 : static Sequence< OUString > lcl_GetSymbolPropertyNames()
60 : {
61 : return Sequence< OUString > {
62 : "Char",
63 : "Set",
64 : "Predefined",
65 : "FontFormatId"
66 660 : };
67 : }
68 :
69 14 : static Sequence< OUString > lcl_GetFormatPropertyNames()
70 : {
71 : //! Beware of order according to *_BEGIN *_END defines in format.hxx !
72 : //! see respective load/save routines here
73 : return Sequence< OUString > {
74 : "StandardFormat/Textmode",
75 : "StandardFormat/GreekCharStyle",
76 : "StandardFormat/ScaleNormalBracket",
77 : "StandardFormat/HorizontalAlignment",
78 : "StandardFormat/BaseSize",
79 : "StandardFormat/TextSize",
80 : "StandardFormat/IndexSize",
81 : "StandardFormat/FunctionSize",
82 : "StandardFormat/OperatorSize",
83 : "StandardFormat/LimitsSize",
84 : "StandardFormat/Distance/Horizontal",
85 : "StandardFormat/Distance/Vertical",
86 : "StandardFormat/Distance/Root",
87 : "StandardFormat/Distance/SuperScript",
88 : "StandardFormat/Distance/SubScript",
89 : "StandardFormat/Distance/Numerator",
90 : "StandardFormat/Distance/Denominator",
91 : "StandardFormat/Distance/Fraction",
92 : "StandardFormat/Distance/StrokeWidth",
93 : "StandardFormat/Distance/UpperLimit",
94 : "StandardFormat/Distance/LowerLimit",
95 : "StandardFormat/Distance/BracketSize",
96 : "StandardFormat/Distance/BracketSpace",
97 : "StandardFormat/Distance/MatrixRow",
98 : "StandardFormat/Distance/MatrixColumn",
99 : "StandardFormat/Distance/OrnamentSize",
100 : "StandardFormat/Distance/OrnamentSpace",
101 : "StandardFormat/Distance/OperatorSize",
102 : "StandardFormat/Distance/OperatorSpace",
103 : "StandardFormat/Distance/LeftSpace",
104 : "StandardFormat/Distance/RightSpace",
105 : "StandardFormat/Distance/TopSpace",
106 : "StandardFormat/Distance/BottomSpace",
107 : "StandardFormat/Distance/NormalBracketSize",
108 : "StandardFormat/VariableFont",
109 : "StandardFormat/FunctionFont",
110 : "StandardFormat/NumberFont",
111 : "StandardFormat/TextFont",
112 : "StandardFormat/SerifFont",
113 : "StandardFormat/SansFont",
114 : "StandardFormat/FixedFont"
115 14 : };
116 : }
117 :
118 : struct SmCfgOther
119 : {
120 : SmPrintSize ePrintSize;
121 : sal_uInt16 nPrintZoomFactor;
122 : bool bPrintTitle;
123 : bool bPrintFormulaText;
124 : bool bPrintFrame;
125 : bool bIsSaveOnlyUsedSymbols;
126 : bool bIgnoreSpacesRight;
127 : bool bToolboxVisible;
128 : bool bAutoRedraw;
129 : bool bFormulaCursor;
130 :
131 : SmCfgOther();
132 : };
133 :
134 :
135 12 : SmCfgOther::SmCfgOther()
136 : {
137 12 : ePrintSize = PRINT_SIZE_NORMAL;
138 12 : nPrintZoomFactor = 100;
139 : bPrintTitle = bPrintFormulaText =
140 : bPrintFrame = bIgnoreSpacesRight =
141 : bToolboxVisible = bAutoRedraw =
142 12 : bFormulaCursor = bIsSaveOnlyUsedSymbols = true;
143 12 : }
144 :
145 :
146 :
147 :
148 24 : SmFontFormat::SmFontFormat()
149 : {
150 24 : aName = FONTNAME_MATH;
151 24 : nCharSet = RTL_TEXTENCODING_UNICODE;
152 24 : nFamily = FAMILY_DONTKNOW;
153 24 : nPitch = PITCH_DONTKNOW;
154 24 : nWeight = WEIGHT_DONTKNOW;
155 24 : nItalic = ITALIC_NONE;
156 24 : }
157 :
158 :
159 0 : SmFontFormat::SmFontFormat( const vcl::Font &rFont )
160 : {
161 0 : aName = rFont.GetName();
162 0 : nCharSet = (sal_Int16) rFont.GetCharSet();
163 0 : nFamily = (sal_Int16) rFont.GetFamily();
164 0 : nPitch = (sal_Int16) rFont.GetPitch();
165 0 : nWeight = (sal_Int16) rFont.GetWeight();
166 0 : nItalic = (sal_Int16) rFont.GetItalic();
167 0 : }
168 :
169 :
170 660 : const vcl::Font SmFontFormat::GetFont() const
171 : {
172 660 : vcl::Font aRes;
173 660 : aRes.SetName( aName );
174 660 : aRes.SetCharSet( (rtl_TextEncoding) nCharSet );
175 660 : aRes.SetFamily( (FontFamily) nFamily );
176 660 : aRes.SetPitch( (FontPitch) nPitch );
177 660 : aRes.SetWeight( (FontWeight) nWeight );
178 660 : aRes.SetItalic( (FontItalic) nItalic );
179 660 : return aRes;
180 : }
181 :
182 :
183 0 : bool SmFontFormat::operator == ( const SmFontFormat &rFntFmt ) const
184 : {
185 0 : return aName == rFntFmt.aName &&
186 0 : nCharSet == rFntFmt.nCharSet &&
187 0 : nFamily == rFntFmt.nFamily &&
188 0 : nPitch == rFntFmt.nPitch &&
189 0 : nWeight == rFntFmt.nWeight &&
190 0 : nItalic == rFntFmt.nItalic;
191 : }
192 :
193 :
194 :
195 :
196 24 : SmFntFmtListEntry::SmFntFmtListEntry( const OUString &rId, const SmFontFormat &rFntFmt ) :
197 : aId (rId),
198 24 : aFntFmt (rFntFmt)
199 : {
200 24 : }
201 :
202 :
203 12 : SmFontFormatList::SmFontFormatList()
204 : {
205 12 : bModified = false;
206 12 : }
207 :
208 :
209 0 : void SmFontFormatList::Clear()
210 : {
211 0 : if (!aEntries.empty())
212 : {
213 0 : aEntries.clear();
214 0 : SetModified( true );
215 : }
216 0 : }
217 :
218 :
219 24 : void SmFontFormatList::AddFontFormat( const OUString &rFntFmtId,
220 : const SmFontFormat &rFntFmt )
221 : {
222 24 : const SmFontFormat *pFntFmt = GetFontFormat( rFntFmtId );
223 : OSL_ENSURE( !pFntFmt, "FontFormatId already exists" );
224 24 : if (!pFntFmt)
225 : {
226 24 : SmFntFmtListEntry aEntry( rFntFmtId, rFntFmt );
227 24 : aEntries.push_back( aEntry );
228 24 : SetModified( true );
229 : }
230 24 : }
231 :
232 :
233 0 : void SmFontFormatList::RemoveFontFormat( const OUString &rFntFmtId )
234 : {
235 :
236 : // search for entry
237 0 : for (size_t i = 0; i < aEntries.size(); ++i)
238 : {
239 0 : if (aEntries[i].aId == rFntFmtId)
240 : {
241 : // remove entry if found
242 0 : aEntries.erase( aEntries.begin() + i );
243 0 : SetModified( true );
244 0 : break;
245 : }
246 : }
247 0 : }
248 :
249 :
250 708 : const SmFontFormat * SmFontFormatList::GetFontFormat( const OUString &rFntFmtId ) const
251 : {
252 708 : const SmFontFormat *pRes = 0;
253 :
254 1272 : for (size_t i = 0; i < aEntries.size(); ++i)
255 : {
256 1224 : if (aEntries[i].aId == rFntFmtId)
257 : {
258 660 : pRes = &aEntries[i].aFntFmt;
259 660 : break;
260 : }
261 : }
262 :
263 708 : return pRes;
264 : }
265 :
266 :
267 :
268 0 : const SmFontFormat * SmFontFormatList::GetFontFormat( size_t nPos ) const
269 : {
270 0 : const SmFontFormat *pRes = 0;
271 0 : if (nPos < aEntries.size())
272 0 : pRes = &aEntries[nPos].aFntFmt;
273 0 : return pRes;
274 : }
275 :
276 :
277 0 : const OUString SmFontFormatList::GetFontFormatId( const SmFontFormat &rFntFmt ) const
278 : {
279 0 : OUString aRes;
280 :
281 0 : for (size_t i = 0; i < aEntries.size(); ++i)
282 : {
283 0 : if (aEntries[i].aFntFmt == rFntFmt)
284 : {
285 0 : aRes = aEntries[i].aId;
286 0 : break;
287 : }
288 : }
289 :
290 0 : return aRes;
291 : }
292 :
293 :
294 0 : const OUString SmFontFormatList::GetFontFormatId( const SmFontFormat &rFntFmt, bool bAdd )
295 : {
296 0 : OUString aRes( GetFontFormatId( rFntFmt) );
297 0 : if (aRes.isEmpty() && bAdd)
298 : {
299 0 : aRes = GetNewFontFormatId();
300 0 : AddFontFormat( aRes, rFntFmt );
301 : }
302 0 : return aRes;
303 : }
304 :
305 :
306 0 : const OUString SmFontFormatList::GetFontFormatId( size_t nPos ) const
307 : {
308 0 : OUString aRes;
309 0 : if (nPos < aEntries.size())
310 0 : aRes = aEntries[nPos].aId;
311 0 : return aRes;
312 : }
313 :
314 :
315 0 : const OUString SmFontFormatList::GetNewFontFormatId() const
316 : {
317 : // returns first unused FormatId
318 :
319 0 : OUString aPrefix("Id");
320 0 : sal_Int32 nCnt = GetCount();
321 0 : for (sal_Int32 i = 1; i <= nCnt + 1; ++i)
322 : {
323 0 : OUString aTmpId = aPrefix + OUString::number(i);
324 0 : if (!GetFontFormat(aTmpId))
325 0 : return aTmpId;
326 0 : }
327 : OSL_ENSURE( false, "failed to create new FontFormatId" );
328 :
329 0 : return OUString();
330 : }
331 :
332 :
333 :
334 14 : SmMathConfig::SmMathConfig() :
335 : ConfigItem(OUString(aRootName))
336 : , pFormat()
337 : , pOther()
338 : , pFontFormatList()
339 : , pSymbolMgr()
340 : , bIsOtherModified(false)
341 14 : , bIsFormatModified(false)
342 : {
343 14 : }
344 :
345 :
346 6 : SmMathConfig::~SmMathConfig()
347 : {
348 2 : Save();
349 4 : }
350 :
351 :
352 12 : void SmMathConfig::SetOtherModified( bool bVal )
353 : {
354 12 : bIsOtherModified = bVal;
355 12 : }
356 :
357 :
358 14 : void SmMathConfig::SetFormatModified( bool bVal )
359 : {
360 14 : bIsFormatModified = bVal;
361 14 : }
362 :
363 :
364 0 : void SmMathConfig::SetFontFormatListModified( bool bVal )
365 : {
366 0 : if (pFontFormatList)
367 0 : pFontFormatList->SetModified( bVal );
368 0 : }
369 :
370 :
371 660 : void SmMathConfig::ReadSymbol( SmSym &rSymbol,
372 : const OUString &rSymbolName,
373 : const OUString &rBaseNode ) const
374 : {
375 660 : Sequence< OUString > aNames = lcl_GetSymbolPropertyNames();
376 660 : sal_Int32 nProps = aNames.getLength();
377 :
378 1320 : OUString aDelim( "/" );
379 660 : OUString *pName = aNames.getArray();
380 3300 : for (sal_Int32 i = 0; i < nProps; ++i)
381 : {
382 2640 : OUString &rName = pName[i];
383 2640 : OUString aTmp( rName );
384 2640 : rName = rBaseNode;
385 2640 : rName += aDelim;
386 2640 : rName += rSymbolName;
387 2640 : rName += aDelim;
388 2640 : rName += aTmp;
389 2640 : }
390 :
391 1320 : const Sequence< Any > aValues = const_cast<SmMathConfig*>(this)->GetProperties(aNames);
392 :
393 660 : if (nProps && aValues.getLength() == nProps)
394 : {
395 660 : const Any * pValue = aValues.getConstArray();
396 660 : vcl::Font aFont;
397 660 : sal_UCS4 cChar = '\0';
398 1320 : OUString aSet;
399 660 : bool bPredefined = false;
400 :
401 1320 : OUString aTmpStr;
402 660 : sal_Int32 nTmp32 = 0;
403 660 : bool bTmp = false;
404 :
405 660 : bool bOK = true;
406 660 : if (pValue->hasValue() && (*pValue >>= nTmp32))
407 660 : cChar = static_cast< sal_UCS4 >( nTmp32 );
408 : else
409 0 : bOK = false;
410 660 : ++pValue;
411 660 : if (pValue->hasValue() && (*pValue >>= aTmpStr))
412 660 : aSet = aTmpStr;
413 : else
414 0 : bOK = false;
415 660 : ++pValue;
416 660 : if (pValue->hasValue() && (*pValue >>= bTmp))
417 660 : bPredefined = bTmp;
418 : else
419 0 : bOK = false;
420 660 : ++pValue;
421 660 : if (pValue->hasValue() && (*pValue >>= aTmpStr))
422 : {
423 660 : const SmFontFormat *pFntFmt = GetFontFormatList().GetFontFormat( aTmpStr );
424 : OSL_ENSURE( pFntFmt, "unknown FontFormat" );
425 660 : if (pFntFmt)
426 660 : aFont = pFntFmt->GetFont();
427 : }
428 : else
429 0 : bOK = false;
430 660 : ++pValue;
431 :
432 660 : if (bOK)
433 : {
434 660 : OUString aUiName( rSymbolName );
435 1320 : OUString aUiSetName( aSet );
436 660 : if (bPredefined)
437 : {
438 660 : OUString aTmp;
439 660 : aTmp = GetUiSymbolName( rSymbolName );
440 : OSL_ENSURE( !aTmp.isEmpty(), "localized symbol-name not found" );
441 660 : if (!aTmp.isEmpty())
442 660 : aUiName = aTmp;
443 660 : aTmp = GetUiSymbolSetName( aSet );
444 : OSL_ENSURE( !aTmp.isEmpty(), "localized symbolset-name not found" );
445 660 : if (!aTmp.isEmpty())
446 660 : aUiSetName = aTmp;
447 : }
448 :
449 660 : rSymbol = SmSym( aUiName, aFont, cChar, aUiSetName, bPredefined );
450 660 : if (aUiName != rSymbolName)
451 660 : rSymbol.SetExportName( rSymbolName );
452 : }
453 : else
454 : {
455 : SAL_WARN("starmath", "symbol read error");
456 660 : }
457 660 : }
458 660 : }
459 :
460 :
461 3244 : SmSymbolManager & SmMathConfig::GetSymbolManager()
462 : {
463 3244 : if (!pSymbolMgr)
464 : {
465 10 : pSymbolMgr.reset(new SmSymbolManager);
466 10 : pSymbolMgr->Load();
467 : }
468 3244 : return *pSymbolMgr;
469 : }
470 :
471 :
472 0 : void SmMathConfig::ImplCommit()
473 : {
474 0 : Save();
475 0 : }
476 :
477 :
478 2 : void SmMathConfig::Save()
479 : {
480 2 : SaveOther();
481 2 : SaveFormat();
482 2 : SaveFontFormatList();
483 2 : }
484 :
485 :
486 10 : void SmMathConfig::GetSymbols( std::vector< SmSym > &rSymbols ) const
487 : {
488 10 : Sequence< OUString > aNodes(const_cast<SmMathConfig*>(this)->GetNodeNames(SYMBOL_LIST));
489 10 : const OUString *pNode = aNodes.getConstArray();
490 10 : sal_Int32 nNodes = aNodes.getLength();
491 :
492 10 : rSymbols.resize( nNodes );
493 10 : std::vector< SmSym >::iterator aIt( rSymbols.begin() );
494 10 : std::vector< SmSym >::iterator aEnd( rSymbols.end() );
495 680 : while (aIt != aEnd)
496 : {
497 660 : ReadSymbol( *aIt++, *pNode++, SYMBOL_LIST );
498 10 : }
499 10 : }
500 :
501 :
502 0 : void SmMathConfig::SetSymbols( const std::vector< SmSym > &rNewSymbols )
503 : {
504 0 : sal_uIntPtr nCount = rNewSymbols.size();
505 :
506 0 : Sequence< OUString > aNames = lcl_GetSymbolPropertyNames();
507 0 : const OUString *pNames = aNames.getConstArray();
508 0 : sal_uIntPtr nSymbolProps = sal::static_int_cast< sal_uInt32 >(aNames.getLength());
509 :
510 0 : Sequence< PropertyValue > aValues( nCount * nSymbolProps );
511 0 : PropertyValue *pValues = aValues.getArray();
512 :
513 0 : PropertyValue *pVal = pValues;
514 0 : OUString aDelim( "/" );
515 0 : std::vector< SmSym >::const_iterator aIt( rNewSymbols.begin() );
516 0 : std::vector< SmSym >::const_iterator aEnd( rNewSymbols.end() );
517 0 : while (aIt != aEnd)
518 : {
519 0 : const SmSym &rSymbol = *aIt++;
520 0 : OUString aNodeNameDelim( SYMBOL_LIST );
521 0 : aNodeNameDelim += aDelim;
522 0 : aNodeNameDelim += rSymbol.GetExportName();
523 0 : aNodeNameDelim += aDelim;
524 :
525 0 : const OUString *pName = pNames;
526 :
527 : // Char
528 0 : pVal->Name = aNodeNameDelim;
529 0 : pVal->Name += *pName++;
530 0 : pVal->Value <<= static_cast< sal_UCS4 >( rSymbol.GetCharacter() );
531 0 : pVal++;
532 : // Set
533 0 : pVal->Name = aNodeNameDelim;
534 0 : pVal->Name += *pName++;
535 0 : OUString aTmp( rSymbol.GetSymbolSetName() );
536 0 : if (rSymbol.IsPredefined())
537 0 : aTmp = GetExportSymbolSetName( aTmp );
538 0 : pVal->Value <<= aTmp;
539 0 : pVal++;
540 : // Predefined
541 0 : pVal->Name = aNodeNameDelim;
542 0 : pVal->Name += *pName++;
543 0 : pVal->Value <<= rSymbol.IsPredefined();
544 0 : pVal++;
545 : // FontFormatId
546 0 : SmFontFormat aFntFmt( rSymbol.GetFace() );
547 0 : OUString aFntFmtId( GetFontFormatList().GetFontFormatId( aFntFmt, true ) );
548 : OSL_ENSURE( !aFntFmtId.isEmpty(), "FontFormatId not found" );
549 0 : pVal->Name = aNodeNameDelim;
550 0 : pVal->Name += *pName++;
551 0 : pVal->Value <<= aFntFmtId;
552 0 : pVal++;
553 0 : }
554 : OSL_ENSURE( pVal - pValues == sal::static_int_cast< ptrdiff_t >(nCount * nSymbolProps), "properties missing" );
555 0 : ReplaceSetProperties( SYMBOL_LIST, aValues );
556 :
557 0 : StripFontFormatList( rNewSymbols );
558 0 : SaveFontFormatList();
559 0 : }
560 :
561 :
562 662 : SmFontFormatList & SmMathConfig::GetFontFormatList()
563 : {
564 662 : if (!pFontFormatList)
565 : {
566 12 : LoadFontFormatList();
567 : }
568 662 : return *pFontFormatList;
569 : }
570 :
571 :
572 12 : void SmMathConfig::LoadFontFormatList()
573 : {
574 12 : if (!pFontFormatList)
575 12 : pFontFormatList.reset(new SmFontFormatList);
576 : else
577 0 : pFontFormatList->Clear();
578 :
579 12 : Sequence< OUString > aNodes( GetNodeNames( FONT_FORMAT_LIST ) );
580 12 : const OUString *pNode = aNodes.getConstArray();
581 12 : sal_Int32 nNodes = aNodes.getLength();
582 :
583 36 : for (sal_Int32 i = 0; i < nNodes; ++i)
584 : {
585 24 : SmFontFormat aFntFmt;
586 24 : ReadFontFormat( aFntFmt, pNode[i], FONT_FORMAT_LIST );
587 24 : if (!pFontFormatList->GetFontFormat( pNode[i] ))
588 : {
589 : OSL_ENSURE( 0 == pFontFormatList->GetFontFormat( pNode[i] ),
590 : "FontFormat ID already exists" );
591 24 : pFontFormatList->AddFontFormat( pNode[i], aFntFmt );
592 : }
593 24 : }
594 12 : pFontFormatList->SetModified( false );
595 12 : }
596 :
597 :
598 24 : void SmMathConfig::ReadFontFormat( SmFontFormat &rFontFormat,
599 : const OUString &rSymbolName, const OUString &rBaseNode ) const
600 : {
601 24 : Sequence< OUString > aNames = lcl_GetFontPropertyNames();
602 24 : sal_Int32 nProps = aNames.getLength();
603 :
604 48 : OUString aDelim( "/" );
605 24 : OUString *pName = aNames.getArray();
606 168 : for (sal_Int32 i = 0; i < nProps; ++i)
607 : {
608 144 : OUString &rName = pName[i];
609 144 : OUString aTmp( rName );
610 144 : rName = rBaseNode;
611 144 : rName += aDelim;
612 144 : rName += rSymbolName;
613 144 : rName += aDelim;
614 144 : rName += aTmp;
615 144 : }
616 :
617 48 : const Sequence< Any > aValues = const_cast<SmMathConfig*>(this)->GetProperties(aNames);
618 :
619 24 : if (nProps && aValues.getLength() == nProps)
620 : {
621 24 : const Any * pValue = aValues.getConstArray();
622 :
623 24 : OUString aTmpStr;
624 24 : sal_Int16 nTmp16 = 0;
625 :
626 24 : bool bOK = true;
627 24 : if (pValue->hasValue() && (*pValue >>= aTmpStr))
628 24 : rFontFormat.aName = aTmpStr;
629 : else
630 0 : bOK = false;
631 24 : ++pValue;
632 24 : if (pValue->hasValue() && (*pValue >>= nTmp16))
633 24 : rFontFormat.nCharSet = nTmp16; // 6.0 file-format GetSOLoadTextEncoding not needed
634 : else
635 0 : bOK = false;
636 24 : ++pValue;
637 24 : if (pValue->hasValue() && (*pValue >>= nTmp16))
638 24 : rFontFormat.nFamily = nTmp16;
639 : else
640 0 : bOK = false;
641 24 : ++pValue;
642 24 : if (pValue->hasValue() && (*pValue >>= nTmp16))
643 24 : rFontFormat.nPitch = nTmp16;
644 : else
645 0 : bOK = false;
646 24 : ++pValue;
647 24 : if (pValue->hasValue() && (*pValue >>= nTmp16))
648 24 : rFontFormat.nWeight = nTmp16;
649 : else
650 0 : bOK = false;
651 24 : ++pValue;
652 24 : if (pValue->hasValue() && (*pValue >>= nTmp16))
653 24 : rFontFormat.nItalic = nTmp16;
654 : else
655 0 : bOK = false;
656 24 : ++pValue;
657 :
658 : OSL_ENSURE( bOK, "read FontFormat failed" );
659 24 : (void)bOK;
660 24 : }
661 24 : }
662 :
663 :
664 2 : void SmMathConfig::SaveFontFormatList()
665 : {
666 2 : SmFontFormatList &rFntFmtList = GetFontFormatList();
667 :
668 2 : if (!rFntFmtList.IsModified())
669 4 : return;
670 :
671 0 : Sequence< OUString > aNames = lcl_GetFontPropertyNames();
672 0 : sal_Int32 nSymbolProps = aNames.getLength();
673 :
674 0 : size_t nCount = rFntFmtList.GetCount();
675 :
676 0 : Sequence< PropertyValue > aValues( nCount * nSymbolProps );
677 0 : PropertyValue *pValues = aValues.getArray();
678 :
679 0 : PropertyValue *pVal = pValues;
680 0 : OUString aDelim( "/" );
681 0 : for (size_t i = 0; i < nCount; ++i)
682 : {
683 0 : OUString aFntFmtId(rFntFmtList.GetFontFormatId(i));
684 0 : const SmFontFormat *pFntFmt = rFntFmtList.GetFontFormat(i);
685 : assert(pFntFmt);
686 0 : const SmFontFormat aFntFmt(*pFntFmt);
687 :
688 0 : OUString aNodeNameDelim( FONT_FORMAT_LIST );
689 0 : aNodeNameDelim += aDelim;
690 0 : aNodeNameDelim += aFntFmtId;
691 0 : aNodeNameDelim += aDelim;
692 :
693 0 : const OUString *pName = aNames.getConstArray();
694 :
695 : // Name
696 0 : pVal->Name = aNodeNameDelim;
697 0 : pVal->Name += *pName++;
698 0 : pVal->Value <<= OUString( aFntFmt.aName );
699 0 : pVal++;
700 : // CharSet
701 0 : pVal->Name = aNodeNameDelim;
702 0 : pVal->Name += *pName++;
703 0 : pVal->Value <<= (sal_Int16) aFntFmt.nCharSet; // 6.0 file-format GetSOStoreTextEncoding not needed
704 0 : pVal++;
705 : // Family
706 0 : pVal->Name = aNodeNameDelim;
707 0 : pVal->Name += *pName++;
708 0 : pVal->Value <<= (sal_Int16) aFntFmt.nFamily;
709 0 : pVal++;
710 : // Pitch
711 0 : pVal->Name = aNodeNameDelim;
712 0 : pVal->Name += *pName++;
713 0 : pVal->Value <<= (sal_Int16) aFntFmt.nPitch;
714 0 : pVal++;
715 : // Weight
716 0 : pVal->Name = aNodeNameDelim;
717 0 : pVal->Name += *pName++;
718 0 : pVal->Value <<= (sal_Int16) aFntFmt.nWeight;
719 0 : pVal++;
720 : // Italic
721 0 : pVal->Name = aNodeNameDelim;
722 0 : pVal->Name += *pName++;
723 0 : pVal->Value <<= (sal_Int16) aFntFmt.nItalic;
724 0 : pVal++;
725 0 : }
726 : OSL_ENSURE( sal::static_int_cast<size_t>(pVal - pValues) == nCount * nSymbolProps, "properties missing" );
727 0 : ReplaceSetProperties( FONT_FORMAT_LIST, aValues );
728 :
729 0 : rFntFmtList.SetModified( false );
730 : }
731 :
732 :
733 0 : void SmMathConfig::StripFontFormatList( const std::vector< SmSym > &rSymbols )
734 : {
735 : size_t i;
736 :
737 : // build list of used font-formats only
738 : //!! font-format IDs may be different !!
739 0 : SmFontFormatList aUsedList;
740 0 : for (i = 0; i < rSymbols.size(); ++i)
741 : {
742 : OSL_ENSURE( rSymbols[i].GetName().getLength() > 0, "non named symbol" );
743 0 : aUsedList.GetFontFormatId( SmFontFormat( rSymbols[i].GetFace() ) , true );
744 : }
745 0 : const SmFormat & rStdFmt = GetStandardFormat();
746 0 : for (i = FNT_BEGIN; i <= FNT_END; ++i)
747 : {
748 0 : aUsedList.GetFontFormatId( SmFontFormat( rStdFmt.GetFont( i ) ) , true );
749 : }
750 :
751 : // remove unused font-formats from list
752 0 : SmFontFormatList &rFntFmtList = GetFontFormatList();
753 0 : size_t nCnt = rFntFmtList.GetCount();
754 0 : std::unique_ptr<SmFontFormat[]> pTmpFormat(new SmFontFormat[ nCnt ]);
755 0 : std::unique_ptr<OUString[]> pId(new OUString[ nCnt ]);
756 : size_t k;
757 0 : for (k = 0; k < nCnt; ++k)
758 : {
759 0 : pTmpFormat[k] = *rFntFmtList.GetFontFormat( k );
760 0 : pId[k] = rFntFmtList.GetFontFormatId( k );
761 : }
762 0 : for (k = 0; k < nCnt; ++k)
763 : {
764 0 : if (aUsedList.GetFontFormatId( pTmpFormat[k] ).isEmpty())
765 : {
766 0 : rFntFmtList.RemoveFontFormat( pId[k] );
767 : }
768 0 : }
769 0 : }
770 :
771 :
772 12 : void SmMathConfig::LoadOther()
773 : {
774 12 : if (!pOther)
775 12 : pOther.reset(new SmCfgOther);
776 :
777 12 : pOther->bPrintTitle = officecfg::Office::Math::Print::Title::get();
778 12 : pOther->bPrintFormulaText = officecfg::Office::Math::Print::FormulaText::get();
779 12 : pOther->bPrintFrame = officecfg::Office::Math::Print::Frame::get();
780 12 : pOther->ePrintSize = static_cast<SmPrintSize>(officecfg::Office::Math::Print::Size::get());
781 12 : pOther->nPrintZoomFactor = officecfg::Office::Math::Print::ZoomFactor::get();
782 12 : pOther->bIsSaveOnlyUsedSymbols = officecfg::Office::Math::LoadSave::IsSaveOnlyUsedSymbols::get();
783 12 : pOther->bIgnoreSpacesRight = officecfg::Office::Math::Misc::IgnoreSpacesRight::get();
784 12 : pOther->bToolboxVisible = officecfg::Office::Math::View::ToolboxVisible::get();
785 12 : pOther->bAutoRedraw = officecfg::Office::Math::View::AutoRedraw::get();
786 12 : pOther->bFormulaCursor = officecfg::Office::Math::View::FormulaCursor::get();
787 12 : SetOtherModified( false );
788 12 : }
789 :
790 :
791 2 : void SmMathConfig::SaveOther()
792 : {
793 2 : if (!pOther || !IsOtherModified())
794 4 : return;
795 :
796 0 : std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
797 :
798 0 : officecfg::Office::Math::Print::Title::set(pOther->bPrintTitle, batch);
799 0 : officecfg::Office::Math::Print::FormulaText::set(pOther->bPrintFormulaText, batch);
800 0 : officecfg::Office::Math::Print::Frame::set(pOther->bPrintFrame, batch);
801 0 : officecfg::Office::Math::Print::Size::set(pOther->ePrintSize, batch);
802 0 : officecfg::Office::Math::Print::ZoomFactor::set(pOther->nPrintZoomFactor, batch);
803 0 : officecfg::Office::Math::LoadSave::IsSaveOnlyUsedSymbols::set(pOther->bIsSaveOnlyUsedSymbols, batch);
804 0 : officecfg::Office::Math::Misc::IgnoreSpacesRight::set(pOther->bIgnoreSpacesRight, batch);
805 0 : officecfg::Office::Math::View::ToolboxVisible::set(pOther->bToolboxVisible, batch);
806 0 : officecfg::Office::Math::View::AutoRedraw::set(pOther->bAutoRedraw, batch);
807 0 : officecfg::Office::Math::View::FormulaCursor::set(pOther->bFormulaCursor, batch);
808 :
809 0 : batch->commit();
810 0 : SetOtherModified( false );
811 : }
812 :
813 14 : void SmMathConfig::LoadFormat()
814 : {
815 14 : if (!pFormat)
816 14 : pFormat.reset(new SmFormat);
817 :
818 :
819 14 : Sequence< OUString > aNames = lcl_GetFormatPropertyNames();
820 :
821 14 : sal_Int32 nProps = aNames.getLength();
822 :
823 28 : Sequence< Any > aValues( GetProperties( aNames ) );
824 14 : if (nProps && aValues.getLength() == nProps)
825 : {
826 14 : const Any *pValues = aValues.getConstArray();
827 14 : const Any *pVal = pValues;
828 :
829 14 : OUString aTmpStr;
830 14 : sal_Int16 nTmp16 = 0;
831 14 : bool bTmp = false;
832 :
833 : // StandardFormat/Textmode
834 14 : if (pVal->hasValue() && (*pVal >>= bTmp))
835 14 : pFormat->SetTextmode( bTmp );
836 14 : ++pVal;
837 : // StandardFormat/GreekCharStyle
838 14 : if (pVal->hasValue() && (*pVal >>= nTmp16))
839 14 : pFormat->SetGreekCharStyle( nTmp16 );
840 14 : ++pVal;
841 : // StandardFormat/ScaleNormalBracket
842 14 : if (pVal->hasValue() && (*pVal >>= bTmp))
843 14 : pFormat->SetScaleNormalBrackets( bTmp );
844 14 : ++pVal;
845 : // StandardFormat/HorizontalAlignment
846 14 : if (pVal->hasValue() && (*pVal >>= nTmp16))
847 14 : pFormat->SetHorAlign( (SmHorAlign) nTmp16 );
848 14 : ++pVal;
849 : // StandardFormat/BaseSize
850 14 : if (pVal->hasValue() && (*pVal >>= nTmp16))
851 14 : pFormat->SetBaseSize( Size(0, SmPtsTo100th_mm( nTmp16 )) );
852 14 : ++pVal;
853 :
854 : sal_uInt16 i;
855 84 : for (i = SIZ_BEGIN; i <= SIZ_END; ++i)
856 : {
857 70 : if (pVal->hasValue() && (*pVal >>= nTmp16))
858 70 : pFormat->SetRelSize( i, nTmp16 );
859 70 : ++pVal;
860 : }
861 :
862 350 : for (i = DIS_BEGIN; i <= DIS_END; ++i)
863 : {
864 336 : if (pVal->hasValue() && (*pVal >>= nTmp16))
865 336 : pFormat->SetDistance( i, nTmp16 );
866 336 : ++pVal;
867 : }
868 :
869 14 : LanguageType nLang = Application::GetSettings().GetUILanguageTag().getLanguageType();
870 112 : for (i = FNT_BEGIN; i < FNT_END; ++i)
871 : {
872 98 : vcl::Font aFnt;
873 98 : bool bUseDefaultFont = true;
874 98 : if (pVal->hasValue() && (*pVal >>= aTmpStr))
875 : {
876 98 : bUseDefaultFont = aTmpStr.isEmpty();
877 98 : if (bUseDefaultFont)
878 : {
879 98 : aFnt = pFormat->GetFont( i );
880 98 : aFnt.SetName( GetDefaultFontName( nLang, i ) );
881 : }
882 : else
883 : {
884 0 : const SmFontFormat *pFntFmt = GetFontFormatList().GetFontFormat( aTmpStr );
885 : OSL_ENSURE( pFntFmt, "unknown FontFormat" );
886 0 : if (pFntFmt)
887 0 : aFnt = pFntFmt->GetFont();
888 : }
889 : }
890 98 : ++pVal;
891 :
892 98 : aFnt.SetSize( pFormat->GetBaseSize() );
893 98 : pFormat->SetFont( i, aFnt, bUseDefaultFont );
894 98 : }
895 :
896 : OSL_ENSURE( pVal - pValues == nProps, "property mismatch" );
897 14 : SetFormatModified( false );
898 14 : }
899 14 : }
900 :
901 :
902 2 : void SmMathConfig::SaveFormat()
903 : {
904 2 : if (!pFormat || !IsFormatModified())
905 4 : return;
906 :
907 0 : const Sequence< OUString > aNames = lcl_GetFormatPropertyNames();
908 0 : sal_Int32 nProps = aNames.getLength();
909 :
910 0 : Sequence< Any > aValues( nProps );
911 0 : Any *pValues = aValues.getArray();
912 0 : Any *pValue = pValues;
913 :
914 : // StandardFormat/Textmode
915 0 : *pValue++ <<= pFormat->IsTextmode();
916 : // StandardFormat/GreekCharStyle
917 0 : *pValue++ <<= (sal_Int16) pFormat->GetGreekCharStyle();
918 : // StandardFormat/ScaleNormalBracket
919 0 : *pValue++ <<= pFormat->IsScaleNormalBrackets();
920 : // StandardFormat/HorizontalAlignment
921 0 : *pValue++ <<= (sal_Int16) pFormat->GetHorAlign();
922 : // StandardFormat/BaseSize
923 0 : *pValue++ <<= (sal_Int16) SmRoundFraction( Sm100th_mmToPts(
924 0 : pFormat->GetBaseSize().Height() ) );
925 :
926 : sal_uInt16 i;
927 0 : for (i = SIZ_BEGIN; i <= SIZ_END; ++i)
928 0 : *pValue++ <<= (sal_Int16) pFormat->GetRelSize( i );
929 :
930 0 : for (i = DIS_BEGIN; i <= DIS_END; ++i)
931 0 : *pValue++ <<= (sal_Int16) pFormat->GetDistance( i );
932 :
933 0 : for (i = FNT_BEGIN; i < FNT_END; ++i)
934 : {
935 0 : OUString aFntFmtId;
936 :
937 0 : if (!pFormat->IsDefaultFont( i ))
938 : {
939 0 : SmFontFormat aFntFmt( pFormat->GetFont( i ) );
940 0 : aFntFmtId = GetFontFormatList().GetFontFormatId( aFntFmt, true );
941 0 : OSL_ENSURE( !aFntFmtId.isEmpty(), "FontFormatId not found" );
942 : }
943 :
944 0 : *pValue++ <<= aFntFmtId;
945 0 : }
946 :
947 : OSL_ENSURE( pValue - pValues == nProps, "property mismatch" );
948 0 : PutProperties( aNames , aValues );
949 :
950 0 : SetFormatModified( false );
951 : }
952 :
953 :
954 340 : const SmFormat & SmMathConfig::GetStandardFormat() const
955 : {
956 340 : if (!pFormat)
957 14 : const_cast<SmMathConfig*>(this)->LoadFormat();
958 340 : return *pFormat;
959 : }
960 :
961 :
962 0 : void SmMathConfig::SetStandardFormat( const SmFormat &rFormat, bool bSaveFontFormatList )
963 : {
964 0 : if (!pFormat)
965 0 : LoadFormat();
966 0 : if (rFormat != *pFormat)
967 : {
968 0 : *pFormat = rFormat;
969 0 : SetFormatModified( true );
970 0 : SaveFormat();
971 :
972 0 : if (bSaveFontFormatList)
973 : {
974 : // needed for SmFontTypeDialog's DefaultButtonClickHdl
975 0 : SetFontFormatListModified( true );
976 0 : SaveFontFormatList();
977 : }
978 : }
979 0 : }
980 :
981 :
982 17 : SmPrintSize SmMathConfig::GetPrintSize() const
983 : {
984 17 : if (!pOther)
985 2 : const_cast<SmMathConfig*>(this)->LoadOther();
986 17 : return pOther->ePrintSize;
987 : }
988 :
989 :
990 0 : void SmMathConfig::SetPrintSize( SmPrintSize eSize )
991 : {
992 0 : if (!pOther)
993 0 : LoadOther();
994 0 : if (eSize != pOther->ePrintSize)
995 : {
996 0 : pOther->ePrintSize = eSize;
997 0 : SetOtherModified( true );
998 : }
999 0 : }
1000 :
1001 :
1002 17 : sal_uInt16 SmMathConfig::GetPrintZoomFactor() const
1003 : {
1004 17 : if (!pOther)
1005 0 : const_cast<SmMathConfig*>(this)->LoadOther();
1006 17 : return pOther->nPrintZoomFactor;
1007 : }
1008 :
1009 :
1010 0 : void SmMathConfig::SetPrintZoomFactor( sal_uInt16 nVal )
1011 : {
1012 0 : if (!pOther)
1013 0 : LoadOther();
1014 0 : if (nVal != pOther->nPrintZoomFactor)
1015 : {
1016 0 : pOther->nPrintZoomFactor = nVal;
1017 0 : SetOtherModified( true );
1018 : }
1019 0 : }
1020 :
1021 :
1022 0 : void SmMathConfig::SetOtherIfNotEqual( bool &rbItem, bool bNewVal )
1023 : {
1024 0 : if (bNewVal != rbItem)
1025 : {
1026 0 : rbItem = bNewVal;
1027 0 : SetOtherModified( true );
1028 : }
1029 0 : }
1030 :
1031 :
1032 17 : bool SmMathConfig::IsPrintTitle() const
1033 : {
1034 17 : if (!pOther)
1035 0 : const_cast<SmMathConfig*>(this)->LoadOther();
1036 17 : return pOther->bPrintTitle;
1037 : }
1038 :
1039 :
1040 0 : void SmMathConfig::SetPrintTitle( bool bVal )
1041 : {
1042 0 : if (!pOther)
1043 0 : LoadOther();
1044 0 : SetOtherIfNotEqual( pOther->bPrintTitle, bVal );
1045 0 : }
1046 :
1047 :
1048 17 : bool SmMathConfig::IsPrintFormulaText() const
1049 : {
1050 17 : if (!pOther)
1051 0 : const_cast<SmMathConfig*>(this)->LoadOther();
1052 17 : return pOther->bPrintFormulaText;
1053 : }
1054 :
1055 :
1056 0 : void SmMathConfig::SetPrintFormulaText( bool bVal )
1057 : {
1058 0 : if (!pOther)
1059 0 : LoadOther();
1060 0 : SetOtherIfNotEqual( pOther->bPrintFormulaText, bVal );
1061 0 : }
1062 :
1063 578 : bool SmMathConfig::IsSaveOnlyUsedSymbols() const
1064 : {
1065 578 : if (!pOther)
1066 9 : const_cast<SmMathConfig*>(this)->LoadOther();
1067 578 : return pOther->bIsSaveOnlyUsedSymbols;
1068 : }
1069 :
1070 17 : bool SmMathConfig::IsPrintFrame() const
1071 : {
1072 17 : if (!pOther)
1073 0 : const_cast<SmMathConfig*>(this)->LoadOther();
1074 17 : return pOther->bPrintFrame;
1075 : }
1076 :
1077 :
1078 0 : void SmMathConfig::SetPrintFrame( bool bVal )
1079 : {
1080 0 : if (!pOther)
1081 0 : LoadOther();
1082 0 : SetOtherIfNotEqual( pOther->bPrintFrame, bVal );
1083 0 : }
1084 :
1085 :
1086 0 : void SmMathConfig::SetSaveOnlyUsedSymbols( bool bVal )
1087 : {
1088 0 : if (!pOther)
1089 0 : LoadOther();
1090 0 : SetOtherIfNotEqual( pOther->bIsSaveOnlyUsedSymbols, bVal );
1091 0 : }
1092 :
1093 :
1094 17 : bool SmMathConfig::IsIgnoreSpacesRight() const
1095 : {
1096 17 : if (!pOther)
1097 0 : const_cast<SmMathConfig*>(this)->LoadOther();
1098 17 : return pOther->bIgnoreSpacesRight;
1099 : }
1100 :
1101 :
1102 0 : void SmMathConfig::SetIgnoreSpacesRight( bool bVal )
1103 : {
1104 0 : if (!pOther)
1105 0 : LoadOther();
1106 0 : SetOtherIfNotEqual( pOther->bIgnoreSpacesRight, bVal );
1107 0 : }
1108 :
1109 :
1110 22 : bool SmMathConfig::IsAutoRedraw() const
1111 : {
1112 22 : if (!pOther)
1113 1 : const_cast<SmMathConfig*>(this)->LoadOther();
1114 22 : return pOther->bAutoRedraw;
1115 : }
1116 :
1117 :
1118 0 : void SmMathConfig::SetAutoRedraw( bool bVal )
1119 : {
1120 0 : if (!pOther)
1121 0 : LoadOther();
1122 0 : SetOtherIfNotEqual( pOther->bAutoRedraw, bVal );
1123 0 : }
1124 :
1125 :
1126 34 : bool SmMathConfig::IsShowFormulaCursor() const
1127 : {
1128 34 : if (!pOther)
1129 0 : const_cast<SmMathConfig*>(this)->LoadOther();
1130 34 : return pOther->bFormulaCursor;
1131 : }
1132 :
1133 :
1134 0 : void SmMathConfig::SetShowFormulaCursor( bool bVal )
1135 : {
1136 0 : if (!pOther)
1137 0 : LoadOther();
1138 0 : SetOtherIfNotEqual( pOther->bFormulaCursor, bVal );
1139 0 : }
1140 :
1141 0 : void SmMathConfig::Notify( const com::sun::star::uno::Sequence< OUString >& )
1142 0 : {}
1143 :
1144 :
1145 0 : void SmMathConfig::ItemSetToConfig(const SfxItemSet &rSet)
1146 : {
1147 0 : const SfxPoolItem *pItem = NULL;
1148 :
1149 : sal_uInt16 nU16;
1150 : bool bVal;
1151 0 : if (rSet.GetItemState(SID_PRINTSIZE, true, &pItem) == SfxItemState::SET)
1152 0 : { nU16 = static_cast<const SfxUInt16Item *>(pItem)->GetValue();
1153 0 : SetPrintSize( (SmPrintSize) nU16 );
1154 : }
1155 0 : if (rSet.GetItemState(SID_PRINTZOOM, true, &pItem) == SfxItemState::SET)
1156 0 : { nU16 = static_cast<const SfxUInt16Item *>(pItem)->GetValue();
1157 0 : SetPrintZoomFactor( nU16 );
1158 : }
1159 0 : if (rSet.GetItemState(SID_PRINTTITLE, true, &pItem) == SfxItemState::SET)
1160 0 : { bVal = static_cast<const SfxBoolItem *>(pItem)->GetValue();
1161 0 : SetPrintTitle( bVal );
1162 : }
1163 0 : if (rSet.GetItemState(SID_PRINTTEXT, true, &pItem) == SfxItemState::SET)
1164 0 : { bVal = static_cast<const SfxBoolItem *>(pItem)->GetValue();
1165 0 : SetPrintFormulaText( bVal );
1166 : }
1167 0 : if (rSet.GetItemState(SID_PRINTFRAME, true, &pItem) == SfxItemState::SET)
1168 0 : { bVal = static_cast<const SfxBoolItem *>(pItem)->GetValue();
1169 0 : SetPrintFrame( bVal );
1170 : }
1171 0 : if (rSet.GetItemState(SID_AUTOREDRAW, true, &pItem) == SfxItemState::SET)
1172 0 : { bVal = static_cast<const SfxBoolItem *>(pItem)->GetValue();
1173 0 : SetAutoRedraw( bVal );
1174 : }
1175 0 : if (rSet.GetItemState(SID_NO_RIGHT_SPACES, true, &pItem) == SfxItemState::SET)
1176 0 : { bVal = static_cast<const SfxBoolItem *>(pItem)->GetValue();
1177 0 : if (IsIgnoreSpacesRight() != bVal)
1178 : {
1179 0 : SetIgnoreSpacesRight( bVal );
1180 :
1181 : // reformat (displayed) formulas accordingly
1182 0 : Broadcast(SfxSimpleHint(HINT_FORMATCHANGED));
1183 : }
1184 : }
1185 0 : if (rSet.GetItemState(SID_SAVE_ONLY_USED_SYMBOLS, true, &pItem) == SfxItemState::SET)
1186 0 : { bVal = static_cast<const SfxBoolItem *>(pItem)->GetValue();
1187 0 : SetSaveOnlyUsedSymbols( bVal );
1188 : }
1189 :
1190 0 : SaveOther();
1191 0 : }
1192 :
1193 :
1194 17 : void SmMathConfig::ConfigToItemSet(SfxItemSet &rSet) const
1195 : {
1196 17 : const SfxItemPool *pPool = rSet.GetPool();
1197 :
1198 17 : rSet.Put(SfxUInt16Item(pPool->GetWhich(SID_PRINTSIZE),
1199 34 : (sal_uInt16) GetPrintSize()));
1200 17 : rSet.Put(SfxUInt16Item(pPool->GetWhich(SID_PRINTZOOM),
1201 34 : (sal_uInt16) GetPrintZoomFactor()));
1202 :
1203 17 : rSet.Put(SfxBoolItem(pPool->GetWhich(SID_PRINTTITLE), IsPrintTitle()));
1204 17 : rSet.Put(SfxBoolItem(pPool->GetWhich(SID_PRINTTEXT), IsPrintFormulaText()));
1205 17 : rSet.Put(SfxBoolItem(pPool->GetWhich(SID_PRINTFRAME), IsPrintFrame()));
1206 17 : rSet.Put(SfxBoolItem(pPool->GetWhich(SID_AUTOREDRAW), IsAutoRedraw()));
1207 17 : rSet.Put(SfxBoolItem(pPool->GetWhich(SID_NO_RIGHT_SPACES), IsIgnoreSpacesRight()));
1208 17 : rSet.Put(SfxBoolItem(pPool->GetWhich(SID_SAVE_ONLY_USED_SYMBOLS), IsSaveOnlyUsedSymbols()));
1209 59 : }
1210 :
1211 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|