diff options
author | rogerta@chromium.org <rogerta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-08 17:26:45 +0000 |
---|---|---|
committer | rogerta@chromium.org <rogerta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-08 17:26:45 +0000 |
commit | 3002f55e44a6d87e8d2e32c9ac34bb09ba514580 (patch) | |
tree | 5de5091ba7befe59e52aebf4e30696eeb7f158d3 /views/native_theme_painter.h | |
parent | c97d3965f903c15cb16724f82698ca11d998b410 (diff) | |
download | chromium_src-3002f55e44a6d87e8d2e32c9ac34bb09ba514580.zip chromium_src-3002f55e44a6d87e8d2e32c9ac34bb09ba514580.tar.gz chromium_src-3002f55e44a6d87e8d2e32c9ac34bb09ba514580.tar.bz2 |
Adding a native theme painter, to allow Views to use NativeTheme to draw
their background. Added example code to show it in use. I still have not
hooked this into any existing View-based controls.
This CL depends on changes currently being made to native theme, see
http://codereview.chromium.org/6728029/ for details.
BUG=None
TEST=None
Review URL: http://codereview.chromium.org/6771056
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80952 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/native_theme_painter.h')
-rw-r--r-- | views/native_theme_painter.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/views/native_theme_painter.h b/views/native_theme_painter.h new file mode 100644 index 0000000..75b8866 --- /dev/null +++ b/views/native_theme_painter.h @@ -0,0 +1,79 @@ +// Copyright (c) 2011 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 VIEWS_NATIVE_THEME_PAINTER_H_ +#define VIEWS_NATIVE_THEME_PAINTER_H_ +#pragma once + +#include "base/compiler_specific.h" +#include "ui/gfx/native_theme.h" +#include "views/painter.h" + +namespace gfx { +class Canvas; +class Size; +} + +namespace ui { +class Animation; +} + +namespace views { + +// A Painter that uses NativeTheme to implement painting and sizing. A +// theme delegate must be given at construction time so that the appropriate +// painting and sizing can be done. +class NativeThemePainter : public Painter { + public: + // A delagate that supports animating transtions between different native + // theme states. If animation is onging, the native theme 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 Delegate { + public: + virtual ~Delegate() {} + + // Get the part that this native theme painter should draw. + virtual gfx::NativeTheme::Part GetThemePart() const = 0; + + // Get the state of the part, along with any extra data needed for painting. + virtual gfx::NativeTheme::State GetThemeState( + gfx::NativeTheme::ExtraParams* params) const = 0; + + // If the native theme painter is animated, return the Animation object + // that is controlling it. If no animation is ongoing, NULL may be + // returned. + virtual ui::Animation* GetThemeAnimation() const = 0; + + // If animation is onging, this returns the background native theme state. + virtual gfx::NativeTheme::State GetBackgroundThemeState( + gfx::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 gfx::NativeTheme::State GetForegroundThemeState( + gfx::NativeTheme::ExtraParams* params) const = 0; + }; + + explicit NativeThemePainter(Delegate* delegate); + + virtual ~NativeThemePainter() {} + + // Returns the preferred size of the native part being painted. + gfx::Size GetPreferredSize(); + + private: + // The delegate the controls the appearance of this painter. + Delegate* delegate_; + + // Overridden from Painter: + virtual void Paint(int w, int h, gfx::Canvas* canvas) OVERRIDE; + + DISALLOW_COPY_AND_ASSIGN(NativeThemePainter); +}; + +} // namespace views + +#endif // VIEWS_NATIVE_THEME_PAINTER_H_
\ No newline at end of file |