12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- // Copyright (c) 2012 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef UI_VIEWS_NATIVE_THEME_DELEGATE_H_
- #define UI_VIEWS_NATIVE_THEME_DELEGATE_H_
- #include "ui/gfx/geometry/rect.h"
- #include "ui/native_theme/native_theme.h"
- #include "ui/views/views_export.h"
- namespace views {
- // A delagate that supports animating transtions between different native
- // theme states. This delegate can be used to control a native theme Border
- // or Painter object.
- //
- // If animation is ongoing, the native theme border or painter will
- // composite the foreground state over the backgroud state using an alpha
- // between 0 and 255 based on the current value of the animation.
- class VIEWS_EXPORT NativeThemeDelegate {
- public:
- virtual ~NativeThemeDelegate() = default;
- // Get the native theme part that should be drawn.
- virtual ui::NativeTheme::Part GetThemePart() const = 0;
- // Get the rectangle that should be painted.
- virtual gfx::Rect GetThemePaintRect() const = 0;
- // Get the state of the part, along with any extra data needed for drawing.
- virtual ui::NativeTheme::State GetThemeState(
- ui::NativeTheme::ExtraParams* params) const = 0;
- // If the native theme drawign should be animated, return the Animation object
- // that controlls it. If no animation is ongoing, NULL may be returned.
- virtual const gfx::Animation* GetThemeAnimation() const = 0;
- // If animation is onging, this returns the background native theme state.
- virtual ui::NativeTheme::State GetBackgroundThemeState(
- ui::NativeTheme::ExtraParams* params) const = 0;
- // If animation is onging, this returns the foreground native theme state.
- // This state will be composited over the background using an alpha value
- // based on the current value of the animation.
- virtual ui::NativeTheme::State GetForegroundThemeState(
- ui::NativeTheme::ExtraParams* params) const = 0;
- };
- } // namespace views
- #endif // UI_VIEWS_NATIVE_THEME_DELEGATE_H_
|