/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #pragma once #include #include #include namespace vcl { class Font; } namespace sd::slidesorter::controller { class Properties; } namespace sd::slidesorter::view { const int Theme_FocusIndicatorWidth = 3; /** Collection of colors and styles that are used to paint the slide sorter view. */ class Theme { public: Theme (const std::shared_ptr& rpProperties); /** Call this method to update some colors as response to a change of a system color change. */ void Update ( const std::shared_ptr& rpProperties); // BitmapEx GetInsertIndicatorIcon() const; enum FontType { Font_PageNumber, Font_PageCount }; static std::shared_ptr GetFont ( const FontType eType, const OutputDevice& rDevice); enum ColorType { Color_Background, Color_PageNumberDefault, Color_PageNumberHover, Color_PageNumberHighContrast, Color_PageNumberBrightBackground, Color_PageNumberDarkBackground, Color_Selection, Color_PreviewBorder, Color_PageCountFontColor, ColorType_Size_ }; Color GetColor (const ColorType eType); enum GradientColorType { Gradient_NormalPage, Gradient_SelectedPage, Gradient_SelectedAndFocusedPage, Gradient_MouseOverPage, Gradient_MouseOverSelected, Gradient_MouseOverSelectedAndFocusedPage, Gradient_FocusedPage, GradientColorType_Size_ }; enum class GradientColorClass { Border1, Border2, Fill1, Fill2 }; Color GetGradientColor ( const GradientColorType eType, const GradientColorClass eClass); void SetGradient ( const GradientColorType eType, const Color aBaseColor, const sal_Int32 nSaturationOverride, const sal_Int32 nBrightnessOverride, const sal_Int32 nFillStartOffset, const sal_Int32 nFillEndOffset, const sal_Int32 nBorderStartOffset, const sal_Int32 nBorderEndOffset); enum IconType { Icon_RawShadow, Icon_RawInsertShadow, Icon_HideSlideOverlay, Icon_FocusBorder, IconType_Size_ }; const BitmapEx& GetIcon (const IconType eType); private: class GradientDescriptor { public: Color maFillColor1; Color maFillColor2; Color maBorderColor1; Color maBorderColor2; }; Color maBackgroundColor; ::std::vector maGradients; ::std::vector maIcons; ::std::vector maColor; GradientDescriptor& GetGradient (const GradientColorType eType); /** Guarded initialization of the specified icon in the maIcons container. */ void InitializeIcon(const IconType eType, const OUString& rResourceId); }; } // end of namespace ::sd::slidesorter::view /* vim:set shiftwidth=4 softtabstop=4 expandtab: */