1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #ifndef INCLUDED_SC_SOURCE_FILTER_INC_XLSTYLE_HXX
21 #define INCLUDED_SC_SOURCE_FILTER_INC_XLSTYLE_HXX
24 #include <com/sun/star/awt/FontSlant.hpp>
25 #include <com/sun/star/awt/FontUnderline.hpp>
26 #include <com/sun/star/awt/FontStrikeout.hpp>
27 #include <tools/color.hxx>
28 #include <vcl/vclenum.hxx>
29 #include <editeng/svxenum.hxx>
30 #include <editeng/frmdir.hxx>
31 #include <svl/zforlist.hxx>
32 #include "fapihelper.hxx"
36 // Constants and Enumerations =================================================
38 // Line styles ----------------------------------------------------------------
40 const sal_uInt8 EXC_LINE_NONE
= 0x00;
41 const sal_uInt8 EXC_LINE_THIN
= 0x01;
42 const sal_uInt8 EXC_LINE_MEDIUM
= 0x02;
43 const sal_uInt8 EXC_LINE_DASHED
= 0x03;
44 const sal_uInt8 EXC_LINE_DOTTED
= 0x04;
45 const sal_uInt8 EXC_LINE_THICK
= 0x05;
46 const sal_uInt8 EXC_LINE_DOUBLE
= 0x06;
47 const sal_uInt8 EXC_LINE_HAIR
= 0x07;
48 const sal_uInt8 EXC_LINE_MEDIUM_DASHED
= 0x08;
49 const sal_uInt8 EXC_LINE_THIN_DASHDOT
= 0x09;
50 const sal_uInt8 EXC_LINE_MEDIUM_DASHDOT
= 0x0A;
51 const sal_uInt8 EXC_LINE_THIN_DASHDOTDOT
= 0x0B;
52 const sal_uInt8 EXC_LINE_MEDIUM_DASHDOTDOT
= 0x0C;
53 const sal_uInt8 EXC_LINE_MEDIUM_SLANT_DASHDOT
= 0x0D;
55 // Background patterns --------------------------------------------------------
57 const sal_uInt8 EXC_PATT_NONE
= 0x00;
58 const sal_uInt8 EXC_PATT_SOLID
= 0x01;
59 const sal_uInt8 EXC_PATT_50_PERC
= 0x02;
60 const sal_uInt8 EXC_PATT_75_PERC
= 0x03;
61 const sal_uInt8 EXC_PATT_25_PERC
= 0x04;
62 const sal_uInt8 EXC_PATT_12_5_PERC
= 0x11;
63 const sal_uInt8 EXC_PATT_6_25_PERC
= 0x12;
65 // (0x001E, 0x041E) FORMAT ----------------------------------------------------
67 const sal_uInt16 EXC_ID2_FORMAT
= 0x001E;
68 const sal_uInt16 EXC_ID4_FORMAT
= 0x041E;
70 const sal_uInt16 EXC_FORMAT_OFFSET5
= 164;
71 const sal_uInt16 EXC_FORMAT_OFFSET8
= 164;
72 const sal_uInt16 EXC_FORMAT_NOTFOUND
= 0xFFFF;
74 // (0x0031) FONT --------------------------------------------------------------
76 const sal_uInt16 EXC_ID2_FONT
= 0x0031;
77 const sal_uInt16 EXC_ID3_FONT
= 0x0231;
79 const sal_uInt16 EXC_FONT_APP
= 0; /// Application font index.
80 const sal_uInt16 EXC_FONT_NOTFOUND
= 0xFFFF;
82 const size_t EXC_FONT_MAXCOUNT4
= 0x00FF;
83 const size_t EXC_FONT_MAXCOUNT5
= 0x00FF;
84 const size_t EXC_FONT_MAXCOUNT8
= 0xFFFF;
87 const sal_uInt8 EXC_FONTFAM_DONTKNOW
= 0x00;
88 const sal_uInt8 EXC_FONTFAM_ROMAN
= 0x01;
89 const sal_uInt8 EXC_FONTFAM_SWISS
= 0x02;
90 const sal_uInt8 EXC_FONTFAM_SYSTEM
= EXC_FONTFAM_SWISS
;
91 const sal_uInt8 EXC_FONTFAM_MODERN
= 0x03;
92 const sal_uInt8 EXC_FONTFAM_SCRIPT
= 0x04;
93 const sal_uInt8 EXC_FONTFAM_DECORATIVE
= 0x05;
96 const sal_uInt8 EXC_FONTCSET_ANSI_LATIN
= 0x00;
99 const sal_uInt16 EXC_FONTATTR_NONE
= 0x0000;
100 const sal_uInt16 EXC_FONTATTR_BOLD
= 0x0001;
101 const sal_uInt16 EXC_FONTATTR_ITALIC
= 0x0002;
102 const sal_uInt16 EXC_FONTATTR_UNDERLINE
= 0x0004;
103 const sal_uInt16 EXC_FONTATTR_STRIKEOUT
= 0x0008;
104 const sal_uInt16 EXC_FONTATTR_OUTLINE
= 0x0010;
105 const sal_uInt16 EXC_FONTATTR_SHADOW
= 0x0020;
108 const sal_uInt16 EXC_FONTWGHT_DONTKNOW
= 0;
109 const sal_uInt16 EXC_FONTWGHT_THIN
= 100;
110 const sal_uInt16 EXC_FONTWGHT_ULTRALIGHT
= 200;
111 const sal_uInt16 EXC_FONTWGHT_LIGHT
= 300;
112 const sal_uInt16 EXC_FONTWGHT_SEMILIGHT
= 350;
113 const sal_uInt16 EXC_FONTWGHT_NORMAL
= 400;
114 const sal_uInt16 EXC_FONTWGHT_MEDIUM
= 500;
115 const sal_uInt16 EXC_FONTWGHT_SEMIBOLD
= 600;
116 const sal_uInt16 EXC_FONTWGHT_BOLD
= 700;
117 const sal_uInt16 EXC_FONTWGHT_ULTRABOLD
= 800;
118 const sal_uInt16 EXC_FONTWGHT_BLACK
= 900;
121 const sal_uInt8 EXC_FONTUNDERL_NONE
= 0x00;
122 const sal_uInt8 EXC_FONTUNDERL_SINGLE
= 0x01;
123 const sal_uInt8 EXC_FONTUNDERL_DOUBLE
= 0x02;
124 const sal_uInt8 EXC_FONTUNDERL_SINGLE_ACC
= 0x21;
125 const sal_uInt8 EXC_FONTUNDERL_DOUBLE_ACC
= 0x22;
128 const sal_uInt16 EXC_FONTESC_NONE
= 0x00;
129 const sal_uInt16 EXC_FONTESC_SUPER
= 0x01;
130 const sal_uInt16 EXC_FONTESC_SUB
= 0x02;
132 // (0x0043, 0x0243, 0x0443, 0x00E0) XF ----------------------------------------
134 const sal_uInt16 EXC_ID2_XF
= 0x0043;
135 const sal_uInt16 EXC_ID3_XF
= 0x0243;
136 const sal_uInt16 EXC_ID4_XF
= 0x0443;
137 const sal_uInt16 EXC_ID5_XF
= 0x00E0;
139 const sal_uInt32 EXC_XF_MAXCOUNT
= 4050; /// Maximum number of all XF records.
140 const sal_uInt32 EXC_XF_MAXSTYLECOUNT
= 1536; /// Arbitrary maximum number of style XFs.
141 const sal_uInt16 EXC_XF_DEFAULTSTYLE
= 0; /// Excel index to default style XF.
142 const sal_uInt16 EXC_XF_DEFAULTCELL
= 15; /// Excel index to default cell XF.
143 const sal_uInt16 EXC_XF_NOTFOUND
= 0xFFFF; /// Special index for "not found" state.
145 const sal_uInt32 EXC_XFID_NOTFOUND
= 0xFFFFFFFF;
147 const sal_uInt16 EXC_XF_LOCKED
= 0x0001;
148 const sal_uInt16 EXC_XF_HIDDEN
= 0x0002;
149 const sal_uInt16 EXC_XF_STYLE
= 0x0004;
150 const sal_uInt16 EXC_XF_STYLEPARENT
= 0x0FFF; /// Syles don't have a parent.
151 const sal_uInt16 EXC_XF_LINEBREAK
= 0x0008; /// Automatic line break.
152 const sal_uInt16 EXC_XF_SHRINK
= 0x0010; /// Shrink to fit into cell.
154 const sal_uInt8 EXC_XF_DIFF_VALFMT
= 0x01;
155 const sal_uInt8 EXC_XF_DIFF_FONT
= 0x02;
156 const sal_uInt8 EXC_XF_DIFF_ALIGN
= 0x04;
157 const sal_uInt8 EXC_XF_DIFF_BORDER
= 0x08;
158 const sal_uInt8 EXC_XF_DIFF_AREA
= 0x10;
159 const sal_uInt8 EXC_XF_DIFF_PROT
= 0x20;
161 const sal_uInt8 EXC_XF_HOR_GENERAL
= 0x00;
162 const sal_uInt8 EXC_XF_HOR_LEFT
= 0x01;
163 const sal_uInt8 EXC_XF_HOR_CENTER
= 0x02;
164 const sal_uInt8 EXC_XF_HOR_RIGHT
= 0x03;
165 const sal_uInt8 EXC_XF_HOR_FILL
= 0x04;
166 const sal_uInt8 EXC_XF_HOR_JUSTIFY
= 0x05;
167 const sal_uInt8 EXC_XF_HOR_CENTER_AS
= 0x06;
168 const sal_uInt8 EXC_XF_HOR_DISTRIB
= 0x07;
170 const sal_uInt8 EXC_XF_VER_TOP
= 0x00;
171 const sal_uInt8 EXC_XF_VER_CENTER
= 0x01;
172 const sal_uInt8 EXC_XF_VER_BOTTOM
= 0x02;
173 const sal_uInt8 EXC_XF_VER_JUSTIFY
= 0x03;
174 const sal_uInt8 EXC_XF_VER_DISTRIB
= 0x04;
176 const sal_uInt8 EXC_XF_TEXTDIR_CONTEXT
= 0x00;
177 const sal_uInt8 EXC_XF_TEXTDIR_LTR
= 0x01;
178 const sal_uInt8 EXC_XF_TEXTDIR_RTL
= 0x02;
180 const sal_uInt8 EXC_XF2_VALFMT_MASK
= 0x3F;
181 const sal_uInt8 EXC_XF2_LOCKED
= 0x40;
182 const sal_uInt8 EXC_XF2_HIDDEN
= 0x80;
183 const sal_uInt8 EXC_XF2_LEFTLINE
= 0x08;
184 const sal_uInt8 EXC_XF2_RIGHTLINE
= 0x10;
185 const sal_uInt8 EXC_XF2_TOPLINE
= 0x20;
186 const sal_uInt8 EXC_XF2_BOTTOMLINE
= 0x40;
187 const sal_uInt8 EXC_XF2_BACKGROUND
= 0x80;
189 const sal_uInt16 EXC_XF8_SHRINK
= 0x0010; /// Shrink to fit into cell.
190 const sal_uInt16 EXC_XF8_MERGE
= 0x0020;
192 const sal_uInt32 EXC_XF_DIAGONAL_TL_TO_BR
= 0x40000000; /// Top-left to bottom-right.
193 const sal_uInt32 EXC_XF_DIAGONAL_BL_TO_TR
= 0x80000000; /// Bottom-left to top-right.
194 const sal_uInt32 EXC_XF_DIAGONAL_BOTH
= 0xC0000000; /// Both.
196 // (0x0045) EFONT -------------------------------------------------------------
198 const sal_uInt16 EXC_ID_EFONT
= 0x0045;
200 // (0x0092) PALETTE -----------------------------------------------------------
202 const sal_uInt16 EXC_ID_PALETTE
= 0x0092;
204 const sal_uInt16 EXC_COLOR_BIFF2_BLACK
= 0;
205 const sal_uInt16 EXC_COLOR_BIFF2_WHITE
= 1;
207 const sal_uInt16 EXC_COLOR_USEROFFSET
= 8; /// First user defined color.
208 const sal_uInt16 EXC_COLOR_WINDOWTEXT3
= 24; /// System window text color (BIFF3-BIFF4).
209 const sal_uInt16 EXC_COLOR_WINDOWBACK3
= 25; /// System window background color (BIFF3-BIFF4).
210 const sal_uInt16 EXC_COLOR_WINDOWTEXT
= 64; /// System window text color (>=BIFF5).
211 const sal_uInt16 EXC_COLOR_WINDOWBACK
= 65; /// System window background color (>=BIFF5).
212 const sal_uInt16 EXC_COLOR_BUTTONBACK
= 67; /// System button background color (face color).
213 const sal_uInt16 EXC_COLOR_CHWINDOWTEXT
= 77; /// System window text color (BIFF8 charts).
214 const sal_uInt16 EXC_COLOR_CHWINDOWBACK
= 78; /// System window background color (BIFF8 charts).
215 const sal_uInt16 EXC_COLOR_CHBORDERAUTO
= 79; /// Automatic frame border for series (BIFF8 charts).
216 const sal_uInt16 EXC_COLOR_NOTEBACK
= 80; /// Note background color.
217 const sal_uInt16 EXC_COLOR_NOTETEXT
= 81; /// Note text color.
218 const sal_uInt16 EXC_COLOR_FONTAUTO
= 0x7FFF; /// Font auto color (system window text color).
220 // (0x0293) STYLE -------------------------------------------------------------
222 const sal_uInt16 EXC_ID_STYLE
= 0x0293;
224 const sal_uInt16 EXC_STYLE_BUILTIN
= 0x8000;
225 const sal_uInt16 EXC_STYLE_XFMASK
= 0x0FFF;
227 const sal_uInt8 EXC_STYLE_NORMAL
= 0x00; /// "Normal" style.
228 const sal_uInt8 EXC_STYLE_ROWLEVEL
= 0x01; /// "RowLevel_*" styles.
229 const sal_uInt8 EXC_STYLE_COLLEVEL
= 0x02; /// "ColLevel_*" styles.
230 const sal_uInt8 EXC_STYLE_COMMA
= 0x03; /// "Comma" style.
231 const sal_uInt8 EXC_STYLE_CURRENCY
= 0x04; /// "Currency" style.
232 const sal_uInt8 EXC_STYLE_PERCENT
= 0x05; /// "Percent" style.
233 const sal_uInt8 EXC_STYLE_COMMA_0
= 0x06; /// "Comma [0]" style.
234 const sal_uInt8 EXC_STYLE_CURRENCY_0
= 0x07; /// "Currency [0]" style.
235 const sal_uInt8 EXC_STYLE_HYPERLINK
= 0x08; /// "Hyperlink" style.
236 const sal_uInt8 EXC_STYLE_FOLLOWED_HYPERLINK
= 0x09; /// "Followed_Hyperlink" style.
237 const sal_uInt8 EXC_STYLE_USERDEF
= 0xFF; /// No built-in style.
239 const sal_uInt8 EXC_STYLE_LEVELCOUNT
= 7; /// Number of outline level styles.
240 const sal_uInt8 EXC_STYLE_NOLEVEL
= 0xFF; /// Default value for unused level.
242 // (0x0892) STYLEEXT ----------------------------------------------------------
244 const sal_uInt16 EXC_ID_STYLEEXT
= 0x0892;
246 const sal_uInt8 EXC_STYLEEXT_BUILTIN
= 0x01;
247 const sal_uInt8 EXC_STYLEEXT_HIDDEN
= 0x02;
248 const sal_uInt8 EXC_STYLEEXT_CUSTOM
= 0x04;
250 // Color data =================================================================
252 /** Stores all default colors for a specific BIFF version. */
253 class XclDefaultPalette
256 explicit XclDefaultPalette( const XclRoot
& rRoot
);
258 /** Returns the color count in the current palette. */
259 inline sal_uInt32
GetColorCount() const { return mnTableSize
- EXC_COLOR_USEROFFSET
; }
261 /** Returns the default RGB color data for a (non-zero-based) Excel color or COL_AUTO on error. */
262 ColorData
GetDefColorData( sal_uInt16 nXclIndex
) const;
263 /** Returns the default color for a (non-zero-based) Excel color or COL_AUTO on error. */
264 inline Color
GetDefColor( sal_uInt16 nXclIndex
) const
265 { return Color( GetDefColorData( nXclIndex
) ); }
267 /** Returns true, if the passed Excel color index is a system color. */
268 inline bool IsSystemColor( sal_uInt16 nXclIndex
) const { return nXclIndex
>= mnTableSize
; }
271 const ColorData
* mpnColorTable
; /// The table with RGB values.
272 ColorData mnWindowText
; /// System window text color.
273 ColorData mnWindowBack
; /// System window background color.
274 ColorData mnFaceColor
; /// System button background color.
275 ColorData mnNoteText
; /// Note text color.
276 ColorData mnNoteBack
; /// Note background color.
277 sal_uInt32 mnTableSize
; /// The color table size.
280 // Font data ==================================================================
282 namespace vcl
{ class Font
; }
285 /** This struct helps reading and writing Excel fonts.
287 It stores all Excel compatible properties of a font. In detail this is the
288 name, family, character set, height, color, boldness, posture, script,
289 underline, strikeout, outline and shadow of the font.
293 OUString maName
; /// Font name.
294 OUString maStyle
; /// String with styles (bold, italic).
295 Color maColor
; /// Font color.
296 sal_uInt16 mnHeight
; /// Font height in twips (1/20 of a point).
297 sal_uInt16 mnWeight
; /// Boldness: 400=normal, 700=bold.
298 sal_uInt16 mnEscapem
; /// Escapement type.
299 sal_uInt8 mnFamily
; /// Windows font family.
300 sal_uInt8 mnCharSet
; /// Windows character set.
301 sal_uInt8 mnUnderline
; /// Underline style.
302 bool mbItalic
; /// true = Italic.
303 bool mbStrikeout
; /// true = Struck out.
304 bool mbOutline
; /// true = Outlined.
305 bool mbShadow
; /// true = Shadowed.
307 /** Constructs an empty font data structure. */
308 explicit XclFontData();
309 /** Constructs a font data structure and fills it with the passed font attributes (except color). */
310 explicit XclFontData( const vcl::Font
& rFont
);
311 /** As directly above but also fills in the escapement member. */
312 explicit XclFontData( const SvxFont
& rFont
);
314 /** Resets all members to default (empty) values. */
316 /** Fills all members (except color and escapement) from the passed font. */
317 void FillFromVclFont( const vcl::Font
& rFont
);
318 /** Fills all members (except color) from the passed SVX font. */
319 void FillFromSvxFont( const SvxFont
& rFont
);
321 // *** conversion of VCL/SVX constants *** ------------------------------------
323 /** Returns the Calc font family. */
324 FontFamily
GetScFamily( rtl_TextEncoding eDefTextEnc
) const;
325 /** Returns the font text encoding. */
326 rtl_TextEncoding
GetFontEncoding() const;
327 /** Returns the Calc font posture. */
328 FontItalic
GetScPosture() const;
329 /** Returns the Calc font weight. */
330 FontWeight
GetScWeight() const;
331 /** Returns the Calc font underline style. */
332 FontUnderline
GetScUnderline() const;
333 /** Returns the Calc escapement style. */
334 SvxEscapement
GetScEscapement() const;
335 /** Returns the Calc strike-out style. */
336 FontStrikeout
GetScStrikeout() const;
338 /** Sets the Calc font height (in twips). */
339 void SetScHeight( sal_Int32 nTwips
);
340 /** Sets the Calc font family. */
341 void SetScFamily( FontFamily eScFamily
);
342 /** Sets the font text encoding. */
343 void SetFontEncoding( rtl_TextEncoding eFontEnc
);
344 /** Sets the Calc font posture. */
345 void SetScPosture( FontItalic eScPosture
);
346 /** Sets the Calc font weight. */
347 void SetScWeight( FontWeight eScWeight
);
348 /** Sets the Calc underline style. */
349 void SetScUnderline( FontUnderline eScUnderl
);
350 /** Sets the Calc escapement style. */
351 void SetScEscapement( short nScEscapem
);
352 /** Sets the Calc strike-out style. */
353 void SetScStrikeout( FontStrikeout eScStrikeout
);
355 // *** conversion of API constants *** ----------------------------------------
357 /** Returns the API font height. */
358 float GetApiHeight() const;
359 /** Returns the API font family. */
360 sal_Int16
GetApiFamily() const;
361 /** Returns the API font text encoding. */
362 sal_Int16
GetApiFontEncoding() const;
363 /** Returns the API font posture. */
364 ::com::sun::star::awt::FontSlant
GetApiPosture() const;
365 /** Returns the API font weight. */
366 float GetApiWeight() const;
367 /** Returns the API font underline style. */
368 sal_Int16
GetApiUnderline() const;
369 /** Returns the API escapement style. */
370 sal_Int16
GetApiEscapement() const;
371 /** Returns the API font strike-out style. */
372 sal_Int16
GetApiStrikeout() const;
374 /** Sets the API font height. */
375 void SetApiHeight( float fPoint
);
376 /** Sets the API font family. */
377 void SetApiFamily( sal_Int16 nApiFamily
);
378 /** Sets the API font posture. */
379 void SetApiPosture( ::com::sun::star::awt::FontSlant eApiPosture
);
380 /** Sets the API font weight. */
381 void SetApiWeight( float fApiWeight
);
382 /** Sets the API font underline style. */
383 void SetApiUnderline( sal_Int16 nApiUnderl
);
384 /** Sets the API escapement style. */
385 void SetApiEscapement( sal_Int16 nApiEscapem
);
386 /** Sets the API font strike-out style. */
387 void SetApiStrikeout( sal_Int16 nApiStrikeout
);
390 bool operator==( const XclFontData
& rLeft
, const XclFontData
& rRight
);
392 /** Enumerates different types of Which-IDs for font items. */
395 EXC_FONTITEM_CELL
, /// Use Calc Which-IDs (ATTR_*).
396 EXC_FONTITEM_EDITENG
, /// Use edit engine Which-IDs (EE_CHAR_*).
397 EXC_FONTITEM_HF
, /// Use header/footer edit engine Which-IDs (EE_CHAR_*).
398 EXC_FONTITEM_NOTE
/// Use note edit engine Which-IDs (EE_CHAR_*), special font handling.
401 /** Enumerates different types for objects with font settings (using different property names). */
402 enum XclFontPropSetType
404 EXC_FONTPROPSET_CHART
, /// All text objects in charts.
405 EXC_FONTPROPSET_CONTROL
/// Text formatting in form controls.
408 /** Helper class for usage of property sets. */
409 class XclFontPropSetHelper
412 explicit XclFontPropSetHelper();
414 /** Reads all font properties from the passed property set. */
415 void ReadFontProperties( XclFontData
& rFontData
,
416 const ScfPropertySet
& rPropSet
, XclFontPropSetType eType
,
417 sal_Int16 nScript
= -1 );
419 /** Writes all font properties to the passed property set, uses passed color as font color. */
420 void WriteFontProperties(
421 ScfPropertySet
& rPropSet
, XclFontPropSetType eType
,
422 const XclFontData
& rFontData
,
423 bool bHasWstrn
, bool bHasAsian
, bool bHasCmplx
,
424 const Color
* pFontColor
= 0 );
427 /** Returns a chart property set helper according to the passed script type. */
428 ScfPropSetHelper
& GetChartHelper( sal_Int16 nScript
);
431 ScfPropSetHelper maHlpChCommon
; /// Chart properties for all scripts.
432 ScfPropSetHelper maHlpChWstrn
; /// Chart properties for Western script.
433 ScfPropSetHelper maHlpChAsian
; /// Chart properties for Asian script.
434 ScfPropSetHelper maHlpChCmplx
; /// Chart properties for Complex script.
435 ScfPropSetHelper maHlpChWstrnNoName
; /// Chart properties for Western script, no font name.
436 ScfPropSetHelper maHlpChAsianNoName
; /// Chart properties for Asian script, no font name.
437 ScfPropSetHelper maHlpChCmplxNoName
; /// Chart properties for Complex script, no font name.
438 ScfPropSetHelper maHlpChEscapement
; /// Chart properties for font escapement.
439 ScfPropSetHelper maHlpControl
; /// Properties for form controls.
442 // Number formats =============================================================
446 OUString maFormat
; /// Format string, may be empty (meOffset used then).
447 NfIndexTableOffset meOffset
; /// SvNumberFormatter format index, if maFormat is empty.
448 LanguageType meLanguage
; /// Language type to be set with the number format.
451 class XclNumFmtBuffer
454 explicit XclNumFmtBuffer( const XclRoot
& rRoot
);
456 /** Returns the core index of the current standard number format. */
457 inline sal_uLong
GetStdScNumFmt() const { return mnStdScNumFmt
; }
460 typedef ::std::map
< sal_uInt16
, XclNumFmt
> XclNumFmtMap
;
462 /** Clears all buffered data, used to set up for a new sheet. */
463 void InitializeImport();
465 /** Returns the current number format map. */
466 inline const XclNumFmtMap
& GetFormatMap() const { return maFmtMap
; }
468 /** Inserts a new number format for the specified Excel format index. */
469 void InsertFormat( sal_uInt16 nXclNumFmt
, const OUString
& rFormat
);
472 /** Inserts built-in number formats for the current system language. */
473 void InsertBuiltinFormats();
475 XclNumFmtMap maFmtMap
; /// Map containing all default and user-defined formats.
476 LanguageType meSysLang
; /// Current system language.
477 sal_uLong mnStdScNumFmt
; /// Calc format key for standard number format.
480 // Cell formatting data (XF) ==================================================
482 /** Contains all cell protection attributes. */
485 bool mbLocked
; /// true = Locked against editing.
486 bool mbHidden
; /// true = Formula is hidden.
488 explicit XclCellProt();
491 bool operator==( const XclCellProt
& rLeft
, const XclCellProt
& rRight
);
493 /** Contains all cell alignment attributes. */
496 sal_uInt8 mnHorAlign
; /// Horizontal alignment.
497 sal_uInt8 mnVerAlign
; /// Vertical alignment.
498 sal_uInt8 mnOrient
; /// Text orientation.
499 sal_uInt8 mnTextDir
; /// CTL text direction.
500 sal_uInt8 mnRotation
; /// Text rotation angle.
501 sal_uInt8 mnIndent
; /// Indentation.
502 bool mbLineBreak
; /// true = Multi-line text.
503 bool mbShrink
; /// true = Shrink to fit cell size.
505 explicit XclCellAlign();
507 /** Returns the Calc horizontal alignment. */
508 SvxCellHorJustify
GetScHorAlign() const;
509 /** Returns horizontal justification method as Calc's attribute. */
510 SvxCellJustifyMethod
GetScHorJustifyMethod() const;
511 /** Returns the Calc vertical alignment. */
512 SvxCellVerJustify
GetScVerAlign() const;
513 /** Returns vertical justification method as Calc's attribute. */
514 SvxCellJustifyMethod
GetScVerJustifyMethod() const;
515 /** Returns the Calc frame direction. */
516 SvxFrameDirection
GetScFrameDir() const;
518 /** Sets the Calc horizontal alignment. */
519 void SetScHorAlign( SvxCellHorJustify eHorJust
);
520 /** Sets the Calc vertical alignment. */
521 void SetScVerAlign( SvxCellVerJustify eVerJust
);
522 /** Sets the Calc frame direction. */
523 void SetScFrameDir( SvxFrameDirection eFrameDir
);
526 bool operator==( const XclCellAlign
& rLeft
, const XclCellAlign
& rRight
);
528 /** Contains color and line style for each cell border line. */
531 sal_uInt16 mnLeftColor
; /// Palette index for left line.
532 sal_uInt16 mnRightColor
; /// Palette index for right line.
533 sal_uInt16 mnTopColor
; /// Palette index for top line.
534 sal_uInt16 mnBottomColor
; /// Palette index for bottom line.
535 sal_uInt16 mnDiagColor
; /// Palette index for diagonal line(s).
536 sal_uInt8 mnLeftLine
; /// Style of left line.
537 sal_uInt8 mnRightLine
; /// Style of right line.
538 sal_uInt8 mnTopLine
; /// Style of top line.
539 sal_uInt8 mnBottomLine
; /// Style of bottom line.
540 sal_uInt8 mnDiagLine
; /// Style of diagonal line(s).
541 bool mbDiagTLtoBR
; /// true = Top-left to bottom-right on.
542 bool mbDiagBLtoTR
; /// true = Bottom-left to top-right on.
544 explicit XclCellBorder();
547 bool operator==( const XclCellBorder
& rLeft
, const XclCellBorder
& rRight
);
549 /** Contains background colors and pattern for a cell. */
552 sal_uInt16 mnForeColor
; /// Palette index to foreground color.
553 sal_uInt16 mnBackColor
; /// Palette index to background color.
554 sal_uInt8 mnPattern
; /// Fill pattern.
556 explicit XclCellArea();
558 /** Returns true, if the area represents transparent state. */
559 bool IsTransparent() const;
562 bool operator==( const XclCellArea
& rLeft
, const XclCellArea
& rRight
);
564 /** Contains base members for XF record import/export.
565 @descr In detail this class stores the XF type (cell/style), the index to the
566 parent style XF and all "attribute used" flags, which reflect the state of
567 specific attribute groups (true = user has changed the attributes). */
571 explicit XclXFBase( bool bCellXF
);
572 virtual ~XclXFBase();
574 /** Sets all "attribute used" flags to the passed state. */
575 void SetAllUsedFlags( bool bUsed
);
576 /** Returns true, if any "attribute used" flags are ste in this XF. */
577 bool HasUsedFlags() const;
579 /** Returns true, if this is a hard cell format. */
580 inline bool IsCellXF() const { return mbCellXF
; }
581 /** Returns true, if this is a cell style. */
582 inline bool IsStyleXF() const { return !IsCellXF(); }
585 /** Returns true, if this object is equal to the passed. */
586 bool Equals( const XclXFBase
& rCmp
) const;
589 sal_uInt16 mnParent
; /// Index to parent style XF.
590 bool mbCellXF
; /// true = cell XF, false = style XF.
591 bool mbProtUsed
; /// true = cell protection used.
592 bool mbFontUsed
; /// true = font index used.
593 bool mbFmtUsed
; /// true = number format used.
594 bool mbAlignUsed
; /// true = alignment used.
595 bool mbBorderUsed
; /// true = border data used.
596 bool mbAreaUsed
; /// true = area data used.
601 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */