native_theme_aura.h 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. #ifndef UI_NATIVE_THEME_NATIVE_THEME_AURA_H_
  5. #define UI_NATIVE_THEME_NATIVE_THEME_AURA_H_
  6. #include "base/no_destructor.h"
  7. #include "ui/native_theme/native_theme_base.h"
  8. namespace ui {
  9. // Aura implementation of native theme support.
  10. class NATIVE_THEME_EXPORT NativeThemeAura : public NativeThemeBase {
  11. protected:
  12. friend class NativeTheme;
  13. friend class NativeThemeAuraTest;
  14. friend class base::NoDestructor<NativeThemeAura>;
  15. NativeThemeAura(bool use_overlay_scrollbars,
  16. bool should_only_use_dark_colors,
  17. bool is_custom_system_theme = false);
  18. NativeThemeAura(const NativeThemeAura&) = delete;
  19. NativeThemeAura& operator=(const NativeThemeAura&) = delete;
  20. ~NativeThemeAura() override;
  21. static NativeThemeAura* web_instance();
  22. // Overridden from NativeTheme:
  23. SkColor FocusRingColorForBaseColor(SkColor base_color) const override;
  24. // NativeThemeBase:
  25. void PaintMenuPopupBackground(
  26. cc::PaintCanvas* canvas,
  27. const ColorProvider* color_provider,
  28. const gfx::Size& size,
  29. const MenuBackgroundExtraParams& menu_background,
  30. ColorScheme color_scheme) const override;
  31. void PaintMenuItemBackground(cc::PaintCanvas* canvas,
  32. const ColorProvider* color_provider,
  33. State state,
  34. const gfx::Rect& rect,
  35. const MenuItemExtraParams& menu_item,
  36. ColorScheme color_scheme) const override;
  37. void PaintArrowButton(cc::PaintCanvas* gc,
  38. const gfx::Rect& rect,
  39. Part direction,
  40. State state,
  41. ColorScheme color_scheme,
  42. const ScrollbarArrowExtraParams& arrow) const override;
  43. void PaintScrollbarTrack(cc::PaintCanvas* canvas,
  44. Part part,
  45. State state,
  46. const ScrollbarTrackExtraParams& extra_params,
  47. const gfx::Rect& rect,
  48. ColorScheme color_scheme) const override;
  49. void PaintScrollbarThumb(cc::PaintCanvas* canvas,
  50. const ColorProvider* color_provider,
  51. Part part,
  52. State state,
  53. const gfx::Rect& rect,
  54. ScrollbarOverlayColorTheme theme,
  55. ColorScheme color_scheme) const override;
  56. void PaintScrollbarCorner(cc::PaintCanvas* canvas,
  57. State state,
  58. const gfx::Rect& rect,
  59. ColorScheme color_scheme) const override;
  60. gfx::Size GetPartSize(Part part,
  61. State state,
  62. const ExtraParams& extra) const override;
  63. bool SupportsNinePatch(Part part) const override;
  64. gfx::Size GetNinePatchCanvasSize(Part part) const override;
  65. gfx::Rect GetNinePatchAperture(Part part) const override;
  66. private:
  67. static void DrawPartiallyRoundRect(cc::PaintCanvas* canvas,
  68. const gfx::Rect& rect,
  69. const SkScalar upper_left_radius,
  70. const SkScalar upper_right_radius,
  71. const SkScalar lower_right_radius,
  72. const SkScalar lower_left_radius,
  73. const cc::PaintFlags& flags);
  74. bool use_overlay_scrollbars_;
  75. };
  76. } // namespace ui
  77. #endif // UI_NATIVE_THEME_NATIVE_THEME_AURA_H_