LibreOffice Module sc (master)  1
xlstyle.cxx
Go to the documentation of this file.
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 <xlstyle.hxx>
21 #include <com/sun/star/awt/FontFamily.hpp>
22 #include <com/sun/star/awt/FontSlant.hpp>
23 #include <com/sun/star/awt/FontStrikeout.hpp>
24 #include <com/sun/star/awt/FontUnderline.hpp>
25 #include <com/sun/star/i18n/ScriptType.hpp>
26 #include <vcl/svapp.hxx>
27 #include <vcl/settings.hxx>
28 #include <vcl/font.hxx>
29 #include <sal/macros.h>
30 #include <sal/log.hxx>
31 #include <rtl/tencinfo.h>
32 #include <svtools/colorcfg.hxx>
33 #include <vcl/unohelp.hxx>
34 #include <editeng/svxfont.hxx>
35 #include <o3tl/unit_conversion.hxx>
36 #include <global.hxx>
37 #include <xlroot.hxx>
38 #include <xltools.hxx>
39 // Color data =================================================================
40 
42 #define EXC_PALETTE_EGA_COLORS_LIGHT \
43  Color(0x000000), Color(0xFFFFFF), Color(0xFF0000), Color(0x00FF00), Color(0x0000FF), Color(0xFFFF00), Color(0xFF00FF), Color(0x00FFFF)
44 
45 #define EXC_PALETTE_EGA_COLORS_DARK \
46  Color(0x800000), Color(0x008000), Color(0x000080), Color(0x808000), Color(0x800080), Color(0x008080), Color(0xC0C0C0), Color(0x808080)
47 
50 {
52 };
53 
56 {
60 };
61 
64 {
68 /* 24 */ Color(0x8080FF), Color(0x802060), Color(0xFFFFC0), Color(0xA0E0E0), Color(0x600080), Color(0xFF8080), Color(0x0080C0), Color(0xC0C0FF),
69 /* 32 */ Color(0x000080), Color(0xFF00FF), Color(0xFFFF00), Color(0x00FFFF), Color(0x800080), Color(0x800000), Color(0x008080), Color(0x0000FF),
70 /* 40 */ Color(0x00CFFF), Color(0x69FFFF), Color(0xE0FFE0), Color(0xFFFF80), Color(0xA6CAF0), Color(0xDD9CB3), Color(0xB38FEE), Color(0xE3E3E3),
71 /* 48 */ Color(0x2A6FF9), Color(0x3FB8CD), Color(0x488436), Color(0x958C41), Color(0x8E5E42), Color(0xA0627A), Color(0x624FAC), Color(0x969696),
72 /* 56 */ Color(0x1D2FBE), Color(0x286676), Color(0x004500), Color(0x453E01), Color(0x6A2813), Color(0x85396A), Color(0x4A3285), Color(0x424242)
73 };
74 
77 {
81 /* 24 */ Color(0x9999FF), Color(0x993366), Color(0xFFFFCC), Color(0xCCFFFF), Color(0x660066), Color(0xFF8080), Color(0x0066CC), Color(0xCCCCFF),
82 /* 32 */ Color(0x000080), Color(0xFF00FF), Color(0xFFFF00), Color(0x00FFFF), Color(0x800080), Color(0x800000), Color(0x008080), Color(0x0000FF),
83 /* 40 */ Color(0x00CCFF), Color(0xCCFFFF), Color(0xCCFFCC), Color(0xFFFF99), Color(0x99CCFF), Color(0xFF99CC), Color(0xCC99FF), Color(0xFFCC99),
84 /* 48 */ Color(0x3366FF), Color(0x33CCCC), Color(0x99CC00), Color(0xFFCC00), Color(0xFF9900), Color(0xFF6600), Color(0x666699), Color(0x969696),
85 /* 56 */ Color(0x003366), Color(0x339966), Color(0x003300), Color(0x333300), Color(0x993300), Color(0x993366), Color(0x333399), Color(0x333333)
86 };
87 
88 #undef EXC_PALETTE_EGA_COLORS_LIGHT
89 #undef EXC_PALETTE_EGA_COLORS_DARK
90 
92  mpnColorTable( nullptr ),
93  mnTableSize( 0 )
94 {
97  mnWindowBack = rSett.GetWindowColor();
98  mnFaceColor = rSett.GetFaceColor();
99  // Don't use the system HelpBack and HelpText colours as it causes problems
100  // with modern gnome. This is because mnNoteText and mnNoteBack are used
101  // when colour indices ( instead of real colours ) are specified.
102  // Note: That this it is not an unusual scenario that we get the Note
103  // background specified as a real colour and the text specified as a
104  // colour index. That means the text colour would be picked from
105  // the system where the note background would be picked from a real colour.
106  // Previously the note text colour was picked from the system tooltip
107  // text colour, on modern gnome(e.g. 3) that tends to be 'white' with the
108  // default theme.
109  // Using the Libreoffice defaults ( instead of system specific colours
110  // ) lessens the chance of the one colour being an unsuitable combination
111  // because by default the note text is black and the note background is
112  // a light yellow colour ( very similar to Excel's normal defaults )
115 
116  // default colors
117  switch( rRoot.GetBiff() )
118  {
119  case EXC_BIFF2:
121  mnTableSize = SAL_N_ELEMENTS( spnDefColorTable2 );
122  break;
123  case EXC_BIFF3:
124  case EXC_BIFF4:
126  mnTableSize = SAL_N_ELEMENTS( spnDefColorTable3 );
127  break;
128  case EXC_BIFF5:
130  mnTableSize = SAL_N_ELEMENTS( spnDefColorTable5 );
131  break;
132  case EXC_BIFF8:
134  mnTableSize = SAL_N_ELEMENTS( spnDefColorTable8 );
135  break;
136  default:
137  DBG_ERROR_BIFF();
138  }
139 }
140 
141 Color XclDefaultPalette::GetDefColor( sal_uInt16 nXclIndex ) const
142 {
143  Color nColor;
144  if( nXclIndex < mnTableSize )
145  nColor = mpnColorTable[ nXclIndex ];
146  else switch( nXclIndex )
147  {
150  case EXC_COLOR_CHWINDOWTEXT: nColor = mnWindowText; break;
153  case EXC_COLOR_CHWINDOWBACK: nColor = mnWindowBack; break;
154  case EXC_COLOR_BUTTONBACK: nColor = mnFaceColor; break;
155  case EXC_COLOR_CHBORDERAUTO: nColor = COL_BLACK; break; // TODO: really always black?
156  case EXC_COLOR_NOTEBACK: nColor = mnNoteBack; break;
157  case EXC_COLOR_NOTETEXT: nColor = mnNoteText; break;
158  case EXC_COLOR_FONTAUTO: nColor = COL_AUTO; break;
159  default:
160  SAL_WARN("sc", "XclDefaultPalette::GetDefColor - unknown default color index: " << nXclIndex );
161  nColor = COL_AUTO;
162  }
163  return nColor;
164 }
165 
166 // Font Data ==================================================================
167 
168 namespace Awt = ::com::sun::star::awt;
169 namespace AwtFontFamily = Awt::FontFamily;
170 namespace AwtFontLineStyle = Awt::FontUnderline;
171 namespace AwtFontStrikeout = Awt::FontStrikeout;
172 
174 {
175  Clear();
176 }
177 
179 {
180  Clear();
181  FillFromVclFont( rFont );
182 }
183 
185 {
186  FillFromSvxFont( rFont );
187 }
188 
190 {
191  maName.clear();
192  maStyle.clear();
193  maColor = COL_AUTO;
194  mnHeight = 0;
200  mbItalic = mbStrikeout = mbOutline = mbShadow = false;
201 }
202 
204 {
205  maName = XclTools::GetXclFontName( rFont.GetFamilyName() ); // substitute with MS fonts
206  maStyle.clear();
207  maColor = rFont.GetColor();
208  SetScUnderline( rFont.GetUnderline() );
210  SetScHeight( rFont.GetFontSize().Height() );
211  SetScWeight( rFont.GetWeight() );
212  SetScFamily( rFont.GetFamilyType() );
213  SetFontEncoding( rFont.GetCharSet() );
214  SetScPosture( rFont.GetItalic() );
215  SetScStrikeout( rFont.GetStrikeout() );
216  mbOutline = rFont.IsOutline();
217  mbShadow = rFont.IsShadow();
218 }
219 
221 {
222  FillFromVclFont( rFont );
223  SetScEscapement( rFont.GetEscapement() );
224 }
225 
226 // *** conversion of VCL/SVX constants *** ------------------------------------
227 
228 FontFamily XclFontData::GetScFamily( rtl_TextEncoding eDefTextEnc ) const
229 {
230  FontFamily eScFamily;
231  // ! format differs from Windows documentation: family is in lower nibble, pitch unknown
232  switch( mnFamily & 0x0F )
233  {
234  case EXC_FONTFAM_ROMAN: eScFamily = FAMILY_ROMAN; break;
235  case EXC_FONTFAM_SWISS: eScFamily = FAMILY_SWISS; break;
236  case EXC_FONTFAM_MODERN: eScFamily = FAMILY_MODERN; break;
237  case EXC_FONTFAM_SCRIPT: eScFamily = FAMILY_SCRIPT; break;
238  case EXC_FONTFAM_DECORATIVE: eScFamily = FAMILY_DECORATIVE; break;
239  default:
240  eScFamily =
241  ((eDefTextEnc == RTL_TEXTENCODING_APPLE_ROMAN) &&
242  (maName.equalsIgnoreAsciiCase( "Geneva" ) || maName.equalsIgnoreAsciiCase( "Chicago" ))) ?
244  }
245  return eScFamily;
246 }
247 
248 rtl_TextEncoding XclFontData::GetFontEncoding() const
249 {
250  // convert Windows character set to text encoding identifier
251  return rtl_getTextEncodingFromWindowsCharset( mnCharSet );
252 }
253 
255 {
257 }
258 
260 {
261  FontWeight eScWeight;
262 
263  if( !mnWeight ) eScWeight = WEIGHT_DONTKNOW;
264  else if( mnWeight < 150 ) eScWeight = WEIGHT_THIN;
265  else if( mnWeight < 250 ) eScWeight = WEIGHT_ULTRALIGHT;
266  else if( mnWeight < 325 ) eScWeight = WEIGHT_LIGHT;
267  else if( mnWeight < 375 ) eScWeight = WEIGHT_SEMILIGHT;
268  else if( mnWeight < 450 ) eScWeight = WEIGHT_NORMAL;
269  else if( mnWeight < 550 ) eScWeight = WEIGHT_MEDIUM;
270  else if( mnWeight < 650 ) eScWeight = WEIGHT_SEMIBOLD;
271  else if( mnWeight < 750 ) eScWeight = WEIGHT_BOLD;
272  else if( mnWeight < 850 ) eScWeight = WEIGHT_ULTRABOLD;
273  else eScWeight = WEIGHT_BLACK;
274 
275  return eScWeight;
276 }
277 
279 {
280  FontLineStyle eScUnderl = LINESTYLE_NONE;
281  switch( mnUnderline )
282  {
284  case EXC_FONTUNDERL_SINGLE_ACC: eScUnderl = LINESTYLE_SINGLE; break;
286  case EXC_FONTUNDERL_DOUBLE_ACC: eScUnderl = LINESTYLE_DOUBLE; break;
287  }
288  return eScUnderl;
289 }
290 
292 {
293  SvxEscapement eScEscapem = SvxEscapement::Off;
294  switch( mnEscapem )
295  {
296  case EXC_FONTESC_SUPER: eScEscapem = SvxEscapement::Superscript; break;
297  case EXC_FONTESC_SUB: eScEscapem = SvxEscapement::Subscript; break;
298  }
299  return eScEscapem;
300 }
301 
303 {
305 }
306 
307 void XclFontData::SetScHeight( sal_Int32 nTwips )
308 {
309  mnHeight = static_cast< sal_uInt16 >( ::std::min( nTwips, static_cast<sal_Int32>(0x7FFFL) ) );
310 }
311 
313 {
314  switch( eScFamily )
315  {
319  case FAMILY_ROMAN: mnFamily = EXC_FONTFAM_ROMAN; break;
321  case FAMILY_SWISS: mnFamily = EXC_FONTFAM_SWISS; break;
323  default:
324  OSL_FAIL( "XclFontData::SetScFamily - unknown font family" );
326  }
327 }
328 
329 void XclFontData::SetFontEncoding( rtl_TextEncoding eFontEnc )
330 {
331  // convert text encoding identifier to Windows character set
332  mnCharSet = rtl_getBestWindowsCharsetFromTextEncoding( eFontEnc );
333 }
334 
336 {
337  mbItalic = (eScPosture == ITALIC_OBLIQUE) || (eScPosture == ITALIC_NORMAL);
338 }
339 
341 {
342  switch( eScWeight )
343  {
345  case WEIGHT_THIN: mnWeight = EXC_FONTWGHT_THIN; break;
352  case WEIGHT_BOLD: mnWeight = EXC_FONTWGHT_BOLD; break;
355  default: mnWeight = EXC_FONTWGHT_NORMAL;
356  }
357 }
358 
360 {
361  switch( eScUnderl )
362  {
363  case LINESTYLE_NONE:
365  case LINESTYLE_DOUBLE:
368  }
369 }
370 
371 void XclFontData::SetScEscapement( short nScEscapem )
372 {
373  if( nScEscapem > 0 )
375  else if( nScEscapem < 0 )
377  else
379 }
380 
382 {
383  mbStrikeout =
384  (eScStrikeout == STRIKEOUT_SINGLE) || (eScStrikeout == STRIKEOUT_DOUBLE) ||
385  (eScStrikeout == STRIKEOUT_BOLD) || (eScStrikeout == STRIKEOUT_SLASH) ||
386  (eScStrikeout == STRIKEOUT_X);
387 }
388 
389 // *** conversion of API constants *** ----------------------------------------
390 
392 {
393  return o3tl::convert<double>(mnHeight, o3tl::Length::twip, o3tl::Length::pt);
394 }
395 
396 sal_Int16 XclFontData::GetApiFamily() const
397 {
398  sal_Int16 nApiFamily = AwtFontFamily::DONTKNOW;
399  switch( mnFamily )
400  {
401  case FAMILY_DECORATIVE: nApiFamily = AwtFontFamily::DECORATIVE; break;
402  case FAMILY_MODERN: nApiFamily = AwtFontFamily::MODERN; break;
403  case FAMILY_ROMAN: nApiFamily = AwtFontFamily::ROMAN; break;
404  case FAMILY_SCRIPT: nApiFamily = AwtFontFamily::SCRIPT; break;
405  case FAMILY_SWISS: nApiFamily = AwtFontFamily::SWISS; break;
406  case FAMILY_SYSTEM: nApiFamily = AwtFontFamily::SYSTEM; break;
407  }
408  return nApiFamily;
409 }
410 
412 {
413  // API constants are equal to rtl_TextEncoding constants
414  return static_cast< sal_Int16 >( GetFontEncoding() );
415 }
416 
417 Awt::FontSlant XclFontData::GetApiPosture() const
418 {
419  return mbItalic ? Awt::FontSlant_ITALIC : Awt::FontSlant_NONE;
420 }
421 
423 {
425 }
426 
428 {
429  sal_Int16 nApiUnderl = AwtFontLineStyle::NONE;
430  switch( mnUnderline )
431  {
433  case EXC_FONTUNDERL_SINGLE_ACC: nApiUnderl = AwtFontLineStyle::SINGLE; break;
435  case EXC_FONTUNDERL_DOUBLE_ACC: nApiUnderl = AwtFontLineStyle::DOUBLE; break;
436  }
437  return nApiUnderl;
438 }
439 
441 {
442  sal_Int16 nApiEscapem = 0;
443  switch( mnEscapem )
444  {
445  case EXC_FONTESC_SUPER: nApiEscapem = 33; break;
446  case EXC_FONTESC_SUB: nApiEscapem = -33; break;
447  }
448  return nApiEscapem;
449 }
450 
452 {
453  return mbStrikeout ? AwtFontStrikeout::SINGLE : AwtFontStrikeout::NONE;
454 }
455 
456 void XclFontData::SetApiHeight( float fPoint )
457 {
458  mnHeight = std::min(o3tl::convert(fPoint, o3tl::Length::pt, o3tl::Length::twip) + 0.5, 32767.0);
459 }
460 
461 void XclFontData::SetApiFamily( sal_Int16 nApiFamily )
462 {
463  switch( nApiFamily )
464  {
465  case AwtFontFamily::DECORATIVE: mnFamily = FAMILY_DECORATIVE; break;
466  case AwtFontFamily::MODERN: mnFamily = FAMILY_MODERN; break;
467  case AwtFontFamily::ROMAN: mnFamily = FAMILY_ROMAN; break;
468  case AwtFontFamily::SCRIPT: mnFamily = FAMILY_SCRIPT; break;
469  case AwtFontFamily::SWISS: mnFamily = FAMILY_SWISS; break;
470  case AwtFontFamily::SYSTEM: mnFamily = FAMILY_SYSTEM; break;
471  default: mnFamily = FAMILY_DONTKNOW;
472  }
473 }
474 
475 void XclFontData::SetApiPosture( Awt::FontSlant eApiPosture )
476 {
477  mbItalic =
478  (eApiPosture == Awt::FontSlant_OBLIQUE) ||
479  (eApiPosture == Awt::FontSlant_ITALIC) ||
480  (eApiPosture == Awt::FontSlant_REVERSE_OBLIQUE) ||
481  (eApiPosture == Awt::FontSlant_REVERSE_ITALIC);
482 }
483 
484 void XclFontData::SetApiWeight( float fApiWeight )
485 {
487 }
488 
489 void XclFontData::SetApiUnderline( sal_Int16 nApiUnderl )
490 {
491  switch( nApiUnderl )
492  {
494  case AwtFontLineStyle::DONTKNOW: mnUnderline = EXC_FONTUNDERL_NONE; break;
495  case AwtFontLineStyle::DOUBLE:
496  case AwtFontLineStyle::DOUBLEWAVE: mnUnderline = EXC_FONTUNDERL_DOUBLE; break;
498  }
499 }
500 
501 void XclFontData::SetApiEscapement( sal_Int16 nApiEscapem )
502 {
503  if( nApiEscapem > 0 )
505  else if( nApiEscapem < 0 )
507  else
509 }
510 
511 void XclFontData::SetApiStrikeout( sal_Int16 nApiStrikeout )
512 {
513  mbStrikeout =
514  (nApiStrikeout != AwtFontStrikeout::NONE) &&
515  (nApiStrikeout != AwtFontStrikeout::DONTKNOW);
516 }
517 
518 bool operator==( const XclFontData& rLeft, const XclFontData& rRight )
519 {
520  return
521  (rLeft.mnHeight == rRight.mnHeight) &&
522  (rLeft.mnWeight == rRight.mnWeight) &&
523  (rLeft.mnUnderline == rRight.mnUnderline) &&
524  (rLeft.maColor == rRight.maColor) &&
525  (rLeft.mnEscapem == rRight.mnEscapem) &&
526  (rLeft.mnFamily == rRight.mnFamily) &&
527  (rLeft.mnCharSet == rRight.mnCharSet) &&
528  (rLeft.mbItalic == rRight.mbItalic) &&
529  (rLeft.mbStrikeout == rRight.mbStrikeout) &&
530  (rLeft.mbOutline == rRight.mbOutline) &&
531  (rLeft.mbShadow == rRight.mbShadow) &&
532  (rLeft.maName == rRight.maName);
533 }
534 
535 namespace {
536 
538 const char *const sppcPropNamesChCommon[] =
539 {
540  "CharUnderline", "CharStrikeout", "CharColor", "CharContoured", "CharShadowed", nullptr
541 };
543 const char *const sppcPropNamesChWstrn[] =
544 {
545  "CharFontName", "CharHeight", "CharPosture", "CharWeight", nullptr
546 };
548 const char *const sppcPropNamesChAsian[] =
549 {
550  "CharFontNameAsian", "CharHeightAsian", "CharPostureAsian", "CharWeightAsian", nullptr
551 };
553 const char *const sppcPropNamesChCmplx[] =
554 {
555  "CharFontNameComplex", "CharHeightComplex", "CharPostureComplex", "CharWeightComplex", nullptr
556 };
558 const char *const sppcPropNamesChEscapement[] =
559 {
560  "CharEscapement", "CharEscapementHeight", nullptr
561 };
562 const sal_Int8 EXC_API_ESC_HEIGHT = 58;
563 
565 const char *const *const sppcPropNamesChWstrnNoName = sppcPropNamesChWstrn + 1;
567 const char *const *const sppcPropNamesChAsianNoName = sppcPropNamesChAsian + 1;
569 const char *const *const sppcPropNamesChCmplxNoName = sppcPropNamesChCmplx + 1;
570 
572 const char *const sppcPropNamesControl[] =
573 {
574  "FontName", "FontFamily", "FontCharset", "FontHeight", "FontSlant",
575  "FontWeight", "FontLineStyle", "FontStrikeout", "TextColor", nullptr
576 };
577 
579 void lclSetApiFontSettings( XclFontData& rFontData,
580  const OUString& rApiFontName, float fApiHeight, float fApiWeight,
581  Awt::FontSlant eApiPosture, sal_Int16 nApiUnderl, sal_Int16 nApiStrikeout )
582 {
583  rFontData.maName = XclTools::GetXclFontName( rApiFontName );
584  rFontData.SetApiHeight( fApiHeight );
585  rFontData.SetApiWeight( fApiWeight );
586  rFontData.SetApiPosture( eApiPosture );
587  rFontData.SetApiUnderline( nApiUnderl );
588  rFontData.SetApiStrikeout( nApiStrikeout );
589 }
590 
592 void lclWriteChartFont( ScfPropertySet& rPropSet,
593  ScfPropSetHelper& rHlpName, ScfPropSetHelper& rHlpNoName,
594  const XclFontData& rFontData, bool bHasFontName )
595 {
596  // select the font helper
597  ScfPropSetHelper& rPropSetHlp = bHasFontName ? rHlpName : rHlpNoName;
598  // initialize the font helper (must be called before writing any properties)
599  rPropSetHlp.InitializeWrite();
600  // write font name
601  if( bHasFontName )
602  rPropSetHlp << rFontData.maName;
603  // write remaining properties
604  rPropSetHlp << rFontData.GetApiHeight() << rFontData.GetApiPosture() << rFontData.GetApiWeight();
605  // write properties to property set
606  rPropSetHlp.WriteToPropertySet( rPropSet );
607 }
608 
609 } // namespace
610 
612  maHlpChCommon( sppcPropNamesChCommon ),
613  maHlpChWstrn( sppcPropNamesChWstrn ),
614  maHlpChAsian( sppcPropNamesChAsian ),
615  maHlpChCmplx( sppcPropNamesChCmplx ),
616  maHlpChWstrnNoName( sppcPropNamesChWstrnNoName ),
617  maHlpChAsianNoName( sppcPropNamesChAsianNoName ),
618  maHlpChCmplxNoName( sppcPropNamesChCmplxNoName ),
619  maHlpChEscapement( sppcPropNamesChEscapement ),
620  maHlpControl( sppcPropNamesControl )
621 {
622 }
623 
625  const ScfPropertySet& rPropSet, XclFontPropSetType eType, sal_Int16 nScript )
626 {
627  switch( eType )
628  {
630  {
631  OUString aApiFontName;
632  float fApiHeight, fApiWeight;
633  sal_Int16 nApiUnderl = 0, nApiStrikeout = 0;
634  Awt::FontSlant eApiPosture;
635 
636  // read script type dependent properties
637  ScfPropSetHelper& rPropSetHlp = GetChartHelper( nScript );
638  rPropSetHlp.ReadFromPropertySet( rPropSet );
639  rPropSetHlp >> aApiFontName >> fApiHeight >> eApiPosture >> fApiWeight;
640  // read common properties
642  maHlpChCommon >> nApiUnderl
643  >> nApiStrikeout
644  >> rFontData.maColor
645  >> rFontData.mbOutline
646  >> rFontData.mbShadow;
647 
648  // convert API property values to Excel settings
649  lclSetApiFontSettings( rFontData, aApiFontName,
650  fApiHeight, fApiWeight, eApiPosture, nApiUnderl, nApiStrikeout );
651 
652  // font escapement
653  sal_Int16 nApiEscapement = 0;
654  sal_Int8 nApiEscHeight = 0;
658  maHlpChEscapement >> nApiEscapement >> nApiEscHeight;
659  rFontData.SetApiEscapement( nApiEscapement );
660  }
661  break;
662 
664  {
665  OUString aApiFontName;
666  float fApiHeight(0.0), fApiWeight(0.0);
667  sal_Int16 nApiFamily(0), nApiCharSet(0), nApiPosture(0), nApiUnderl(0), nApiStrikeout(0);
668 
669  // read font properties
670  maHlpControl.ReadFromPropertySet( rPropSet );
671  maHlpControl >> aApiFontName
672  >> nApiFamily
673  >> nApiCharSet
674  >> fApiHeight
675  >> nApiPosture
676  >> fApiWeight
677  >> nApiUnderl
678  >> nApiStrikeout
679  >> rFontData.maColor;
680 
681  // convert API property values to Excel settings
682  Awt::FontSlant eApiPosture = static_cast< Awt::FontSlant >( nApiPosture );
683  lclSetApiFontSettings( rFontData, aApiFontName,
684  fApiHeight, fApiWeight, eApiPosture, nApiUnderl, nApiStrikeout );
685  rFontData.SetApiFamily( nApiFamily );
686  rFontData.SetFontEncoding( nApiCharSet );
687  }
688  break;
689  }
690 }
691 
693  ScfPropertySet& rPropSet, XclFontPropSetType eType,
694  const XclFontData& rFontData, bool bHasWstrn, bool bHasAsian, bool bHasCmplx,
695  const Color* pFontColor )
696 {
697  switch( eType )
698  {
700  {
701  // write common properties
703  const Color& rColor = pFontColor ? *pFontColor : rFontData.maColor;
704  maHlpChCommon << rFontData.GetApiUnderline()
705  << rFontData.GetApiStrikeout()
706  << rColor
707  << rFontData.mbOutline
708  << rFontData.mbShadow;
709  maHlpChCommon.WriteToPropertySet( rPropSet );
710 
711  // write script type dependent properties
712  lclWriteChartFont( rPropSet, maHlpChWstrn, maHlpChWstrnNoName, rFontData, bHasWstrn );
713  lclWriteChartFont( rPropSet, maHlpChAsian, maHlpChAsianNoName, rFontData, bHasAsian );
714  lclWriteChartFont( rPropSet, maHlpChCmplx, maHlpChCmplxNoName, rFontData, bHasCmplx );
715 
716  // font escapement
717  if( rFontData.GetScEscapement() != SvxEscapement::Off )
718  {
720  maHlpChEscapement << rFontData.GetApiEscapement() << EXC_API_ESC_HEIGHT;
722  }
723  }
724  break;
725 
727  {
729  maHlpControl << rFontData.maName
730  << rFontData.GetApiFamily()
731  << rFontData.GetApiFontEncoding()
732  << static_cast< sal_Int16 >( rFontData.GetApiHeight() + 0.5 )
733  << rFontData.GetApiPosture()
734  << rFontData.GetApiWeight()
735  << rFontData.GetApiUnderline()
736  << rFontData.GetApiStrikeout()
737  << rFontData.maColor;
738  maHlpControl.WriteToPropertySet( rPropSet );
739  }
740  break;
741  }
742 }
743 
745 {
746  namespace ApiScriptType = ::com::sun::star::i18n::ScriptType;
747  switch( nScript )
748  {
749  case ApiScriptType::LATIN: return maHlpChWstrn;
750  case ApiScriptType::ASIAN: return maHlpChAsian;
751  case ApiScriptType::COMPLEX: return maHlpChCmplx;
752  default: OSL_FAIL( "XclFontPropSetHelper::GetChartHelper - unknown script type" );
753  }
754  return maHlpChWstrn;
755 }
756 
757 // Number formats =============================================================
758 
759 namespace {
760 
762 const NfIndexTableOffset PRV_NF_INDEX_REUSE = NF_INDEX_TABLE_ENTRIES;
763 
765 constexpr LanguageType PRV_LANGUAGE_GERMAN_PRIM = primary(LANGUAGE_GERMAN);
767 constexpr LanguageType PRV_LANGUAGE_FRENCH_PRIM = primary(LANGUAGE_FRENCH);
769 constexpr LanguageType PRV_LANGUAGE_ASIAN_PRIM = primary(LANGUAGE_CHINESE);
770 
772 struct XclBuiltInFormat
773 {
774  sal_uInt16 mnXclNumFmt;
775  const char* mpFormat;
776  NfIndexTableOffset meOffset;
777  sal_uInt16 mnXclReuseFmt;
778 };
779 
781 #define EXC_NUMFMT_STRING( nXclNumFmt, pcUtf8 ) \
782  { nXclNumFmt, pcUtf8, NF_NUMBER_STANDARD, 0 }
783 
785 #define EXC_NUMFMT_OFFSET( nXclNumFmt, eOffset ) \
786  { nXclNumFmt, nullptr, eOffset, 0 }
787 
789 #define EXC_NUMFMT_REUSE( nXclNumFmt, nXclReuse ) \
790  { nXclNumFmt, nullptr, PRV_NF_INDEX_REUSE, nXclReuse }
791 
793 #define EXC_NUMFMT_ENDTABLE() \
794  { EXC_FORMAT_NOTFOUND, nullptr, NF_NUMBER_STANDARD, 0 }
795 
796 // Currency unit characters
797 #define UTF8_BAHT "\340\270\277"
798 #define UTF8_EURO "\342\202\254"
799 #define UTF8_POUND_UK "\302\243"
800 #define UTF8_SHEQEL "\342\202\252"
801 #define UTF8_WON "\357\277\246"
802 #define UTF8_YEN_CS "\357\277\245"
803 #define UTF8_YEN_JP "\302\245"
804 
805 // Japanese/Chinese date/time characters
806 #define UTF8_CJ_YEAR "\345\271\264"
807 #define UTF8_CJ_MON "\346\234\210"
808 #define UTF8_CJ_DAY "\346\227\245"
809 #define UTF8_CJ_HOUR "\346\231\202"
810 #define UTF8_CJ_MIN "\345\210\206"
811 #define UTF8_CJ_SEC "\347\247\222"
812 
813 // Chinese Simplified date/time characters
814 #define UTF8_CS_HOUR "\346\227\266"
815 
816 // Korean date/time characters
817 #define UTF8_KO_YEAR "\353\205\204"
818 #define UTF8_KO_MON "\354\233\224"
819 #define UTF8_KO_DAY "\354\235\274"
820 #define UTF8_KO_HOUR "\354\213\234"
821 #define UTF8_KO_MIN "\353\266\204"
822 #define UTF8_KO_SEC "\354\264\210"
823 
825 const XclBuiltInFormat spBuiltInFormats_DONTKNOW[] =
826 {
827  EXC_NUMFMT_OFFSET( 0, NF_NUMBER_STANDARD ), // General
828  EXC_NUMFMT_OFFSET( 1, NF_NUMBER_INT ), // 0
829  EXC_NUMFMT_OFFSET( 2, NF_NUMBER_DEC2 ), // 0.00
830  EXC_NUMFMT_OFFSET( 3, NF_NUMBER_1000INT ), // #,##0
831  EXC_NUMFMT_OFFSET( 4, NF_NUMBER_1000DEC2 ), // #,##0.00
832  // 5...8 contained in file
833  EXC_NUMFMT_OFFSET( 9, NF_PERCENT_INT ), // 0%
834  EXC_NUMFMT_OFFSET( 10, NF_PERCENT_DEC2 ), // 0.00%
835  EXC_NUMFMT_OFFSET( 11, NF_SCIENTIFIC_000E00 ), // 0.00E+00
836  EXC_NUMFMT_OFFSET( 12, NF_FRACTION_1D ), // # ?/?
837  EXC_NUMFMT_OFFSET( 13, NF_FRACTION_2D ), // # ??/??
838 
839  // 14...22 date and time formats
849 
850  // 23...36 international formats
851  EXC_NUMFMT_REUSE( 23, 0 ),
852  EXC_NUMFMT_REUSE( 24, 0 ),
853  EXC_NUMFMT_REUSE( 25, 0 ),
854  EXC_NUMFMT_REUSE( 26, 0 ),
855  EXC_NUMFMT_REUSE( 27, 14 ),
856  EXC_NUMFMT_REUSE( 28, 14 ),
857  EXC_NUMFMT_REUSE( 29, 14 ),
858  EXC_NUMFMT_REUSE( 30, 14 ),
859  EXC_NUMFMT_REUSE( 31, 14 ),
860  EXC_NUMFMT_REUSE( 32, 21 ),
861  EXC_NUMFMT_REUSE( 33, 21 ),
862  EXC_NUMFMT_REUSE( 34, 21 ),
863  EXC_NUMFMT_REUSE( 35, 21 ),
864  EXC_NUMFMT_REUSE( 36, 14 ),
865 
866  // 37...44 accounting formats
867  // 41...44 contained in file
868  EXC_NUMFMT_STRING( 37, "#,##0;-#,##0" ),
869  EXC_NUMFMT_STRING( 38, "#,##0;[RED]-#,##0" ),
870  EXC_NUMFMT_STRING( 39, "#,##0.00;-#,##0.00" ),
871  EXC_NUMFMT_STRING( 40, "#,##0.00;[RED]-#,##0.00" ),
872 
873  // 45...49 more special formats
874  EXC_NUMFMT_STRING( 45, "mm:ss" ),
875  EXC_NUMFMT_STRING( 46, "[h]:mm:ss" ),
876  EXC_NUMFMT_STRING( 47, "mm:ss.0" ),
877  EXC_NUMFMT_STRING( 48, "##0.0E+0" ),
878  EXC_NUMFMT_OFFSET( 49, NF_TEXT ),
879 
880  // 50...81 international formats
881  EXC_NUMFMT_REUSE( 50, 14 ),
882  EXC_NUMFMT_REUSE( 51, 14 ),
883  EXC_NUMFMT_REUSE( 52, 14 ),
884  EXC_NUMFMT_REUSE( 53, 14 ),
885  EXC_NUMFMT_REUSE( 54, 14 ),
886  EXC_NUMFMT_REUSE( 55, 14 ),
887  EXC_NUMFMT_REUSE( 56, 14 ),
888  EXC_NUMFMT_REUSE( 57, 14 ),
889  EXC_NUMFMT_REUSE( 58, 14 ),
890  EXC_NUMFMT_REUSE( 59, 1 ),
891  EXC_NUMFMT_REUSE( 60, 2 ),
892  EXC_NUMFMT_REUSE( 61, 3 ),
893  EXC_NUMFMT_REUSE( 62, 4 ),
894  EXC_NUMFMT_REUSE( 67, 9 ),
895  EXC_NUMFMT_REUSE( 68, 10 ),
896  EXC_NUMFMT_REUSE( 69, 12 ),
897  EXC_NUMFMT_REUSE( 70, 13 ),
898  EXC_NUMFMT_REUSE( 71, 14 ),
899  EXC_NUMFMT_REUSE( 72, 14 ),
900  EXC_NUMFMT_REUSE( 73, 15 ),
901  EXC_NUMFMT_REUSE( 74, 16 ),
902  EXC_NUMFMT_REUSE( 75, 17 ),
903  EXC_NUMFMT_REUSE( 76, 20 ),
904  EXC_NUMFMT_REUSE( 77, 21 ),
905  EXC_NUMFMT_REUSE( 78, 22 ),
906  EXC_NUMFMT_REUSE( 79, 45 ),
907  EXC_NUMFMT_REUSE( 80, 46 ),
908  EXC_NUMFMT_REUSE( 81, 47 ),
909 
910  // 82...163 not used, must not occur in a file (Excel may crash)
911 
913 };
914 
915 // ENGLISH --------------------------------------------------------------------
916 
918 const XclBuiltInFormat spBuiltInFormats_ENGLISH[] =
919 {
920  EXC_NUMFMT_STRING( 15, "DD-MMM-YY" ),
921  EXC_NUMFMT_STRING( 16, "DD-MMM" ),
922  EXC_NUMFMT_STRING( 17, "MMM-YY" ),
923  EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ),
924  EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ),
925  EXC_NUMFMT_STRING( 22, "DD/MM/YYYY hh:mm" ),
927 };
928 
929 const XclBuiltInFormat spBuiltInFormats_ENGLISH_UK[] =
930 {
931  EXC_NUMFMT_STRING( 63, UTF8_POUND_UK "#,##0;-" UTF8_POUND_UK "#,##0" ),
932  EXC_NUMFMT_STRING( 64, UTF8_POUND_UK "#,##0;[RED]-" UTF8_POUND_UK "#,##0" ),
933  EXC_NUMFMT_STRING( 65, UTF8_POUND_UK "#,##0.00;-" UTF8_POUND_UK "#,##0.00" ),
934  EXC_NUMFMT_STRING( 66, UTF8_POUND_UK "#,##0.00;[RED]-" UTF8_POUND_UK "#,##0.00" ),
936 };
937 
938 const XclBuiltInFormat spBuiltInFormats_ENGLISH_EIRE[] =
939 {
940  EXC_NUMFMT_STRING( 63, UTF8_EURO "#,##0;-" UTF8_EURO "#,##0" ),
941  EXC_NUMFMT_STRING( 64, UTF8_EURO "#,##0;[RED]-" UTF8_EURO "#,##0" ),
942  EXC_NUMFMT_STRING( 65, UTF8_EURO "#,##0.00;-" UTF8_EURO "#,##0.00" ),
943  EXC_NUMFMT_STRING( 66, UTF8_EURO "#,##0.00;[RED]-" UTF8_EURO "#,##0.00" ),
945 };
946 
947 const XclBuiltInFormat spBuiltInFormats_ENGLISH_US[] =
948 {
949  EXC_NUMFMT_STRING( 14, "M/D/YYYY" ),
950  EXC_NUMFMT_STRING( 15, "D-MMM-YY" ),
951  EXC_NUMFMT_STRING( 16, "D-MMM" ),
952  EXC_NUMFMT_STRING( 20, "h:mm" ),
953  EXC_NUMFMT_STRING( 21, "h:mm:ss" ),
954  EXC_NUMFMT_STRING( 22, "M/D/YYYY h:mm" ),
955  EXC_NUMFMT_STRING( 37, "#,##0_);(#,##0)" ),
956  EXC_NUMFMT_STRING( 38, "#,##0_);[RED](#,##0)" ),
957  EXC_NUMFMT_STRING( 39, "#,##0.00_);(#,##0.00)" ),
958  EXC_NUMFMT_STRING( 40, "#,##0.00_);[RED](#,##0.00)" ),
959  EXC_NUMFMT_STRING( 63, "$#,##0_);($#,##0)" ),
960  EXC_NUMFMT_STRING( 64, "$#,##0_);[RED]($#,##0)" ),
961  EXC_NUMFMT_STRING( 65, "$#,##0.00_);($#,##0.00)" ),
962  EXC_NUMFMT_STRING( 66, "$#,##0.00_);[RED]($#,##0.00)" ),
964 };
965 
966 const XclBuiltInFormat spBuiltInFormats_ENGLISH_CAN[] =
967 {
968  EXC_NUMFMT_STRING( 20, "h:mm" ),
969  EXC_NUMFMT_STRING( 21, "h:mm:ss" ),
970  EXC_NUMFMT_STRING( 22, "DD/MM/YYYY h:mm" ),
971  EXC_NUMFMT_STRING( 63, "$#,##0;-$#,##0" ),
972  EXC_NUMFMT_STRING( 64, "$#,##0;[RED]-$#,##0" ),
973  EXC_NUMFMT_STRING( 65, "$#,##0.00;-$#,##0.00" ),
974  EXC_NUMFMT_STRING( 66, "$#,##0.00;[RED]-$#,##0.00" ),
976 };
977 
978 const XclBuiltInFormat spBuiltInFormats_ENGLISH_AUS[] =
979 {
980  EXC_NUMFMT_STRING( 14, "D/MM/YYYY" ),
981  EXC_NUMFMT_STRING( 15, "D-MMM-YY" ),
982  EXC_NUMFMT_STRING( 16, "D-MMM" ),
983  EXC_NUMFMT_STRING( 20, "h:mm" ),
984  EXC_NUMFMT_STRING( 21, "h:mm:ss" ),
985  EXC_NUMFMT_STRING( 22, "D/MM/YYYY h:mm" ),
986  EXC_NUMFMT_STRING( 63, "$#,##0;-$#,##0" ),
987  EXC_NUMFMT_STRING( 64, "$#,##0;[RED]-$#,##0" ),
988  EXC_NUMFMT_STRING( 65, "$#,##0.00;-$#,##0.00" ),
989  EXC_NUMFMT_STRING( 66, "$#,##0.00;[RED]-$#,##0.00" ),
991 };
992 
993 const XclBuiltInFormat spBuiltInFormats_ENGLISH_SAFRICA[] =
994 {
995  EXC_NUMFMT_STRING( 14, "YYYY/MM/DD" ),
996  EXC_NUMFMT_OFFSET( 18, NF_TIME_HHMMAMPM ),
997  EXC_NUMFMT_OFFSET( 19, NF_TIME_HHMMSSAMPM ),
998  EXC_NUMFMT_STRING( 22, "YYYY/MM/DD hh:mm" ),
999  EXC_NUMFMT_STRING( 63, "\\R #,##0;\\R -#,##0" ),
1000  EXC_NUMFMT_STRING( 64, "\\R #,##0;[RED]\\R -#,##0" ),
1001  EXC_NUMFMT_STRING( 65, "\\R #,##0.00;\\R -#,##0.00" ),
1002  EXC_NUMFMT_STRING( 66, "\\R #,##0.00;[RED]\\R -#,##0.00" ),
1004 };
1005 
1006 // FRENCH ---------------------------------------------------------------------
1007 
1009 const XclBuiltInFormat spBuiltInFormats_FRENCH[] =
1010 {
1011  EXC_NUMFMT_STRING( 15, "DD-MMM-YY" ),
1012  EXC_NUMFMT_STRING( 16, "DD-MMM" ),
1013  EXC_NUMFMT_STRING( 17, "MMM-YY" ),
1014  EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ),
1015  EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ),
1017 };
1018 
1019 const XclBuiltInFormat spBuiltInFormats_FRENCH_FRANCE[] =
1020 {
1021  EXC_NUMFMT_STRING( 22, "DD/MM/YYYY hh:mm" ),
1022  EXC_NUMFMT_STRING( 37, "#,##0\\ _" UTF8_EURO ";-#,##0\\ _" UTF8_EURO ),
1023  EXC_NUMFMT_STRING( 38, "#,##0\\ _" UTF8_EURO ";[RED]-#,##0\\ _" UTF8_EURO ),
1024  EXC_NUMFMT_STRING( 39, "#,##0.00\\ _" UTF8_EURO ";-#,##0.00\\ _" UTF8_EURO ),
1025  EXC_NUMFMT_STRING( 40, "#,##0.00\\ _" UTF8_EURO ";[RED]-#,##0.00\\ _" UTF8_EURO ),
1026  EXC_NUMFMT_STRING( 63, "#,##0\\ " UTF8_EURO ";-#,##0\\ " UTF8_EURO ),
1027  EXC_NUMFMT_STRING( 64, "#,##0\\ " UTF8_EURO ";[RED]-#,##0\\ " UTF8_EURO ),
1028  EXC_NUMFMT_STRING( 65, "#,##0.00\\ " UTF8_EURO ";-#,##0.00\\ " UTF8_EURO ),
1029  EXC_NUMFMT_STRING( 66, "#,##0.00\\ " UTF8_EURO ";[RED]-#,##0.00\\ " UTF8_EURO ),
1031 };
1032 
1033 const XclBuiltInFormat spBuiltInFormats_FRENCH_CANADIAN[] =
1034 {
1035  EXC_NUMFMT_STRING( 22, "YYYY-MM-DD hh:mm" ),
1036  EXC_NUMFMT_STRING( 37, "#,##0\\ _$_-;#,##0\\ _$-" ),
1037  EXC_NUMFMT_STRING( 38, "#,##0\\ _$_-;[RED]#,##0\\ _$-" ),
1038  EXC_NUMFMT_STRING( 39, "#,##0.00\\ _$_-;#,##0.00\\ _$-" ),
1039  EXC_NUMFMT_STRING( 40, "#,##0.00\\ _$_-;[RED]#,##0.00\\ _$-" ),
1040  EXC_NUMFMT_STRING( 63, "#,##0\\ $_-;#,##0\\ $-" ),
1041  EXC_NUMFMT_STRING( 64, "#,##0\\ $_-;[RED]#,##0\\ $-" ),
1042  EXC_NUMFMT_STRING( 65, "#,##0.00\\ $_-;#,##0.00\\ $-" ),
1043  EXC_NUMFMT_STRING( 66, "#,##0.00\\ $_-;[RED]#,##0.00\\ $-" ),
1045 };
1046 
1047 const XclBuiltInFormat spBuiltInFormats_FRENCH_SWISS[] =
1048 {
1049  EXC_NUMFMT_STRING( 15, "DD.MMM.YY" ),
1050  EXC_NUMFMT_STRING( 16, "DD.MMM" ),
1051  EXC_NUMFMT_STRING( 17, "MMM.YY" ),
1052  EXC_NUMFMT_STRING( 22, "DD.MM.YYYY hh:mm" ),
1053  EXC_NUMFMT_STRING( 63, "\"SFr. \"#,##0;\"SFr. \"-#,##0" ),
1054  EXC_NUMFMT_STRING( 64, "\"SFr. \"#,##0;[RED]\"SFr. \"-#,##0" ),
1055  EXC_NUMFMT_STRING( 65, "\"SFr. \"#,##0.00;\"SFr. \"-#,##0.00" ),
1056  EXC_NUMFMT_STRING( 66, "\"SFr. \"#,##0.00;[RED]\"SFr. \"-#,##0.00" ),
1058 };
1059 
1060 const XclBuiltInFormat spBuiltInFormats_FRENCH_BELGIAN[] =
1061 {
1062  EXC_NUMFMT_STRING( 14, "D/MM/YYYY" ),
1063  EXC_NUMFMT_STRING( 15, "D-MMM-YY" ),
1064  EXC_NUMFMT_STRING( 16, "D-MMM" ),
1065  EXC_NUMFMT_STRING( 20, "h:mm" ),
1066  EXC_NUMFMT_STRING( 21, "h:mm:ss" ),
1067  EXC_NUMFMT_STRING( 22, "D/MM/YYYY h:mm" ),
1069 };
1070 
1071 // GERMAN ---------------------------------------------------------------------
1072 
1074 const XclBuiltInFormat spBuiltInFormats_GERMAN[] =
1075 {
1076  EXC_NUMFMT_STRING( 15, "DD. MMM YY" ),
1077  EXC_NUMFMT_STRING( 16, "DD. MMM" ),
1078  EXC_NUMFMT_STRING( 17, "MMM YY" ),
1079  EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ),
1080  EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ),
1081  EXC_NUMFMT_STRING( 22, "DD.MM.YYYY hh:mm" ),
1083 };
1084 
1085 const XclBuiltInFormat spBuiltInFormats_GERMAN_GERMANY[] =
1086 {
1087  EXC_NUMFMT_STRING( 37, "#,##0 _" UTF8_EURO ";-#,##0 _" UTF8_EURO ),
1088  EXC_NUMFMT_STRING( 38, "#,##0 _" UTF8_EURO ";[RED]-#,##0 _" UTF8_EURO ),
1089  EXC_NUMFMT_STRING( 39, "#,##0.00 _" UTF8_EURO ";-#,##0.00 _" UTF8_EURO ),
1090  EXC_NUMFMT_STRING( 40, "#,##0.00 _" UTF8_EURO ";[RED]-#,##0.00 _" UTF8_EURO ),
1091  EXC_NUMFMT_STRING( 63, "#,##0 " UTF8_EURO ";-#,##0 " UTF8_EURO ),
1092  EXC_NUMFMT_STRING( 64, "#,##0 " UTF8_EURO ";[RED]-#,##0 " UTF8_EURO ),
1093  EXC_NUMFMT_STRING( 65, "#,##0.00 " UTF8_EURO ";-#,##0.00 " UTF8_EURO ),
1094  EXC_NUMFMT_STRING( 66, "#,##0.00 " UTF8_EURO ";[RED]-#,##0.00 " UTF8_EURO ),
1096 };
1097 
1098 const XclBuiltInFormat spBuiltInFormats_GERMAN_AUSTRIAN[] =
1099 {
1100  EXC_NUMFMT_STRING( 15, "DD.MMM.YY" ),
1101  EXC_NUMFMT_STRING( 16, "DD.MMM" ),
1102  EXC_NUMFMT_STRING( 17, "MMM.YY" ),
1103  EXC_NUMFMT_STRING( 63, UTF8_EURO " #,##0;-" UTF8_EURO " #,##0" ),
1104  EXC_NUMFMT_STRING( 64, UTF8_EURO " #,##0;[RED]-" UTF8_EURO " #,##0" ),
1105  EXC_NUMFMT_STRING( 65, UTF8_EURO " #,##0.00;-" UTF8_EURO " #,##0.00" ),
1106  EXC_NUMFMT_STRING( 66, UTF8_EURO " #,##0.00;[RED]-" UTF8_EURO " #,##0.00" ),
1108 };
1109 
1110 const XclBuiltInFormat spBuiltInFormats_GERMAN_SWISS[] =
1111 {
1112  EXC_NUMFMT_STRING( 63, "\"SFr. \"#,##0;\"SFr. \"-#,##0" ),
1113  EXC_NUMFMT_STRING( 64, "\"SFr. \"#,##0;[RED]\"SFr. \"-#,##0" ),
1114  EXC_NUMFMT_STRING( 65, "\"SFr. \"#,##0.00;\"SFr. \"-#,##0.00" ),
1115  EXC_NUMFMT_STRING( 66, "\"SFr. \"#,##0.00;[RED]\"SFr. \"-#,##0.00" ),
1117 };
1118 
1119 const XclBuiltInFormat spBuiltInFormats_GERMAN_LUXEMBOURG[] =
1120 {
1121  EXC_NUMFMT_STRING( 15, "DD.MMM.YY" ),
1122  EXC_NUMFMT_STRING( 16, "DD.MMM" ),
1123  EXC_NUMFMT_STRING( 17, "MMM.YY" ),
1124  EXC_NUMFMT_STRING( 37, "#,##0 _" UTF8_EURO ";-#,##0 _" UTF8_EURO ),
1125  EXC_NUMFMT_STRING( 38, "#,##0 _" UTF8_EURO ";[RED]-#,##0 _" UTF8_EURO ),
1126  EXC_NUMFMT_STRING( 39, "#,##0.00 _" UTF8_EURO ";-#,##0.00 _" UTF8_EURO ),
1127  EXC_NUMFMT_STRING( 40, "#,##0.00 _" UTF8_EURO ";[RED]-#,##0.00 _" UTF8_EURO ),
1128  EXC_NUMFMT_STRING( 63, "#,##0 " UTF8_EURO ";-#,##0 " UTF8_EURO ),
1129  EXC_NUMFMT_STRING( 64, "#,##0 " UTF8_EURO ";[RED]-#,##0 " UTF8_EURO ),
1130  EXC_NUMFMT_STRING( 65, "#,##0.00 " UTF8_EURO ";-#,##0.00 " UTF8_EURO ),
1131  EXC_NUMFMT_STRING( 66, "#,##0.00 " UTF8_EURO ";[RED]-#,##0.00 " UTF8_EURO ),
1133 };
1134 
1135 const XclBuiltInFormat spBuiltInFormats_GERMAN_LIECHTENSTEIN[] =
1136 {
1137  EXC_NUMFMT_STRING( 63, "\"CHF \"#,##0;\"CHF \"-#,##0" ),
1138  EXC_NUMFMT_STRING( 64, "\"CHF \"#,##0;[RED]\"CHF \"-#,##0" ),
1139  EXC_NUMFMT_STRING( 65, "\"CHF \"#,##0.00;\"CHF \"-#,##0.00" ),
1140  EXC_NUMFMT_STRING( 66, "\"CHF \"#,##0.00;[RED]\"CHF \"-#,##0.00" ),
1142 };
1143 
1144 // ITALIAN --------------------------------------------------------------------
1145 
1146 const XclBuiltInFormat spBuiltInFormats_ITALIAN_ITALY[] =
1147 {
1148  EXC_NUMFMT_STRING( 15, "DD-MMM-YY" ),
1149  EXC_NUMFMT_STRING( 16, "DD-MMM" ),
1150  EXC_NUMFMT_STRING( 17, "MMM-YY" ),
1151  EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ),
1152  EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ),
1153  EXC_NUMFMT_STRING( 20, "h:mm" ),
1154  EXC_NUMFMT_STRING( 21, "h:mm:ss" ),
1155  EXC_NUMFMT_STRING( 22, "DD/MM/YYYY h:mm" ),
1156  EXC_NUMFMT_STRING( 63, UTF8_EURO " #,##0;-" UTF8_EURO " #,##0" ),
1157  EXC_NUMFMT_STRING( 64, UTF8_EURO " #,##0;[RED]-" UTF8_EURO " #,##0" ),
1158  EXC_NUMFMT_STRING( 65, UTF8_EURO " #,##0.00;-" UTF8_EURO " #,##0.00" ),
1159  EXC_NUMFMT_STRING( 66, UTF8_EURO " #,##0.00;[RED]-" UTF8_EURO " #,##0.00" ),
1161 };
1162 
1163 const XclBuiltInFormat spBuiltInFormats_ITALIAN_SWISS[] =
1164 {
1165  EXC_NUMFMT_STRING( 15, "DD.MMM.YY" ),
1166  EXC_NUMFMT_STRING( 16, "DD.MMM" ),
1167  EXC_NUMFMT_STRING( 17, "MMM.YY" ),
1168  EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ),
1169  EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ),
1170  EXC_NUMFMT_STRING( 22, "DD.MM.YYYY hh:mm" ),
1171  EXC_NUMFMT_STRING( 63, "\"SFr. \"#,##0;\"SFr. \"-#,##0" ),
1172  EXC_NUMFMT_STRING( 64, "\"SFr. \"#,##0;[RED]\"SFr. \"-#,##0" ),
1173  EXC_NUMFMT_STRING( 65, "\"SFr. \"#,##0.00;\"SFr. \"-#,##0.00" ),
1174  EXC_NUMFMT_STRING( 66, "\"SFr. \"#,##0.00;[RED]\"SFr. \"-#,##0.00" ),
1176 };
1177 
1178 // SWEDISH --------------------------------------------------------------------
1179 
1180 const XclBuiltInFormat spBuiltInFormats_SWEDISH_SWEDEN[] =
1181 {
1182  EXC_NUMFMT_STRING( 15, "DD-MMM-YY" ),
1183  EXC_NUMFMT_STRING( 16, "DD-MMM" ),
1184  EXC_NUMFMT_STRING( 17, "MMM-YY" ),
1185  EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ),
1186  EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ),
1187  EXC_NUMFMT_STRING( 22, "YYYY-MM-DD hh:mm" ),
1188  EXC_NUMFMT_STRING( 37, "#,##0 _k_r;-#,##0 _k_r" ),
1189  EXC_NUMFMT_STRING( 38, "#,##0 _k_r;[RED]-#,##0 _k_r" ),
1190  EXC_NUMFMT_STRING( 39, "#,##0.00 _k_r;-#,##0.00 _k_r" ),
1191  EXC_NUMFMT_STRING( 40, "#,##0.00 _k_r;[RED]-#,##0.00 _k_r" ),
1192  EXC_NUMFMT_STRING( 63, "#,##0 \"kr\";-#,##0 \"kr\"" ),
1193  EXC_NUMFMT_STRING( 64, "#,##0 \"kr\";[RED]-#,##0 \"kr\"" ),
1194  EXC_NUMFMT_STRING( 65, "#,##0.00 \"kr\";-#,##0.00 \"kr\"" ),
1195  EXC_NUMFMT_STRING( 66, "#,##0.00 \"kr\";[RED]-#,##0.00 \"kr\"" ),
1197 };
1198 
1199 const XclBuiltInFormat spBuiltInFormats_SWEDISH_FINLAND[] =
1200 {
1201  EXC_NUMFMT_STRING( 9, "0 %" ),
1202  EXC_NUMFMT_STRING( 10, "0.00 %" ),
1203  EXC_NUMFMT_STRING( 15, "DD.MMM.YY" ),
1204  EXC_NUMFMT_STRING( 16, "DD.MMM" ),
1205  EXC_NUMFMT_STRING( 17, "MMM.YY" ),
1206  EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ),
1207  EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ),
1208  EXC_NUMFMT_STRING( 22, "D.M.YYYY hh:mm" ),
1209  EXC_NUMFMT_STRING( 37, "#,##0 _" UTF8_EURO ";-#,##0 _" UTF8_EURO ),
1210  EXC_NUMFMT_STRING( 38, "#,##0 _" UTF8_EURO ";[RED]-#,##0 _" UTF8_EURO ),
1211  EXC_NUMFMT_STRING( 39, "#,##0.00 _" UTF8_EURO ";-#,##0.00 _" UTF8_EURO ),
1212  EXC_NUMFMT_STRING( 40, "#,##0.00 _" UTF8_EURO ";[RED]-#,##0.00 _" UTF8_EURO ),
1213  EXC_NUMFMT_STRING( 63, "#,##0 " UTF8_EURO ";-#,##0 " UTF8_EURO ),
1214  EXC_NUMFMT_STRING( 64, "#,##0 " UTF8_EURO ";[RED]-#,##0 " UTF8_EURO ),
1215  EXC_NUMFMT_STRING( 65, "#,##0.00 " UTF8_EURO ";-#,##0.00 " UTF8_EURO ),
1216  EXC_NUMFMT_STRING( 66, "#,##0.00 " UTF8_EURO ";[RED]-#,##0.00 " UTF8_EURO ),
1218 };
1219 
1220 // ASIAN ----------------------------------------------------------------------
1221 
1223 const XclBuiltInFormat spBuiltInFormats_ASIAN[] =
1224 {
1225  EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ),
1226  EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ),
1227  EXC_NUMFMT_STRING( 20, "h:mm" ),
1228  EXC_NUMFMT_STRING( 21, "h:mm:ss" ),
1229  EXC_NUMFMT_STRING( 23, "$#,##0_);($#,##0)" ),
1230  EXC_NUMFMT_STRING( 24, "$#,##0_);[RED]($#,##0)" ),
1231  EXC_NUMFMT_STRING( 25, "$#,##0.00_);($#,##0.00)" ),
1232  EXC_NUMFMT_STRING( 26, "$#,##0.00_);[RED]($#,##0.00)" ),
1233  EXC_NUMFMT_REUSE( 29, 28 ),
1234  EXC_NUMFMT_REUSE( 36, 27 ),
1235  EXC_NUMFMT_REUSE( 50, 27 ),
1236  EXC_NUMFMT_REUSE( 51, 28 ),
1237  EXC_NUMFMT_REUSE( 52, 34 ),
1238  EXC_NUMFMT_REUSE( 53, 35 ),
1239  EXC_NUMFMT_REUSE( 54, 28 ),
1240  EXC_NUMFMT_REUSE( 55, 34 ),
1241  EXC_NUMFMT_REUSE( 56, 35 ),
1242  EXC_NUMFMT_REUSE( 57, 27 ),
1243  EXC_NUMFMT_REUSE( 58, 28 ),
1245 };
1246 
1247 const XclBuiltInFormat spBuiltInFormats_JAPANESE[] =
1248 {
1249  EXC_NUMFMT_STRING( 14, "YYYY/M/D" ),
1250  EXC_NUMFMT_STRING( 15, "D-MMM-YY" ),
1251  EXC_NUMFMT_STRING( 16, "D-MMM" ),
1252  EXC_NUMFMT_STRING( 17, "MMM-YY" ),
1253  EXC_NUMFMT_STRING( 22, "YYYY/M/D h:mm" ),
1254  EXC_NUMFMT_STRING( 27, "[$-0411]GE.M.D" ),
1255  EXC_NUMFMT_STRING( 28, "[$-0411]GGGE" UTF8_CJ_YEAR "M" UTF8_CJ_MON "D" UTF8_CJ_DAY ),
1256  EXC_NUMFMT_STRING( 30, "[$-0411]M/D/YY" ),
1257  EXC_NUMFMT_STRING( 31, "[$-0411]YYYY" UTF8_CJ_YEAR "M" UTF8_CJ_MON "D" UTF8_CJ_DAY ),
1258  EXC_NUMFMT_STRING( 32, "[$-0411]h" UTF8_CJ_HOUR "mm" UTF8_CJ_MIN ),
1259  EXC_NUMFMT_STRING( 33, "[$-0411]h" UTF8_CJ_HOUR "mm" UTF8_CJ_MIN "ss" UTF8_CJ_SEC ),
1260  EXC_NUMFMT_STRING( 34, "[$-0411]YYYY" UTF8_CJ_YEAR "M" UTF8_CJ_MON ),
1261  EXC_NUMFMT_STRING( 35, "[$-0411]M" UTF8_CJ_MON "D" UTF8_CJ_DAY ),
1262  EXC_NUMFMT_STRING( 63, UTF8_YEN_JP "#,##0;-" UTF8_YEN_JP "#,##0" ),
1263  EXC_NUMFMT_STRING( 64, UTF8_YEN_JP "#,##0;[RED]-" UTF8_YEN_JP "#,##0" ),
1264  EXC_NUMFMT_STRING( 65, UTF8_YEN_JP "#,##0.00;-" UTF8_YEN_JP "#,##0.00" ),
1265  EXC_NUMFMT_STRING( 66, UTF8_YEN_JP "#,##0.00;[RED]-" UTF8_YEN_JP "#,##0.00" ),
1267 };
1268 
1269 const XclBuiltInFormat spBuiltInFormats_KOREAN[] =
1270 {
1271  EXC_NUMFMT_STRING( 14, "YYYY-MM-DD" ),
1272  EXC_NUMFMT_STRING( 15, "DD-MMM-YY" ),
1273  EXC_NUMFMT_STRING( 16, "DD-MMM" ),
1274  EXC_NUMFMT_STRING( 17, "MMM-YY" ),
1275  EXC_NUMFMT_STRING( 22, "YYYY-MM-DD h:mm" ),
1276  EXC_NUMFMT_STRING( 27, "[$-0412]YYYY" UTF8_CJ_YEAR " MM" UTF8_CJ_MON " DD" UTF8_CJ_DAY ),
1277  EXC_NUMFMT_STRING( 28, "[$-0412]MM-DD" ),
1278  EXC_NUMFMT_STRING( 30, "[$-0412]MM-DD-YY" ),
1279  EXC_NUMFMT_STRING( 31, "[$-0412]YYYY" UTF8_KO_YEAR " MM" UTF8_KO_MON " DD" UTF8_KO_DAY ),
1280  EXC_NUMFMT_STRING( 32, "[$-0412]h" UTF8_KO_HOUR " mm" UTF8_KO_MIN ),
1281  EXC_NUMFMT_STRING( 33, "[$-0412]h" UTF8_KO_HOUR " mm" UTF8_KO_MIN " ss" UTF8_KO_SEC ),
1282  EXC_NUMFMT_STRING( 34, "[$-0412]YYYY\"/\"MM\"/\"DD" ),
1283  EXC_NUMFMT_STRING( 35, "[$-0412]YYYY-MM-DD" ),
1284  EXC_NUMFMT_STRING( 63, UTF8_WON "#,##0;-" UTF8_WON "#,##0" ),
1285  EXC_NUMFMT_STRING( 64, UTF8_WON "#,##0;[RED]-" UTF8_WON "#,##0" ),
1286  EXC_NUMFMT_STRING( 65, UTF8_WON "#,##0.00;-" UTF8_WON "#,##0.00" ),
1287  EXC_NUMFMT_STRING( 66, UTF8_WON "#,##0.00;[RED]-" UTF8_WON "#,##0.00" ),
1289 };
1290 
1291 const XclBuiltInFormat spBuiltInFormats_CHINESE_SIMPLIFIED[] =
1292 {
1293  EXC_NUMFMT_STRING( 14, "YYYY-M-D" ),
1294  EXC_NUMFMT_STRING( 15, "D-MMM-YY" ),
1295  EXC_NUMFMT_STRING( 16, "D-MMM" ),
1296  EXC_NUMFMT_STRING( 17, "MMM-YY" ),
1297  EXC_NUMFMT_STRING( 22, "YYYY-M-D h:mm" ),
1298  EXC_NUMFMT_STRING( 27, "[$-0804]YYYY" UTF8_CJ_YEAR "M" UTF8_CJ_MON ),
1299  EXC_NUMFMT_STRING( 28, "[$-0804]M" UTF8_CJ_MON "D" UTF8_CJ_DAY ),
1300  EXC_NUMFMT_STRING( 30, "[$-0804]M-D-YY" ),
1301  EXC_NUMFMT_STRING( 31, "[$-0804]YYYY" UTF8_CJ_YEAR "M" UTF8_CJ_MON "D" UTF8_CJ_DAY ),
1302  EXC_NUMFMT_STRING( 32, "[$-0804]h" UTF8_CS_HOUR "mm" UTF8_CJ_MIN ),
1303  EXC_NUMFMT_STRING( 33, "[$-0804]h" UTF8_CS_HOUR "mm" UTF8_CJ_MIN "ss" UTF8_CJ_SEC ),
1304  EXC_NUMFMT_STRING( 34, "[$-0804]AM/PMh" UTF8_CS_HOUR "mm" UTF8_CJ_MIN ),
1305  EXC_NUMFMT_STRING( 35, "[$-0804]AM/PMh" UTF8_CS_HOUR "mm" UTF8_CJ_MIN "ss" UTF8_CJ_SEC ),
1306  EXC_NUMFMT_REUSE( 52, 27 ),
1307  EXC_NUMFMT_REUSE( 53, 28 ),
1308  EXC_NUMFMT_STRING( 63, UTF8_YEN_CS "#,##0;-" UTF8_YEN_CS "#,##0" ),
1309  EXC_NUMFMT_STRING( 64, UTF8_YEN_CS "#,##0;[RED]-" UTF8_YEN_CS "#,##0" ),
1310  EXC_NUMFMT_STRING( 65, UTF8_YEN_CS "#,##0.00;-" UTF8_YEN_CS "#,##0.00" ),
1311  EXC_NUMFMT_STRING( 66, UTF8_YEN_CS "#,##0.00;[RED]-" UTF8_YEN_CS "#,##0.00" ),
1313 };
1314 
1315 const XclBuiltInFormat spBuiltInFormats_CHINESE_TRADITIONAL[] =
1316 {
1317  EXC_NUMFMT_STRING( 15, "D-MMM-YY" ),
1318  EXC_NUMFMT_STRING( 16, "D-MMM" ),
1319  EXC_NUMFMT_STRING( 17, "MMM-YY" ),
1320  EXC_NUMFMT_STRING( 18, "hh:mm AM/PM" ),
1321  EXC_NUMFMT_STRING( 19, "hh:mm:ss AM/PM" ),
1322  EXC_NUMFMT_OFFSET( 20, NF_TIME_HHMM ),
1323  EXC_NUMFMT_OFFSET( 21, NF_TIME_HHMMSS ),
1324  EXC_NUMFMT_STRING( 22, "YYYY/M/D hh:mm" ),
1325  EXC_NUMFMT_STRING( 23, "US$#,##0_);(US$#,##0)" ),
1326  EXC_NUMFMT_STRING( 24, "US$#,##0_);[RED](US$#,##0)" ),
1327  EXC_NUMFMT_STRING( 25, "US$#,##0.00_);(US$#,##0.00)" ),
1328  EXC_NUMFMT_STRING( 26, "US$#,##0.00_);[RED](US$#,##0.00)" ),
1329  EXC_NUMFMT_STRING( 27, "[$-0404]E/M/D" ),
1330  EXC_NUMFMT_STRING( 28, "[$-0404]E" UTF8_CJ_YEAR "M" UTF8_CJ_MON "D" UTF8_CJ_DAY ),
1331  EXC_NUMFMT_STRING( 30, "[$-0404]M/D/YY" ),
1332  EXC_NUMFMT_STRING( 31, "[$-0404]YYYY" UTF8_CJ_YEAR "M" UTF8_CJ_MON "D" UTF8_CJ_DAY ),
1333  EXC_NUMFMT_STRING( 32, "[$-0404]hh" UTF8_CJ_HOUR "mm" UTF8_CJ_MIN ),
1334  EXC_NUMFMT_STRING( 33, "[$-0404]hh" UTF8_CJ_HOUR "mm" UTF8_CJ_MIN "ss" UTF8_CJ_SEC ),
1335  EXC_NUMFMT_STRING( 34, "[$-0404]AM/PMhh" UTF8_CJ_HOUR "mm" UTF8_CJ_MIN ),
1336  EXC_NUMFMT_STRING( 35, "[$-0404]AM/PMhh" UTF8_CJ_HOUR "mm" UTF8_CJ_MIN "ss" UTF8_CJ_SEC ),
1337  EXC_NUMFMT_STRING( 63, "$#,##0;-$#,##0" ),
1338  EXC_NUMFMT_STRING( 64, "$#,##0;[RED]-$#,##0" ),
1339  EXC_NUMFMT_STRING( 65, "$#,##0.00;-$#,##0.00" ),
1340  EXC_NUMFMT_STRING( 66, "$#,##0.00;[RED]-$#,##0.00" ),
1342 };
1343 
1344 // OTHER ----------------------------------------------------------------------
1345 
1346 const XclBuiltInFormat spBuiltInFormats_HEBREW[] =
1347 {
1348  EXC_NUMFMT_STRING( 15, "DD-MMMM-YY" ),
1349  EXC_NUMFMT_STRING( 16, "DD-MMMM" ),
1350  EXC_NUMFMT_STRING( 17, "MMMM-YY" ),
1351  EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ),
1352  EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ),
1353  EXC_NUMFMT_STRING( 63, UTF8_SHEQEL " #,##0;" UTF8_SHEQEL " -#,##0" ),
1354  EXC_NUMFMT_STRING( 64, UTF8_SHEQEL " #,##0;[RED]" UTF8_SHEQEL " -#,##0" ),
1355  EXC_NUMFMT_STRING( 65, UTF8_SHEQEL " #,##0.00;" UTF8_SHEQEL " -#,##0.00" ),
1356  EXC_NUMFMT_STRING( 66, UTF8_SHEQEL " #,##0.00;[RED]" UTF8_SHEQEL " -#,##0.00" ),
1358 };
1359 
1360 const XclBuiltInFormat spBuiltInFormats_THAI[] =
1361 {
1362  EXC_NUMFMT_STRING( 14, "D/M/YYYY" ),
1363  EXC_NUMFMT_STRING( 15, "D-MMM-YY" ),
1364  EXC_NUMFMT_STRING( 16, "D-MMM" ),
1365  EXC_NUMFMT_STRING( 17, "MMM-YY" ),
1366  EXC_NUMFMT_STRING( 18, "h:mm AM/PM" ),
1367  EXC_NUMFMT_STRING( 19, "h:mm:ss AM/PM" ),
1368  EXC_NUMFMT_STRING( 22, "D/M/YYYY h:mm" ),
1369  EXC_NUMFMT_STRING( 59, "t0" ),
1370  EXC_NUMFMT_STRING( 60, "t0.00" ),
1371  EXC_NUMFMT_STRING( 61, "t#,##0" ),
1372  EXC_NUMFMT_STRING( 62, "t#,##0.00" ),
1373  EXC_NUMFMT_STRING( 63, "t" UTF8_BAHT "#,##0_);t(" UTF8_BAHT "#,##0)" ),
1374  EXC_NUMFMT_STRING( 64, "t" UTF8_BAHT "#,##0_);[RED]t(" UTF8_BAHT "#,##0)" ),
1375  EXC_NUMFMT_STRING( 65, "t" UTF8_BAHT "#,##0.00_);t(" UTF8_BAHT "#,##0.00)" ),
1376  EXC_NUMFMT_STRING( 66, "t" UTF8_BAHT "#,##0.00_);[RED]t(" UTF8_BAHT "#,##0.00)" ),
1377  EXC_NUMFMT_STRING( 67, "t0%" ),
1378  EXC_NUMFMT_STRING( 68, "t0.00%" ),
1379  EXC_NUMFMT_STRING( 69, "t# ?/?" ),
1380  EXC_NUMFMT_STRING( 70, "t# ?\?/?\?" ),
1381  EXC_NUMFMT_STRING( 71, "tD/M/EE" ),
1382  EXC_NUMFMT_STRING( 72, "tD-MMM-E" ),
1383  EXC_NUMFMT_STRING( 73, "tD-MMM" ),
1384  EXC_NUMFMT_STRING( 74, "tMMM-E" ),
1385  EXC_NUMFMT_STRING( 75, "th:mm" ),
1386  EXC_NUMFMT_STRING( 76, "th:mm:ss" ),
1387  EXC_NUMFMT_STRING( 77, "tD/M/EE h:mm" ),
1388  EXC_NUMFMT_STRING( 78, "tmm:ss" ),
1389  EXC_NUMFMT_STRING( 79, "t[h]:mm:ss" ),
1390  EXC_NUMFMT_STRING( 80, "tmm:ss.0" ),
1391  EXC_NUMFMT_STRING( 81, "D/M/E" ),
1393 };
1394 
1395 #undef EXC_NUMFMT_ENDTABLE
1396 #undef EXC_NUMFMT_REUSE
1397 #undef EXC_NUMFMT_OFFSET
1398 #undef EXC_NUMFMT_STRING
1399 
1401 struct XclBuiltInFormatTable
1402 {
1404  LanguageType meParentLang;
1405  const XclBuiltInFormat* mpFormats;
1406 };
1407 
1408 const XclBuiltInFormatTable spBuiltInFormatTables[] =
1409 { // language parent language format table
1410  { LANGUAGE_DONTKNOW, LANGUAGE_NONE, spBuiltInFormats_DONTKNOW },
1411 
1412  { LANGUAGE_ENGLISH, LANGUAGE_DONTKNOW, spBuiltInFormats_ENGLISH },
1413  { LANGUAGE_ENGLISH_UK, LANGUAGE_ENGLISH, spBuiltInFormats_ENGLISH_UK },
1414  { LANGUAGE_ENGLISH_EIRE, LANGUAGE_ENGLISH, spBuiltInFormats_ENGLISH_EIRE },
1415  { LANGUAGE_ENGLISH_US, LANGUAGE_ENGLISH, spBuiltInFormats_ENGLISH_US },
1416  { LANGUAGE_ENGLISH_CAN, LANGUAGE_ENGLISH, spBuiltInFormats_ENGLISH_CAN },
1417  { LANGUAGE_ENGLISH_AUS, LANGUAGE_ENGLISH, spBuiltInFormats_ENGLISH_AUS },
1418  { LANGUAGE_ENGLISH_SAFRICA, LANGUAGE_ENGLISH, spBuiltInFormats_ENGLISH_SAFRICA },
1420 
1421  { PRV_LANGUAGE_FRENCH_PRIM, LANGUAGE_DONTKNOW, spBuiltInFormats_FRENCH },
1422  { LANGUAGE_FRENCH, PRV_LANGUAGE_FRENCH_PRIM, spBuiltInFormats_FRENCH_FRANCE },
1423  { LANGUAGE_FRENCH_CANADIAN, PRV_LANGUAGE_FRENCH_PRIM, spBuiltInFormats_FRENCH_CANADIAN },
1424  { LANGUAGE_FRENCH_SWISS, PRV_LANGUAGE_FRENCH_PRIM, spBuiltInFormats_FRENCH_SWISS },
1425  { LANGUAGE_FRENCH_BELGIAN, LANGUAGE_FRENCH, spBuiltInFormats_FRENCH_BELGIAN },
1428 
1429  { PRV_LANGUAGE_GERMAN_PRIM, LANGUAGE_DONTKNOW, spBuiltInFormats_GERMAN },
1430  { LANGUAGE_GERMAN, PRV_LANGUAGE_GERMAN_PRIM, spBuiltInFormats_GERMAN_GERMANY },
1431  { LANGUAGE_GERMAN_AUSTRIAN, PRV_LANGUAGE_GERMAN_PRIM, spBuiltInFormats_GERMAN_AUSTRIAN },
1432  { LANGUAGE_GERMAN_SWISS, PRV_LANGUAGE_GERMAN_PRIM, spBuiltInFormats_GERMAN_SWISS },
1433  { LANGUAGE_GERMAN_LUXEMBOURG, PRV_LANGUAGE_GERMAN_PRIM, spBuiltInFormats_GERMAN_LUXEMBOURG },
1434  { LANGUAGE_GERMAN_LIECHTENSTEIN, PRV_LANGUAGE_GERMAN_PRIM, spBuiltInFormats_GERMAN_LIECHTENSTEIN },
1435 
1436  { LANGUAGE_ITALIAN, LANGUAGE_DONTKNOW, spBuiltInFormats_ITALIAN_ITALY },
1437  { LANGUAGE_ITALIAN_SWISS, LANGUAGE_DONTKNOW, spBuiltInFormats_ITALIAN_SWISS },
1438 
1439  { LANGUAGE_SWEDISH, LANGUAGE_DONTKNOW, spBuiltInFormats_SWEDISH_SWEDEN },
1440  { LANGUAGE_SWEDISH_FINLAND, LANGUAGE_DONTKNOW, spBuiltInFormats_SWEDISH_FINLAND },
1441 
1442  { PRV_LANGUAGE_ASIAN_PRIM, LANGUAGE_DONTKNOW, spBuiltInFormats_ASIAN },
1443  { LANGUAGE_JAPANESE, PRV_LANGUAGE_ASIAN_PRIM, spBuiltInFormats_JAPANESE },
1444  { LANGUAGE_KOREAN, PRV_LANGUAGE_ASIAN_PRIM, spBuiltInFormats_KOREAN },
1445  { LANGUAGE_CHINESE_SIMPLIFIED, PRV_LANGUAGE_ASIAN_PRIM, spBuiltInFormats_CHINESE_SIMPLIFIED },
1446  { LANGUAGE_CHINESE_TRADITIONAL, PRV_LANGUAGE_ASIAN_PRIM, spBuiltInFormats_CHINESE_TRADITIONAL },
1447 
1448  { LANGUAGE_HEBREW, LANGUAGE_DONTKNOW, spBuiltInFormats_HEBREW },
1449  { LANGUAGE_THAI, LANGUAGE_DONTKNOW, spBuiltInFormats_THAI }
1450 };
1451 
1452 } // namespace
1453 
1455  meSysLang( rRoot.GetSysLanguage() ),
1456  mnStdScNumFmt( rRoot.GetFormatter().GetStandardIndex( ScGlobal::eLnge ) )
1457 {
1458  // *** insert default formats (BIFF5+ only)***
1459 
1460  if( rRoot.GetBiff() >= EXC_BIFF5 )
1462 }
1463 
1465 {
1466  maFmtMap.clear();
1467 }
1468 
1469 void XclNumFmtBuffer::InsertFormat( sal_uInt16 nXclNumFmt, const OUString& rFormat )
1470 {
1471  XclNumFmt& rNumFmt = maFmtMap[ nXclNumFmt ];
1472  rNumFmt.maFormat = rFormat;
1473  // #i62053# rFormat may be an empty string, meOffset must be initialized
1474  rNumFmt.meOffset = NF_NUMBER_STANDARD;
1475  rNumFmt.meLanguage = LANGUAGE_SYSTEM;
1476 }
1477 
1479 {
1480  // build a map containing tables for all languages
1481  typedef ::std::map< LanguageType, const XclBuiltInFormatTable* > XclBuiltInMap;
1482  XclBuiltInMap aBuiltInMap;
1483  for(const auto &rTable : spBuiltInFormatTables)
1484  aBuiltInMap[ rTable.meLanguage ] = &rTable;
1485 
1486  // build a list of table pointers for the current language, with all parent tables
1487  typedef ::std::vector< const XclBuiltInFormatTable* > XclBuiltInVec;
1488  XclBuiltInVec aBuiltInVec;
1489  for( XclBuiltInMap::const_iterator aMIt = aBuiltInMap.find( meSysLang ), aMEnd = aBuiltInMap.end();
1490  aMIt != aMEnd; aMIt = aBuiltInMap.find( aMIt->second->meParentLang ) )
1491  aBuiltInVec.push_back( aMIt->second );
1492  // language not supported
1493  if( aBuiltInVec.empty() )
1494  {
1495  SAL_WARN("sc", "XclNumFmtBuffer::InsertBuiltinFormats - language not supported (#i29949#) 0x" << std::hex << meSysLang );
1496  XclBuiltInMap::const_iterator aMIt = aBuiltInMap.find( LANGUAGE_DONTKNOW );
1497  OSL_ENSURE( aMIt != aBuiltInMap.end(), "XclNumFmtBuffer::InsertBuiltinFormats - default map not found" );
1498  if( aMIt != aBuiltInMap.end() )
1499  aBuiltInVec.push_back( aMIt->second );
1500  }
1501 
1502  // insert the default formats in the format map, from root parent to system language
1503  std::map< sal_uInt16, sal_uInt16 > aReuseMap;
1504  for( XclBuiltInVec::reverse_iterator aVIt = aBuiltInVec.rbegin(), aVEnd = aBuiltInVec.rend(); aVIt != aVEnd; ++aVIt )
1505  {
1506  // put LANGUAGE_SYSTEM for all entries in default table
1507  LanguageType eLang = ((*aVIt)->meLanguage == LANGUAGE_DONTKNOW) ? LANGUAGE_SYSTEM : meSysLang;
1508  for( const XclBuiltInFormat* pBuiltIn = (*aVIt)->mpFormats; pBuiltIn && (pBuiltIn->mnXclNumFmt != EXC_FORMAT_NOTFOUND); ++pBuiltIn )
1509  {
1510  XclNumFmt& rNumFmt = maFmtMap[ pBuiltIn->mnXclNumFmt ];
1511 
1512  rNumFmt.meOffset = pBuiltIn->meOffset;
1513  rNumFmt.meLanguage = eLang;
1514 
1515  if( pBuiltIn->mpFormat )
1516  rNumFmt.maFormat = OUString( pBuiltIn->mpFormat, strlen(pBuiltIn->mpFormat), RTL_TEXTENCODING_UTF8 );
1517  else
1518  rNumFmt.maFormat = EMPTY_OUSTRING;
1519 
1520  if( pBuiltIn->meOffset == PRV_NF_INDEX_REUSE )
1521  aReuseMap[ pBuiltIn->mnXclNumFmt ] = pBuiltIn->mnXclReuseFmt;
1522  else
1523  aReuseMap.erase( pBuiltIn->mnXclNumFmt );
1524  }
1525  }
1526 
1527  // copy reused number formats
1528  for( const auto& [rXclNumFmt, rXclReuseFmt] : aReuseMap )
1529  maFmtMap[ rXclNumFmt ] = maFmtMap[ rXclReuseFmt ];
1530 }
1531 
1532 // Cell formatting data (XF) ==================================================
1533 
1535  mbLocked( true ), // default in Excel and Calc
1536  mbHidden( false )
1537 {
1538 }
1539 
1540 bool operator==( const XclCellProt& rLeft, const XclCellProt& rRight )
1541 {
1542  return (rLeft.mbLocked == rRight.mbLocked) && (rLeft.mbHidden == rRight.mbHidden);
1543 }
1544 
1546  mnHorAlign( EXC_XF_HOR_GENERAL ),
1547  mnVerAlign( EXC_XF_VER_BOTTOM ),
1548  mnOrient( EXC_ORIENT_NONE ),
1549  mnTextDir( EXC_XF_TEXTDIR_CONTEXT ),
1550  mnRotation( EXC_ROT_NONE ),
1551  mnIndent( 0 ),
1552  mbLineBreak( false ),
1553  mbShrink( false )
1554 {
1555 }
1556 
1558 {
1559  SvxCellHorJustify eHorJust = SvxCellHorJustify::Standard;
1560  switch( mnHorAlign )
1561  {
1562  case EXC_XF_HOR_GENERAL: eHorJust = SvxCellHorJustify::Standard; break;
1563  case EXC_XF_HOR_LEFT: eHorJust = SvxCellHorJustify::Left; break;
1564  case EXC_XF_HOR_CENTER_AS:
1565  case EXC_XF_HOR_CENTER: eHorJust = SvxCellHorJustify::Center; break;
1566  case EXC_XF_HOR_RIGHT: eHorJust = SvxCellHorJustify::Right; break;
1567  case EXC_XF_HOR_FILL: eHorJust = SvxCellHorJustify::Repeat; break;
1568  case EXC_XF_HOR_JUSTIFY:
1569  case EXC_XF_HOR_DISTRIB: eHorJust = SvxCellHorJustify::Block; break;
1570  default: OSL_FAIL( "XclCellAlign::GetScHorAlign - unknown horizontal alignment" );
1571  }
1572  return eHorJust;
1573 }
1574 
1576 {
1577  return (mnHorAlign == EXC_XF_HOR_DISTRIB) ? SvxCellJustifyMethod::Distribute : SvxCellJustifyMethod::Auto;
1578 }
1579 
1581 {
1582  SvxCellVerJustify eVerJust = SvxCellVerJustify::Standard;
1583  switch( mnVerAlign )
1584  {
1585  case EXC_XF_VER_TOP: eVerJust = SvxCellVerJustify::Top; break;
1586  case EXC_XF_VER_CENTER: eVerJust = SvxCellVerJustify::Center; break;
1587  case EXC_XF_VER_BOTTOM: eVerJust = SvxCellVerJustify::Standard; break;
1588  case EXC_XF_VER_JUSTIFY:
1589  case EXC_XF_VER_DISTRIB: eVerJust = SvxCellVerJustify::Block; break;
1590  default: OSL_FAIL( "XclCellAlign::GetScVerAlign - unknown vertical alignment" );
1591  }
1592  return eVerJust;
1593 }
1594 
1596 {
1597  return (mnVerAlign == EXC_XF_VER_DISTRIB) ? SvxCellJustifyMethod::Distribute : SvxCellJustifyMethod::Auto;
1598 }
1599 
1601 {
1602  SvxFrameDirection eFrameDir = SvxFrameDirection::Environment;
1603  switch( mnTextDir )
1604  {
1605  case EXC_XF_TEXTDIR_CONTEXT: eFrameDir = SvxFrameDirection::Environment; break;
1606  case EXC_XF_TEXTDIR_LTR: eFrameDir = SvxFrameDirection::Horizontal_LR_TB; break;
1607  case EXC_XF_TEXTDIR_RTL: eFrameDir = SvxFrameDirection::Horizontal_RL_TB; break;
1608  default: OSL_FAIL( "XclCellAlign::GetScFrameDir - unknown CTL text direction" );
1609  }
1610  return eFrameDir;
1611 }
1612 
1614 {
1615  switch( eHorJust )
1616  {
1617  case SvxCellHorJustify::Standard: mnHorAlign = EXC_XF_HOR_GENERAL; break;
1618  case SvxCellHorJustify::Left: mnHorAlign = EXC_XF_HOR_LEFT; break;
1619  case SvxCellHorJustify::Center: mnHorAlign = EXC_XF_HOR_CENTER; break;
1620  case SvxCellHorJustify::Right: mnHorAlign = EXC_XF_HOR_RIGHT; break;
1621  case SvxCellHorJustify::Block: mnHorAlign = EXC_XF_HOR_JUSTIFY; break;
1622  case SvxCellHorJustify::Repeat: mnHorAlign = EXC_XF_HOR_FILL; break;
1623  default: mnHorAlign = EXC_XF_HOR_GENERAL;
1624  OSL_FAIL( "XclCellAlign::SetScHorAlign - unknown horizontal alignment" );
1625  }
1626 }
1627 
1629 {
1630  switch( eVerJust )
1631  {
1632  case SvxCellVerJustify::Standard: mnVerAlign = EXC_XF_VER_BOTTOM; break;
1633  case SvxCellVerJustify::Top: mnVerAlign = EXC_XF_VER_TOP; break;
1634  case SvxCellVerJustify::Center: mnVerAlign = EXC_XF_VER_CENTER; break;
1635  case SvxCellVerJustify::Bottom: mnVerAlign = EXC_XF_VER_BOTTOM; break;
1636  default: mnVerAlign = EXC_XF_VER_BOTTOM;
1637  OSL_FAIL( "XclCellAlign::SetScVerAlign - unknown vertical alignment" );
1638  }
1639 }
1640 
1642 {
1643  switch( eFrameDir )
1644  {
1645  case SvxFrameDirection::Environment: mnTextDir = EXC_XF_TEXTDIR_CONTEXT; break;
1646  case SvxFrameDirection::Horizontal_LR_TB: mnTextDir = EXC_XF_TEXTDIR_LTR; break;
1647  case SvxFrameDirection::Horizontal_RL_TB: mnTextDir = EXC_XF_TEXTDIR_RTL; break;
1648  default: mnTextDir = EXC_XF_TEXTDIR_CONTEXT;
1649  OSL_FAIL( "XclCellAlign::SetScFrameDir - unknown CTL text direction" );
1650  }
1651 }
1652 
1653 bool operator==( const XclCellAlign& rLeft, const XclCellAlign& rRight )
1654 {
1655  return
1656  (rLeft.mnHorAlign == rRight.mnHorAlign) && (rLeft.mnVerAlign == rRight.mnVerAlign) &&
1657  (rLeft.mnTextDir == rRight.mnTextDir) && (rLeft.mnOrient == rRight.mnOrient) &&
1658  (rLeft.mnRotation == rRight.mnRotation) && (rLeft.mnIndent == rRight.mnIndent) &&
1659  (rLeft.mbLineBreak == rRight.mbLineBreak) && (rLeft.mbShrink == rRight.mbShrink);
1660 }
1661 
1663  mnLeftColor( 0 ),
1664  mnRightColor( 0 ),
1665  mnTopColor( 0 ),
1666  mnBottomColor( 0 ),
1667  mnDiagColor( 0 ),
1668  mnLeftLine( EXC_LINE_NONE ),
1669  mnRightLine( EXC_LINE_NONE ),
1670  mnTopLine( EXC_LINE_NONE ),
1671  mnBottomLine( EXC_LINE_NONE ),
1672  mnDiagLine( EXC_LINE_NONE ),
1673  mbDiagTLtoBR( false ),
1674  mbDiagBLtoTR( false )
1675 {
1676 }
1677 
1678 bool operator==( const XclCellBorder& rLeft, const XclCellBorder& rRight )
1679 {
1680  return
1681  (rLeft.mnLeftColor == rRight.mnLeftColor) && (rLeft.mnRightColor == rRight.mnRightColor) &&
1682  (rLeft.mnTopColor == rRight.mnTopColor) && (rLeft.mnBottomColor == rRight.mnBottomColor) &&
1683  (rLeft.mnLeftLine == rRight.mnLeftLine) && (rLeft.mnRightLine == rRight.mnRightLine) &&
1684  (rLeft.mnTopLine == rRight.mnTopLine) && (rLeft.mnBottomLine == rRight.mnBottomLine) &&
1685  (rLeft.mnDiagColor == rRight.mnDiagColor) && (rLeft.mnDiagLine == rRight.mnDiagLine) &&
1686  (rLeft.mbDiagTLtoBR == rRight.mbDiagTLtoBR) && (rLeft.mbDiagBLtoTR == rRight.mbDiagBLtoTR);
1687 }
1688 
1690  mnForeColor( EXC_COLOR_WINDOWTEXT ),
1691  mnBackColor( EXC_COLOR_WINDOWBACK ),
1692  mnPattern( EXC_PATT_NONE )
1693 {
1694 }
1695 
1697 {
1699 }
1700 
1701 bool operator==( const XclCellArea& rLeft, const XclCellArea& rRight )
1702 {
1703  return
1704  (rLeft.mnForeColor == rRight.mnForeColor) && (rLeft.mnBackColor == rRight.mnBackColor) &&
1705  (rLeft.mnPattern == rRight.mnPattern);
1706 }
1707 
1708 XclXFBase::XclXFBase( bool bCellXF ) :
1709  mnParent( bCellXF ? EXC_XF_DEFAULTSTYLE : EXC_XF_STYLEPARENT ),
1710  mbCellXF( bCellXF )
1711 {
1712  SetAllUsedFlags( false );
1713 }
1714 
1716 {
1717 }
1718 
1719 void XclXFBase::SetAllUsedFlags( bool bUsed )
1720 {
1722 }
1723 
1725 {
1727 }
1728 
1729 bool XclXFBase::Equals( const XclXFBase& rCmp ) const
1730 {
1731  return
1732  (mbCellXF == rCmp.mbCellXF) && (mnParent == rCmp.mnParent) &&
1733  (mbProtUsed == rCmp.mbProtUsed) && (mbFontUsed == rCmp.mbFontUsed) &&
1734  (mbFmtUsed == rCmp.mbFmtUsed) && (mbAlignUsed == rCmp.mbAlignUsed) &&
1735  (mbBorderUsed == rCmp.mbBorderUsed) && (mbAreaUsed == rCmp.mbAreaUsed);
1736 }
1737 
1738 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
bool operator==(const XclFontData &rLeft, const XclFontData &rRight)
Definition: xlstyle.cxx:518
XclFontPropSetType
Enumerates different types for objects with font settings (using different property names)...
Definition: xlstyle.hxx:396
sal_uInt16 mnBottomColor
Palette index for top line.
Definition: xlstyle.hxx:528
void FillFromVclFont(const vcl::Font &rFont)
Fills all members (except color and escapement) from the passed font.
Definition: xlstyle.cxx:203
sal_uInt8 mnTopLine
Style of right line.
Definition: xlstyle.hxx:532
bool mbShrink
true = Multi-line text.
Definition: xlstyle.hxx:497
NF_SCIENTIFIC_000E00
const sal_uInt8 EXC_ORIENT_NONE
Definition: xlconst.hxx:134
#define LANGUAGE_NONE
bool mbAreaUsed
true = border data used.
Definition: xlstyle.hxx:595
SvxCellHorJustify
#define LANGUAGE_GERMAN
#define DBG_ERROR_BIFF()
Definition: xltools.hxx:34
const sal_uInt8 EXC_XF_VER_CENTER
Definition: xlstyle.hxx:169
const sal_uInt8 EXC_XF_HOR_JUSTIFY
Definition: xlstyle.hxx:164
const sal_uInt8 EXC_XF_HOR_CENTER
Definition: xlstyle.hxx:161
bool mbDiagBLtoTR
true = Top-left to bottom-right on.
Definition: xlstyle.hxx:536
sal_uInt8 mnCharSet
Windows font family.
Definition: xlstyle.hxx:295
const sal_uInt8 EXC_XF_TEXTDIR_CONTEXT
Definition: xlstyle.hxx:174
const sal_uInt16 EXC_FONTWGHT_THIN
Definition: xlstyle.hxx:107
sal_uInt16 mnDiagColor
Palette index for bottom line.
Definition: xlstyle.hxx:529
const Color spnDefColorTable8[]
Default color table for BIFF8.
Definition: xlstyle.cxx:76
#define LANGUAGE_ENGLISH_SAFRICA
sal_uInt8 mnOrient
Vertical alignment.
Definition: xlstyle.hxx:492
#define LANGUAGE_ENGLISH_UK
bool mbShadow
true = Outlined.
Definition: xlstyle.hxx:300
NF_NUMBER_1000INT
const OUString & GetFamilyName() const
void SetAllUsedFlags(bool bUsed)
Sets all "attribute used" flags to the passed state.
Definition: xlstyle.cxx:1719
FAMILY_SCRIPT
#define EMPTY_OUSTRING
Definition: global.hxx:214
const sal_uInt8 EXC_XF_HOR_DISTRIB
Definition: xlstyle.hxx:166
#define UTF8_KO_MIN
Definition: xlstyle.cxx:821
css::awt::FontSlant GetApiPosture() const
Returns the API font posture.
Definition: xlstyle.cxx:417
sal_Int16 GetApiFontEncoding() const
Returns the API font text encoding.
Definition: xlstyle.cxx:411
#define LANGUAGE_ENGLISH_US
#define EXC_PALETTE_EGA_COLORS_DARK
Standard EGA colors, dark.
Definition: xlstyle.cxx:45
FAMILY_MODERN
bool mbDiagTLtoBR
Style of diagonal line(s).
Definition: xlstyle.hxx:535
Color mnNoteBack
Note text color.
Definition: xlstyle.hxx:271
NF_INDEX_TABLE_ENTRIES
const sal_uInt16 EXC_COLOR_BUTTONBACK
System window background color (>=BIFF5).
Definition: xlstyle.hxx:210
signed char sal_Int8
bool IsOutline() const
ScfPropSetHelper maHlpChCommon
Definition: xlstyle.hxx:425
FAMILY_DONTKNOW
const sal_uInt8 EXC_XF_HOR_RIGHT
Definition: xlstyle.hxx:162
const StyleSettings & GetStyleSettings() const
static const AllSettings & GetSettings()
Color mnNoteText
System button background color.
Definition: xlstyle.hxx:270
bool mbCellXF
Index to parent style XF.
Definition: xlstyle.hxx:589
sal_Int16 GetApiEscapement() const
Returns the API escapement style.
Definition: xlstyle.cxx:440
const Color & GetFaceColor() const
constexpr::Color COL_AUTO(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
This struct helps reading and writing Excel fonts.
Definition: xlstyle.hxx:286
#define LANGUAGE_KOREAN
WEIGHT_THIN
XclNumFmtMap maFmtMap
Definition: xlstyle.hxx:469
sal_uInt8 mnRightLine
Style of left line.
Definition: xlstyle.hxx:531
SvxEscapement GetScEscapement() const
Returns the Calc escapement style.
Definition: xlstyle.cxx:291
const sal_uInt16 EXC_COLOR_NOTEBACK
Automatic frame border for series (BIFF8 charts).
Definition: xlstyle.hxx:214
ScfPropSetHelper maHlpChCmplx
Chart properties for Asian script.
Definition: xlstyle.hxx:428
CALCNOTESBACKGROUND
NF_NUMBER_DEC2
WEIGHT_BLACK
bool mbFmtUsed
true = font index used.
Definition: xlstyle.hxx:592
XclFontData()
true = Shadowed.
Definition: xlstyle.cxx:173
const Color * mpnColorTable
Definition: xlstyle.hxx:266
sal_uInt16 mnHeight
Font color.
Definition: xlstyle.hxx:291
WEIGHT_SEMIBOLD
#define LANGUAGE_FRENCH_MONACO
LanguageType meLanguage
SvxFrameDirection
rtl_TextEncoding GetFontEncoding() const
Returns the font text encoding.
Definition: xlstyle.cxx:248
const Color spnDefColorTable3[]
Default color table for BIFF3/BIFF4.
Definition: xlstyle.cxx:55
const sal_uInt16 EXC_FONTWGHT_DONTKNOW
Definition: xlstyle.hxx:106
#define UTF8_CJ_SEC
Definition: xlstyle.cxx:811
NF_NUMBER_1000DEC2
ScfPropSetHelper maHlpChEscapement
Chart properties for Complex script, no font name.
Definition: xlstyle.hxx:432
STRIKEOUT_SLASH
const sal_uInt8 EXC_XF_VER_JUSTIFY
Definition: xlstyle.hxx:171
#define LANGUAGE_FRENCH_SWISS
FAMILY_ROMAN
const sal_uInt16 EXC_FONTWGHT_SEMILIGHT
Definition: xlstyle.hxx:110
#define LANGUAGE_GERMAN_AUSTRIAN
const sal_uInt8 EXC_FONTFAM_SWISS
Definition: xlstyle.hxx:87
#define LANGUAGE_FRENCH_CANADIAN
#define UTF8_EURO
Definition: xlstyle.cxx:798
void SetScFrameDir(SvxFrameDirection eFrameDir)
Sets the Calc frame direction.
Definition: xlstyle.cxx:1641
#define LANGUAGE_ENGLISH_NZ
NF_TIME_HHMM
const sal_uInt16 EXC_FONTWGHT_LIGHT
Definition: xlstyle.hxx:109
WEIGHT_LIGHT
sal_uInt32 mnTableSize
Note background color.
Definition: xlstyle.hxx:272
SvxCellVerJustify GetScVerAlign() const
Returns the Calc vertical alignment.
Definition: xlstyle.cxx:1580
FontItalic GetScPosture() const
Returns the Calc font posture.
Definition: xlstyle.cxx:254
const sal_uInt8 EXC_XF_HOR_GENERAL
Definition: xlstyle.hxx:159
NF_PERCENT_DEC2
const sal_uInt16 EXC_FORMAT_NOTFOUND
Definition: xlstyle.hxx:70
FontFamily GetFamilyType()
NF_DATE_SYS_DDMMM
#define UTF8_CJ_MIN
Definition: xlstyle.cxx:810
const sal_uInt16 EXC_FONTESC_SUB
Definition: xlstyle.hxx:128
WEIGHT_BOLD
const sal_uInt16 EXC_FONTWGHT_BOLD
Definition: xlstyle.hxx:114
#define UTF8_CS_HOUR
Definition: xlstyle.cxx:814
NF_NUMBER_STANDARD
SvxCellJustifyMethod GetScVerJustifyMethod() const
Returns vertical justification method as Calc's attribute.
Definition: xlstyle.cxx:1595
const sal_uInt8 EXC_FONTFAM_ROMAN
Definition: xlstyle.hxx:86
FontItalic GetItalic()
void SetApiWeight(float fApiWeight)
Sets the API font weight.
Definition: xlstyle.cxx:484
SvxCellVerJustify
static OUString GetXclFontName(const OUString &rFontName)
Returns the matching Excel font name for a passed Calc font name.
Definition: xltools.cxx:455
#define UTF8_YEN_CS
Definition: xlstyle.cxx:802
const BuiltinFormat * mpFormats
The locale of the parent table.
LINESTYLE_NONE
MS Excel 4.0.
Definition: xlconst.hxx:35
const sal_uInt16 EXC_COLOR_NOTETEXT
Note background color.
Definition: xlstyle.hxx:215
#define LANGUAGE_SWEDISH
const Color spnDefColorTable2[]
Default color table for BIFF2.
Definition: xlstyle.cxx:49
const sal_uInt16 EXC_FONTWGHT_BLACK
Definition: xlstyle.hxx:116
#define LANGUAGE_ITALIAN
ScfPropSetHelper maHlpControl
Chart properties for font escapement.
Definition: xlstyle.hxx:433
bool mbOutline
true = Struck out.
Definition: xlstyle.hxx:299
sal_uInt16 mnBackColor
Palette index to foreground color.
Definition: xlstyle.hxx:547
XclCellArea()
Fill pattern.
Definition: xlstyle.cxx:1689
const sal_uInt16 EXC_FONTESC_NONE
Definition: xlstyle.hxx:126
NfIndexTableOffset
#define UTF8_WON
Definition: xlstyle.cxx:801
const sal_uInt16 EXC_FONTWGHT_MEDIUM
Definition: xlstyle.hxx:112
void SetScWeight(FontWeight eScWeight)
Sets the Calc font weight.
Definition: xlstyle.cxx:340
LanguageType meLanguage
SvNumberFormatter format index, if maFormat is empty.
Definition: xlstyle.hxx:442
sal_uInt8 mnDiagLine
Style of bottom line.
Definition: xlstyle.hxx:534
sal_uInt16 mnRightColor
Palette index for left line.
Definition: xlstyle.hxx:526
void InitializeWrite()
Must be called before reading or storing property values in the helper.
Definition: fapihelper.cxx:335
sal_uInt16 mnForeColor
Definition: xlstyle.hxx:546
void SetApiPosture(css::awt::FontSlant eApiPosture)
Sets the API font posture.
Definition: xlstyle.cxx:475
NF_TIME_HHMMSS
sal_uInt16 mnTopColor
Palette index for right line.
Definition: xlstyle.hxx:527
bool mbItalic
Underline style.
Definition: xlstyle.hxx:297
#define LANGUAGE_SWEDISH_FINLAND
const sal_uInt16 EXC_COLOR_WINDOWTEXT3
First user defined color.
Definition: xlstyle.hxx:206
STRIKEOUT_SINGLE
FAMILY_DECORATIVE
void InsertBuiltinFormats()
Inserts built-in number formats for the current system language.
Definition: xlstyle.cxx:1478
Color mnWindowBack
System window text color.
Definition: xlstyle.hxx:268
const sal_uInt8 EXC_FONTFAM_SCRIPT
Definition: xlstyle.hxx:90
void ReadFromPropertySet(const ScfPropertySet &rPropSet)
Reads all values from the passed property set.
Definition: fapihelper.cxx:306
#define LANGUAGE_ENGLISH_CAN
bool mbFontUsed
true = cell protection used.
Definition: xlstyle.hxx:591
constexpr auto convert(N n, sal_Int64 mul, sal_Int64 div)
#define UTF8_KO_MON
Definition: xlstyle.cxx:818
bool mbAlignUsed
true = number format used.
Definition: xlstyle.hxx:593
sal_uInt8 mnVerAlign
Horizontal alignment.
Definition: xlstyle.hxx:491
#define SAL_N_ELEMENTS(arr)
sal_uInt16 mnLeftColor
Definition: xlstyle.hxx:525
NF_TIME_HHMMSSAMPM
const sal_uInt16 EXC_XF_STYLEPARENT
Definition: xlstyle.hxx:148
ScfPropSetHelper maHlpChAsian
Chart properties for Western script.
Definition: xlstyle.hxx:427
void WriteToPropertySet(ScfPropertySet &rPropSet) const
Writes all values to the passed property set.
Definition: fapihelper.cxx:352
WEIGHT_DONTKNOW
NfIndexTableOffset meOffset
Format string, may be empty (meOffset used then).
Definition: xlstyle.hxx:441
FontWeight GetScWeight() const
Returns the Calc font weight.
Definition: xlstyle.cxx:259
#define EXC_NUMFMT_REUSE(nXclNumFmt, nXclReuse)
Defines an Excel built-in number format that is the same as the specified.
Definition: xlstyle.cxx:789
NF_FRACTION_2D
#define LANGUAGE_HEBREW
XclNumFmtBuffer(const XclRoot &rRoot)
Definition: xlstyle.cxx:1454
sal_uInt16 mnEscapem
Boldness: 400=normal, 700=bold.
Definition: xlstyle.hxx:293
void SetScEscapement(short nScEscapem)
Sets the Calc escapement style.
Definition: xlstyle.cxx:371
#define LANGUAGE_ITALIAN_SWISS
bool IsTransparent() const
Returns true, if the area represents transparent state.
Definition: xlstyle.cxx:1696
const sal_uInt8 EXC_XF_HOR_FILL
Definition: xlstyle.hxx:163
WEIGHT_SEMILIGHT
const sal_uInt16 EXC_FONTWGHT_ULTRABOLD
Definition: xlstyle.hxx:115
FontStrikeout GetScStrikeout() const
Returns the Calc strike-out style.
Definition: xlstyle.cxx:302
MS Excel 5.0, MS Excel 7.0 (95)
Definition: xlconst.hxx:36
#define UTF8_CJ_DAY
Definition: xlstyle.cxx:808
OUString maFormat
Definition: xlstyle.hxx:440
OUString maStyle
Font name.
Definition: xlstyle.hxx:289
void SetScVerAlign(SvxCellVerJustify eVerJust)
Sets the Calc vertical alignment.
Definition: xlstyle.cxx:1628
sal_uInt8 mnUnderline
Windows character set.
Definition: xlstyle.hxx:296
ScfPropSetHelper maHlpChWstrnNoName
Chart properties for Complex script.
Definition: xlstyle.hxx:429
const sal_uInt8 EXC_FONTUNDERL_DOUBLE_ACC
Definition: xlstyle.hxx:123
Contains all cell protection attributes.
Definition: xlstyle.hxx:477
Contains all cell alignment attributes.
Definition: xlstyle.hxx:488
const sal_uInt16 EXC_COLOR_WINDOWTEXT
System window background color (BIFF3-BIFF4).
Definition: xlstyle.hxx:208
float GetApiWeight() const
Returns the API font weight.
Definition: xlstyle.cxx:422
void SetApiStrikeout(sal_Int16 nApiStrikeout)
Sets the API font strike-out style.
Definition: xlstyle.cxx:511
SvxCellJustifyMethod GetScHorJustifyMethod() const
Returns horizontal justification method as Calc's attribute.
Definition: xlstyle.cxx:1575
ITALIC_OBLIQUE
#define LANGUAGE_SYSTEM
LINESTYLE_DOUBLEWAVE
const sal_uInt16 EXC_COLOR_CHWINDOWTEXT
System button background color (face color).
Definition: xlstyle.hxx:211
Color GetDefColor(sal_uInt16 nXclIndex) const
Returns the default color for a (non-zero-based) Excel color or COL_AUTO on error.
Definition: xlstyle.cxx:141
#define LANGUAGE_GERMAN_LIECHTENSTEIN
const sal_uInt8 EXC_FONTFAM_DECORATIVE
Definition: xlstyle.hxx:91
bool mbLocked
Definition: xlstyle.hxx:479
sal_uInt8 mnHorAlign
Definition: xlstyle.hxx:490
XclCellAlign()
true = Shrink to fit cell size.
Definition: xlstyle.cxx:1545
WEIGHT_MEDIUM
NF_FRACTION_1D
static Color GetDefaultColor(ColorConfigEntry eEntry)
WEIGHT_NORMAL
const Color spnDefColorTable5[]
Default color table for BIFF5/BIFF7.
Definition: xlstyle.cxx:63
LINESTYLE_SINGLE
WEIGHT_ULTRALIGHT
NF_TEXT
void SetApiHeight(float fPoint)
Sets the API font height.
Definition: xlstyle.cxx:456
bool IsShadow() const
#define LANGUAGE_DONTKNOW
#define LANGUAGE_ENGLISH_EIRE
const Size & GetFontSize() const
#define EXC_NUMFMT_OFFSET(nXclNumFmt, eOffset)
Defines an Excel built-in number format that maps to an own built-in format.
Definition: xlstyle.cxx:785
const sal_uInt8 EXC_XF_VER_TOP
Definition: xlstyle.hxx:168
MS Excel 3.0.
Definition: xlconst.hxx:34
#define LANGUAGE_CHINESE_SIMPLIFIED
bool mbLineBreak
Indentation.
Definition: xlstyle.hxx:496
constexpr LanguageType primary(LanguageType lt)
FontStrikeout GetStrikeout() const
NF_DATE_SYS_DDMMYYYY
const sal_uInt8 EXC_XF_HOR_CENTER_AS
Definition: xlstyle.hxx:165
const sal_uInt8 EXC_XF_HOR_LEFT
Definition: xlstyle.hxx:160
WEIGHT_ULTRABOLD
#define UTF8_SHEQEL
Definition: xlstyle.cxx:800
ITALIC_NONE
#define LANGUAGE_GERMAN_LUXEMBOURG
sal_uInt8 mnPattern
Palette index to background color.
Definition: xlstyle.hxx:548
const sal_uInt8 EXC_FONTUNDERL_SINGLE
Definition: xlstyle.hxx:120
#define UTF8_CJ_MON
Definition: xlstyle.cxx:807
void SetScUnderline(FontLineStyle eScUnderl)
Sets the Calc underline style.
Definition: xlstyle.cxx:359
LINESTYLE_DONTKNOW
const sal_uInt16 EXC_FONTWGHT_NORMAL
Definition: xlstyle.hxx:111
ScfPropSetHelper maHlpChAsianNoName
Chart properties for Western script, no font name.
Definition: xlstyle.hxx:430
sal_uInt8 mnLeftLine
Palette index for diagonal line(s).
Definition: xlstyle.hxx:530
STRIKEOUT_X
void SetScFamily(FontFamily eScFamily)
Sets the Calc font family.
Definition: xlstyle.cxx:312
const sal_uInt16 EXC_FONTWGHT_ULTRALIGHT
Definition: xlstyle.hxx:108
sal_uInt8 mnTextDir
Text orientation.
Definition: xlstyle.hxx:493
#define LANGUAGE_THAI
void ReadFontProperties(XclFontData &rFontData, const ScfPropertySet &rPropSet, XclFontPropSetType eType, sal_Int16 nScript=-1)
Reads all font properties from the passed property set.
Definition: xlstyle.cxx:624
sal_uInt16 mnParent
Definition: xlstyle.hxx:588
FAMILY_SYSTEM
Contains color and line style for each cell border line.
Definition: xlstyle.hxx:523
#define UTF8_CJ_YEAR
Definition: xlstyle.cxx:806
#define UTF8_KO_SEC
Definition: xlstyle.cxx:822
NF_TIME_HHMMAMPM
void SetApiEscapement(sal_Int16 nApiEscapem)
Sets the API escapement style.
Definition: xlstyle.cxx:501
const sal_uInt16 EXC_FONTESC_SUPER
Definition: xlstyle.hxx:127
const sal_uInt16 EXC_COLOR_FONTAUTO
Note text color.
Definition: xlstyle.hxx:216
FontFamily
XclXFBase(bool bCellXF)
Definition: xlstyle.cxx:1708
A wrapper for a UNO property set.
Definition: fapihelper.hxx:104
#define UTF8_BAHT
Definition: xlstyle.cxx:797
const sal_uInt16 EXC_COLOR_CHBORDERAUTO
System window background color (BIFF8 charts).
Definition: xlstyle.hxx:213
const Color & GetColor() const
#define LANGUAGE_FRENCH
FontWeight
const sal_uInt16 EXC_COLOR_WINDOWBACK3
System window text color (BIFF3-BIFF4).
Definition: xlstyle.hxx:207
sal_uInt8 mnBottomLine
Style of top line.
Definition: xlstyle.hxx:533
FontLineStyle GetScUnderline() const
Returns the Calc font underline style.
Definition: xlstyle.cxx:278
#define LANGUAGE_ENGLISH
const sal_uInt8 EXC_FONTFAM_SYSTEM
Definition: xlstyle.hxx:88
#define UTF8_YEN_JP
Definition: xlstyle.cxx:803
const sal_uInt8 EXC_FONTCSET_ANSI_LATIN
Definition: xlstyle.hxx:94
void SetScHeight(sal_Int32 nTwips)
Sets the Calc font height (in twips).
Definition: xlstyle.cxx:307
float GetApiHeight() const
Returns the API font height.
Definition: xlstyle.cxx:391
const sal_uInt8 EXC_XF_VER_BOTTOM
Definition: xlstyle.hxx:170
void SetScPosture(FontItalic eScPosture)
Sets the Calc font posture.
Definition: xlstyle.cxx:335
STRIKEOUT_DOUBLE
#define EXC_PALETTE_EGA_COLORS_LIGHT
Standard EGA colors, bright.
Definition: xlstyle.cxx:42
FontWeight GetWeight()
void InitializeImport()
Clears all buffered data, used to set up for a new sheet.
Definition: xlstyle.cxx:1464
const sal_uInt8 EXC_LINE_NONE
Definition: xlstyle.hxx:38
SvxFrameDirection GetScFrameDir() const
Returns the Calc frame direction.
Definition: xlstyle.cxx:1600
ITALIC_NORMAL
sal_uInt8 mnFamily
Escapement type.
Definition: xlstyle.hxx:294
VCL_DLLPUBLIC float ConvertFontWeight(FontWeight eWeight)
const sal_uInt16 EXC_COLOR_CHWINDOWBACK
System window text color (BIFF8 charts).
Definition: xlstyle.hxx:212
bool HasUsedFlags() const
Returns true, if any "attribute used" flags are ste in this XF.
Definition: xlstyle.cxx:1724
const sal_uInt16 EXC_FONTWGHT_SEMIBOLD
Definition: xlstyle.hxx:113
FAMILY_SWISS
NF_DATE_SYS_DMMMYY
sal_uInt16 mnWeight
Font height in twips (1/20 of a point).
Definition: xlstyle.hxx:292
void SetApiUnderline(sal_Int16 nApiUnderl)
Sets the API font underline style.
Definition: xlstyle.cxx:489
void SetApiFamily(sal_Int16 nApiFamily)
Sets the API font family.
Definition: xlstyle.cxx:461
NF_DATE_SYS_MMYY
#define UTF8_KO_DAY
Definition: xlstyle.cxx:819
short GetEscapement() const
tools::Long Height() const
sal_Int16 GetApiFamily() const
Returns the API font family.
Definition: xlstyle.cxx:396
void SetFontEncoding(rtl_TextEncoding eFontEnc)
Sets the font text encoding.
Definition: xlstyle.cxx:329
const sal_uInt8 EXC_FONTUNDERL_SINGLE_ACC
Definition: xlstyle.hxx:122
Contains background colors and pattern for a cell.
Definition: xlstyle.hxx:544
void SetScStrikeout(FontStrikeout eScStrikeout)
Sets the Calc strike-out style.
Definition: xlstyle.cxx:381
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_BLACK
sal_uInt8 mnIndent
Text rotation angle.
Definition: xlstyle.hxx:495
const sal_uInt8 EXC_FONTUNDERL_NONE
Definition: xlstyle.hxx:119
#define UTF8_CJ_HOUR
Definition: xlstyle.cxx:809
const Color & GetWindowColor() const
NF_NUMBER_INT
XclBiff GetBiff() const
Returns the current BIFF version of the importer/exporter.
Definition: xlroot.hxx:141
NF_PERCENT_INT
#define UTF8_KO_YEAR
Definition: xlstyle.cxx:817
bool mbHidden
true = Locked against editing.
Definition: xlstyle.hxx:480
FontFamily GetScFamily(rtl_TextEncoding eDefTextEnc) const
Returns the Calc font family.
Definition: xlstyle.cxx:228
const sal_uInt16 EXC_COLOR_WINDOWBACK
System window text color (>=BIFF5).
Definition: xlstyle.hxx:209
XclCellProt()
true = Formula is hidden.
Definition: xlstyle.cxx:1534
void FillFromSvxFont(const SvxFont &rFont)
Fills all members (except color) from the passed SVX font.
Definition: xlstyle.cxx:220
bool Equals(const XclXFBase &rCmp) const
Returns true, if this object is equal to the passed.
Definition: xlstyle.cxx:1729
bool mbProtUsed
true = cell XF, false = style XF.
Definition: xlstyle.hxx:590
Color mnWindowText
The table with RGB values.
Definition: xlstyle.hxx:267
const sal_uInt8 EXC_ROT_NONE
Text orientation: 90 deg clockwise.
Definition: xlconst.hxx:139
FontLineStyle GetUnderline() const
SvxEscapement
#define LANGUAGE_FRENCH_LUXEMBOURG
NF_DATETIME_SYSTEM_SHORT_HHMM
const sal_uInt8 EXC_PATT_NONE
Definition: xlstyle.hxx:55
const sal_uInt8 EXC_XF_VER_DISTRIB
Definition: xlstyle.hxx:172
void SetScHorAlign(SvxCellHorJustify eHorJust)
Sets the Calc horizontal alignment.
Definition: xlstyle.cxx:1613
const sal_uInt8 EXC_XF_TEXTDIR_LTR
Definition: xlstyle.hxx:175
#define EXC_NUMFMT_ENDTABLE()
Terminates an Excel built-in number format table.
Definition: xlstyle.cxx:793
#define SAL_WARN(area, stream)
#define LANGUAGE_CHINESE_TRADITIONAL
ScfPropSetHelper maHlpChCmplxNoName
Chart properties for Asian script, no font name.
Definition: xlstyle.hxx:431
sal_Int16 GetApiUnderline() const
Returns the API font underline style.
Definition: xlstyle.cxx:427
void Clear()
Resets all members to default (empty) values.
Definition: xlstyle.cxx:189
Color maColor
String with styles (bold, italic).
Definition: xlstyle.hxx:290
Color mnFaceColor
System window background color.
Definition: xlstyle.hxx:269
#define UTF8_KO_HOUR
Definition: xlstyle.cxx:820
sal_uInt8 mnRotation
CTL text direction.
Definition: xlstyle.hxx:494
XclCellBorder()
true = Bottom-left to top-right on.
Definition: xlstyle.cxx:1662
SvxCellJustifyMethod
#define LANGUAGE_FRENCH_BELGIAN
LINESTYLE_DOUBLE
MS Excel 2.1.
Definition: xlconst.hxx:33
const LanguageType meSysLang
Map containing all default and user-defined formats.
Definition: xlstyle.hxx:470
STRIKEOUT_NONE
void WriteFontProperties(ScfPropertySet &rPropSet, XclFontPropSetType eType, const XclFontData &rFontData, bool bHasWstrn, bool bHasAsian, bool bHasCmplx, const Color *pFontColor)
Writes all font properties to the passed property set, uses passed color as font color.
Definition: xlstyle.cxx:692
#define EXC_NUMFMT_STRING(nXclNumFmt, pcUtf8)
Defines a literal Excel built-in number format.
Definition: xlstyle.cxx:781
ScfPropSetHelper maHlpChWstrn
Chart properties for all scripts.
Definition: xlstyle.hxx:426
bool mbBorderUsed
true = alignment used.
Definition: xlstyle.hxx:594
FontLineStyle
Generic helper class for reading from and writing to property sets.
Definition: fapihelper.hxx:214
void InsertFormat(sal_uInt16 nXclNumFmt, const OUString &rFormat)
Inserts a new number format for the specified Excel format index.
Definition: xlstyle.cxx:1469
const sal_uInt8 EXC_FONTUNDERL_DOUBLE
Definition: xlstyle.hxx:121
#define LANGUAGE_ENGLISH_AUS
bool mbStrikeout
true = Italic.
Definition: xlstyle.hxx:298
Access to global data for a filter object (imported or exported document) from other classes...
Definition: xlroot.hxx:127
#define LANGUAGE_JAPANESE
XclDefaultPalette(const XclRoot &rRoot)
Definition: xlstyle.cxx:91
#define UTF8_POUND_UK
Definition: xlstyle.cxx:799
virtual ~XclXFBase()
Definition: xlstyle.cxx:1715
const sal_uInt8 EXC_XF_TEXTDIR_RTL
Definition: xlstyle.hxx:176
Contains base members for XF record import/export.
Definition: xlstyle.hxx:562
const sal_uInt16 EXC_XF_DEFAULTSTYLE
Arbitrary maximum number of style XFs.
Definition: xlstyle.hxx:139
#define LANGUAGE_GERMAN_SWISS
FontStrikeout
SvxCellHorJustify GetScHorAlign() const
Returns the Calc horizontal alignment.
Definition: xlstyle.cxx:1557
const Color & GetWindowTextColor() const
All text objects in charts.
Definition: xlstyle.hxx:399
STRIKEOUT_BOLD
ScfPropSetHelper & GetChartHelper(sal_Int16 nScript)
Returns a chart property set helper according to the passed script type.
Definition: xlstyle.cxx:744
rtl_TextEncoding GetCharSet() const
sal_Int16 GetApiStrikeout() const
Returns the API font strike-out style.
Definition: xlstyle.cxx:451
const sal_uInt8 EXC_FONTFAM_DONTKNOW
Definition: xlstyle.hxx:85
FontItalic
OUString maName
Definition: xlstyle.hxx:288
const sal_uInt8 EXC_FONTFAM_MODERN
Definition: xlstyle.hxx:89