1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef UI_NATIVE_THEME_COMMON_THEME_H_
6#define UI_NATIVE_THEME_COMMON_THEME_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "ui/native_theme/native_theme.h"
10
11class SkCanvas;
12
13namespace gfx {
14class Canvas;
15}
16
17namespace ui {
18
19// Drawing code that is common for all platforms.
20
21// Returns true and |color| if |color_id| is found, or false otherwise.
22bool NATIVE_THEME_EXPORT CommonThemeGetSystemColor(
23    NativeTheme::ColorId color_id,
24    SkColor* color);
25
26gfx::Size NATIVE_THEME_EXPORT CommonThemeGetPartSize(
27    NativeTheme::Part part,
28    NativeTheme::State state,
29    const NativeTheme::ExtraParams& extra);
30
31void NATIVE_THEME_EXPORT CommonThemePaintComboboxArrow(
32    SkCanvas* canvas,
33    const gfx::Rect& rect);
34
35void NATIVE_THEME_EXPORT CommonThemePaintMenuSeparator(
36    SkCanvas* canvas,
37    const gfx::Rect& rect,
38    const NativeTheme::MenuSeparatorExtraParams& extra);
39
40void NATIVE_THEME_EXPORT CommonThemePaintMenuGutter(SkCanvas* canvas,
41                                                    const gfx::Rect& rect);
42
43void NATIVE_THEME_EXPORT CommonThemePaintMenuBackground(SkCanvas* canvas,
44                                                        const gfx::Rect& rect);
45
46void NATIVE_THEME_EXPORT CommonThemePaintMenuItemBackground(
47    SkCanvas* canvas,
48    NativeTheme::State state,
49    const gfx::Rect& rect);
50
51// Creates a gfx::Canvas wrapping an SkCanvas.
52scoped_ptr<gfx::Canvas> NATIVE_THEME_EXPORT CommonThemeCreateCanvas(
53    SkCanvas* sk_canvas);
54
55}  // namespace ui
56
57#endif  // UI_NATIVE_THEME_COMMON_THEME_H_
58