| 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],
|
|
|