xref: /aoo41x/main/sw/source/ui/config/viewopt.cxx (revision efeef26f)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26 
27 
28 #include <svx/htmlmode.hxx>
29 #include <svtools/htmlcfg.hxx>
30 
31 #ifndef _SVX_SVXIDS_HRC //autogen
32 #include <svx/svxids.hrc>
33 #endif
34 #include <editeng/svxenum.hxx>
35 #include <editeng/svxacorr.hxx>
36 #include <unotools/localedatawrapper.hxx>
37 #ifndef _REGION_HXX //autogen
38 #include <vcl/region.hxx>
39 #endif
40 #ifndef _OUTDEV_HXX //autogen
41 #include <vcl/outdev.hxx>
42 #endif
43 #include <vcl/window.hxx>
44 #include <swmodule.hxx>
45 #include <swtypes.hxx>
46 #include <viewopt.hxx>
47 #ifndef _WDOCSH_HXX
48 #include <wdocsh.hxx>
49 #endif
50 #include <swrect.hxx>
51 #include <crstate.hxx>
52 #include <svtools/colorcfg.hxx>
53 #include <svtools/accessibilityoptions.hxx>
54 #include <unotools/syslocale.hxx>
55 
56 #include <editeng/acorrcfg.hxx>
57 
58 #ifdef DBG_UTIL
59 sal_Bool   SwViewOption::bTest9 = sal_False;		//DrawingLayerNotLoading
60 #endif
61 Color SwViewOption::aDocBoundColor(COL_LIGHTGRAY);
62 Color SwViewOption::aObjectBoundColor(COL_LIGHTGRAY);
63 Color SwViewOption::aDocColor(COL_LIGHTGRAY);
64 Color SwViewOption::aAppBackgroundColor(COL_LIGHTGRAY);
65 Color SwViewOption::aTableBoundColor(COL_LIGHTGRAY);
66 Color SwViewOption::aIndexShadingsColor(COL_LIGHTGRAY);
67 Color SwViewOption::aLinksColor(COL_BLUE);
68 Color SwViewOption::aVisitedLinksColor(COL_RED);
69 Color SwViewOption::aDirectCursorColor(COL_BLUE);
70 Color SwViewOption::aTextGridColor(COL_LIGHTGRAY);
71 Color SwViewOption::aSpellColor(COL_LIGHTRED);
72 Color SwViewOption::aSmarttagColor(COL_LIGHTMAGENTA);
73 Color SwViewOption::aFontColor(COL_BLACK);
74 Color SwViewOption::aFieldShadingsColor(COL_LIGHTGRAY);
75 Color SwViewOption::aSectionBoundColor(COL_LIGHTGRAY);
76 Color SwViewOption::aPageBreakColor(COL_BLUE);
77 Color SwViewOption::aScriptIndicatorColor(COL_GREEN);
78 
79 sal_Int32 SwViewOption::nAppearanceFlags = VIEWOPT_DOC_BOUNDARIES|VIEWOPT_OBJECT_BOUNDARIES;
80 sal_uInt16 SwViewOption::nPixelTwips = 0;   //ein Pixel auf dem Bildschirm
81 
82 
83 #define LINEBREAK_SIZE 12, 8
84 #define TAB_SIZE 12, 6
85 
86 #define MIN_BLANKWIDTH		 40
87 #define MIN_BLANKHEIGHT 	 40
88 #define MIN_TABWIDTH		120
89 #define MIN_TABHEIGHT		200
90 
91 static const char __FAR_DATA aPostItStr[] = "  ";
92 
93 /*************************************************************************
94  *					  SwViewOption::IsEqualFlags()
95  *************************************************************************/
96 
97 sal_Bool SwViewOption::IsEqualFlags( const SwViewOption &rOpt ) const
98 {
99 	return	nCoreOptions == rOpt.nCoreOptions
100 			&& nCore2Options == rOpt.nCore2Options
101 			&& aSnapSize	== rOpt.aSnapSize
102             && mnViewLayoutColumns == rOpt.mnViewLayoutColumns
103 			&& nDivisionX	== rOpt.GetDivisionX()
104 			&& nDivisionY	== rOpt.GetDivisionY()
105 			&& nPagePrevRow == rOpt.GetPagePrevRow()
106 			&& nPagePrevCol == rOpt.GetPagePrevCol()
107 			&& aRetoucheColor == rOpt.GetRetoucheColor()
108             && mbFormView == rOpt.IsFormView()
109             && mbBrowseMode == rOpt.getBrowseMode()
110             && mbViewLayoutBookMode == rOpt.mbViewLayoutBookMode
111             && bShowPlaceHolderFields == rOpt.bShowPlaceHolderFields
112             && bIdle == rOpt.bIdle
113 #ifdef DBG_UTIL
114 			// korrespondieren zu den Angaben in ui/config/cfgvw.src
115 			&& bTest1 == rOpt.IsTest1()
116 			&& bTest2 == rOpt.IsTest2()
117 			&& bTest3 == rOpt.IsTest3()
118 			&& bTest4 == rOpt.IsTest4()
119 			&& bTest5 == rOpt.IsTest5()
120 			&& bTest6 == rOpt.IsTest6()
121 			&& bTest7 == rOpt.IsTest7()
122 			&& bTest8 == rOpt.IsTest8()
123 			&& bTest10 == rOpt.IsTest10()
124 #endif
125 			;
126 }
127 
128 /*************************************************************************
129  *					  SwViewOption::DrawRect()
130  *************************************************************************/
131 
132 void SwViewOption::DrawRect( OutputDevice *pOut,
133 							 const SwRect &rRect, long nCol ) const
134 {
135 	if ( pOut->GetOutDevType() != OUTDEV_PRINTER )
136 	{
137 		const Color aCol( nCol );
138 		const Color aOldColor( pOut->GetFillColor() );
139 		pOut->SetFillColor( aCol );
140 		pOut->DrawRect( rRect.SVRect() );
141 		pOut->SetFillColor( aOldColor );
142 	}
143 	else
144 		DrawRectPrinter( pOut, rRect );
145 }
146 
147 /*************************************************************************
148  *					  SwViewOption::DrawRectPrinter()
149  *************************************************************************/
150 
151 void SwViewOption::DrawRectPrinter( OutputDevice *pOut,
152 									const SwRect &rRect ) const
153 {
154 	Color aOldColor(pOut->GetLineColor());
155 	Color aOldFillColor( pOut->GetFillColor() );
156 	pOut->SetLineColor( Color(COL_BLACK) );
157 	pOut->SetFillColor( Color(COL_TRANSPARENT ));
158 	pOut->DrawRect( rRect.SVRect() );
159 	pOut->SetFillColor( aOldFillColor );
160 	pOut->SetLineColor( aOldColor );
161 }
162 
163 /*************************************************************************
164  *					  SwViewOption::GetPostItsWidth()
165  *************************************************************************/
166 
167 sal_uInt16 SwViewOption::GetPostItsWidth( const OutputDevice *pOut ) const
168 {
169 	ASSERT( pOut, "no Outdev" );
170 	return sal_uInt16(pOut->GetTextWidth( String::CreateFromAscii(aPostItStr )));
171 }
172 
173 /*************************************************************************
174  *					  SwViewOption::PaintPostIts()
175  *************************************************************************/
176 
177 void SwViewOption::PaintPostIts( OutputDevice *pOut, const SwRect &rRect, sal_Bool bIsScript ) const
178 {
179 	if( pOut && bIsScript )
180 	{
181         	Color aOldLineColor( pOut->GetLineColor() );
182 		pOut->SetLineColor( Color(COL_GRAY ) );
183 		// Wir ziehen ueberall zwei Pixel ab, damit es schick aussieht
184 		sal_uInt16 nPix = GetPixelTwips() * 2;
185 		if( rRect.Width() <= 2 * nPix || rRect.Height() <= 2 * nPix )
186 			nPix = 0;
187 		const Point aTopLeft(  rRect.Left()  + nPix, rRect.Top()	+ nPix );
188 		const Point aBotRight( rRect.Right() - nPix, rRect.Bottom() - nPix );
189 		const SwRect aRect( aTopLeft, aBotRight );
190         DrawRect( pOut, aRect, aScriptIndicatorColor.GetColor() );
191 	pOut->SetLineColor( aOldLineColor );
192 	}
193 }
194 
195 
196 /*************************************************************************
197 |*
198 |*	ViewOption::ViewOption()
199 |*
200 |*	Letzte Aenderung	MA 04. Aug. 93
201 |*
202 |*************************************************************************/
203 
204 SwViewOption::SwViewOption() :
205     aRetoucheColor( COL_TRANSPARENT ),
206     mnViewLayoutColumns( 0 ),
207     nPagePrevRow( 1 ),
208     nPagePrevCol( 2 ),
209     nShdwCrsrFillMode( FILL_TAB ),
210     bReadonly(sal_False),
211     bStarOneSetting(sal_False),
212     bIsPagePreview(sal_False),
213     bSelectionInReadonly(sal_False),
214     mbFormView(sal_False),
215 	mbBrowseMode(sal_False),
216     mbBookView(sal_False),
217     mbViewLayoutBookMode(sal_False),
218     bShowPlaceHolderFields( sal_True ),
219 
220     nZoom( 100 ),
221     eZoom( SVX_ZOOM_PERCENT ),
222     nTblDest(TBL_DEST_CELL)
223 {
224 	// Initialisierung ist jetzt etwas einfacher
225 	// alle Bits auf 0
226     nCoreOptions =  VIEWOPT_1_HARDBLANK | VIEWOPT_1_SOFTHYPH |
227                     VIEWOPT_1_REF |
228                     VIEWOPT_1_GRAPHIC |
229 					VIEWOPT_1_TABLE	   | VIEWOPT_1_DRAW | VIEWOPT_1_CONTROL	|
230                     VIEWOPT_1_PAGEBACK |
231 					VIEWOPT_1_SOLIDMARKHDL | VIEWOPT_1_POSTITS;
232     nCore2Options = VIEWOPT_CORE2_BLACKFONT | VIEWOPT_CORE2_HIDDENPARA;
233     nUIOptions    = VIEWOPT_2_MODIFIED | VIEWOPT_2_GRFKEEPZOOM |VIEWOPT_2_ANY_RULER;
234 
235 	if(MEASURE_METRIC != SvtSysLocale().GetLocaleData().getMeasurementSystemEnum())
236 		aSnapSize.Width() = aSnapSize.Height() = 720;	// 1/2"
237 	else
238 		aSnapSize.Width() = aSnapSize.Height() = 567;	// 1 cm
239 	nDivisionX = nDivisionY = 1;
240 
241     bSelectionInReadonly = SW_MOD()->GetAccessibilityOptions().IsSelectionInReadonly();
242 
243     bIdle = true;
244 
245 #ifdef DBG_UTIL
246 	// korrespondieren zu den Angaben in ui/config/cfgvw.src
247 	bTest1 = bTest2 = bTest3 = bTest4 =
248 			 bTest5 = bTest6 = bTest7 = bTest8 = bTest10 = sal_False;
249 #endif
250 }
251 
252 SwViewOption::SwViewOption(const SwViewOption& rVOpt)
253 {
254 	bReadonly = sal_False;
255     bSelectionInReadonly = sal_False;
256     // --> FME 2004-06-29 #114856# Formular view
257     mbFormView       = rVOpt.mbFormView;
258     // <--
259     nZoom           = rVOpt.nZoom       ;
260 	aSnapSize   	= rVOpt.aSnapSize   ;
261     mnViewLayoutColumns = rVOpt.mnViewLayoutColumns ;
262 	nDivisionX  	= rVOpt.nDivisionX  ;
263 	nDivisionY  	= rVOpt.nDivisionY  ;
264 	nPagePrevRow	= rVOpt.nPagePrevRow;
265 	nPagePrevCol	= rVOpt.nPagePrevCol;
266     bIsPagePreview  = rVOpt.bIsPagePreview;
267 	eZoom      		= rVOpt.eZoom       ;
268 	nTblDest    	= rVOpt.nTblDest    ;
269 	nUIOptions		= rVOpt.nUIOptions  ;
270 	nCoreOptions	= rVOpt.nCoreOptions  ;
271 	nCore2Options	= rVOpt.nCore2Options  ;
272 	aRetoucheColor	= rVOpt.GetRetoucheColor();
273 	sSymbolFont 	= rVOpt.sSymbolFont;
274 	nShdwCrsrFillMode = rVOpt.nShdwCrsrFillMode;
275 	bStarOneSetting = rVOpt.bStarOneSetting;
276 	mbBookView	    = rVOpt.mbBookView;
277 	mbBrowseMode	= rVOpt.mbBrowseMode;
278     mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode;
279     bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields;
280     bIdle           = rVOpt.bIdle;
281 
282 #ifdef DBG_UTIL
283 	bTest1          = rVOpt.bTest1      ;
284 	bTest2          = rVOpt.bTest2      ;
285 	bTest3          = rVOpt.bTest3      ;
286 	bTest4          = rVOpt.bTest4      ;
287 	bTest5          = rVOpt.bTest5      ;
288 	bTest6          = rVOpt.bTest6      ;
289 	bTest7          = rVOpt.bTest7      ;
290 	bTest8          = rVOpt.bTest8      ;
291 	bTest10         = rVOpt.bTest10     ;
292 #endif
293 }
294 
295 
296 SwViewOption& SwViewOption::operator=( const SwViewOption &rVOpt )
297 {
298     // --> DVO FME 2004-06-29 #114856# Formular view
299     mbFormView       = rVOpt.mbFormView   ;
300     // <--
301 	nZoom   		= rVOpt.nZoom   	;
302 	aSnapSize   	= rVOpt.aSnapSize   ;
303     mnViewLayoutColumns = rVOpt.mnViewLayoutColumns ;
304 	nDivisionX  	= rVOpt.nDivisionX  ;
305 	nDivisionY  	= rVOpt.nDivisionY  ;
306 	nPagePrevRow	= rVOpt.nPagePrevRow;
307 	nPagePrevCol	= rVOpt.nPagePrevCol;
308     bIsPagePreview  = rVOpt.bIsPagePreview;
309 	eZoom      		= rVOpt.eZoom       ;
310 	nTblDest    	= rVOpt.nTblDest    ;
311 	nUIOptions		= rVOpt.nUIOptions  ;
312 	nCoreOptions	= rVOpt.nCoreOptions;
313 	nCore2Options	= rVOpt.nCore2Options;
314 	aRetoucheColor	= rVOpt.GetRetoucheColor();
315 	sSymbolFont 	= rVOpt.sSymbolFont;
316 	nShdwCrsrFillMode = rVOpt.nShdwCrsrFillMode;
317 	bStarOneSetting = rVOpt.bStarOneSetting;
318 	mbBookView	    = rVOpt.mbBookView;
319 	mbBrowseMode	= rVOpt.mbBrowseMode;
320     mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode;
321     bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields;
322     bIdle           = rVOpt.bIdle;
323 
324 #ifdef DBG_UTIL
325 	bTest1          = rVOpt.bTest1      ;
326 	bTest2          = rVOpt.bTest2      ;
327 	bTest3          = rVOpt.bTest3      ;
328 	bTest4          = rVOpt.bTest4      ;
329 	bTest5          = rVOpt.bTest5      ;
330 	bTest6          = rVOpt.bTest6      ;
331 	bTest7          = rVOpt.bTest7      ;
332 	bTest8          = rVOpt.bTest8      ;
333 	bTest10         = rVOpt.bTest10     ;
334 #endif
335 	return *this;
336 }
337 
338 
339 SwViewOption::~SwViewOption()
340 {
341 }
342 
343 /*************************************************************************
344 |*
345 |*	ViewOption::Init()
346 |*
347 |*	Letzte Aenderung	MA 04. Aug. 93
348 |*
349 |*************************************************************************/
350 
351 void SwViewOption::Init( Window *pWin )
352 {
353 	if( !nPixelTwips && pWin )
354 	{
355 		nPixelTwips = (sal_uInt16)pWin->PixelToLogic( Size(1,1) ).Height();
356 	}
357 }
358 
359 sal_Bool SwViewOption::IsAutoCompleteWords() const
360 {
361 	const SvxSwAutoFmtFlags& rFlags = SvxAutoCorrCfg::Get()->GetAutoCorrect()->GetSwFlags();
362 	return /*rFlags.bAutoCompleteWords &&*/ rFlags.bAutoCmpltCollectWords;
363 }
364 
365 /*************************************************************************/
366 /*                                                                       */
367 /*************************************************************************/
368 
369 AuthorCharAttr::AuthorCharAttr() :
370 	nItemId	(SID_ATTR_CHAR_UNDERLINE),
371 	nAttr	(UNDERLINE_SINGLE),
372 	nColor	(COL_TRANSPARENT)
373 {
374 }
375 
376 /*-----------------07.01.97 13.50-------------------
377 
378 --------------------------------------------------*/
379 
380 sal_uInt16		GetHtmlMode(const SwDocShell* pShell)
381 {
382 	sal_uInt16 nRet = 0;
383 	if(!pShell || PTR_CAST(SwWebDocShell, pShell))
384 	{
385 		nRet = HTMLMODE_ON;
386 		SvxHtmlOptions* pHtmlOpt = SvxHtmlOptions::Get();
387 		switch ( pHtmlOpt->GetExportMode() )
388 		{
389 			case HTML_CFG_MSIE_40:
390 				nRet |= HTMLMODE_PARA_BORDER|HTMLMODE_SMALL_CAPS|
391 						HTMLMODE_SOME_STYLES|
392 						HTMLMODE_FULL_STYLES|HTMLMODE_GRAPH_POS|
393 						HTMLMODE_FULL_ABS_POS|HTMLMODE_SOME_ABS_POS;
394 			break;
395 			case HTML_CFG_NS40:
396 				nRet |= HTMLMODE_PARA_BORDER|HTMLMODE_SOME_STYLES|
397 						HTMLMODE_FRM_COLUMNS|HTMLMODE_BLINK|HTMLMODE_GRAPH_POS|
398 						HTMLMODE_SOME_ABS_POS;
399 			break;
400 			case HTML_CFG_WRITER:
401 				nRet |= HTMLMODE_PARA_BORDER|HTMLMODE_SMALL_CAPS|
402 						HTMLMODE_SOME_STYLES|
403 						HTMLMODE_FRM_COLUMNS|HTMLMODE_FULL_STYLES|
404 						HTMLMODE_BLINK|HTMLMODE_DROPCAPS|HTMLMODE_GRAPH_POS|
405 						HTMLMODE_FULL_ABS_POS|HTMLMODE_SOME_ABS_POS;
406 			break;
407 			case HTML_CFG_HTML32:
408 			break;
409 		}
410 	}
411 	return nRet;
412 }
413 /* -----------------------------24.04.2002 10:20------------------------------
414 
415  ---------------------------------------------------------------------------*/
416 Color&   SwViewOption::GetDocColor()
417 {
418     return aDocColor;
419 }
420 /* -----------------------------23.04.2002 17:18------------------------------
421 
422  ---------------------------------------------------------------------------*/
423 Color&   SwViewOption::GetDocBoundariesColor()
424 {
425     return aDocBoundColor;
426 }
427 /* -----------------------------23.04.2002 17:53------------------------------
428 
429  ---------------------------------------------------------------------------*/
430 Color&   SwViewOption::GetObjectBoundariesColor()
431 {
432     return aObjectBoundColor;
433 }
434 /* -----------------------------24.04.2002 10:41------------------------------
435 
436  ---------------------------------------------------------------------------*/
437 Color& SwViewOption::GetAppBackgroundColor()
438 {
439     return aAppBackgroundColor;
440 }
441 /*-- 24.04.2002 10:50:11---------------------------------------------------
442 
443   -----------------------------------------------------------------------*/
444 Color&   SwViewOption::GetTableBoundariesColor()
445 {
446     return aTableBoundColor;
447 }
448 /*-- 24.04.2002 10:50:12---------------------------------------------------
449 
450   -----------------------------------------------------------------------*/
451 Color&   SwViewOption::GetIndexShadingsColor()
452 {
453     return aIndexShadingsColor;
454 }
455 /*-- 24.04.2002 10:50:12---------------------------------------------------
456 
457   -----------------------------------------------------------------------*/
458 Color&   SwViewOption::GetLinksColor()
459 {
460     return aLinksColor;
461 }
462 /*-- 24.04.2002 10:50:13---------------------------------------------------
463 
464   -----------------------------------------------------------------------*/
465 Color&   SwViewOption::GetVisitedLinksColor()
466 {
467     return aVisitedLinksColor;
468 }
469 /*-- 24.04.2002 10:50:13---------------------------------------------------
470 
471   -----------------------------------------------------------------------*/
472 Color&   SwViewOption::GetDirectCursorColor()
473 {
474     return aDirectCursorColor;
475 }
476 /*-- 24.04.2002 10:50:14---------------------------------------------------
477 
478   -----------------------------------------------------------------------*/
479 Color&   SwViewOption::GetTextGridColor()
480 {
481     return aTextGridColor;
482 }
483 /*-- 24.04.2002 10:50:14---------------------------------------------------
484 
485   -----------------------------------------------------------------------*/
486 Color&   SwViewOption::GetSpellColor()
487 {
488     return aSpellColor;
489 }
490 /*-- 24.04.2007 10:50:14---------------------------------------------------
491 
492   -----------------------------------------------------------------------*/
493 Color&   SwViewOption::GetSmarttagColor()
494 {
495     return aSmarttagColor;
496 }
497 /*-- 06.12.2002 10:50:11---------------------------------------------------
498 
499   -----------------------------------------------------------------------*/
500 Color&   SwViewOption::GetFontColor()
501 {
502     return aFontColor;
503 }
504 /*-- 24.04.2002 10:50:15---------------------------------------------------
505 
506   -----------------------------------------------------------------------*/
507 Color&   SwViewOption::GetFieldShadingsColor()
508 {
509     return aFieldShadingsColor;
510 }
511 /*-- 24.04.2002 10:50:15---------------------------------------------------
512 
513   -----------------------------------------------------------------------*/
514 Color&   SwViewOption::GetSectionBoundColor()
515 {
516     return aSectionBoundColor;
517 }
518 /* -----------------------------2002/07/31 14:00------------------------------
519 
520  ---------------------------------------------------------------------------*/
521 Color& SwViewOption::GetPageBreakColor()
522 {
523     return aPageBreakColor;
524 }
525 
526 /* -----------------------------23.04.2002 17:41------------------------------
527 
528  ---------------------------------------------------------------------------*/
529 void SwViewOption::ApplyColorConfigValues(const svtools::ColorConfig& rConfig )
530 {
531     aDocColor.SetColor(rConfig.GetColorValue(svtools::DOCCOLOR).nColor);
532 
533     svtools::ColorConfigValue aValue = rConfig.GetColorValue(svtools::DOCBOUNDARIES);
534     aDocBoundColor.SetColor(aValue.nColor);
535     nAppearanceFlags = 0;
536     if(aValue.bIsVisible)
537         nAppearanceFlags |= VIEWOPT_DOC_BOUNDARIES;
538 
539     aAppBackgroundColor.SetColor(rConfig.GetColorValue(svtools::APPBACKGROUND).nColor);
540 
541     aValue = rConfig.GetColorValue(svtools::OBJECTBOUNDARIES);
542     aObjectBoundColor.SetColor(aValue.nColor);
543     if(aValue.bIsVisible)
544         nAppearanceFlags |= VIEWOPT_OBJECT_BOUNDARIES;
545 
546     aValue = rConfig.GetColorValue(svtools::TABLEBOUNDARIES);
547     aTableBoundColor.SetColor(aValue.nColor);
548     if(aValue.bIsVisible)
549         nAppearanceFlags |= VIEWOPT_TABLE_BOUNDARIES;
550 
551     aValue = rConfig.GetColorValue(svtools::WRITERIDXSHADINGS);
552     aIndexShadingsColor.SetColor(aValue.nColor);
553     if(aValue.bIsVisible)
554         nAppearanceFlags |= VIEWOPT_INDEX_SHADINGS;
555 
556     aValue = rConfig.GetColorValue(svtools::LINKS);
557     aLinksColor.SetColor(aValue.nColor);
558     if(aValue.bIsVisible)
559         nAppearanceFlags |= VIEWOPT_LINKS;
560 
561     aValue = rConfig.GetColorValue(svtools::LINKSVISITED);
562     aVisitedLinksColor.SetColor(aValue.nColor);
563     if(aValue.bIsVisible)
564         nAppearanceFlags |= VIEWOPT_VISITED_LINKS;
565 
566     aDirectCursorColor.SetColor(rConfig.GetColorValue(svtools::WRITERDIRECTCURSOR).nColor);
567 
568     aTextGridColor.SetColor(rConfig.GetColorValue(svtools::WRITERTEXTGRID).nColor);
569 
570     aSpellColor.SetColor(rConfig.GetColorValue(svtools::SPELL).nColor);
571 
572     aSmarttagColor.SetColor(rConfig.GetColorValue(svtools::SMARTTAGS).nColor);
573 
574     aFontColor.SetColor(rConfig.GetColorValue(svtools::FONTCOLOR).nColor);
575 
576     aValue = rConfig.GetColorValue(svtools::WRITERFIELDSHADINGS);
577     aFieldShadingsColor.SetColor(aValue.nColor);
578     if(aValue.bIsVisible)
579         nAppearanceFlags |= VIEWOPT_FIELD_SHADINGS;
580 
581     aValue = rConfig.GetColorValue(svtools::WRITERSECTIONBOUNDARIES);
582     aSectionBoundColor.SetColor(aValue.nColor);
583     if(aValue.bIsVisible)
584         nAppearanceFlags |= VIEWOPT_SECTION_BOUNDARIES;
585 
586     aValue = rConfig.GetColorValue(svtools::WRITERPAGEBREAKS);
587     aPageBreakColor.SetColor(aValue.nColor);
588 
589     aScriptIndicatorColor.SetColor(rConfig.GetColorValue(svtools::WRITERSCRIPTINDICATOR).nColor);
590 }
591 /* -----------------------------23.04.2002 17:48------------------------------
592 
593  ---------------------------------------------------------------------------*/
594 void SwViewOption::SetAppearanceFlag(sal_Int32 nFlag, sal_Bool bSet, sal_Bool bSaveInConfig )
595 {
596     if(bSet)
597         nAppearanceFlags |= nFlag;
598     else
599         nAppearanceFlags &= ~nFlag;
600     if(bSaveInConfig)
601     {
602         //create an editable svtools::ColorConfig and store the change
603         svtools::EditableColorConfig aEditableConfig;
604         struct FlagToConfig_Impl
605         {
606             sal_Int32               nFlag;
607             svtools::ColorConfigEntry   eEntry;
608         };
609         static const FlagToConfig_Impl aFlags[] =
610         {
611             { VIEWOPT_DOC_BOUNDARIES     ,   svtools::DOCBOUNDARIES },
612             { VIEWOPT_OBJECT_BOUNDARIES  ,   svtools::OBJECTBOUNDARIES },
613             { VIEWOPT_TABLE_BOUNDARIES   ,   svtools::TABLEBOUNDARIES },
614             { VIEWOPT_INDEX_SHADINGS     ,   svtools::WRITERIDXSHADINGS },
615             { VIEWOPT_LINKS              ,   svtools::LINKS },
616             { VIEWOPT_VISITED_LINKS      ,   svtools::LINKSVISITED },
617             { VIEWOPT_FIELD_SHADINGS     ,   svtools::WRITERFIELDSHADINGS },
618             { VIEWOPT_SECTION_BOUNDARIES ,   svtools::WRITERSECTIONBOUNDARIES },
619             { 0                          ,   svtools::ColorConfigEntryCount }
620         };
621         sal_uInt16 nPos = 0;
622         while(aFlags[nPos].nFlag)
623         {
624             if(0 != (nFlag&aFlags[nPos].nFlag))
625             {
626                 svtools::ColorConfigValue aValue = aEditableConfig.GetColorValue(aFlags[nPos].eEntry);
627                 aValue.bIsVisible = bSet;
628                 aEditableConfig.SetColorValue(aFlags[nPos].eEntry, aValue);
629             }
630             nPos++;
631         }
632     }
633 }
634 /* -----------------------------24.04.2002 10:42------------------------------
635 
636  ---------------------------------------------------------------------------*/
637 sal_Bool SwViewOption::IsAppearanceFlag(sal_Int32 nFlag)
638 {
639     return 0 != (nAppearanceFlags & nFlag);
640 }
641 
642