Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(487)

Unified Diff: ui/gfx/native_theme_android.h

Issue 8497054: Upstream: ui implementation in Android (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address comment Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/canvas_skia_android.cc ('k') | ui/gfx/native_theme_android.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/native_theme_android.h
diff --git a/ui/gfx/native_theme_android.h b/ui/gfx/native_theme_android.h
new file mode 100644
index 0000000000000000000000000000000000000000..f1134082080d7d1639e312fd9e4bff3f2db4f536
--- /dev/null
+++ b/ui/gfx/native_theme_android.h
@@ -0,0 +1,247 @@
+// 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 UI_GFX_NATIVE_THEME_ANDROID_H_
+#define UI_GFX_NATIVE_THEME_ANDROID_H_
+
+#include "base/basictypes.h"
+#include "skia/ext/platform_canvas.h"
+
+namespace gfx {
+class Rect;
+class Size;
+
+// Android theming API.
+class NativeThemeAndroid {
+ public:
+ // The part to be painted / sized.
+ enum Part {
+ SCROLLBAR_DOWN_ARROW,
+ SCROLLBAR_LEFT_ARROW,
+ SCROLLBAR_RIGHT_ARROW,
+ SCROLLBAR_UP_ARROW,
+ CHECKBOX,
+ RADIO,
+ PUSH_BUTTON,
+ TEXTFIELD,
+ MENU_LIST,
+ SLIDER_TRACK,
+ SLIDER_TNUMB,
+ INNER_SPIN_BUTTON,
+ PROGRESS_BAR,
+ };
+
+ // The state of the part.
+ enum State {
+ kDisabled,
sky 2011/11/11 00:14:16 This should be ALL_CAPS too.
michaelbai 2011/11/11 00:33:28 Done.
+ kHovered,
+ kNormal,
+ kPressed,
+ };
+
+ struct ButtonExtraParams {
+ bool checked;
+ bool indeterminate; // Whether the button state is indeterminate.
+ bool is_default; // Whether the button is default button.
+ bool has_border;
+ SkColor background_color;
+ };
+
+ struct TextFieldExtraParams {
+ bool is_text_area;
+ bool is_listbox;
+ SkColor background_color;
+ };
+
+ struct MenuListExtraParams {
+ bool has_border;
+ bool has_border_radius;
+ int arrow_x;
+ int arrow_y;
+ SkColor background_color;
+ };
+
+ struct SliderExtraParams {
+ bool vertical;
+ bool in_drag;
+ };
+
+ struct InnerSpinButtonExtraParams {
+ bool spin_up;
+ bool read_only;
+ };
+
+ struct ProgressBarExtraParams {
+ bool determinate;
+ int value_rect_x;
+ int value_rect_y;
+ int value_rect_width;
+ int value_rect_height;
+ };
+
+ union ExtraParams {
+ ButtonExtraParams button;
+ MenuListExtraParams menu_list;
+ SliderExtraParams slider;
+ TextFieldExtraParams text_field;
+ InnerSpinButtonExtraParams inner_spin;
+ ProgressBarExtraParams progress_bar;
+ };
+
+ // Gets our singleton instance.
+ static NativeThemeAndroid* instance();
+
+ // Return the size of the part.
+ gfx::Size GetPartSize(Part part) const;
+
+ // Paint the part to the canvas.
+ void Paint(SkCanvas* canvas,
+ Part part,
+ State state,
+ const gfx::Rect& rect,
+ const ExtraParams& extra);
+
+ protected:
+ NativeThemeAndroid();
+ virtual ~NativeThemeAndroid();
+
+ // Draw the arrow. Used by scrollbar and inner spin button.
+ virtual void PaintArrowButton(SkCanvas* gc,
sky 2011/11/11 00:14:16 Same comment on virtual as earlier. If it's not ne
michaelbai 2011/11/11 00:33:28 Done.
+ const gfx::Rect& rect,
+ Part direction,
+ State state);
+
+ // Draw the checkbox.
+ virtual void PaintCheckbox(SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const ButtonExtraParams& button);
+
+ // Draw the radio.
+ virtual void PaintRadio(SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const ButtonExtraParams& button);
+
+ // Draw the push button.
+ virtual void PaintButton(SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const ButtonExtraParams& button);
+
+ // Draw the text field.
+ virtual void PaintTextField(SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const TextFieldExtraParams& text);
+
+ // Draw the menu list.
+ virtual void PaintMenuList(SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const MenuListExtraParams& menu_list);
+
+ // Draw the slider track.
+ virtual void PaintSliderTrack(SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const SliderExtraParams& slider);
+
+ // Draw the slider thumb.
+ virtual void PaintSliderThumb(SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const SliderExtraParams& slider);
+
+ // Draw the inner spin button.
+ virtual void PaintInnerSpinButton(
+ SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const InnerSpinButtonExtraParams& spin_button);
+
+ // Draw the progress bar.
+ virtual void PaintProgressBar(
+ SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const ProgressBarExtraParams& progress_bar);
+
+private:
+ // Return true if there is intersection between the |canvas| and the given
+ // rectangle.
+ bool IntersectsClipRectInt(SkCanvas* canvas,
+ int x,
+ int y,
+ int w,
+ int h);
+
+ // Draw the dest rectangle with the given bitmap which might be scaled if its
+ // size is not same as target rectangle.
+ 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);
+
+ // Draw the target rectangle with the |bitmap| accroding the given
+ // |tile_scale_x| and |tile_scale_y|
+ 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;
+
+ // Return a new color which comes from the |hsv| by adjusting saturate and
+ // brighten according |saturate_amount| and |brighten_amount|
+ SkColor SaturateAndBrighten(SkScalar* hsv,
+ SkScalar saturate_amount,
+ SkScalar brighten_amount) const;
+
+ 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;
+
+ // Return the |value| if it is between |min| and |max|, otherwise the |min|
+ // or |max| is returned dependent on which is mostly near the |value|.
+ SkScalar Clamp(SkScalar value, SkScalar min, SkScalar max) const;
+
+ // Used to return the color of scrollbar based on the color of thumb and
+ // track.
+ SkColor OutlineColor(SkScalar* hsv1, SkScalar* hsv2) const;
+
+ static unsigned int scrollbar_width_;
sky 2011/11/11 00:14:16 Is there a reason these aren't const too? It doesn
michaelbai 2011/11/11 00:33:28 Done.
+ static unsigned int button_length_;
+ static unsigned int thumb_inactive_color_;
+ static unsigned int thumb_active_color_;
+ static unsigned int track_color_;
+
+ DISALLOW_COPY_AND_ASSIGN(NativeThemeAndroid);
+};
+
+} // namespace gfx
+
+#endif // UI_GFX_NATIVE_THEME_ANDROID_H_
« no previous file with comments | « ui/gfx/canvas_skia_android.cc ('k') | ui/gfx/native_theme_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698