diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-15 02:07:52 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-15 02:07:52 +0000 |
commit | f78452fc691fd36f44b13fa1443a6c002183cb58 (patch) | |
tree | 5ad6999431d2ac3ff0879394eaf4f7faf09a9c33 /ui/base/native_theme/native_theme_base.h | |
parent | 2534b2d81a438cbbcfce12853bb43e837dfe8b1b (diff) | |
download | chromium_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.h | 171 |
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_ |