LCOV - code coverage report
Current view: top level - sfx2/source/sidebar - Theme.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 340 474 71.7 %
Date: 2015-06-13 12:38:46 Functions: 27 35 77.1 %
Legend: Lines: hit not hit

          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             : #include <sfx2/sidebar/Theme.hxx>
      20             : #include "Paint.hxx"
      21             : #include "SidebarResource.hxx"
      22             : #include <sfx2/sidebar/Tools.hxx>
      23             : #include <sfx2/app.hxx>
      24             : 
      25             : #include <tools/svborder.hxx>
      26             : #include <tools/rc.hxx>
      27             : #include <vcl/svapp.hxx>
      28             : #include <vcl/settings.hxx>
      29             : 
      30             : using namespace css;
      31             : using namespace css::uno;
      32             : 
      33             : namespace sfx2 { namespace sidebar {
      34             : 
      35      326713 : Theme& Theme::GetCurrentTheme()
      36             : {
      37      326713 :     return SfxGetpApp()->GetSidebarTheme();
      38             : }
      39             : 
      40          97 : Theme::Theme()
      41             :     : ThemeInterfaceBase(m_aMutex),
      42             :       maImages(),
      43             :       maColors(),
      44             :       maPaints(),
      45             :       maIntegers(),
      46             :       maBooleans(),
      47          97 :       mbIsHighContrastMode(Application::GetSettings().GetStyleSettings().GetHighContrastMode()),
      48             :       mbIsHighContrastModeSetManually(false),
      49             :       maPropertyNameToIdMap(),
      50             :       maPropertyIdToNameMap(),
      51             :       maRawValues(),
      52             :       maChangeListeners(),
      53         194 :       maVetoableListeners()
      54             : 
      55             : {
      56          97 :     SetupPropertyMaps();
      57          97 : }
      58             : 
      59          90 : Theme::~Theme()
      60             : {
      61          90 : }
      62             : 
      63       28032 : Image Theme::GetImage (const ThemeItem eItem)
      64             : {
      65       28032 :     const PropertyType eType (GetPropertyType(eItem));
      66             :     OSL_ASSERT(eType==PT_Image);
      67       28032 :     const sal_Int32 nIndex (GetIndex(eItem, eType));
      68       28032 :     const Theme& rTheme (GetCurrentTheme());
      69       28032 :     return rTheme.maImages[nIndex];
      70             : }
      71             : 
      72        7322 : Color Theme::GetColor (const ThemeItem eItem)
      73             : {
      74        7322 :     const PropertyType eType (GetPropertyType(eItem));
      75             :     OSL_ASSERT(eType==PT_Color || eType==PT_Paint);
      76        7322 :     const sal_Int32 nIndex (GetIndex(eItem, eType));
      77        7322 :     const Theme& rTheme (GetCurrentTheme());
      78        7322 :     if (eType == PT_Color)
      79        7312 :         return rTheme.maColors[nIndex];
      80          10 :     else if (eType == PT_Paint)
      81          10 :         return rTheme.maPaints[nIndex].GetColor();
      82             :     else
      83           0 :         return COL_WHITE;
      84             : }
      85             : 
      86       33851 : const Paint& Theme::GetPaint (const ThemeItem eItem)
      87             : {
      88       33851 :     const PropertyType eType (GetPropertyType(eItem));
      89             :     OSL_ASSERT(eType==PT_Paint);
      90       33851 :     const sal_Int32 nIndex (GetIndex(eItem, eType));
      91       33851 :     const Theme& rTheme (GetCurrentTheme());
      92       33851 :     return rTheme.maPaints[nIndex];
      93             : }
      94             : 
      95        7413 : const Wallpaper Theme::GetWallpaper (const ThemeItem eItem)
      96             : {
      97        7413 :     return GetPaint(eItem).GetWallpaper();
      98             : }
      99             : 
     100      238832 : sal_Int32 Theme::GetInteger (const ThemeItem eItem)
     101             : {
     102      238832 :     const PropertyType eType (GetPropertyType(eItem));
     103             :     OSL_ASSERT(eType==PT_Integer);
     104      238832 :     const sal_Int32 nIndex (GetIndex(eItem, eType));
     105      238832 :     const Theme& rTheme (GetCurrentTheme());
     106      238832 :     return rTheme.maIntegers[nIndex];
     107             : }
     108             : 
     109         251 : bool Theme::GetBoolean (const ThemeItem eItem)
     110             : {
     111         251 :     const PropertyType eType (GetPropertyType(eItem));
     112             :     OSL_ASSERT(eType==PT_Boolean);
     113         251 :     const sal_Int32 nIndex (GetIndex(eItem, eType));
     114         251 :     const Theme& rTheme (GetCurrentTheme());
     115         251 :     return rTheme.maBooleans[nIndex];
     116             : }
     117             : 
     118        6788 : bool Theme::IsHighContrastMode()
     119             : {
     120        6788 :     const Theme& rTheme (GetCurrentTheme());
     121        6788 :     return rTheme.mbIsHighContrastMode;
     122             : }
     123             : 
     124         100 : void Theme::HandleDataChange()
     125             : {
     126         100 :     Theme& rTheme (GetCurrentTheme());
     127             : 
     128         100 :     if ( ! rTheme.mbIsHighContrastModeSetManually)
     129             :     {
     130             :         // Do not modify mbIsHighContrastMode when it was manually set.
     131         100 :         GetCurrentTheme().mbIsHighContrastMode = Application::GetSettings().GetStyleSettings().GetHighContrastMode();
     132         100 :         rTheme.maRawValues[Bool_IsHighContrastModeActive] = Any(GetCurrentTheme().mbIsHighContrastMode);
     133             :     }
     134             : 
     135         100 :     GetCurrentTheme().UpdateTheme();
     136         100 : }
     137             : 
     138          97 : void Theme::InitializeTheme()
     139             : {
     140             :     setPropertyValue(
     141          97 :         maPropertyIdToNameMap[Bool_UseSymphonyIcons],
     142         194 :         Any(false));
     143             :     setPropertyValue(
     144          97 :         maPropertyIdToNameMap[Bool_UseSystemColors],
     145         194 :         Any(false));
     146          97 : }
     147             : 
     148         100 : void Theme::UpdateTheme()
     149             : {
     150         100 :     SidebarResource aLocalResource;
     151             : 
     152             :     try
     153             :     {
     154         100 :         const StyleSettings& rStyle (Application::GetSettings().GetStyleSettings());
     155         100 :         const bool bUseSystemColors (GetBoolean(Bool_UseSystemColors));
     156             : 
     157             : #define Alternatives(n,hc,sys) (mbIsHighContrastMode ? hc : (bUseSystemColors ? sys : n))
     158             : 
     159         100 :         Color aBaseBackgroundColor (rStyle.GetDialogColor());
     160             :         // UX says this should be a little brighter, but that looks off when compared to the other windows.
     161             :         //aBaseBackgroundColor.IncreaseLuminance(7);
     162         100 :         Color aBorderColor (aBaseBackgroundColor);
     163         100 :         aBorderColor.DecreaseLuminance(15);
     164         100 :         Color aSecondColor (aBaseBackgroundColor);
     165         100 :         aSecondColor.DecreaseLuminance(15);
     166             : 
     167             :         setPropertyValue(
     168         100 :             maPropertyIdToNameMap[Paint_DeckBackground],
     169         200 :             Any(sal_Int32(aBaseBackgroundColor.GetRGBColor())));
     170             : 
     171             :         setPropertyValue(
     172         100 :             maPropertyIdToNameMap[Paint_DeckTitleBarBackground],
     173         200 :             Any(sal_Int32(aBaseBackgroundColor.GetRGBColor())));
     174             :         setPropertyValue(
     175         100 :             maPropertyIdToNameMap[Int_DeckLeftPadding],
     176         200 :             Any(sal_Int32(2)));
     177             :         setPropertyValue(
     178         100 :             maPropertyIdToNameMap[Int_DeckTopPadding],
     179         200 :             Any(sal_Int32(2)));
     180             :         setPropertyValue(
     181         100 :             maPropertyIdToNameMap[Int_DeckRightPadding],
     182         200 :             Any(sal_Int32(2)));
     183             :         setPropertyValue(
     184         100 :             maPropertyIdToNameMap[Int_DeckBottomPadding],
     185         200 :             Any(sal_Int32(2)));
     186             :         setPropertyValue(
     187         100 :             maPropertyIdToNameMap[Int_DeckBorderSize],
     188         200 :             Any(sal_Int32(1)));
     189             :         setPropertyValue(
     190         100 :             maPropertyIdToNameMap[Int_DeckSeparatorHeight],
     191         200 :             Any(sal_Int32(1)));
     192             :         setPropertyValue(
     193         100 :             maPropertyIdToNameMap[Int_ButtonCornerRadius],
     194         200 :             Any(sal_Int32(3)));
     195             :         setPropertyValue(
     196         100 :             maPropertyIdToNameMap[Color_DeckTitleFont],
     197         200 :             Any(sal_Int32(rStyle.GetFontColor().GetRGBColor())));
     198             :         setPropertyValue(
     199         100 :             maPropertyIdToNameMap[Int_DeckTitleBarHeight],
     200           0 :             Any(sal_Int32(Alternatives(
     201             :                         26,
     202             :                         26,
     203         200 :                         rStyle.GetFloatTitleHeight()))));
     204             :         setPropertyValue(
     205         100 :             maPropertyIdToNameMap[Paint_PanelBackground],
     206         200 :             Any(sal_Int32(aBaseBackgroundColor.GetRGBColor())));
     207             : 
     208             :         setPropertyValue(
     209         100 :             maPropertyIdToNameMap[Paint_PanelTitleBarBackground],
     210             :             Any(Tools::VclToAwtGradient(Gradient(
     211             :                         GradientStyle_LINEAR,
     212             :                         aSecondColor.GetRGBColor(),
     213             :                         aBaseBackgroundColor.GetRGBColor()
     214         200 :                         ))));
     215             :         setPropertyValue(
     216         100 :             maPropertyIdToNameMap[Color_PanelTitleFont],
     217         200 :             Any(sal_Int32(mbIsHighContrastMode ? 0x00ff00 : 0x262626)));
     218             :         setPropertyValue(
     219         100 :             maPropertyIdToNameMap[Int_PanelTitleBarHeight],
     220           0 :             Any(sal_Int32(Alternatives(
     221             :                         26,
     222             :                         26,
     223         200 :                         rStyle.GetTitleHeight()))));
     224             :         setPropertyValue(
     225         100 :             maPropertyIdToNameMap[Paint_TabBarBackground],
     226         200 :             Any(sal_Int32(aBaseBackgroundColor.GetRGBColor())));
     227             :         setPropertyValue(
     228         100 :             maPropertyIdToNameMap[Int_TabBarLeftPadding],
     229         200 :             Any(sal_Int32(2)));
     230             :         setPropertyValue(
     231         100 :             maPropertyIdToNameMap[Int_TabBarTopPadding],
     232         200 :             Any(sal_Int32(2)));
     233             :         setPropertyValue(
     234         100 :             maPropertyIdToNameMap[Int_TabBarRightPadding],
     235         200 :             Any(sal_Int32(2)));
     236             :         setPropertyValue(
     237         100 :             maPropertyIdToNameMap[Int_TabBarBottomPadding],
     238         200 :             Any(sal_Int32(2)));
     239             : 
     240             :         setPropertyValue(
     241         100 :             maPropertyIdToNameMap[Int_TabMenuPadding],
     242         200 :             Any(sal_Int32(6)));
     243             :         setPropertyValue(
     244         100 :             maPropertyIdToNameMap[Color_TabMenuSeparator],
     245         200 :             Any(sal_Int32(aBorderColor.GetRGBColor())));
     246             :         setPropertyValue(
     247         100 :             maPropertyIdToNameMap[Int_TabMenuSeparatorPadding],
     248         200 :             Any(sal_Int32(7)));
     249             : 
     250             :         setPropertyValue(
     251         100 :             maPropertyIdToNameMap[Int_TabItemWidth],
     252         200 :             Any(sal_Int32(32)));
     253             :         setPropertyValue(
     254         100 :             maPropertyIdToNameMap[Int_TabItemHeight],
     255         200 :             Any(sal_Int32(32)));
     256             :         setPropertyValue(
     257         100 :             maPropertyIdToNameMap[Color_TabItemBorder],
     258         200 :             Any(sal_Int32(rStyle.GetActiveBorderColor().GetRGBColor())));
     259             :         //                    mbIsHighContrastMode ? 0x00ff00 : 0xbfbfbf)));
     260             : 
     261             :         setPropertyValue(
     262         100 :             maPropertyIdToNameMap[Paint_DropDownBackground],
     263         200 :             Any(sal_Int32(aBaseBackgroundColor.GetRGBColor())));
     264             :         setPropertyValue(
     265         100 :             maPropertyIdToNameMap[Color_DropDownBorder],
     266         200 :             Any(sal_Int32(rStyle.GetActiveBorderColor().GetRGBColor())));
     267             : 
     268             :         setPropertyValue(
     269         100 :             maPropertyIdToNameMap[Color_Highlight],
     270         200 :             Any(sal_Int32(rStyle.GetHighlightColor().GetRGBColor())));
     271             :         setPropertyValue(
     272         100 :             maPropertyIdToNameMap[Color_HighlightText],
     273         200 :             Any(sal_Int32(rStyle.GetHighlightTextColor().GetRGBColor())));
     274             : 
     275             :         setPropertyValue(
     276         100 :             maPropertyIdToNameMap[Paint_TabItemBackgroundNormal],
     277         200 :             Any());
     278             :         setPropertyValue(
     279         100 :             maPropertyIdToNameMap[Paint_TabItemBackgroundHighlight],
     280         200 :             Any(sal_Int32(rStyle.GetActiveTabColor().GetRGBColor())));
     281             :         //                    mbIsHighContrastMode ? 0x000000 : 0x00ffffff)));
     282             : 
     283             :         setPropertyValue(
     284         100 :             maPropertyIdToNameMap[Paint_HorizontalBorder],
     285         200 :             Any(sal_Int32(aBorderColor.GetRGBColor())));
     286             :         //                    mbIsHighContrastMode ? 0x00ff00 :  0xe4e4e4)));
     287             :         setPropertyValue(
     288         100 :             maPropertyIdToNameMap[Paint_VerticalBorder],
     289         200 :             Any(sal_Int32(aBorderColor.GetRGBColor())));
     290             :         setPropertyValue(
     291         100 :             maPropertyIdToNameMap[Image_Grip],
     292         200 :             Any(OUString("private:graphicrepository/sfx2/res/grip.png")));
     293             :         setPropertyValue(
     294         100 :             maPropertyIdToNameMap[Image_Expand],
     295         200 :             Any(OUString("private:graphicrepository/res/plus.png")));
     296             :         setPropertyValue(
     297         100 :             maPropertyIdToNameMap[Image_Collapse],
     298         200 :             Any(OUString("private:graphicrepository/res/minus.png")));
     299             :         setPropertyValue(
     300         100 :             maPropertyIdToNameMap[Image_TabBarMenu],
     301         200 :             Any(OUString("private:graphicrepository/sfx2/res/symphony/open_more.png")));
     302             :         setPropertyValue(
     303         100 :             maPropertyIdToNameMap[Image_PanelMenu],
     304         200 :             Any(OUString("private:graphicrepository/sfx2/res/symphony/morebutton.png")));
     305             :         setPropertyValue(
     306         100 :             maPropertyIdToNameMap[Image_Closer],
     307         200 :             Any(OUString("private:graphicrepository/sfx2/res/closedoc.png")));
     308             :         setPropertyValue(
     309         100 :             maPropertyIdToNameMap[Image_CloseIndicator],
     310         200 :             Any(OUString("private:graphicrepository/cmd/lc_decrementlevel.png")));
     311             :         setPropertyValue(
     312         100 :             maPropertyIdToNameMap[Image_ToolBoxItemSeparator],
     313             :             Any(
     314         200 :                 OUString("private:graphicrepository/sfx2/res/separator.png")));
     315             : 
     316             :         // ToolBox
     317             : 
     318             :         /*
     319             :         // Separator style
     320             :         setPropertyValue(
     321             :             maPropertyIdToNameMap[Paint_ToolBoxBackground],
     322             :             Any(sal_Int32(rStyle.GetMenuColor().GetRGBColor())));
     323             :         setPropertyValue(
     324             :             maPropertyIdToNameMap[Paint_ToolBoxBorderTopLeft],
     325             :             Any());
     326             :         setPropertyValue(
     327             :             maPropertyIdToNameMap[Paint_ToolBoxBorderCenterCorners],
     328             :             Any());
     329             :         setPropertyValue(
     330             :             maPropertyIdToNameMap[Paint_ToolBoxBorderBottomRight],
     331             :             Any());
     332             :         setPropertyValue(
     333             :             maPropertyIdToNameMap[Rect_ToolBoxPadding],
     334             :             Any(awt::Rectangle(2,2,2,2)));
     335             :         setPropertyValue(
     336             :             maPropertyIdToNameMap[Rect_ToolBoxBorder],
     337             :             Any(awt::Rectangle(0,0,0,0)));
     338             :         setPropertyValue(
     339             :             maPropertyIdToNameMap[Bool_UseToolBoxItemSeparator],
     340             :             Any(true));
     341             : 
     342             :         */
     343             :         // Gradient style
     344         100 :         Color aGradientStop2 (aBaseBackgroundColor);
     345         100 :         aGradientStop2.IncreaseLuminance(17);
     346         100 :         Color aToolBoxBorderColor (aBaseBackgroundColor);
     347         100 :         aToolBoxBorderColor.DecreaseLuminance(12);
     348             :         setPropertyValue(
     349         100 :             maPropertyIdToNameMap[Paint_ToolBoxBackground],
     350             :             Any(Tools::VclToAwtGradient(Gradient(
     351             :                         GradientStyle_LINEAR,
     352             :                         aBaseBackgroundColor.GetRGBColor(),
     353             :                         aGradientStop2.GetRGBColor()
     354         200 :                         ))));
     355             :         setPropertyValue(
     356         100 :             maPropertyIdToNameMap[Paint_ToolBoxBorderTopLeft],
     357             :             mbIsHighContrastMode
     358             :                 ? Any(util::Color(sal_uInt32(0x00ff00)))
     359         200 :                 : Any(util::Color(aToolBoxBorderColor.GetRGBColor())));
     360             :         setPropertyValue(
     361         100 :             maPropertyIdToNameMap[Paint_ToolBoxBorderCenterCorners],
     362             :             mbIsHighContrastMode
     363             :                 ? Any(util::Color(sal_uInt32(0x00ff00)))
     364         200 :                 : Any(util::Color(aToolBoxBorderColor.GetRGBColor())));
     365             :         setPropertyValue(
     366         100 :             maPropertyIdToNameMap[Paint_ToolBoxBorderBottomRight],
     367             :             mbIsHighContrastMode
     368             :                 ? Any(util::Color(sal_uInt32(0x00ff00)))
     369         200 :                 : Any(util::Color(aToolBoxBorderColor.GetRGBColor())));
     370             :         setPropertyValue(
     371         100 :             maPropertyIdToNameMap[Rect_ToolBoxPadding],
     372         200 :             Any(awt::Rectangle(2,2,2,2)));
     373             :         setPropertyValue(
     374         100 :             maPropertyIdToNameMap[Rect_ToolBoxBorder],
     375         200 :             Any(awt::Rectangle(1,1,1,1)));
     376             :         setPropertyValue(
     377         100 :             maPropertyIdToNameMap[Bool_UseToolBoxItemSeparator],
     378         200 :             Any(false));
     379             :     }
     380           0 :     catch(beans::UnknownPropertyException& rException)
     381             :     {
     382             :         OSL_TRACE("unknown property: %s",
     383             :             OUStringToOString(
     384             :                 rException.Message,
     385             :                 RTL_TEXTENCODING_ASCII_US).getStr());
     386             :         OSL_ASSERT(false);
     387         100 :     }
     388         100 : }
     389             : 
     390          45 : void SAL_CALL Theme::disposing()
     391             : {
     392          45 :     ChangeListeners aListeners;
     393          45 :     aListeners.swap(maChangeListeners);
     394             : 
     395          90 :     const lang::EventObject aEvent (static_cast<XWeak*>(this));
     396             : 
     397          45 :     for (ChangeListeners::const_iterator
     398          45 :              iContainer(aListeners.begin()),
     399          45 :              iContainerEnd(aListeners.end());
     400             :          iContainer != iContainerEnd;
     401             :          ++iContainer)
     402             :     {
     403           0 :         for (ChangeListenerContainer::const_iterator
     404           0 :                  iListener(iContainer->second.begin()),
     405           0 :                  iEnd(iContainer->second.end());
     406             :              iListener!=iEnd;
     407             :              ++iListener)
     408             :         {
     409             :             try
     410             :             {
     411           0 :                 (*iListener)->disposing(aEvent);
     412             :             }
     413           0 :             catch(const Exception&)
     414             :             {
     415             :             }
     416             :         }
     417          45 :     }
     418          45 : }
     419             : 
     420       11237 : Reference<beans::XPropertySet> Theme::GetPropertySet()
     421             : {
     422       11237 :     return Reference<beans::XPropertySet>(static_cast<XWeak*>(&GetCurrentTheme()), UNO_QUERY);
     423             : }
     424             : 
     425           0 : Reference<beans::XPropertySetInfo> SAL_CALL Theme::getPropertySetInfo()
     426             :     throw(css::uno::RuntimeException, std::exception)
     427             : {
     428           0 :     return Reference<beans::XPropertySetInfo>(this);
     429             : }
     430             : 
     431        5094 : void SAL_CALL Theme::setPropertyValue (
     432             :     const ::rtl::OUString& rsPropertyName,
     433             :     const css::uno::Any& rValue)
     434             :     throw (css::beans::UnknownPropertyException,
     435             :            css::uno::RuntimeException,
     436             :            std::exception)
     437             : {
     438        5094 :     PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     439        5094 :     if (iId == maPropertyNameToIdMap.end())
     440           0 :         throw beans::UnknownPropertyException(rsPropertyName);
     441             : 
     442        5094 :     const PropertyType eType (GetPropertyType(iId->second));
     443        5094 :     if (eType == PT_Invalid)
     444           0 :         throw beans::UnknownPropertyException(rsPropertyName);
     445             : 
     446        5094 :     const ThemeItem eItem (iId->second);
     447             : 
     448        5094 :     if (rValue == maRawValues[eItem])
     449             :     {
     450             :         // Value is not different from the one in the property
     451             :         // set => nothing to do.
     452         488 :         return;
     453             :     }
     454             : 
     455        4850 :     const Any aOldValue (maRawValues[eItem]);
     456             : 
     457             :     const beans::PropertyChangeEvent aEvent(
     458             :         static_cast<XWeak*>(this),
     459             :         rsPropertyName,
     460             :         sal_False,
     461             :         eItem,
     462             :         aOldValue,
     463        9700 :         rValue);
     464             : 
     465        4850 :     if (DoVetoableListenersVeto(GetVetoableListeners(__AnyItem, false), aEvent))
     466           0 :         return;
     467        4850 :     if (DoVetoableListenersVeto(GetVetoableListeners(eItem, false), aEvent))
     468           0 :         return;
     469             : 
     470        4850 :     maRawValues[eItem] = rValue;
     471        4850 :     ProcessNewValue(rValue, eItem, eType);
     472             : 
     473        4850 :     BroadcastPropertyChange(GetChangeListeners(__AnyItem, false), aEvent);
     474        9700 :     BroadcastPropertyChange(GetChangeListeners(eItem, false), aEvent);
     475             : }
     476             : 
     477           0 : Any SAL_CALL Theme::getPropertyValue (
     478             :     const ::rtl::OUString& rsPropertyName)
     479             :     throw(css::beans::UnknownPropertyException,
     480             :         css::lang::WrappedTargetException,
     481             :         css::uno::RuntimeException, std::exception)
     482             : {
     483           0 :     PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     484           0 :     if (iId == maPropertyNameToIdMap.end())
     485           0 :         throw beans::UnknownPropertyException();
     486             : 
     487           0 :     const PropertyType eType (GetPropertyType(iId->second));
     488           0 :     if (eType == PT_Invalid)
     489           0 :         throw beans::UnknownPropertyException();
     490             : 
     491           0 :     const ThemeItem eItem (iId->second);
     492             : 
     493           0 :     return maRawValues[eItem];
     494             : }
     495             : 
     496        3155 : void SAL_CALL Theme::addPropertyChangeListener(
     497             :     const ::rtl::OUString& rsPropertyName,
     498             :     const css::uno::Reference<css::beans::XPropertyChangeListener>& rxListener)
     499             :     throw(css::beans::UnknownPropertyException,
     500             :         css::lang::WrappedTargetException,
     501             :         css::uno::RuntimeException, std::exception)
     502             : {
     503        3155 :     ThemeItem eItem (__AnyItem);
     504        3155 :     if (rsPropertyName.getLength() > 0)
     505             :     {
     506           0 :         PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     507           0 :         if (iId == maPropertyNameToIdMap.end())
     508           0 :             throw beans::UnknownPropertyException();
     509             : 
     510           0 :         const PropertyType eType (GetPropertyType(iId->second));
     511           0 :         if (eType == PT_Invalid)
     512           0 :             throw beans::UnknownPropertyException();
     513             : 
     514           0 :         eItem = iId->second;
     515             :     }
     516        3155 :     ChangeListenerContainer* pListeners = GetChangeListeners(eItem, true);
     517        3155 :     if (pListeners != NULL)
     518        3155 :         pListeners->push_back(rxListener);
     519        3155 : }
     520             : 
     521        3155 : void SAL_CALL Theme::removePropertyChangeListener(
     522             :     const ::rtl::OUString& rsPropertyName,
     523             :     const css::uno::Reference<css::beans::XPropertyChangeListener>& rxListener)
     524             :     throw(css::beans::UnknownPropertyException,
     525             :         css::lang::WrappedTargetException,
     526             :         css::uno::RuntimeException, std::exception)
     527             : {
     528        3155 :     ThemeItem eItem (__AnyItem);
     529        3155 :     if (rsPropertyName.getLength() > 0)
     530             :     {
     531           0 :         PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     532           0 :         if (iId == maPropertyNameToIdMap.end())
     533           0 :             throw beans::UnknownPropertyException();
     534             : 
     535           0 :         const PropertyType eType (GetPropertyType(iId->second));
     536           0 :         if (eType == PT_Invalid)
     537           0 :             throw beans::UnknownPropertyException();
     538             : 
     539           0 :         eItem = iId->second;
     540             :     }
     541        3155 :     ChangeListenerContainer* pContainer = GetChangeListeners(eItem, false);
     542        3155 :     if (pContainer != NULL)
     543             :     {
     544        3155 :         ChangeListenerContainer::iterator iListener (::std::find(pContainer->begin(), pContainer->end(), rxListener));
     545        3155 :         if (iListener != pContainer->end())
     546             :         {
     547        3155 :             pContainer->erase(iListener);
     548             : 
     549             :             // Remove the listener container when empty.
     550        3155 :             if (pContainer->empty())
     551        3044 :                 maChangeListeners.erase(eItem);
     552             :         }
     553             :     }
     554        3155 : }
     555             : 
     556           0 : void SAL_CALL Theme::addVetoableChangeListener(
     557             :     const ::rtl::OUString& rsPropertyName,
     558             :     const css::uno::Reference<css::beans::XVetoableChangeListener>& rxListener)
     559             :     throw(css::beans::UnknownPropertyException,
     560             :         css::lang::WrappedTargetException,
     561             :         css::uno::RuntimeException, std::exception)
     562             : {
     563           0 :     ThemeItem eItem (__AnyItem);
     564           0 :     if (rsPropertyName.getLength() > 0)
     565             :     {
     566           0 :         PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     567           0 :         if (iId == maPropertyNameToIdMap.end())
     568           0 :             throw beans::UnknownPropertyException();
     569             : 
     570           0 :         const PropertyType eType (GetPropertyType(iId->second));
     571           0 :         if (eType == PT_Invalid)
     572           0 :             throw beans::UnknownPropertyException();
     573             : 
     574           0 :         eItem = iId->second;
     575             :     }
     576           0 :     VetoableListenerContainer* pListeners = GetVetoableListeners(eItem, true);
     577           0 :     if (pListeners != NULL)
     578           0 :         pListeners->push_back(rxListener);
     579           0 : }
     580             : 
     581           0 : void SAL_CALL Theme::removeVetoableChangeListener(
     582             :     const ::rtl::OUString& rsPropertyName,
     583             :     const css::uno::Reference<css::beans::XVetoableChangeListener>& rxListener)
     584             :     throw(css::beans::UnknownPropertyException,
     585             :         css::lang::WrappedTargetException,
     586             :         css::uno::RuntimeException, std::exception)
     587             : {
     588           0 :     ThemeItem eItem (__AnyItem);
     589           0 :     if (rsPropertyName.getLength() > 0)
     590             :     {
     591           0 :         PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     592           0 :         if (iId == maPropertyNameToIdMap.end())
     593           0 :             throw beans::UnknownPropertyException();
     594             : 
     595           0 :         const PropertyType eType (GetPropertyType(iId->second));
     596           0 :         if (eType == PT_Invalid)
     597           0 :             throw beans::UnknownPropertyException();
     598             : 
     599           0 :         eItem = iId->second;
     600             :     }
     601           0 :     VetoableListenerContainer* pContainer = GetVetoableListeners(eItem, false);
     602           0 :     if (pContainer != NULL)
     603             :     {
     604           0 :         VetoableListenerContainer::iterator iListener (::std::find(pContainer->begin(), pContainer->end(), rxListener));
     605           0 :         if (iListener != pContainer->end())
     606             :         {
     607           0 :             pContainer->erase(iListener);
     608             :             // Remove container when empty.
     609           0 :             if (pContainer->empty())
     610           0 :                 maVetoableListeners.erase(eItem);
     611             :         }
     612             :     }
     613           0 : }
     614             : 
     615           0 : css::uno::Sequence<css::beans::Property> SAL_CALL Theme::getProperties()
     616             :     throw(css::uno::RuntimeException, std::exception)
     617             : {
     618           0 :     ::std::vector<beans::Property> aProperties;
     619             : 
     620           0 :     for (sal_Int32 nItem(__Begin),nEnd(__End); nItem!=nEnd; ++nItem)
     621             :     {
     622           0 :         const ThemeItem eItem (static_cast<ThemeItem>(nItem));
     623           0 :         const PropertyType eType (GetPropertyType(eItem));
     624           0 :         if (eType == PT_Invalid)
     625           0 :             continue;
     626             : 
     627             :         const beans::Property aProperty(
     628           0 :             maPropertyIdToNameMap[eItem],
     629             :             eItem,
     630             :             GetCppuType(eType),
     631           0 :             0);
     632           0 :         aProperties.push_back(aProperty);
     633           0 :     }
     634             : 
     635             :     return css::uno::Sequence<css::beans::Property>(
     636           0 :         &aProperties.front(),
     637           0 :         aProperties.size());
     638             : }
     639             : 
     640           0 : beans::Property SAL_CALL Theme::getPropertyByName (const ::rtl::OUString& rsPropertyName)
     641             :     throw(css::beans::UnknownPropertyException,
     642             :         css::uno::RuntimeException, std::exception)
     643             : {
     644           0 :     PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     645           0 :     if (iId == maPropertyNameToIdMap.end())
     646           0 :         throw beans::UnknownPropertyException();
     647             : 
     648           0 :     const PropertyType eType (GetPropertyType(iId->second));
     649           0 :     if (eType == PT_Invalid)
     650           0 :         throw beans::UnknownPropertyException();
     651             : 
     652           0 :     const ThemeItem eItem (iId->second);
     653             : 
     654             :     return beans::Property(
     655             :         rsPropertyName,
     656             :         eItem,
     657             :         GetCppuType(eType),
     658           0 :         0);
     659             : }
     660             : 
     661           0 : sal_Bool SAL_CALL Theme::hasPropertyByName (const ::rtl::OUString& rsPropertyName)
     662             :     throw(css::uno::RuntimeException, std::exception)
     663             : {
     664           0 :     PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     665           0 :     if (iId == maPropertyNameToIdMap.end())
     666           0 :         return sal_False;
     667             : 
     668           0 :     const PropertyType eType (GetPropertyType(iId->second));
     669           0 :     if (eType == PT_Invalid)
     670           0 :         return sal_False;
     671             : 
     672           0 :     return sal_True;
     673             : }
     674             : 
     675          97 : void Theme::SetupPropertyMaps()
     676             : {
     677          97 :     maPropertyIdToNameMap.resize(__Post_Rect);
     678          97 :     maImages.resize(__Image_Color - __Pre_Image - 1);
     679          97 :     maColors.resize(__Color_Paint - __Image_Color - 1);
     680          97 :     maPaints.resize(__Paint_Int - __Color_Paint - 1);
     681          97 :     maIntegers.resize(__Int_Bool - __Paint_Int - 1);
     682          97 :     maBooleans.resize(__Bool_Rect - __Int_Bool - 1);
     683          97 :     maRectangles.resize(__Post_Rect - __Bool_Rect - 1);
     684             : 
     685             :     #define AddEntry(e) maPropertyNameToIdMap[OUString(#e)]=e; maPropertyIdToNameMap[e]=#e
     686             : 
     687          97 :     AddEntry(Image_Grip);
     688          97 :     AddEntry(Image_Expand);
     689          97 :     AddEntry(Image_Collapse);
     690          97 :     AddEntry(Image_TabBarMenu);
     691          97 :     AddEntry(Image_PanelMenu);
     692          97 :     AddEntry(Image_ToolBoxItemSeparator);
     693          97 :     AddEntry(Image_Closer);
     694          97 :     AddEntry(Image_CloseIndicator);
     695             : 
     696          97 :     AddEntry(Color_DeckTitleFont);
     697          97 :     AddEntry(Color_PanelTitleFont);
     698          97 :     AddEntry(Color_TabMenuSeparator);
     699          97 :     AddEntry(Color_TabItemBorder);
     700          97 :     AddEntry(Color_DropDownBorder);
     701          97 :     AddEntry(Color_Highlight);
     702          97 :     AddEntry(Color_HighlightText);
     703             : 
     704          97 :     AddEntry(Paint_DeckBackground);
     705          97 :     AddEntry(Paint_DeckTitleBarBackground);
     706          97 :     AddEntry(Paint_PanelBackground);
     707          97 :     AddEntry(Paint_PanelTitleBarBackground);
     708          97 :     AddEntry(Paint_TabBarBackground);
     709          97 :     AddEntry(Paint_TabItemBackgroundNormal);
     710          97 :     AddEntry(Paint_TabItemBackgroundHighlight);
     711          97 :     AddEntry(Paint_HorizontalBorder);
     712          97 :     AddEntry(Paint_VerticalBorder);
     713          97 :     AddEntry(Paint_ToolBoxBackground);
     714          97 :     AddEntry(Paint_ToolBoxBorderTopLeft);
     715          97 :     AddEntry(Paint_ToolBoxBorderCenterCorners);
     716          97 :     AddEntry(Paint_ToolBoxBorderBottomRight);
     717          97 :     AddEntry(Paint_DropDownBackground);
     718             : 
     719          97 :     AddEntry(Int_DeckTitleBarHeight);
     720          97 :     AddEntry(Int_DeckBorderSize);
     721          97 :     AddEntry(Int_DeckSeparatorHeight);
     722          97 :     AddEntry(Int_PanelTitleBarHeight);
     723          97 :     AddEntry(Int_TabMenuPadding);
     724          97 :     AddEntry(Int_TabMenuSeparatorPadding);
     725          97 :     AddEntry(Int_TabItemWidth);
     726          97 :     AddEntry(Int_TabItemHeight);
     727          97 :     AddEntry(Int_DeckLeftPadding);
     728          97 :     AddEntry(Int_DeckTopPadding);
     729          97 :     AddEntry(Int_DeckRightPadding);
     730          97 :     AddEntry(Int_DeckBottomPadding);
     731          97 :     AddEntry(Int_TabBarLeftPadding);
     732          97 :     AddEntry(Int_TabBarTopPadding);
     733          97 :     AddEntry(Int_TabBarRightPadding);
     734          97 :     AddEntry(Int_TabBarBottomPadding);
     735          97 :     AddEntry(Int_ButtonCornerRadius);
     736             : 
     737          97 :     AddEntry(Bool_UseSymphonyIcons);
     738          97 :     AddEntry(Bool_UseSystemColors);
     739          97 :     AddEntry(Bool_UseToolBoxItemSeparator);
     740          97 :     AddEntry(Bool_IsHighContrastModeActive);
     741             : 
     742          97 :     AddEntry(Rect_ToolBoxPadding);
     743          97 :     AddEntry(Rect_ToolBoxBorder);
     744             : 
     745             :     #undef AddEntry
     746             : 
     747          97 :     maRawValues.resize(maPropertyIdToNameMap.size());
     748          97 : }
     749             : 
     750      313382 : Theme::PropertyType Theme::GetPropertyType (const ThemeItem eItem)
     751             : {
     752      313382 :     switch(eItem)
     753             :     {
     754             :         case Image_Grip:
     755             :         case Image_Expand:
     756             :         case Image_Collapse:
     757             :         case Image_TabBarMenu:
     758             :         case Image_PanelMenu:
     759             :         case Image_ToolBoxItemSeparator:
     760             :         case Image_Closer:
     761             :         case Image_CloseIndicator:
     762       28832 :             return PT_Image;
     763             : 
     764             :         case Color_DeckTitleFont:
     765             :         case Color_PanelTitleFont:
     766             :         case Color_TabMenuSeparator:
     767             :         case Color_TabItemBorder:
     768             :         case Color_DropDownBorder:
     769             :         case Color_Highlight:
     770             :         case Color_HighlightText:
     771        8012 :             return PT_Color;
     772             : 
     773             :         case Paint_DeckBackground:
     774             :         case Paint_DeckTitleBarBackground:
     775             :         case Paint_PanelBackground:
     776             :         case Paint_PanelTitleBarBackground:
     777             :         case Paint_TabBarBackground:
     778             :         case Paint_TabItemBackgroundNormal:
     779             :         case Paint_TabItemBackgroundHighlight:
     780             :         case Paint_HorizontalBorder:
     781             :         case Paint_VerticalBorder:
     782             :         case Paint_ToolBoxBackground:
     783             :         case Paint_ToolBoxBorderTopLeft:
     784             :         case Paint_ToolBoxBorderCenterCorners:
     785             :         case Paint_ToolBoxBorderBottomRight:
     786             :         case Paint_DropDownBackground:
     787       35261 :             return PT_Paint;
     788             : 
     789             :         case Int_DeckTitleBarHeight:
     790             :         case Int_DeckBorderSize:
     791             :         case Int_DeckSeparatorHeight:
     792             :         case Int_PanelTitleBarHeight:
     793             :         case Int_TabMenuPadding:
     794             :         case Int_TabMenuSeparatorPadding:
     795             :         case Int_TabItemWidth:
     796             :         case Int_TabItemHeight:
     797             :         case Int_DeckLeftPadding:
     798             :         case Int_DeckTopPadding:
     799             :         case Int_DeckRightPadding:
     800             :         case Int_DeckBottomPadding:
     801             :         case Int_TabBarLeftPadding:
     802             :         case Int_TabBarTopPadding:
     803             :         case Int_TabBarRightPadding:
     804             :         case Int_TabBarBottomPadding:
     805             :         case Int_ButtonCornerRadius:
     806      240532 :             return PT_Integer;
     807             : 
     808             :         case Bool_UseSymphonyIcons:
     809             :         case Bool_UseSystemColors:
     810             :         case Bool_UseToolBoxItemSeparator:
     811             :         case Bool_IsHighContrastModeActive:
     812         545 :             return PT_Boolean;
     813             : 
     814             :         case Rect_ToolBoxBorder:
     815             :         case Rect_ToolBoxPadding:
     816         200 :             return PT_Rectangle;
     817             : 
     818             :         default:
     819           0 :             return PT_Invalid;
     820             :     }
     821             : }
     822             : 
     823           0 : css::uno::Type Theme::GetCppuType (const PropertyType eType)
     824             : {
     825           0 :     switch(eType)
     826             :     {
     827             :         case PT_Image:
     828           0 :             return cppu::UnoType<rtl::OUString>::get();
     829             : 
     830             :         case PT_Color:
     831           0 :             return cppu::UnoType<sal_uInt32>::get();
     832             : 
     833             :         case PT_Paint:
     834           0 :             return cppu::UnoType<void>::get();
     835             : 
     836             :         case PT_Integer:
     837           0 :             return cppu::UnoType<sal_Int32>::get();
     838             : 
     839             :         case PT_Boolean:
     840           0 :             return cppu::UnoType<sal_Bool>::get();
     841             : 
     842             :         case PT_Rectangle:
     843           0 :             return cppu::UnoType<awt::Rectangle>::get();
     844             : 
     845             :         case PT_Invalid:
     846             :         default:
     847           0 :             return cppu::UnoType<void>::get();
     848             :     }
     849             : }
     850             : 
     851      313138 : sal_Int32 Theme::GetIndex (const ThemeItem eItem, const PropertyType eType)
     852             : {
     853      313138 :     switch(eType)
     854             :     {
     855             :         case PT_Image:
     856       28808 :             return eItem - __Pre_Image-1;
     857             :         case PT_Color:
     858        7991 :             return eItem - __Image_Color-1;
     859             :         case PT_Paint:
     860       35122 :             return eItem - __Color_Paint-1;
     861             :         case PT_Integer:
     862      240481 :             return eItem - __Paint_Int-1;
     863             :         case PT_Boolean:
     864         542 :             return eItem - __Int_Bool-1;
     865             :         case PT_Rectangle:
     866         194 :             return eItem - __Bool_Rect-1;
     867             : 
     868             :         default:
     869             :             OSL_ASSERT(false);
     870           0 :             return 0;
     871             :     }
     872             : }
     873             : 
     874        9700 : Theme::VetoableListenerContainer* Theme::GetVetoableListeners (
     875             :     const ThemeItem eItem,
     876             :     const bool bCreate)
     877             : {
     878        9700 :     VetoableListeners::iterator iContainer (maVetoableListeners.find(eItem));
     879        9700 :     if (iContainer != maVetoableListeners.end())
     880           0 :         return &iContainer->second;
     881        9700 :     else if (bCreate)
     882             :     {
     883           0 :         maVetoableListeners[eItem] = VetoableListenerContainer();
     884           0 :         return &maVetoableListeners[eItem];
     885             :     }
     886             :     else
     887        9700 :         return NULL;
     888             : }
     889             : 
     890       16010 : Theme::ChangeListenerContainer* Theme::GetChangeListeners (
     891             :     const ThemeItem eItem,
     892             :     const bool bCreate)
     893             : {
     894       16010 :     ChangeListeners::iterator iContainer (maChangeListeners.find(eItem));
     895       16010 :     if (iContainer != maChangeListeners.end())
     896        3266 :         return &iContainer->second;
     897       12744 :     else if (bCreate)
     898             :     {
     899        3044 :         maChangeListeners[eItem] = ChangeListenerContainer();
     900        3044 :         return &maChangeListeners[eItem];
     901             :     }
     902             :     else
     903        9700 :         return NULL;
     904             : }
     905             : 
     906        9700 : bool Theme::DoVetoableListenersVeto (
     907             :     const VetoableListenerContainer* pListeners,
     908             :     const beans::PropertyChangeEvent& rEvent)
     909             : {
     910        9700 :     if (pListeners == NULL)
     911        9700 :         return false;
     912             : 
     913           0 :     VetoableListenerContainer aListeners (*pListeners);
     914             :     try
     915             :     {
     916           0 :         for (VetoableListenerContainer::const_iterator
     917           0 :                  iListener(aListeners.begin()),
     918           0 :                  iEnd(aListeners.end());
     919             :              iListener!=iEnd;
     920             :              ++iListener)
     921             :         {
     922           0 :             (*iListener)->vetoableChange(rEvent);
     923             :         }
     924             :     }
     925           0 :     catch(const beans::PropertyVetoException&)
     926             :     {
     927           0 :         return true;
     928             :     }
     929           0 :     catch(const Exception&)
     930             :     {
     931             :         // Ignore any other errors (such as disposed listeners).
     932             :     }
     933           0 :     return false;
     934             : }
     935             : 
     936        9700 : void Theme::BroadcastPropertyChange (
     937             :     const ChangeListenerContainer* pListeners,
     938             :     const beans::PropertyChangeEvent& rEvent)
     939             : {
     940        9700 :     if (pListeners == NULL)
     941       19400 :         return;
     942             : 
     943           0 :     const ChangeListenerContainer aListeners (*pListeners);
     944             :     try
     945             :     {
     946           0 :         for (ChangeListenerContainer::const_iterator
     947           0 :                  iListener(aListeners.begin()),
     948           0 :                  iEnd(aListeners.end());
     949             :              iListener!=iEnd;
     950             :              ++iListener)
     951             :         {
     952           0 :             (*iListener)->propertyChange(rEvent);
     953             :         }
     954             :     }
     955           0 :     catch(const Exception&)
     956             :     {
     957             :         // Ignore any errors (such as disposed listeners).
     958           0 :     }
     959             : }
     960             : 
     961        4850 : void Theme::ProcessNewValue (
     962             :     const Any& rValue,
     963             :     const ThemeItem eItem,
     964             :     const PropertyType eType)
     965             : {
     966        4850 :     const sal_Int32 nIndex (GetIndex (eItem, eType));
     967        4850 :     switch (eType)
     968             :     {
     969             :         case PT_Image:
     970             :         {
     971         776 :             ::rtl::OUString sURL;
     972         776 :             if (rValue >>= sURL)
     973             :             {
     974         776 :                 maImages[nIndex] = Tools::GetImage(sURL, NULL);
     975             :             }
     976         776 :             break;
     977             :         }
     978             :         case PT_Color:
     979             :         {
     980         679 :             sal_Int32 nColorValue (0);
     981         679 :             if (rValue >>= nColorValue)
     982             :             {
     983         679 :                 maColors[nIndex] = Color(nColorValue);
     984             :             }
     985         679 :             break;
     986             :         }
     987             :         case PT_Paint:
     988             :         {
     989        1261 :             maPaints[nIndex] = Paint::Create(rValue);
     990        1261 :             break;
     991             :         }
     992             :         case PT_Integer:
     993             :         {
     994        1649 :             sal_Int32 nValue (0);
     995        1649 :             if (rValue >>= nValue)
     996             :             {
     997        1649 :                 maIntegers[nIndex] = nValue;
     998             :             }
     999        1649 :             break;
    1000             :         }
    1001             :         case PT_Boolean:
    1002             :         {
    1003         291 :             bool nValue (false);
    1004         291 :             if (rValue >>= nValue)
    1005             :             {
    1006         291 :                 maBooleans[nIndex] = nValue;
    1007         291 :                 if (eItem == Bool_IsHighContrastModeActive)
    1008             :                 {
    1009           0 :                     mbIsHighContrastModeSetManually = true;
    1010           0 :                     mbIsHighContrastMode = maBooleans[nIndex];
    1011           0 :                     HandleDataChange();
    1012             :                 }
    1013         291 :                 else if (eItem == Bool_UseSystemColors)
    1014             :                 {
    1015          97 :                     HandleDataChange();
    1016             :                 }
    1017             :             }
    1018         291 :             break;
    1019             :         }
    1020             :         case PT_Rectangle:
    1021             :         {
    1022         194 :             awt::Rectangle aBox;
    1023         194 :             if (rValue >>= aBox)
    1024             :             {
    1025         194 :                 maRectangles[nIndex] = Rectangle(
    1026             :                     aBox.X,
    1027             :                     aBox.Y,
    1028             :                     aBox.Width,
    1029         194 :                     aBox.Height);
    1030             :             }
    1031         194 :             break;
    1032             :         }
    1033             :         case PT_Invalid:
    1034             :             OSL_ASSERT(eType != PT_Invalid);
    1035           0 :             throw RuntimeException();
    1036             :     }
    1037        4850 : }
    1038             : 
    1039             : } } // end of namespace sfx2::sidebar
    1040             : 
    1041             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11