Commit 83170d04 authored by Alex Keng's avatar Alex Keng Committed by Commit Bot

Progress: implement the flat end for the value bar

This change implements the flat end for the value bar based on the latest design.
Instead of using drawRoundRect to draw rounded value bar, this change uses
drawRect to draw the flat end and uses clipRRect to have rounded corners
at both ends of the track.

This change also addresses the issue where the value bar is not
rendered correctly when the value is very small (see the associated bug for
details)

Bug: 997873
Change-Id: I2f6e9704e6092ea274c9cb9dbe7b2d7b8a7b8c18
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1858437Reviewed-by: default avatarKent Tamura <tkent@chromium.org>
Reviewed-by: default avatarElly Fong-Jones <ellyjones@chromium.org>
Commit-Queue: Alex Keng <shihken@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#705826}
parent eae40982
...@@ -846,6 +846,12 @@ void NativeThemeAura::PaintProgressBar( ...@@ -846,6 +846,12 @@ void NativeThemeAura::PaintProgressBar(
canvas->drawRoundRect(track_rect, kSliderTrackBorderRadius, canvas->drawRoundRect(track_rect, kSliderTrackBorderRadius,
kSliderTrackBorderRadius, flags); kSliderTrackBorderRadius, flags);
// Clip the track to create rounded corners for the value bar.
SkRRect rounded_rect;
rounded_rect.setRectXY(track_rect, kSliderTrackBorderRadius,
kSliderTrackBorderRadius);
canvas->clipRRect(rounded_rect, SkClipOp::kIntersect, true);
// Paint the progress value bar. // Paint the progress value bar.
const SkScalar kMinimumProgressValueWidth = 2; const SkScalar kMinimumProgressValueWidth = 2;
SkScalar adjusted_width = progress_bar.value_rect_width; SkScalar adjusted_width = progress_bar.value_rect_width;
...@@ -857,8 +863,12 @@ void NativeThemeAura::PaintProgressBar( ...@@ -857,8 +863,12 @@ void NativeThemeAura::PaintProgressBar(
SkRect value_rect = SkRect value_rect =
AlignSliderTrack(original_value_rect, slider, false, track_height); AlignSliderTrack(original_value_rect, slider, false, track_height);
flags.setColor(GetControlColor(kAccent, color_scheme)); flags.setColor(GetControlColor(kAccent, color_scheme));
canvas->drawRoundRect(value_rect, kSliderTrackBorderRadius, if (progress_bar.determinate) {
kSliderTrackBorderRadius, flags); canvas->drawRect(value_rect, flags);
} else {
canvas->drawRoundRect(value_rect, kSliderTrackBorderRadius,
kSliderTrackBorderRadius, flags);
}
// Paint the border. // Paint the border.
flags.setStyle(cc::PaintFlags::kStroke_Style); flags.setStyle(cc::PaintFlags::kStroke_Style);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment