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 = 227 VIEWOPT_1_HARDBLANK | 228 VIEWOPT_1_SOFTHYPH | 229 VIEWOPT_1_REF | 230 VIEWOPT_1_GRAPHIC | 231 VIEWOPT_1_TABLE | 232 VIEWOPT_1_DRAW | 233 VIEWOPT_1_CONTROL | 234 VIEWOPT_1_PAGEBACK | 235 VIEWOPT_1_POSTITS; 236 237 nCore2Options = 238 VIEWOPT_CORE2_BLACKFONT | 239 VIEWOPT_CORE2_HIDDENPARA | 240 VIEWOPT_CORE2_BIGMARKHDL; // default is big handles 241 242 nUIOptions = 243 VIEWOPT_2_MODIFIED | 244 VIEWOPT_2_GRFKEEPZOOM | 245 VIEWOPT_2_ANY_RULER; 246 247 if(MEASURE_METRIC != SvtSysLocale().GetLocaleData().getMeasurementSystemEnum()) 248 aSnapSize.Width() = aSnapSize.Height() = 720; // 1/2" 249 else 250 aSnapSize.Width() = aSnapSize.Height() = 567; // 1 cm 251 nDivisionX = nDivisionY = 1; 252 253 bSelectionInReadonly = SW_MOD()->GetAccessibilityOptions().IsSelectionInReadonly(); 254 255 bIdle = true; 256 257 #ifdef DBG_UTIL 258 // korrespondieren zu den Angaben in ui/config/cfgvw.src 259 bTest1 = bTest2 = bTest3 = bTest4 = 260 bTest5 = bTest6 = bTest7 = bTest8 = bTest10 = sal_False; 261 #endif 262 } 263 264 SwViewOption::SwViewOption(const SwViewOption& rVOpt) 265 { 266 bReadonly = sal_False; 267 bSelectionInReadonly = sal_False; 268 // --> FME 2004-06-29 #114856# Formular view 269 mbFormView = rVOpt.mbFormView; 270 // <-- 271 nZoom = rVOpt.nZoom ; 272 aSnapSize = rVOpt.aSnapSize ; 273 mnViewLayoutColumns = rVOpt.mnViewLayoutColumns ; 274 nDivisionX = rVOpt.nDivisionX ; 275 nDivisionY = rVOpt.nDivisionY ; 276 nPagePrevRow = rVOpt.nPagePrevRow; 277 nPagePrevCol = rVOpt.nPagePrevCol; 278 bIsPagePreview = rVOpt.bIsPagePreview; 279 eZoom = rVOpt.eZoom ; 280 nTblDest = rVOpt.nTblDest ; 281 nUIOptions = rVOpt.nUIOptions ; 282 nCoreOptions = rVOpt.nCoreOptions ; 283 nCore2Options = rVOpt.nCore2Options ; 284 aRetoucheColor = rVOpt.GetRetoucheColor(); 285 sSymbolFont = rVOpt.sSymbolFont; 286 nShdwCrsrFillMode = rVOpt.nShdwCrsrFillMode; 287 bStarOneSetting = rVOpt.bStarOneSetting; 288 mbBookView = rVOpt.mbBookView; 289 mbBrowseMode = rVOpt.mbBrowseMode; 290 mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode; 291 bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields; 292 bIdle = rVOpt.bIdle; 293 294 #ifdef DBG_UTIL 295 bTest1 = rVOpt.bTest1 ; 296 bTest2 = rVOpt.bTest2 ; 297 bTest3 = rVOpt.bTest3 ; 298 bTest4 = rVOpt.bTest4 ; 299 bTest5 = rVOpt.bTest5 ; 300 bTest6 = rVOpt.bTest6 ; 301 bTest7 = rVOpt.bTest7 ; 302 bTest8 = rVOpt.bTest8 ; 303 bTest10 = rVOpt.bTest10 ; 304 #endif 305 } 306 307 308 SwViewOption& SwViewOption::operator=( const SwViewOption &rVOpt ) 309 { 310 // --> DVO FME 2004-06-29 #114856# Formular view 311 mbFormView = rVOpt.mbFormView ; 312 // <-- 313 nZoom = rVOpt.nZoom ; 314 aSnapSize = rVOpt.aSnapSize ; 315 mnViewLayoutColumns = rVOpt.mnViewLayoutColumns ; 316 nDivisionX = rVOpt.nDivisionX ; 317 nDivisionY = rVOpt.nDivisionY ; 318 nPagePrevRow = rVOpt.nPagePrevRow; 319 nPagePrevCol = rVOpt.nPagePrevCol; 320 bIsPagePreview = rVOpt.bIsPagePreview; 321 eZoom = rVOpt.eZoom ; 322 nTblDest = rVOpt.nTblDest ; 323 nUIOptions = rVOpt.nUIOptions ; 324 nCoreOptions = rVOpt.nCoreOptions; 325 nCore2Options = rVOpt.nCore2Options; 326 aRetoucheColor = rVOpt.GetRetoucheColor(); 327 sSymbolFont = rVOpt.sSymbolFont; 328 nShdwCrsrFillMode = rVOpt.nShdwCrsrFillMode; 329 bStarOneSetting = rVOpt.bStarOneSetting; 330 mbBookView = rVOpt.mbBookView; 331 mbBrowseMode = rVOpt.mbBrowseMode; 332 mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode; 333 bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields; 334 bIdle = rVOpt.bIdle; 335 336 #ifdef DBG_UTIL 337 bTest1 = rVOpt.bTest1 ; 338 bTest2 = rVOpt.bTest2 ; 339 bTest3 = rVOpt.bTest3 ; 340 bTest4 = rVOpt.bTest4 ; 341 bTest5 = rVOpt.bTest5 ; 342 bTest6 = rVOpt.bTest6 ; 343 bTest7 = rVOpt.bTest7 ; 344 bTest8 = rVOpt.bTest8 ; 345 bTest10 = rVOpt.bTest10 ; 346 #endif 347 return *this; 348 } 349 350 351 SwViewOption::~SwViewOption() 352 { 353 } 354 355 /************************************************************************* 356 |* 357 |* ViewOption::Init() 358 |* 359 |* Letzte Aenderung MA 04. Aug. 93 360 |* 361 |*************************************************************************/ 362 363 void SwViewOption::Init( Window *pWin ) 364 { 365 if( !nPixelTwips && pWin ) 366 { 367 nPixelTwips = (sal_uInt16)pWin->PixelToLogic( Size(1,1) ).Height(); 368 } 369 } 370 371 sal_Bool SwViewOption::IsAutoCompleteWords() const 372 { 373 const SvxSwAutoFmtFlags& rFlags = SvxAutoCorrCfg::Get()->GetAutoCorrect()->GetSwFlags(); 374 return /*rFlags.bAutoCompleteWords &&*/ rFlags.bAutoCmpltCollectWords; 375 } 376 377 /*************************************************************************/ 378 /* */ 379 /*************************************************************************/ 380 381 AuthorCharAttr::AuthorCharAttr() : 382 nItemId (SID_ATTR_CHAR_UNDERLINE), 383 nAttr (UNDERLINE_SINGLE), 384 nColor (COL_TRANSPARENT) 385 { 386 } 387 388 /*-----------------07.01.97 13.50------------------- 389 390 --------------------------------------------------*/ 391 392 sal_uInt16 GetHtmlMode(const SwDocShell* pShell) 393 { 394 sal_uInt16 nRet = 0; 395 if(!pShell || PTR_CAST(SwWebDocShell, pShell)) 396 { 397 nRet = HTMLMODE_ON; 398 SvxHtmlOptions* pHtmlOpt = SvxHtmlOptions::Get(); 399 switch ( pHtmlOpt->GetExportMode() ) 400 { 401 case HTML_CFG_MSIE_40: 402 nRet |= HTMLMODE_PARA_BORDER|HTMLMODE_SMALL_CAPS| 403 HTMLMODE_SOME_STYLES| 404 HTMLMODE_FULL_STYLES|HTMLMODE_GRAPH_POS| 405 HTMLMODE_FULL_ABS_POS|HTMLMODE_SOME_ABS_POS; 406 break; 407 case HTML_CFG_NS40: 408 nRet |= HTMLMODE_PARA_BORDER|HTMLMODE_SOME_STYLES| 409 HTMLMODE_FRM_COLUMNS|HTMLMODE_BLINK|HTMLMODE_GRAPH_POS| 410 HTMLMODE_SOME_ABS_POS; 411 break; 412 case HTML_CFG_WRITER: 413 nRet |= HTMLMODE_PARA_BORDER|HTMLMODE_SMALL_CAPS| 414 HTMLMODE_SOME_STYLES| 415 HTMLMODE_FRM_COLUMNS|HTMLMODE_FULL_STYLES| 416 HTMLMODE_BLINK|HTMLMODE_DROPCAPS|HTMLMODE_GRAPH_POS| 417 HTMLMODE_FULL_ABS_POS|HTMLMODE_SOME_ABS_POS; 418 break; 419 case HTML_CFG_HTML32: 420 break; 421 } 422 } 423 return nRet; 424 } 425 /* -----------------------------24.04.2002 10:20------------------------------ 426 427 ---------------------------------------------------------------------------*/ 428 Color& SwViewOption::GetDocColor() 429 { 430 return aDocColor; 431 } 432 /* -----------------------------23.04.2002 17:18------------------------------ 433 434 ---------------------------------------------------------------------------*/ 435 Color& SwViewOption::GetDocBoundariesColor() 436 { 437 return aDocBoundColor; 438 } 439 /* -----------------------------23.04.2002 17:53------------------------------ 440 441 ---------------------------------------------------------------------------*/ 442 Color& SwViewOption::GetObjectBoundariesColor() 443 { 444 return aObjectBoundColor; 445 } 446 /* -----------------------------24.04.2002 10:41------------------------------ 447 448 ---------------------------------------------------------------------------*/ 449 Color& SwViewOption::GetAppBackgroundColor() 450 { 451 return aAppBackgroundColor; 452 } 453 /*-- 24.04.2002 10:50:11--------------------------------------------------- 454 455 -----------------------------------------------------------------------*/ 456 Color& SwViewOption::GetTableBoundariesColor() 457 { 458 return aTableBoundColor; 459 } 460 /*-- 24.04.2002 10:50:12--------------------------------------------------- 461 462 -----------------------------------------------------------------------*/ 463 Color& SwViewOption::GetIndexShadingsColor() 464 { 465 return aIndexShadingsColor; 466 } 467 /*-- 24.04.2002 10:50:12--------------------------------------------------- 468 469 -----------------------------------------------------------------------*/ 470 Color& SwViewOption::GetLinksColor() 471 { 472 return aLinksColor; 473 } 474 /*-- 24.04.2002 10:50:13--------------------------------------------------- 475 476 -----------------------------------------------------------------------*/ 477 Color& SwViewOption::GetVisitedLinksColor() 478 { 479 return aVisitedLinksColor; 480 } 481 /*-- 24.04.2002 10:50:13--------------------------------------------------- 482 483 -----------------------------------------------------------------------*/ 484 Color& SwViewOption::GetDirectCursorColor() 485 { 486 return aDirectCursorColor; 487 } 488 /*-- 24.04.2002 10:50:14--------------------------------------------------- 489 490 -----------------------------------------------------------------------*/ 491 Color& SwViewOption::GetTextGridColor() 492 { 493 return aTextGridColor; 494 } 495 /*-- 24.04.2002 10:50:14--------------------------------------------------- 496 497 -----------------------------------------------------------------------*/ 498 Color& SwViewOption::GetSpellColor() 499 { 500 return aSpellColor; 501 } 502 /*-- 24.04.2007 10:50:14--------------------------------------------------- 503 504 -----------------------------------------------------------------------*/ 505 Color& SwViewOption::GetSmarttagColor() 506 { 507 return aSmarttagColor; 508 } 509 /*-- 06.12.2002 10:50:11--------------------------------------------------- 510 511 -----------------------------------------------------------------------*/ 512 Color& SwViewOption::GetFontColor() 513 { 514 return aFontColor; 515 } 516 /*-- 24.04.2002 10:50:15--------------------------------------------------- 517 518 -----------------------------------------------------------------------*/ 519 Color& SwViewOption::GetFieldShadingsColor() 520 { 521 return aFieldShadingsColor; 522 } 523 /*-- 24.04.2002 10:50:15--------------------------------------------------- 524 525 -----------------------------------------------------------------------*/ 526 Color& SwViewOption::GetSectionBoundColor() 527 { 528 return aSectionBoundColor; 529 } 530 /* -----------------------------2002/07/31 14:00------------------------------ 531 532 ---------------------------------------------------------------------------*/ 533 Color& SwViewOption::GetPageBreakColor() 534 { 535 return aPageBreakColor; 536 } 537 538 /* -----------------------------23.04.2002 17:41------------------------------ 539 540 ---------------------------------------------------------------------------*/ 541 void SwViewOption::ApplyColorConfigValues(const svtools::ColorConfig& rConfig ) 542 { 543 aDocColor.SetColor(rConfig.GetColorValue(svtools::DOCCOLOR).nColor); 544 545 svtools::ColorConfigValue aValue = rConfig.GetColorValue(svtools::DOCBOUNDARIES); 546 aDocBoundColor.SetColor(aValue.nColor); 547 nAppearanceFlags = 0; 548 if(aValue.bIsVisible) 549 nAppearanceFlags |= VIEWOPT_DOC_BOUNDARIES; 550 551 aAppBackgroundColor.SetColor(rConfig.GetColorValue(svtools::APPBACKGROUND).nColor); 552 553 aValue = rConfig.GetColorValue(svtools::OBJECTBOUNDARIES); 554 aObjectBoundColor.SetColor(aValue.nColor); 555 if(aValue.bIsVisible) 556 nAppearanceFlags |= VIEWOPT_OBJECT_BOUNDARIES; 557 558 aValue = rConfig.GetColorValue(svtools::TABLEBOUNDARIES); 559 aTableBoundColor.SetColor(aValue.nColor); 560 if(aValue.bIsVisible) 561 nAppearanceFlags |= VIEWOPT_TABLE_BOUNDARIES; 562 563 aValue = rConfig.GetColorValue(svtools::WRITERIDXSHADINGS); 564 aIndexShadingsColor.SetColor(aValue.nColor); 565 if(aValue.bIsVisible) 566 nAppearanceFlags |= VIEWOPT_INDEX_SHADINGS; 567 568 aValue = rConfig.GetColorValue(svtools::LINKS); 569 aLinksColor.SetColor(aValue.nColor); 570 if(aValue.bIsVisible) 571 nAppearanceFlags |= VIEWOPT_LINKS; 572 573 aValue = rConfig.GetColorValue(svtools::LINKSVISITED); 574 aVisitedLinksColor.SetColor(aValue.nColor); 575 if(aValue.bIsVisible) 576 nAppearanceFlags |= VIEWOPT_VISITED_LINKS; 577 578 aDirectCursorColor.SetColor(rConfig.GetColorValue(svtools::WRITERDIRECTCURSOR).nColor); 579 580 aTextGridColor.SetColor(rConfig.GetColorValue(svtools::WRITERTEXTGRID).nColor); 581 582 aSpellColor.SetColor(rConfig.GetColorValue(svtools::SPELL).nColor); 583 584 aSmarttagColor.SetColor(rConfig.GetColorValue(svtools::SMARTTAGS).nColor); 585 586 aFontColor.SetColor(rConfig.GetColorValue(svtools::FONTCOLOR).nColor); 587 588 aValue = rConfig.GetColorValue(svtools::WRITERFIELDSHADINGS); 589 aFieldShadingsColor.SetColor(aValue.nColor); 590 if(aValue.bIsVisible) 591 nAppearanceFlags |= VIEWOPT_FIELD_SHADINGS; 592 593 aValue = rConfig.GetColorValue(svtools::WRITERSECTIONBOUNDARIES); 594 aSectionBoundColor.SetColor(aValue.nColor); 595 if(aValue.bIsVisible) 596 nAppearanceFlags |= VIEWOPT_SECTION_BOUNDARIES; 597 598 aValue = rConfig.GetColorValue(svtools::WRITERPAGEBREAKS); 599 aPageBreakColor.SetColor(aValue.nColor); 600 601 aScriptIndicatorColor.SetColor(rConfig.GetColorValue(svtools::WRITERSCRIPTINDICATOR).nColor); 602 } 603 /* -----------------------------23.04.2002 17:48------------------------------ 604 605 ---------------------------------------------------------------------------*/ 606 void SwViewOption::SetAppearanceFlag(sal_Int32 nFlag, sal_Bool bSet, sal_Bool bSaveInConfig ) 607 { 608 if(bSet) 609 nAppearanceFlags |= nFlag; 610 else 611 nAppearanceFlags &= ~nFlag; 612 if(bSaveInConfig) 613 { 614 //create an editable svtools::ColorConfig and store the change 615 svtools::EditableColorConfig aEditableConfig; 616 struct FlagToConfig_Impl 617 { 618 sal_Int32 nFlag; 619 svtools::ColorConfigEntry eEntry; 620 }; 621 static const FlagToConfig_Impl aFlags[] = 622 { 623 { VIEWOPT_DOC_BOUNDARIES , svtools::DOCBOUNDARIES }, 624 { VIEWOPT_OBJECT_BOUNDARIES , svtools::OBJECTBOUNDARIES }, 625 { VIEWOPT_TABLE_BOUNDARIES , svtools::TABLEBOUNDARIES }, 626 { VIEWOPT_INDEX_SHADINGS , svtools::WRITERIDXSHADINGS }, 627 { VIEWOPT_LINKS , svtools::LINKS }, 628 { VIEWOPT_VISITED_LINKS , svtools::LINKSVISITED }, 629 { VIEWOPT_FIELD_SHADINGS , svtools::WRITERFIELDSHADINGS }, 630 { VIEWOPT_SECTION_BOUNDARIES , svtools::WRITERSECTIONBOUNDARIES }, 631 { 0 , svtools::ColorConfigEntryCount } 632 }; 633 sal_uInt16 nPos = 0; 634 while(aFlags[nPos].nFlag) 635 { 636 if(0 != (nFlag&aFlags[nPos].nFlag)) 637 { 638 svtools::ColorConfigValue aValue = aEditableConfig.GetColorValue(aFlags[nPos].eEntry); 639 aValue.bIsVisible = bSet; 640 aEditableConfig.SetColorValue(aFlags[nPos].eEntry, aValue); 641 } 642 nPos++; 643 } 644 } 645 } 646 /* -----------------------------24.04.2002 10:42------------------------------ 647 648 ---------------------------------------------------------------------------*/ 649 sal_Bool SwViewOption::IsAppearanceFlag(sal_Int32 nFlag) 650 { 651 return 0 != (nAppearanceFlags & nFlag); 652 } 653 654