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

Unified Diff: ui/native_theme/native_theme_aura.cc

Issue 238723004: Paint state transition for overlay 9 patch scrollbars (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 6 months 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/native_theme/native_theme_aura.h ('k') | ui/native_theme/native_theme_base.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/native_theme/native_theme_aura.cc
diff --git a/ui/native_theme/native_theme_aura.cc b/ui/native_theme/native_theme_aura.cc
index ec192d2352b0c246e57c430b1210cdd97fbd0c1c..74fe09b57d357e61274f0ff602f99958c0f6e6d8 100644
--- a/ui/native_theme/native_theme_aura.cc
+++ b/ui/native_theme/native_theme_aura.cc
@@ -208,6 +208,30 @@ void NativeThemeAura::PaintScrollbarThumb(SkCanvas* sk_canvas,
thumb_rect);
}
+void NativeThemeAura::PaintScrollbarThumbStateTransition(
+ SkCanvas* canvas,
+ State startState,
+ State endState,
+ double progress,
+ const gfx::Rect& rect) const {
+ // Only Overlay scrollbars should have state transition animation.
+ DCHECK(IsOverlayScrollbarEnabled());
+ if (!scrollbar_overlay_thumb_painter_) {
+ scrollbar_overlay_thumb_painter_ =
+ CreateDualPainter(kScrollbarOverlayThumbFillImages,
+ kScrollbarOverlayThumbFillAlphas,
+ kScrollbarOverlayThumbStrokeImages,
+ kScrollbarOverlayThumbStrokeAlphas);
+ }
+
+ PaintDualPainterTransition(scrollbar_overlay_thumb_painter_.get(),
+ canvas,
+ rect,
+ startState,
+ endState,
+ progress);
+}
+
void NativeThemeAura::PaintScrollbarCorner(SkCanvas* canvas,
State state,
const gfx::Rect& rect) const {
@@ -269,6 +293,28 @@ void NativeThemeAura::PaintDualPainter(
canvas.get(), rect, dual_painter->stroke_alphas[state]);
}
+void NativeThemeAura::PaintDualPainterTransition(
+ NativeThemeAura::DualPainter* dual_painter,
+ SkCanvas* sk_canvas,
+ const gfx::Rect& rect,
+ State startState,
+ State endState,
+ double progress) const {
+ DCHECK(dual_painter);
+ scoped_ptr<gfx::Canvas> canvas(CreateCanvas(sk_canvas));
+ uint8 fill_alpha = dual_painter->fill_alphas[startState] +
+ (dual_painter->fill_alphas[endState] -
+ dual_painter->fill_alphas[startState]) *
+ progress;
+ uint8 stroke_alpha = dual_painter->stroke_alphas[startState] +
+ (dual_painter->stroke_alphas[endState] -
+ dual_painter->stroke_alphas[startState]) *
+ progress;
+
+ dual_painter->fill_painter->Paint(canvas.get(), rect, fill_alpha);
+ dual_painter->stroke_painter->Paint(canvas.get(), rect, stroke_alpha);
+}
+
NativeThemeAura::DualPainter::DualPainter(
scoped_ptr<NineImagePainter> fill_painter,
const uint8 fill_alphas[kMaxState],
« no previous file with comments | « ui/native_theme/native_theme_aura.h ('k') | ui/native_theme/native_theme_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698