2010-02-12 13:58:24 +01:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
|
|
*
|
|
|
|
* Copyright 2008 by Sun Microsystems, Inc.
|
|
|
|
*
|
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
|
|
*
|
|
|
|
* $RCSfile: SlsViewCacheContext.hxx,v $
|
|
|
|
*
|
|
|
|
* $Revision: 1.3 $
|
|
|
|
*
|
|
|
|
* This file is part of OpenOffice.org.
|
|
|
|
*
|
|
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
|
|
* only, as published by the Free Software Foundation.
|
|
|
|
*
|
|
|
|
* OpenOffice.org is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU Lesser General Public License version 3 for more details
|
|
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
|
|
* <http://www.openoffice.org/license.html>
|
|
|
|
* for a copy of the LGPLv3 License.
|
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
|
|
|
#include "view/SlsTheme.hxx"
|
2010-04-08 14:47:08 +02:00
|
|
|
#include "SlsResource.hxx"
|
2010-02-12 13:58:24 +01:00
|
|
|
#include "controller/SlsProperties.hxx"
|
|
|
|
#include "sdresid.hxx"
|
|
|
|
#include <tools/color.hxx>
|
|
|
|
#include <vcl/outdev.hxx>
|
|
|
|
#include <vcl/image.hxx>
|
2010-03-02 15:54:17 +01:00
|
|
|
#include <vcl/svapp.hxx>
|
|
|
|
#include <svtools/colorcfg.hxx>
|
2010-02-12 13:58:24 +01:00
|
|
|
|
|
|
|
namespace sd { namespace slidesorter { namespace view {
|
|
|
|
|
2010-04-23 17:06:10 +02:00
|
|
|
// Grays
|
|
|
|
#define Black 0x000000
|
2010-05-27 11:04:10 +02:00
|
|
|
#define Gray 0xc0c0c0
|
2010-05-20 13:41:11 +02:00
|
|
|
#define White 0xffffff
|
2010-04-23 17:06:10 +02:00
|
|
|
|
2010-02-12 13:58:24 +01:00
|
|
|
// Blues
|
|
|
|
#define StellaBlue 0x009ee1
|
|
|
|
#define AirForceBlue 0x5d8aa8
|
|
|
|
|
|
|
|
|
|
|
|
const static ColorData BackgroundColorData = 0xffffff;
|
|
|
|
|
|
|
|
const static ColorData gnMouseOverColor = 0x59000000 | StellaBlue;
|
|
|
|
|
2010-02-17 13:32:10 +01:00
|
|
|
|
|
|
|
ColorData ChangeLuminance (const ColorData aColorData, const int nValue)
|
|
|
|
{
|
|
|
|
Color aColor (aColorData);
|
|
|
|
if (nValue > 0)
|
|
|
|
aColor.IncreaseLuminance(nValue);
|
|
|
|
else
|
|
|
|
aColor.DecreaseLuminance(-nValue);
|
|
|
|
return aColor.GetColor();
|
|
|
|
}
|
|
|
|
|
2010-04-23 17:06:10 +02:00
|
|
|
ColorData HGBAdapt (
|
|
|
|
const ColorData aColorData,
|
|
|
|
const sal_Int32 nNewSaturation,
|
|
|
|
const sal_Int32 nNewBrightness)
|
|
|
|
{
|
|
|
|
USHORT nHue (0);
|
|
|
|
USHORT nSaturation (0);
|
|
|
|
USHORT nBrightness (0);
|
|
|
|
Color(aColorData).RGBtoHSB(nHue, nSaturation, nBrightness);
|
|
|
|
return Color::HSBtoRGB(
|
|
|
|
nHue,
|
|
|
|
nNewSaturation>=0 ? nNewSaturation : nSaturation,
|
|
|
|
nNewBrightness>=0 ? nNewBrightness : nBrightness);
|
|
|
|
}
|
|
|
|
|
2010-02-17 13:32:10 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
2010-02-12 13:58:24 +01:00
|
|
|
Theme::Theme (const ::boost::shared_ptr<controller::Properties>& rpProperties)
|
|
|
|
: maBackgroundColor(rpProperties->GetBackgroundColor().GetColor()),
|
2010-03-02 15:54:17 +01:00
|
|
|
maPageBackgroundColor(COL_WHITE),
|
2010-04-23 17:06:10 +02:00
|
|
|
maGradients(),
|
|
|
|
maIcons(),
|
|
|
|
maColor(),
|
2010-05-20 13:41:11 +02:00
|
|
|
maIntegerValues()
|
2010-02-12 13:58:24 +01:00
|
|
|
{
|
2010-04-23 17:06:10 +02:00
|
|
|
{
|
|
|
|
LocalResource aResource (RID_SLIDESORTER_ICONS);
|
|
|
|
|
|
|
|
maStrings.resize(_StringType_Size_);
|
|
|
|
maStrings[String_DragAndDropPages] = String(SdResId(STRING_DRAG_AND_DROP_PAGES));
|
|
|
|
maStrings[String_DragAndDropSlides] = String(SdResId(STRING_DRAG_AND_DROP_SLIDES));
|
|
|
|
maStrings[String_Command1] = String(SdResId(STRING_COMMAND1));
|
2010-05-21 16:36:05 +02:00
|
|
|
maStrings[String_Command2_A] = String(SdResId(STRING_COMMAND2_A));
|
|
|
|
maStrings[String_Command2_B] = String(SdResId(STRING_COMMAND2_B));
|
|
|
|
maStrings[String_Command2_Help] = String(SdResId(STRING_COMMAND2_HELP));
|
2010-04-23 17:06:10 +02:00
|
|
|
maStrings[String_Command3] = String(SdResId(STRING_COMMAND3));
|
|
|
|
|
|
|
|
maColor.resize(_ColorType_Size_);
|
2010-05-27 11:04:10 +02:00
|
|
|
maColor[Color_Background] = maBackgroundColor;
|
|
|
|
maColor[Color_PageBackground] = AirForceBlue;
|
|
|
|
maColor[Color_ButtonBackground] = Black;
|
|
|
|
maColor[Color_ButtonText] = Gray;
|
|
|
|
maColor[Color_ButtonTextHover] = White;
|
|
|
|
maColor[Color_MouseOverColor] = gnMouseOverColor;
|
2010-06-15 18:50:58 +02:00
|
|
|
maColor[Color_PageNumberDefault] = 0x0808080;
|
|
|
|
maColor[Color_PageNumberHover] = 0x4c4c4c;
|
|
|
|
maColor[Color_PageNumberHighContrast] = 0xffffff;
|
|
|
|
maColor[Color_PageNumberBrightBackground] = 0x333333;
|
|
|
|
maColor[Color_PageNumberDarkBackground] = 0xcccccc;
|
2010-05-27 11:04:10 +02:00
|
|
|
maColor[Color_Selection] = StellaBlue;
|
|
|
|
maColor[Color_PreviewBorder] = 0x949599;
|
2010-05-20 13:41:11 +02:00
|
|
|
|
|
|
|
maIntegerValues.resize(_IntegerValueType_Size_);
|
|
|
|
maIntegerValues[Integer_ButtonCornerRadius] = 3;
|
|
|
|
maIntegerValues[Integer_ButtonMaxAlpha] = 0;
|
|
|
|
maIntegerValues[Integer_ButtonBarMaxAlpha] = 0;
|
|
|
|
maIntegerValues[Integer_ButtonPaintType] = 1;
|
|
|
|
maIntegerValues[Integer_ButtonBorder] = 4;
|
|
|
|
maIntegerValues[Integer_ButtonGap] = 0;
|
2010-05-31 17:48:57 +02:00
|
|
|
maIntegerValues[Integer_ButtonFadeInDelay] = 800;
|
|
|
|
maIntegerValues[Integer_ButtonFadeInDuration] = 100;
|
2010-05-20 13:41:11 +02:00
|
|
|
maIntegerValues[Integer_ButtonFadeOutDelay] = 0;
|
2010-05-31 17:48:57 +02:00
|
|
|
maIntegerValues[Integer_ButtonFadeOutDuration] = 100;
|
2010-05-26 16:58:05 +02:00
|
|
|
maIntegerValues[Integer_ToolTipDelay] = 1000;
|
2010-05-31 17:48:57 +02:00
|
|
|
maIntegerValues[Integer_FocusIndicatorWidth] = 3;
|
2010-04-23 17:06:10 +02:00
|
|
|
}
|
2010-03-23 12:50:14 +01:00
|
|
|
|
2010-02-17 13:32:10 +01:00
|
|
|
Update(rpProperties);
|
2010-02-12 13:58:24 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Theme::Update (const ::boost::shared_ptr<controller::Properties>& rpProperties)
|
|
|
|
{
|
2010-06-14 18:02:38 +02:00
|
|
|
const bool bSavedHighContrastMode (mbIsHighContrastMode);
|
|
|
|
mbIsHighContrastMode = rpProperties->IsHighContrastModeActive();
|
|
|
|
|
|
|
|
// Set up colors.
|
2010-02-12 13:58:24 +01:00
|
|
|
maBackgroundColor = rpProperties->GetBackgroundColor().GetColor();
|
2010-03-02 15:54:17 +01:00
|
|
|
maPageBackgroundColor = svtools::ColorConfig().GetColorValue(svtools::DOCCOLOR).nColor;
|
|
|
|
|
2010-05-27 11:04:10 +02:00
|
|
|
maColor[Color_Background] = maBackgroundColor;
|
2010-03-23 12:50:14 +01:00
|
|
|
|
2010-04-23 17:06:10 +02:00
|
|
|
maGradients.resize(_GradientColorType_Size_);
|
|
|
|
|
2010-06-07 11:01:58 +02:00
|
|
|
maColor[Color_Background] = maBackgroundColor;
|
2010-02-17 13:32:10 +01:00
|
|
|
const ColorData aSelectionColor (rpProperties->GetSelectionColor().GetColor());
|
2010-06-07 11:01:58 +02:00
|
|
|
maColor[Color_Selection] = aSelectionColor;
|
2010-06-14 18:02:38 +02:00
|
|
|
if (Color(aSelectionColor).IsBright())
|
|
|
|
maColor[Color_PageCountFontColor] = Black;
|
|
|
|
else
|
|
|
|
maColor[Color_PageCountFontColor] = White;
|
2010-02-23 18:31:24 +01:00
|
|
|
|
2010-06-14 18:02:38 +02:00
|
|
|
// Set up gradients.
|
2010-04-23 17:06:10 +02:00
|
|
|
SetGradient(Gradient_SelectedPage, aSelectionColor, 50, 50, +100,+100, +50,+25);
|
|
|
|
SetGradient(Gradient_MouseOverPage, aSelectionColor, 75, 75, +100,+100, +50,+25);
|
2010-05-28 13:26:19 +02:00
|
|
|
SetGradient(Gradient_SelectedAndFocusedPage, aSelectionColor, 50, 50, +100,+100, -50,-75);
|
|
|
|
SetGradient(Gradient_MouseOverSelectedAndFocusedPage, aSelectionColor, 75, 75, +100,+100, -50,-75);
|
2010-04-23 17:06:10 +02:00
|
|
|
SetGradient(Gradient_FocusedPage, aSelectionColor, -1,-1, 0,0, -50,-75);
|
2010-02-17 13:32:10 +01:00
|
|
|
|
2010-04-23 17:06:10 +02:00
|
|
|
SetGradient(Gradient_ButtonBackground, 0x000000, -1,-1, 0,0, 0,0);
|
|
|
|
SetGradient(Gradient_NormalPage, maBackgroundColor, -1,-1, 0,0, 0,0);
|
|
|
|
|
|
|
|
// The focused gradient needs special handling because its fill color is
|
|
|
|
// like that of the NormalPage gradient.
|
|
|
|
GetGradient(Gradient_FocusedPage).maFillColor1 = GetGradient(Gradient_NormalPage).maFillColor1;
|
|
|
|
GetGradient(Gradient_FocusedPage).maFillColor2 = GetGradient(Gradient_NormalPage).maFillColor2;
|
|
|
|
|
2010-06-14 18:02:38 +02:00
|
|
|
// Set up icons.
|
2010-04-29 10:38:29 +02:00
|
|
|
if (bSavedHighContrastMode != mbIsHighContrastMode || maIcons.empty())
|
2010-04-23 17:06:10 +02:00
|
|
|
{
|
|
|
|
LocalResource aResource (RID_SLIDESORTER_ICONS);
|
|
|
|
|
|
|
|
maIcons.resize(_IconType_Size_);
|
|
|
|
if (mbIsHighContrastMode)
|
|
|
|
{
|
|
|
|
InitializeIcon(Icon_RawShadow, IMAGE_SHADOW);
|
|
|
|
InitializeIcon(Icon_RawInsertShadow, IMAGE_INSERT_SHADOW);
|
|
|
|
InitializeIcon(Icon_HideSlideOverlay, IMAGE_HIDE_SLIDE_OVERLAY);
|
|
|
|
|
2010-05-19 11:57:47 +02:00
|
|
|
InitializeIcon(Icon_ButtonBarLarge, IMAGE_BUTTONBAR_LARGE_HC);
|
|
|
|
InitializeIcon(Icon_ButtonBarMedium, IMAGE_BUTTONBAR_MEDIUM_HC);
|
|
|
|
InitializeIcon(Icon_ButtonBarSmall, IMAGE_BUTTONBAR_SMALL_HC);
|
|
|
|
|
|
|
|
InitializeIcon(Icon_Command1Large, IMAGE_COMMAND1_LARGE_HC);
|
|
|
|
InitializeIcon(Icon_Command1LargeHover, IMAGE_COMMAND1_LARGE_HOVER_HC);
|
|
|
|
InitializeIcon(Icon_Command1Medium, IMAGE_COMMAND1_MEDIUM_HC);
|
|
|
|
InitializeIcon(Icon_Command1MediumHover, IMAGE_COMMAND1_MEDIUM_HOVER_HC);
|
2010-04-23 17:06:10 +02:00
|
|
|
InitializeIcon(Icon_Command1Small, IMAGE_COMMAND1_SMALL_HC);
|
|
|
|
InitializeIcon(Icon_Command1SmallHover, IMAGE_COMMAND1_SMALL_HOVER_HC);
|
|
|
|
|
2010-05-19 11:57:47 +02:00
|
|
|
InitializeIcon(Icon_Command2Large, IMAGE_COMMAND2_LARGE_HC);
|
|
|
|
InitializeIcon(Icon_Command2LargeHover, IMAGE_COMMAND2_LARGE_HOVER_HC);
|
|
|
|
InitializeIcon(Icon_Command2Medium, IMAGE_COMMAND2_MEDIUM_HC);
|
|
|
|
InitializeIcon(Icon_Command2MediumHover, IMAGE_COMMAND2_MEDIUM_HOVER_HC);
|
2010-04-23 17:06:10 +02:00
|
|
|
InitializeIcon(Icon_Command2Small, IMAGE_COMMAND2_SMALL_HC);
|
|
|
|
InitializeIcon(Icon_Command2SmallHover, IMAGE_COMMAND2_SMALL_HOVER_HC);
|
|
|
|
|
2010-05-19 11:57:47 +02:00
|
|
|
InitializeIcon(Icon_Command3Large, IMAGE_COMMAND3_LARGE_HC);
|
|
|
|
InitializeIcon(Icon_Command3LargeHover, IMAGE_COMMAND3_LARGE_HOVER_HC);
|
|
|
|
InitializeIcon(Icon_Command3Medium, IMAGE_COMMAND3_SMALL_HC);
|
|
|
|
InitializeIcon(Icon_Command3MediumHover, IMAGE_COMMAND3_SMALL_HOVER_HC);
|
2010-04-23 17:06:10 +02:00
|
|
|
InitializeIcon(Icon_Command3Small, IMAGE_COMMAND3_SMALL_HC);
|
|
|
|
InitializeIcon(Icon_Command3SmallHover, IMAGE_COMMAND3_SMALL_HOVER_HC);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
InitializeIcon(Icon_RawShadow, IMAGE_SHADOW);
|
|
|
|
InitializeIcon(Icon_RawInsertShadow, IMAGE_INSERT_SHADOW);
|
|
|
|
InitializeIcon(Icon_HideSlideOverlay, IMAGE_HIDE_SLIDE_OVERLAY);
|
|
|
|
|
2010-05-19 11:57:47 +02:00
|
|
|
InitializeIcon(Icon_ButtonBarLarge, IMAGE_BUTTONBAR_LARGE);
|
|
|
|
InitializeIcon(Icon_ButtonBarMedium, IMAGE_BUTTONBAR_MEDIUM);
|
|
|
|
InitializeIcon(Icon_ButtonBarSmall, IMAGE_BUTTONBAR_SMALL);
|
|
|
|
|
|
|
|
InitializeIcon(Icon_Command1Large, IMAGE_COMMAND1_LARGE);
|
|
|
|
InitializeIcon(Icon_Command1LargeHover, IMAGE_COMMAND1_LARGE_HOVER);
|
|
|
|
InitializeIcon(Icon_Command1Medium, IMAGE_COMMAND1_MEDIUM);
|
|
|
|
InitializeIcon(Icon_Command1MediumHover, IMAGE_COMMAND1_MEDIUM_HOVER);
|
2010-04-23 17:06:10 +02:00
|
|
|
InitializeIcon(Icon_Command1Small, IMAGE_COMMAND1_SMALL);
|
|
|
|
InitializeIcon(Icon_Command1SmallHover, IMAGE_COMMAND1_SMALL_HOVER);
|
|
|
|
|
2010-05-19 11:57:47 +02:00
|
|
|
InitializeIcon(Icon_Command2Large, IMAGE_COMMAND2_LARGE);
|
|
|
|
InitializeIcon(Icon_Command2LargeHover, IMAGE_COMMAND2_LARGE_HOVER);
|
|
|
|
InitializeIcon(Icon_Command2Medium, IMAGE_COMMAND2_MEDIUM);
|
|
|
|
InitializeIcon(Icon_Command2MediumHover, IMAGE_COMMAND2_MEDIUM_HOVER);
|
2010-04-23 17:06:10 +02:00
|
|
|
InitializeIcon(Icon_Command2Small, IMAGE_COMMAND2_SMALL);
|
|
|
|
InitializeIcon(Icon_Command2SmallHover, IMAGE_COMMAND2_SMALL_HOVER);
|
|
|
|
|
2010-05-19 11:57:47 +02:00
|
|
|
InitializeIcon(Icon_Command3Large, IMAGE_COMMAND3_LARGE);
|
|
|
|
InitializeIcon(Icon_Command3LargeHover, IMAGE_COMMAND3_LARGE_HOVER);
|
2010-05-20 13:41:11 +02:00
|
|
|
InitializeIcon(Icon_Command3Medium, IMAGE_COMMAND3_MEDIUM);
|
|
|
|
InitializeIcon(Icon_Command3MediumHover, IMAGE_COMMAND3_MEDIUM_HOVER);
|
2010-04-23 17:06:10 +02:00
|
|
|
InitializeIcon(Icon_Command3Small, IMAGE_COMMAND3_SMALL);
|
|
|
|
InitializeIcon(Icon_Command3SmallHover, IMAGE_COMMAND3_SMALL_HOVER);
|
|
|
|
}
|
2010-05-31 17:48:57 +02:00
|
|
|
InitializeIcon(Icon_FocusBorder, IMAGE_FOCUS_BORDER);
|
2010-04-23 17:06:10 +02:00
|
|
|
}
|
2010-02-12 13:58:24 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-02-17 13:32:10 +01:00
|
|
|
|
|
|
|
|
2010-03-02 15:54:17 +01:00
|
|
|
::boost::shared_ptr<Font> Theme::GetFont (
|
2010-02-12 13:58:24 +01:00
|
|
|
const FontType eType,
|
2010-03-02 15:54:17 +01:00
|
|
|
const OutputDevice& rDevice)
|
2010-02-12 13:58:24 +01:00
|
|
|
{
|
|
|
|
::boost::shared_ptr<Font> pFont;
|
|
|
|
|
|
|
|
switch (eType)
|
|
|
|
{
|
2010-05-27 11:04:10 +02:00
|
|
|
case Font_PageNumber:
|
2010-03-02 15:54:17 +01:00
|
|
|
pFont.reset(new Font(Application::GetSettings().GetStyleSettings().GetAppFont()));
|
|
|
|
pFont->SetTransparent(TRUE);
|
2010-02-12 13:58:24 +01:00
|
|
|
pFont->SetWeight(WEIGHT_BOLD);
|
|
|
|
break;
|
2010-03-02 15:54:17 +01:00
|
|
|
|
2010-05-27 11:04:10 +02:00
|
|
|
case Font_PageCount:
|
2010-03-02 15:54:17 +01:00
|
|
|
pFont.reset(new Font(Application::GetSettings().GetStyleSettings().GetAppFont()));
|
|
|
|
pFont->SetTransparent(TRUE);
|
|
|
|
pFont->SetWeight(WEIGHT_NORMAL);
|
2010-03-23 12:50:14 +01:00
|
|
|
{
|
|
|
|
const Size aSize (pFont->GetSize());
|
|
|
|
pFont->SetSize(Size(aSize.Width()*5/3, aSize.Height()*5/3));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
2010-05-27 11:04:10 +02:00
|
|
|
case Font_Button:
|
2010-03-23 12:50:14 +01:00
|
|
|
pFont.reset(new Font(Application::GetSettings().GetStyleSettings().GetAppFont()));
|
|
|
|
pFont->SetTransparent(TRUE);
|
|
|
|
pFont->SetWeight(WEIGHT_BOLD);
|
|
|
|
{
|
|
|
|
const Size aSize (pFont->GetSize());
|
|
|
|
pFont->SetSize(Size(aSize.Width()*4/3, aSize.Height()*4/3));
|
|
|
|
}
|
2010-03-02 15:54:17 +01:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (pFont)
|
|
|
|
{
|
|
|
|
// Transform the point size to pixel size.
|
|
|
|
const MapMode aFontMapMode (MAP_POINT);
|
|
|
|
const Size aFontSize (rDevice.LogicToPixel(pFont->GetSize(), aFontMapMode));
|
|
|
|
|
|
|
|
// Transform the font size to the logical coordinates of the device.
|
|
|
|
pFont->SetSize(rDevice.PixelToLogic(aFontSize));
|
2010-02-12 13:58:24 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return pFont;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-03-23 12:50:14 +01:00
|
|
|
ColorData Theme::GetColor (const ColorType eType)
|
2010-02-12 13:58:24 +01:00
|
|
|
{
|
2010-03-24 15:49:18 +01:00
|
|
|
if (eType>=0 && sal_uInt32(eType)<maColor.size())
|
2010-03-23 12:50:14 +01:00
|
|
|
return maColor[eType];
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
2010-02-12 13:58:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-03-23 12:50:14 +01:00
|
|
|
void Theme::SetColor (
|
|
|
|
const ColorType eType,
|
|
|
|
const ColorData aData)
|
|
|
|
{
|
2010-03-24 15:49:18 +01:00
|
|
|
if (eType>=0 && sal_uInt32(eType)<maColor.size())
|
2010-03-23 12:50:14 +01:00
|
|
|
maColor[eType] = aData;
|
2010-02-12 13:58:24 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-03-23 12:50:14 +01:00
|
|
|
ColorData Theme::GetGradientColor (
|
|
|
|
const GradientColorType eType,
|
|
|
|
const GradientColorClass eClass)
|
2010-02-12 13:58:24 +01:00
|
|
|
{
|
2010-03-23 12:50:14 +01:00
|
|
|
GradientDescriptor& rDescriptor (GetGradient(eType));
|
2010-03-02 15:54:17 +01:00
|
|
|
|
2010-03-23 12:50:14 +01:00
|
|
|
switch (eClass)
|
|
|
|
{
|
|
|
|
case Border1: return rDescriptor.maBorderColor1;
|
|
|
|
case Border2: return rDescriptor.maBorderColor2;
|
|
|
|
case Fill1: return rDescriptor.maFillColor1;
|
|
|
|
case Fill2: return rDescriptor.maFillColor2;
|
|
|
|
default: OSL_ASSERT(false); // fall through
|
|
|
|
case Base: return rDescriptor.maBaseColor;
|
|
|
|
}
|
|
|
|
}
|
2010-02-12 13:58:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
2010-02-17 13:32:10 +01:00
|
|
|
|
2010-03-23 12:50:14 +01:00
|
|
|
sal_Int32 Theme::GetGradientOffset (
|
|
|
|
const GradientColorType eType,
|
|
|
|
const GradientColorClass eClass)
|
|
|
|
{
|
|
|
|
GradientDescriptor& rDescriptor (GetGradient(eType));
|
2010-03-02 15:54:17 +01:00
|
|
|
|
2010-03-23 12:50:14 +01:00
|
|
|
switch (eClass)
|
|
|
|
{
|
|
|
|
case Border1: return rDescriptor.mnBorderOffset1;
|
|
|
|
case Border2: return rDescriptor.mnBorderOffset2;
|
|
|
|
case Fill1: return rDescriptor.mnFillOffset1;
|
|
|
|
case Fill2: return rDescriptor.mnFillOffset2;
|
|
|
|
default: OSL_ASSERT(false); // fall through
|
|
|
|
case Base: return 0;
|
2010-02-12 15:40:43 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-02-12 13:58:24 +01:00
|
|
|
|
2010-02-12 15:40:43 +01:00
|
|
|
|
2010-03-23 12:50:14 +01:00
|
|
|
void Theme::SetGradient (
|
2010-02-12 15:40:43 +01:00
|
|
|
const GradientColorType eType,
|
2010-03-23 12:50:14 +01:00
|
|
|
const ColorData aBaseColor,
|
2010-04-23 17:06:10 +02:00
|
|
|
const sal_Int32 nSaturationOverride,
|
|
|
|
const sal_Int32 nBrightnessOverride,
|
2010-03-23 12:50:14 +01:00
|
|
|
const sal_Int32 nFillStartOffset,
|
|
|
|
const sal_Int32 nFillEndOffset,
|
|
|
|
const sal_Int32 nBorderStartOffset,
|
|
|
|
const sal_Int32 nBorderEndOffset)
|
2010-02-12 15:40:43 +01:00
|
|
|
{
|
2010-03-23 12:50:14 +01:00
|
|
|
GradientDescriptor& rGradient (GetGradient(eType));
|
2010-02-12 13:58:24 +01:00
|
|
|
|
2010-03-23 12:50:14 +01:00
|
|
|
rGradient.maBaseColor = aBaseColor;
|
2010-02-12 13:58:24 +01:00
|
|
|
|
2010-04-23 17:06:10 +02:00
|
|
|
rGradient.mnSaturationOverride = nSaturationOverride;
|
|
|
|
rGradient.mnBrightnessOverride = nBrightnessOverride;
|
2010-06-16 17:58:45 +02:00
|
|
|
const ColorData aColor (nSaturationOverride>=0 || nBrightnessOverride>=0
|
|
|
|
? HGBAdapt(aBaseColor, nSaturationOverride, nBrightnessOverride)
|
|
|
|
: aBaseColor);
|
2010-04-23 17:06:10 +02:00
|
|
|
|
|
|
|
rGradient.maFillColor1 = ChangeLuminance(aColor, nFillStartOffset);
|
|
|
|
rGradient.maFillColor2 = ChangeLuminance(aColor, nFillEndOffset);
|
|
|
|
rGradient.maBorderColor1 = ChangeLuminance(aColor, nBorderStartOffset);
|
|
|
|
rGradient.maBorderColor2 = ChangeLuminance(aColor, nBorderEndOffset);
|
2010-02-17 13:32:10 +01:00
|
|
|
|
2010-03-23 12:50:14 +01:00
|
|
|
rGradient.mnFillOffset1 = nFillStartOffset;
|
|
|
|
rGradient.mnFillOffset2 = nFillEndOffset;
|
|
|
|
rGradient.mnBorderOffset1 = nBorderStartOffset;
|
|
|
|
rGradient.mnBorderOffset2 = nBorderEndOffset;
|
2010-02-12 13:58:24 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-05-28 13:26:19 +02:00
|
|
|
|
|
|
|
|
2010-04-23 17:06:10 +02:00
|
|
|
sal_Int32 Theme::GetGradientSaturationOverride (const GradientColorType eType)
|
|
|
|
{
|
|
|
|
GradientDescriptor& rGradient (GetGradient(eType));
|
|
|
|
return rGradient.mnSaturationOverride;
|
|
|
|
}
|
2010-02-12 13:58:24 +01:00
|
|
|
|
|
|
|
|
2010-05-28 13:26:19 +02:00
|
|
|
|
|
|
|
|
2010-04-23 17:06:10 +02:00
|
|
|
sal_Int32 Theme::GetGradientBrightnessOverride (const GradientColorType eType)
|
2010-02-12 13:58:24 +01:00
|
|
|
{
|
2010-04-23 17:06:10 +02:00
|
|
|
GradientDescriptor& rGradient (GetGradient(eType));
|
|
|
|
return rGradient.mnBrightnessOverride;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-05-28 13:26:19 +02:00
|
|
|
|
|
|
|
|
2010-04-23 17:06:10 +02:00
|
|
|
void Theme::SetGradientSaturationOverride (const GradientColorType eType, const sal_Int32 nValue)
|
|
|
|
{
|
|
|
|
GradientDescriptor& rGradient (GetGradient(eType));
|
|
|
|
SetGradient(
|
|
|
|
eType,
|
|
|
|
rGradient.maBaseColor,
|
|
|
|
nValue,
|
|
|
|
rGradient.mnBrightnessOverride,
|
|
|
|
rGradient.mnFillOffset1,
|
|
|
|
rGradient.mnFillOffset2,
|
|
|
|
rGradient.mnBorderOffset1,
|
|
|
|
rGradient.mnBorderOffset2);
|
|
|
|
}
|
2010-02-12 13:58:24 +01:00
|
|
|
|
2010-03-02 15:54:17 +01:00
|
|
|
|
2010-05-28 13:26:19 +02:00
|
|
|
|
|
|
|
|
2010-04-23 17:06:10 +02:00
|
|
|
void Theme::SetGradientBrightnessOverride (const GradientColorType eType, const sal_Int32 nValue)
|
|
|
|
{
|
|
|
|
GradientDescriptor& rGradient (GetGradient(eType));
|
|
|
|
SetGradient(eType,
|
|
|
|
rGradient.maBaseColor,
|
|
|
|
rGradient.mnSaturationOverride,
|
|
|
|
nValue,
|
|
|
|
rGradient.mnFillOffset1,
|
|
|
|
rGradient.mnFillOffset2,
|
|
|
|
rGradient.mnBorderOffset1,
|
|
|
|
rGradient.mnBorderOffset2);
|
|
|
|
}
|
2010-03-10 17:33:53 +01:00
|
|
|
|
2010-04-08 14:47:08 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
2010-05-19 11:57:47 +02:00
|
|
|
const BitmapEx& Theme::GetIcon (const IconType eType)
|
2010-04-23 17:06:10 +02:00
|
|
|
{
|
2010-04-28 14:48:44 +02:00
|
|
|
if (eType>=0 && size_t(eType)<maIcons.size())
|
2010-04-23 17:06:10 +02:00
|
|
|
return maIcons[eType];
|
|
|
|
else
|
|
|
|
{
|
2010-04-29 10:38:29 +02:00
|
|
|
OSL_ASSERT(eType>=0 && size_t(eType)<maIcons.size());
|
2010-05-19 11:57:47 +02:00
|
|
|
return maIcons[0];
|
2010-02-12 13:58:24 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2010-03-23 12:50:14 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sal_Int32 Theme::GetIntegerValue (const IntegerValueType eType) const
|
|
|
|
{
|
2010-05-20 13:41:11 +02:00
|
|
|
if (eType>=0 && size_t(eType)<maIntegerValues.size())
|
|
|
|
return maIntegerValues[eType];
|
|
|
|
else
|
2010-03-23 12:50:14 +01:00
|
|
|
{
|
2010-05-20 13:41:11 +02:00
|
|
|
OSL_ASSERT(eType>=0 && size_t(eType)<maIntegerValues.size());
|
|
|
|
return 0;
|
2010-03-23 12:50:14 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Theme::SetIntegerValue (const IntegerValueType eType, const sal_Int32 nValue)
|
|
|
|
{
|
2010-05-20 13:41:11 +02:00
|
|
|
if (eType>=0 && size_t(eType)<maIntegerValues.size())
|
|
|
|
maIntegerValues[eType] = nValue;
|
|
|
|
else
|
2010-03-23 12:50:14 +01:00
|
|
|
{
|
2010-05-20 13:41:11 +02:00
|
|
|
OSL_ASSERT(eType>=0 && size_t(eType)<maIntegerValues.size());
|
2010-03-23 12:50:14 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-04-08 14:47:08 +02:00
|
|
|
::rtl::OUString Theme::GetString (const StringType eType) const
|
|
|
|
{
|
2010-04-28 14:48:44 +02:00
|
|
|
if (eType>=0 && size_t(eType)<maStrings.size())
|
2010-04-23 17:06:10 +02:00
|
|
|
return maStrings[eType];
|
|
|
|
else
|
2010-04-08 14:47:08 +02:00
|
|
|
{
|
2010-04-29 10:38:29 +02:00
|
|
|
OSL_ASSERT(eType>=0 && size_t(eType)<maStrings.size());
|
2010-04-23 17:06:10 +02:00
|
|
|
return ::rtl::OUString();
|
2010-04-08 14:47:08 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-03-23 12:50:14 +01:00
|
|
|
Theme::GradientDescriptor& Theme::GetGradient (const GradientColorType eType)
|
|
|
|
{
|
2010-04-28 14:48:44 +02:00
|
|
|
if (eType>=0 && size_t(eType)<maGradients.size())
|
2010-04-23 17:06:10 +02:00
|
|
|
return maGradients[eType];
|
|
|
|
else
|
2010-03-23 12:50:14 +01:00
|
|
|
{
|
2010-04-29 10:38:29 +02:00
|
|
|
OSL_ASSERT(eType>=0 && size_t(eType)<maGradients.size());
|
2010-04-23 17:06:10 +02:00
|
|
|
return maGradients[0];
|
|
|
|
}
|
|
|
|
}
|
2010-03-23 12:50:14 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-04-23 17:06:10 +02:00
|
|
|
void Theme::InitializeIcon (const IconType eType, USHORT nResourceId)
|
|
|
|
{
|
2010-04-28 14:48:44 +02:00
|
|
|
if (eType>=0 && size_t(eType)<maIcons.size())
|
2010-05-21 16:36:05 +02:00
|
|
|
{
|
|
|
|
const BitmapEx aIcon (Image(SdResId(nResourceId)).GetBitmapEx());
|
|
|
|
maIcons[eType] = aIcon;
|
|
|
|
}
|
2010-04-23 17:06:10 +02:00
|
|
|
else
|
|
|
|
{
|
2010-04-29 10:38:29 +02:00
|
|
|
OSL_ASSERT(eType>=0 && size_t(eType)<maIcons.size());
|
2010-03-23 12:50:14 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-04-23 17:06:10 +02:00
|
|
|
|
2010-02-12 13:58:24 +01:00
|
|
|
} } } // end of namespace ::sd::slidesorter::view
|