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