Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <sfx2/htmlmode.hxx>
21 : #include <svtools/htmlcfg.hxx>
22 :
23 : #include <svx/svxids.hrc>
24 : #include <editeng/svxenum.hxx>
25 : #include <editeng/svxacorr.hxx>
26 : #include <unotools/localedatawrapper.hxx>
27 : #include <vcl/region.hxx>
28 : #include <vcl/outdev.hxx>
29 : #include <vcl/window.hxx>
30 : #include <swmodule.hxx>
31 : #include <swtypes.hxx>
32 : #include <viewopt.hxx>
33 : #include <wdocsh.hxx>
34 : #include <swrect.hxx>
35 : #include <crstate.hxx>
36 : #include <svtools/colorcfg.hxx>
37 : #include <svtools/accessibilityoptions.hxx>
38 : #include <unotools/syslocale.hxx>
39 :
40 : #include <editeng/acorrcfg.hxx>
41 :
42 : #ifdef DBG_UTIL
43 : bool SwViewOption::s_bTest9 = false; //DrawingLayerNotLoading
44 : #endif
45 90 : Color SwViewOption::aDocBoundColor(COL_LIGHTGRAY);
46 90 : Color SwViewOption::aObjectBoundColor(COL_LIGHTGRAY);
47 90 : Color SwViewOption::aDocColor(COL_LIGHTGRAY);
48 90 : Color SwViewOption::aAppBackgroundColor(COL_LIGHTGRAY);
49 90 : Color SwViewOption::aTableBoundColor(COL_LIGHTGRAY);
50 90 : Color SwViewOption::aIndexShadingsColor(COL_LIGHTGRAY);
51 90 : Color SwViewOption::aLinksColor(COL_BLUE);
52 90 : Color SwViewOption::aVisitedLinksColor(COL_RED);
53 90 : Color SwViewOption::aDirectCursorColor(COL_BLUE);
54 90 : Color SwViewOption::aTextGridColor(COL_LIGHTGRAY);
55 90 : Color SwViewOption::aSpellColor(COL_LIGHTRED);
56 90 : Color SwViewOption::aSmarttagColor(COL_LIGHTMAGENTA);
57 90 : Color SwViewOption::aFontColor(COL_BLACK);
58 90 : Color SwViewOption::aFieldShadingsColor(COL_LIGHTGRAY);
59 90 : Color SwViewOption::aSectionBoundColor(COL_LIGHTGRAY);
60 90 : Color SwViewOption::aPageBreakColor(COL_BLUE);
61 90 : Color SwViewOption::aScriptIndicatorColor(COL_GREEN);
62 90 : Color SwViewOption::aShadowColor(COL_GRAY);
63 90 : Color SwViewOption::aHeaderFooterMarkColor(COL_BLUE);
64 :
65 : sal_Int32 SwViewOption::nAppearanceFlags = VIEWOPT_DOC_BOUNDARIES|VIEWOPT_OBJECT_BOUNDARIES;
66 : sal_uInt16 SwViewOption::nPixelTwips = 0; // one pixel on the screen
67 :
68 : static const char aPostItStr[] = " ";
69 :
70 1958 : bool SwViewOption::IsEqualFlags( const SwViewOption &rOpt ) const
71 : {
72 1958 : return nCoreOptions == rOpt.nCoreOptions
73 1782 : && nCore2Options == rOpt.nCore2Options
74 1758 : && aSnapSize == rOpt.aSnapSize
75 1742 : && mnViewLayoutColumns == rOpt.mnViewLayoutColumns
76 1684 : && nDivisionX == rOpt.GetDivisionX()
77 1676 : && nDivisionY == rOpt.GetDivisionY()
78 1668 : && nPagePrevRow == rOpt.GetPagePrevRow()
79 1668 : && nPagePrevCol == rOpt.GetPagePrevCol()
80 1668 : && aRetoucheColor == rOpt.GetRetoucheColor()
81 1668 : && mbFormView == rOpt.IsFormView()
82 1668 : && mbBrowseMode == rOpt.getBrowseMode()
83 1666 : && mbViewLayoutBookMode == rOpt.mbViewLayoutBookMode
84 1666 : && bShowPlaceHolderFields == rOpt.bShowPlaceHolderFields
85 3624 : && bIdle == rOpt.bIdle
86 : #ifdef DBG_UTIL
87 : // correspond to the statements in ui/config/cfgvw.src
88 : && m_bTest1 == rOpt.IsTest1()
89 : && m_bTest2 == rOpt.IsTest2()
90 : && m_bTest3 == rOpt.IsTest3()
91 : && m_bTest4 == rOpt.IsTest4()
92 : && m_bTest5 == rOpt.IsTest5()
93 : && m_bTest6 == rOpt.IsTest6()
94 : && m_bTest7 == rOpt.IsTest7()
95 : && m_bTest8 == rOpt.IsTest8()
96 : && m_bTest10 == rOpt.IsTest10()
97 : #endif
98 : ;
99 : }
100 :
101 0 : void SwViewOption::DrawRect( OutputDevice *pOut,
102 : const SwRect &rRect, long nCol ) const
103 : {
104 0 : if ( pOut->GetOutDevType() != OUTDEV_PRINTER )
105 : {
106 0 : const Color aCol( nCol );
107 0 : const Color aOldColor( pOut->GetFillColor() );
108 0 : pOut->SetFillColor( aCol );
109 0 : pOut->DrawRect( rRect.SVRect() );
110 0 : pOut->SetFillColor( aOldColor );
111 : }
112 : else
113 0 : DrawRectPrinter( pOut, rRect );
114 0 : }
115 :
116 0 : void SwViewOption::DrawRectPrinter( OutputDevice *pOut,
117 : const SwRect &rRect ) const
118 : {
119 0 : Color aOldColor(pOut->GetLineColor());
120 0 : Color aOldFillColor( pOut->GetFillColor() );
121 0 : pOut->SetLineColor( Color(COL_BLACK) );
122 0 : pOut->SetFillColor( Color(COL_TRANSPARENT ));
123 0 : pOut->DrawRect( rRect.SVRect() );
124 0 : pOut->SetFillColor( aOldFillColor );
125 0 : pOut->SetLineColor( aOldColor );
126 0 : }
127 :
128 64 : sal_uInt16 SwViewOption::GetPostItsWidth( const OutputDevice *pOut ) const
129 : {
130 : assert(pOut && "no Outdev");
131 64 : return sal_uInt16(pOut->GetTextWidth( OUString(aPostItStr )));
132 : }
133 :
134 32 : void SwViewOption::PaintPostIts( OutputDevice *pOut, const SwRect &rRect, bool bIsScript ) const
135 : {
136 32 : if( pOut && bIsScript )
137 : {
138 0 : Color aOldLineColor( pOut->GetLineColor() );
139 0 : pOut->SetLineColor( Color(COL_GRAY ) );
140 : // to make it look nice, we subtract two pixels everywhere
141 0 : sal_uInt16 nPix = GetPixelTwips() * 2;
142 0 : if( rRect.Width() <= 2 * nPix || rRect.Height() <= 2 * nPix )
143 0 : nPix = 0;
144 0 : const Point aTopLeft( rRect.Left() + nPix, rRect.Top() + nPix );
145 0 : const Point aBotRight( rRect.Right() - nPix, rRect.Bottom() - nPix );
146 0 : const SwRect aRect( aTopLeft, aBotRight );
147 0 : DrawRect( pOut, aRect, aScriptIndicatorColor.GetColor() );
148 0 : pOut->SetLineColor( aOldLineColor );
149 : }
150 32 : }
151 :
152 5406 : SwViewOption::SwViewOption() :
153 : sSymbolFont( "symbol" ),
154 : aRetoucheColor( COL_TRANSPARENT ),
155 : mnViewLayoutColumns( 0 ),
156 : nPagePrevRow( 1 ),
157 : nPagePrevCol( 2 ),
158 : nShdwCrsrFillMode( FILL_TAB ),
159 : bReadonly(false),
160 : bStarOneSetting(false),
161 : bIsPagePreview(false),
162 : bSelectionInReadonly(false),
163 : mbFormView(false),
164 : mbBrowseMode(false),
165 : mbBookView(false),
166 : mbViewLayoutBookMode(false),
167 : bShowPlaceHolderFields( true ),
168 : nZoom( 100 ),
169 : eZoom( SVX_ZOOM_PERCENT ),
170 5406 : nTblDest(TBL_DEST_CELL)
171 : {
172 : // Initialisation is a little simpler now
173 : // all Bits to 0
174 : nCoreOptions =
175 : VIEWOPT_1_HARDBLANK |
176 : VIEWOPT_1_SOFTHYPH |
177 : VIEWOPT_1_REF |
178 : VIEWOPT_1_GRAPHIC |
179 : VIEWOPT_1_TABLE |
180 : VIEWOPT_1_DRAW |
181 : VIEWOPT_1_CONTROL |
182 : VIEWOPT_1_PAGEBACK |
183 5406 : VIEWOPT_1_POSTITS;
184 :
185 : nCore2Options =
186 : VIEWOPT_CORE2_BLACKFONT |
187 5406 : VIEWOPT_CORE2_HIDDENPARA;
188 :
189 : nUIOptions =
190 : VIEWOPT_2_MODIFIED |
191 : VIEWOPT_2_GRFKEEPZOOM |
192 5406 : VIEWOPT_2_ANY_RULER;
193 :
194 5406 : if(MEASURE_METRIC != SvtSysLocale().GetLocaleData().getMeasurementSystemEnum())
195 5406 : aSnapSize.Width() = aSnapSize.Height() = 720; // 1/2"
196 : else
197 0 : aSnapSize.Width() = aSnapSize.Height() = 567; // 1 cm
198 5406 : nDivisionX = nDivisionY = 1;
199 :
200 5406 : bSelectionInReadonly = SW_MOD()->GetAccessibilityOptions().IsSelectionInReadonly();
201 :
202 5406 : bIdle = true;
203 :
204 : #ifdef DBG_UTIL
205 : // correspond to the statements in ui/config/cfgvw.src
206 : m_bTest1 = m_bTest2 = m_bTest3 = m_bTest4 =
207 : m_bTest5 = m_bTest6 = m_bTest7 = m_bTest8 = m_bTest10 = false;
208 : #endif
209 5406 : }
210 :
211 6772 : SwViewOption::SwViewOption(const SwViewOption& rVOpt)
212 : {
213 6772 : bReadonly = false;
214 6772 : bSelectionInReadonly = false;
215 : // #114856# Formular view
216 6772 : mbFormView = rVOpt.mbFormView;
217 6772 : nZoom = rVOpt.nZoom ;
218 6772 : aSnapSize = rVOpt.aSnapSize ;
219 6772 : mnViewLayoutColumns = rVOpt.mnViewLayoutColumns ;
220 6772 : nDivisionX = rVOpt.nDivisionX ;
221 6772 : nDivisionY = rVOpt.nDivisionY ;
222 6772 : nPagePrevRow = rVOpt.nPagePrevRow;
223 6772 : nPagePrevCol = rVOpt.nPagePrevCol;
224 6772 : bIsPagePreview = rVOpt.bIsPagePreview;
225 6772 : eZoom = rVOpt.eZoom ;
226 6772 : nTblDest = rVOpt.nTblDest ;
227 6772 : nUIOptions = rVOpt.nUIOptions ;
228 6772 : nCoreOptions = rVOpt.nCoreOptions ;
229 6772 : nCore2Options = rVOpt.nCore2Options ;
230 6772 : aRetoucheColor = rVOpt.GetRetoucheColor();
231 6772 : sSymbolFont = rVOpt.sSymbolFont;
232 6772 : nShdwCrsrFillMode = rVOpt.nShdwCrsrFillMode;
233 6772 : bStarOneSetting = rVOpt.bStarOneSetting;
234 6772 : mbBookView = rVOpt.mbBookView;
235 6772 : mbBrowseMode = rVOpt.mbBrowseMode;
236 6772 : mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode;
237 6772 : bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields;
238 6772 : bIdle = rVOpt.bIdle;
239 :
240 : #ifdef DBG_UTIL
241 : m_bTest1 = rVOpt.m_bTest1;
242 : m_bTest2 = rVOpt.m_bTest2;
243 : m_bTest3 = rVOpt.m_bTest3;
244 : m_bTest4 = rVOpt.m_bTest4;
245 : m_bTest5 = rVOpt.m_bTest5;
246 : m_bTest6 = rVOpt.m_bTest6;
247 : m_bTest7 = rVOpt.m_bTest7;
248 : m_bTest8 = rVOpt.m_bTest8;
249 : m_bTest10 = rVOpt.m_bTest10;
250 : #endif
251 6772 : }
252 :
253 7050 : SwViewOption& SwViewOption::operator=( const SwViewOption &rVOpt )
254 : {
255 : // #114856# Formular view
256 7050 : mbFormView = rVOpt.mbFormView ;
257 7050 : nZoom = rVOpt.nZoom ;
258 7050 : aSnapSize = rVOpt.aSnapSize ;
259 7050 : mnViewLayoutColumns = rVOpt.mnViewLayoutColumns ;
260 7050 : nDivisionX = rVOpt.nDivisionX ;
261 7050 : nDivisionY = rVOpt.nDivisionY ;
262 7050 : nPagePrevRow = rVOpt.nPagePrevRow;
263 7050 : nPagePrevCol = rVOpt.nPagePrevCol;
264 7050 : bIsPagePreview = rVOpt.bIsPagePreview;
265 7050 : eZoom = rVOpt.eZoom ;
266 7050 : nTblDest = rVOpt.nTblDest ;
267 7050 : nUIOptions = rVOpt.nUIOptions ;
268 7050 : nCoreOptions = rVOpt.nCoreOptions;
269 7050 : nCore2Options = rVOpt.nCore2Options;
270 7050 : aRetoucheColor = rVOpt.GetRetoucheColor();
271 7050 : sSymbolFont = rVOpt.sSymbolFont;
272 7050 : nShdwCrsrFillMode = rVOpt.nShdwCrsrFillMode;
273 7050 : bStarOneSetting = rVOpt.bStarOneSetting;
274 7050 : mbBookView = rVOpt.mbBookView;
275 7050 : mbBrowseMode = rVOpt.mbBrowseMode;
276 7050 : mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode;
277 7050 : bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields;
278 7050 : bIdle = rVOpt.bIdle;
279 :
280 : #ifdef DBG_UTIL
281 : m_bTest1 = rVOpt.m_bTest1;
282 : m_bTest2 = rVOpt.m_bTest2;
283 : m_bTest3 = rVOpt.m_bTest3;
284 : m_bTest4 = rVOpt.m_bTest4;
285 : m_bTest5 = rVOpt.m_bTest5;
286 : m_bTest6 = rVOpt.m_bTest6;
287 : m_bTest7 = rVOpt.m_bTest7;
288 : m_bTest8 = rVOpt.m_bTest8;
289 : m_bTest10 = rVOpt.m_bTest10;
290 : #endif
291 7050 : return *this;
292 : }
293 :
294 12124 : SwViewOption::~SwViewOption()
295 : {
296 12124 : }
297 :
298 4708 : void SwViewOption::Init( vcl::Window *pWin )
299 : {
300 4708 : if( !nPixelTwips && pWin )
301 : {
302 84 : nPixelTwips = (sal_uInt16)pWin->PixelToLogic( Size(1,1) ).Height();
303 : }
304 4708 : }
305 :
306 2393 : bool SwViewOption::IsAutoCompleteWords() const
307 : {
308 2393 : const SvxSwAutoFmtFlags& rFlags = SvxAutoCorrCfg::Get().GetAutoCorrect()->GetSwFlags();
309 2393 : return rFlags.bAutoCmpltCollectWords;
310 : }
311 :
312 270 : AuthorCharAttr::AuthorCharAttr() :
313 : nItemId (SID_ATTR_CHAR_UNDERLINE),
314 : nAttr (UNDERLINE_SINGLE),
315 270 : nColor (COL_TRANSPARENT)
316 : {
317 270 : }
318 :
319 16448 : sal_uInt16 GetHtmlMode(const SwDocShell* pShell)
320 : {
321 16448 : sal_uInt16 nRet = 0;
322 16448 : if(!pShell || PTR_CAST(SwWebDocShell, pShell))
323 : {
324 46 : nRet = HTMLMODE_ON | HTMLMODE_SOME_STYLES;
325 46 : SvxHtmlOptions& rHtmlOpt = SvxHtmlOptions::Get();
326 46 : switch ( rHtmlOpt.GetExportMode() )
327 : {
328 : case HTML_CFG_MSIE:
329 0 : nRet |= HTMLMODE_FULL_STYLES;
330 0 : break;
331 : case HTML_CFG_NS40:
332 : // no special features for this browser
333 46 : break;
334 : case HTML_CFG_WRITER:
335 0 : nRet |= HTMLMODE_FULL_STYLES;
336 0 : break;
337 : }
338 : }
339 16448 : return nRet;
340 : }
341 :
342 12205 : Color& SwViewOption::GetDocColor()
343 : {
344 12205 : return aDocColor;
345 : }
346 :
347 12323 : Color& SwViewOption::GetDocBoundariesColor()
348 : {
349 12323 : return aDocBoundColor;
350 : }
351 :
352 3418 : Color& SwViewOption::GetObjectBoundariesColor()
353 : {
354 3418 : return aObjectBoundColor;
355 : }
356 :
357 54598 : Color& SwViewOption::GetAppBackgroundColor()
358 : {
359 54598 : return aAppBackgroundColor;
360 : }
361 :
362 937 : Color& SwViewOption::GetTableBoundariesColor()
363 : {
364 937 : return aTableBoundColor;
365 : }
366 :
367 892 : Color& SwViewOption::GetIndexShadingsColor()
368 : {
369 892 : return aIndexShadingsColor;
370 : }
371 :
372 0 : Color& SwViewOption::GetLinksColor()
373 : {
374 0 : return aLinksColor;
375 : }
376 :
377 0 : Color& SwViewOption::GetVisitedLinksColor()
378 : {
379 0 : return aVisitedLinksColor;
380 : }
381 :
382 0 : Color& SwViewOption::GetDirectCursorColor()
383 : {
384 0 : return aDirectCursorColor;
385 : }
386 :
387 16 : Color& SwViewOption::GetTextGridColor()
388 : {
389 16 : return aTextGridColor;
390 : }
391 :
392 14 : Color& SwViewOption::GetSpellColor()
393 : {
394 14 : return aSpellColor;
395 : }
396 :
397 0 : Color& SwViewOption::GetSmarttagColor()
398 : {
399 0 : return aSmarttagColor;
400 : }
401 :
402 12172 : Color& SwViewOption::GetShadowColor()
403 : {
404 12172 : return aShadowColor;
405 : }
406 :
407 36850 : Color& SwViewOption::GetFontColor()
408 : {
409 36850 : return aFontColor;
410 : }
411 :
412 3124 : Color& SwViewOption::GetFieldShadingsColor()
413 : {
414 3124 : return aFieldShadingsColor;
415 : }
416 :
417 698 : Color& SwViewOption::GetSectionBoundColor()
418 : {
419 698 : return aSectionBoundColor;
420 : }
421 :
422 260 : Color& SwViewOption::GetPageBreakColor()
423 : {
424 260 : return aPageBreakColor;
425 : }
426 :
427 0 : Color& SwViewOption::GetHeaderFooterMarkColor()
428 : {
429 0 : return aHeaderFooterMarkColor;
430 : }
431 :
432 184 : void SwViewOption::ApplyColorConfigValues(const svtools::ColorConfig& rConfig )
433 : {
434 184 : aDocColor.SetColor(rConfig.GetColorValue(svtools::DOCCOLOR).nColor);
435 :
436 184 : svtools::ColorConfigValue aValue = rConfig.GetColorValue(svtools::DOCBOUNDARIES);
437 184 : aDocBoundColor.SetColor(aValue.nColor);
438 184 : nAppearanceFlags = 0;
439 184 : if(aValue.bIsVisible)
440 184 : nAppearanceFlags |= VIEWOPT_DOC_BOUNDARIES;
441 :
442 184 : aAppBackgroundColor.SetColor(rConfig.GetColorValue(svtools::APPBACKGROUND).nColor);
443 :
444 184 : aValue = rConfig.GetColorValue(svtools::OBJECTBOUNDARIES);
445 184 : aObjectBoundColor.SetColor(aValue.nColor);
446 184 : if(aValue.bIsVisible)
447 184 : nAppearanceFlags |= VIEWOPT_OBJECT_BOUNDARIES;
448 :
449 184 : aValue = rConfig.GetColorValue(svtools::TABLEBOUNDARIES);
450 184 : aTableBoundColor.SetColor(aValue.nColor);
451 184 : if(aValue.bIsVisible)
452 160 : nAppearanceFlags |= VIEWOPT_TABLE_BOUNDARIES;
453 :
454 184 : aValue = rConfig.GetColorValue(svtools::WRITERIDXSHADINGS);
455 184 : aIndexShadingsColor.SetColor(aValue.nColor);
456 184 : if(aValue.bIsVisible)
457 184 : nAppearanceFlags |= VIEWOPT_INDEX_SHADINGS;
458 :
459 184 : aValue = rConfig.GetColorValue(svtools::LINKS);
460 184 : aLinksColor.SetColor(aValue.nColor);
461 184 : if(aValue.bIsVisible)
462 0 : nAppearanceFlags |= VIEWOPT_LINKS;
463 :
464 184 : aValue = rConfig.GetColorValue(svtools::LINKSVISITED);
465 184 : aVisitedLinksColor.SetColor(aValue.nColor);
466 184 : if(aValue.bIsVisible)
467 0 : nAppearanceFlags |= VIEWOPT_VISITED_LINKS;
468 :
469 184 : aValue = rConfig.GetColorValue(svtools::SHADOWCOLOR);
470 184 : aShadowColor.SetColor(aValue.nColor);
471 184 : if(aValue.bIsVisible)
472 184 : nAppearanceFlags |= VIEWOPT_SHADOW;
473 :
474 184 : aDirectCursorColor.SetColor(rConfig.GetColorValue(svtools::WRITERDIRECTCURSOR).nColor);
475 :
476 184 : aTextGridColor.SetColor(rConfig.GetColorValue(svtools::WRITERTEXTGRID).nColor);
477 :
478 184 : aSpellColor.SetColor(rConfig.GetColorValue(svtools::SPELL).nColor);
479 :
480 184 : aSmarttagColor.SetColor(rConfig.GetColorValue(svtools::SMARTTAGS).nColor);
481 :
482 184 : aFontColor.SetColor(rConfig.GetColorValue(svtools::FONTCOLOR).nColor);
483 :
484 184 : aValue = rConfig.GetColorValue(svtools::WRITERFIELDSHADINGS);
485 184 : aFieldShadingsColor.SetColor(aValue.nColor);
486 184 : if(aValue.bIsVisible)
487 160 : nAppearanceFlags |= VIEWOPT_FIELD_SHADINGS;
488 :
489 184 : aValue = rConfig.GetColorValue(svtools::WRITERSECTIONBOUNDARIES);
490 184 : aSectionBoundColor.SetColor(aValue.nColor);
491 184 : if(aValue.bIsVisible)
492 184 : nAppearanceFlags |= VIEWOPT_SECTION_BOUNDARIES;
493 :
494 184 : aValue = rConfig.GetColorValue(svtools::WRITERPAGEBREAKS);
495 184 : aPageBreakColor.SetColor(aValue.nColor);
496 :
497 184 : aValue = rConfig.GetColorValue(svtools::WRITERHEADERFOOTERMARK);
498 184 : aHeaderFooterMarkColor.SetColor(aValue.nColor);
499 :
500 184 : aScriptIndicatorColor.SetColor(rConfig.GetColorValue(svtools::WRITERSCRIPTINDICATOR).nColor);
501 184 : }
502 :
503 30 : void SwViewOption::SetAppearanceFlag(sal_Int32 nFlag, bool bSet, bool bSaveInConfig )
504 : {
505 30 : if(bSet)
506 10 : nAppearanceFlags |= nFlag;
507 : else
508 20 : nAppearanceFlags &= ~nFlag;
509 30 : if(bSaveInConfig)
510 : {
511 : //create an editable svtools::ColorConfig and store the change
512 24 : svtools::EditableColorConfig aEditableConfig;
513 : struct FlagToConfig_Impl
514 : {
515 : sal_Int32 nFlag;
516 : svtools::ColorConfigEntry eEntry;
517 : };
518 : static const FlagToConfig_Impl aFlags[] =
519 : {
520 : { VIEWOPT_DOC_BOUNDARIES , svtools::DOCBOUNDARIES },
521 : { VIEWOPT_OBJECT_BOUNDARIES , svtools::OBJECTBOUNDARIES },
522 : { VIEWOPT_TABLE_BOUNDARIES , svtools::TABLEBOUNDARIES },
523 : { VIEWOPT_INDEX_SHADINGS , svtools::WRITERIDXSHADINGS },
524 : { VIEWOPT_LINKS , svtools::LINKS },
525 : { VIEWOPT_VISITED_LINKS , svtools::LINKSVISITED },
526 : { VIEWOPT_FIELD_SHADINGS , svtools::WRITERFIELDSHADINGS },
527 : { VIEWOPT_SECTION_BOUNDARIES , svtools::WRITERSECTIONBOUNDARIES },
528 : { VIEWOPT_SHADOW , svtools::SHADOWCOLOR },
529 : { 0 , svtools::ColorConfigEntryCount }
530 : };
531 24 : sal_uInt16 nPos = 0;
532 264 : while(aFlags[nPos].nFlag)
533 : {
534 216 : if(0 != (nFlag&aFlags[nPos].nFlag))
535 : {
536 24 : svtools::ColorConfigValue aValue = aEditableConfig.GetColorValue(aFlags[nPos].eEntry);
537 24 : aValue.bIsVisible = bSet;
538 24 : aEditableConfig.SetColorValue(aFlags[nPos].eEntry, aValue);
539 : }
540 216 : nPos++;
541 24 : }
542 : }
543 30 : }
544 :
545 72635 : bool SwViewOption::IsAppearanceFlag(sal_Int32 nFlag)
546 : {
547 72635 : return 0 != (nAppearanceFlags & nFlag);
548 270 : }
549 :
550 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|