summaryrefslogtreecommitdiffstats
path: root/ui/base/native_theme/native_theme_base.h
diff options
context:
space:
mode:
authortfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-15 02:07:52 +0000
committertfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-15 02:07:52 +0000
commitf78452fc691fd36f44b13fa1443a6c002183cb58 (patch)
tree5ad6999431d2ac3ff0879394eaf4f7faf09a9c33 /ui/base/native_theme/native_theme_base.h
parent2534b2d81a438cbbcfce12853bb43e837dfe8b1b (diff)
downloadchromium_src-f78452fc691fd36f44b13fa1443a6c002183cb58.zip
chromium_src-f78452fc691fd36f44b13fa1443a6c002183cb58.tar.gz
chromium_src-f78452fc691fd36f44b13fa1443a6c002183cb58.tar.bz2
ui: Move NativeTheme files into ui/base/native_theme/ directory.
BUG=103304,125844 R=ben@chromium.org TBR=tony@chromium.org Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=136996 Review URL: https://chromiumcodereview.appspot.com/10310136 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@137056 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/base/native_theme/native_theme_base.h')
-rw-r--r--ui/base/native_theme/native_theme_base.h171
1 files changed, 171 insertions, 0 deletions
diff --git a/ui/base/native_theme/native_theme_base.h b/ui/base/native_theme/native_theme_base.h
new file mode 100644
index 0000000..5cc86fe
--- /dev/null
+++ b/ui/base/native_theme/native_theme_base.h
@@ -0,0 +1,171 @@
+// 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_BASE_NATIVE_THEME_NATIVE_THEME_BASE_H_
+#define UI_BASE_NATIVE_THEME_NATIVE_THEME_BASE_H_
+#pragma once
+
+#include "base/basictypes.h"
+#include "base/compiler_specific.h"
+#include "skia/ext/platform_canvas.h"
+#include "ui/base/native_theme/native_theme.h"
+
+namespace gfx {
+class Rect;
+class Size;
+}
+
+namespace ui {
+
+// Theme support for non-Windows toolkits.
+class NativeThemeBase : public NativeTheme {
+ public:
+ // NativeTheme implementation:
+ virtual gfx::Size GetPartSize(Part part,
+ State state,
+ const ExtraParams& extra) const OVERRIDE;
+ virtual void Paint(SkCanvas* canvas,
+ Part part,
+ State state,
+ const gfx::Rect& rect,
+ const ExtraParams& extra) const OVERRIDE;
+
+ protected:
+ NativeThemeBase();
+ virtual ~NativeThemeBase();
+
+ // Draw the arrow. Used by scrollbar and inner spin button.
+ virtual void PaintArrowButton(
+ SkCanvas* gc,
+ const gfx::Rect& rect,
+ Part direction,
+ State state) const;
+ // Paint the scrollbar track. Done before the thumb so that it can contain
+ // alpha.
+ virtual void PaintScrollbarTrack(
+ SkCanvas* canvas,
+ Part part,
+ State state,
+ const ScrollbarTrackExtraParams& extra_params,
+ const gfx::Rect& rect) const;
+ // Draw the scrollbar thumb over the track.
+ virtual void PaintScrollbarThumb(
+ SkCanvas* canvas,
+ Part part,
+ State state,
+ const gfx::Rect& rect) const;
+
+ virtual void PaintCheckbox(
+ SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const ButtonExtraParams& button) const;
+
+ virtual void PaintRadio(
+ SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const ButtonExtraParams& button) const;
+
+ virtual void PaintButton(
+ SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const ButtonExtraParams& button) const;
+
+ virtual void PaintTextField(
+ SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const TextFieldExtraParams& text) const;
+
+ virtual void PaintMenuList(
+ SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const MenuListExtraParams& menu_list) const;
+
+ virtual void PaintMenuPopupBackground(SkCanvas* canvas,
+ const gfx::Size& size) const;
+
+ virtual void PaintMenuItemBackground(
+ SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const MenuListExtraParams& menu_list) const;
+
+ virtual void PaintSliderTrack(
+ SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const SliderExtraParams& slider) const;
+
+ virtual void PaintSliderThumb(
+ SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const SliderExtraParams& slider) const;
+
+ virtual void PaintInnerSpinButton(
+ SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const InnerSpinButtonExtraParams& spin_button) const;
+
+ virtual void PaintProgressBar(
+ SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const ProgressBarExtraParams& progress_bar) const;
+
+ protected:
+ void set_scrollbar_button_length(unsigned int length) {
+ scrollbar_button_length_ = length;
+ }
+
+ bool IntersectsClipRectInt(SkCanvas* canvas,
+ int x, int y, int w, int h) const;
+
+ void DrawBitmapInt(SkCanvas* canvas, const SkBitmap& bitmap,
+ int src_x, int src_y, int src_w, int src_h,
+ int dest_x, int dest_y, int dest_w, int dest_h) const;
+
+ void DrawTiledImage(SkCanvas* canvas,
+ const SkBitmap& bitmap,
+ int src_x, int src_y,
+ double tile_scale_x, double tile_scale_y,
+ int dest_x, int dest_y, int w, int h) const;
+
+ SkColor SaturateAndBrighten(SkScalar* hsv,
+ SkScalar saturate_amount,
+ SkScalar brighten_amount) const;
+
+ private:
+ void DrawVertLine(SkCanvas* canvas,
+ int x,
+ int y1,
+ int y2,
+ const SkPaint& paint) const;
+ void DrawHorizLine(SkCanvas* canvas,
+ int x1,
+ int x2,
+ int y,
+ const SkPaint& paint) const;
+ void DrawBox(SkCanvas* canvas,
+ const gfx::Rect& rect,
+ const SkPaint& paint) const;
+ SkScalar Clamp(SkScalar value,
+ SkScalar min,
+ SkScalar max) const;
+ SkColor OutlineColor(SkScalar* hsv1, SkScalar* hsv2) const;
+
+ unsigned int scrollbar_width_;
+ unsigned int scrollbar_button_length_;
+
+ DISALLOW_COPY_AND_ASSIGN(NativeThemeBase);
+};
+
+} // namespace ui
+
+#endif // UI_BASE_NATIVE_THEME_NATIVE_THEME_BASE_H_