Index: chrome/browser/chromeos/display/touch_calibrator/touch_calibrator_view.cc |
diff --git a/chrome/browser/chromeos/display/touch_calibrator/touch_calibrator_view.cc b/chrome/browser/chromeos/display/touch_calibrator/touch_calibrator_view.cc |
index 07dc0eae2dead2ea2a3e003bc3b8421217dcc1f2..4d155a6316751c33aa8231b8d03b95732bcb3cd3 100644 |
--- a/chrome/browser/chromeos/display/touch_calibrator/touch_calibrator_view.cc |
+++ b/chrome/browser/chromeos/display/touch_calibrator/touch_calibrator_view.cc |
@@ -10,7 +10,6 @@ |
#include "ui/aura/window.h" |
#include "ui/base/resource/resource_bundle.h" |
#include "ui/gfx/animation/linear_animation.h" |
-#include "ui/gfx/animation/throb_animation.h" |
#include "ui/gfx/canvas.h" |
#include "ui/strings/grit/ui_strings.h" |
#include "ui/views/controls/label.h" |
@@ -30,28 +29,6 @@ |
constexpr int kExitLabelWidth = 300; |
constexpr int kExitLabelHeight = 20; |
-constexpr int kHintBoxWidth = 298; |
-constexpr int kHintBoxHeight = 180; |
-constexpr int kHintBoxLabelTextSize = 5; |
-constexpr int kHintBoxSublabelTextSize = 3; |
- |
-constexpr int kThrobberCircleViewWidth = 128; |
-constexpr float kThrobberCircleRadiusFactor = 3.f / 8.f; |
- |
-constexpr int kTouchPointViewOffset = 100; |
- |
-constexpr int kTapLabelHeight = 48; |
- |
-const SkColor kHintLabelTextColor = SK_ColorBLACK; |
-const SkColor kHintSublabelTextColor = SkColorSetARGBInline(255, 161, 161, 161); |
- |
-const SkColor kInnerCircleColor = SK_ColorWHITE; |
-const SkColor kOuterCircleColor = SkColorSetA(kInnerCircleColor, 128); |
- |
-constexpr int kCircleAnimationDurationMs = 900; |
- |
-constexpr int kHintRectBorderRadius = 10; |
- |
constexpr float kBackgroundFinalOpacity = 0.75f; |
// Returns the initialization params for the widget that contains the touch |
@@ -70,230 +47,13 @@ |
return params; |
} |
-// Returns the size of bounding box required for |text| of given |font_list|. |
-gfx::Size GetSizeForString(const base::string16& text, |
- const gfx::FontList& font_list) { |
- int height, width; |
- gfx::Canvas::SizeStringInt(text, font_list, &width, &height, 0, 0); |
- return gfx::Size(width, height); |
-} |
- |
} // namespace |
- |
-// Creates a throbbing animated view with two concentric circles. The radius of |
-// the inner circle is fixed while that of the outer circle oscillates between a |
-// min and max radius. The animation takes |animation_duration| milliseconds |
-// to complete. The center of these circles are at the center of the view |
-// element. |
-class CircularThrobberView : public views::View, public gfx::AnimationDelegate { |
- public: |
- CircularThrobberView(int width, |
- const SkColor& inner_circle_color, |
- const SkColor& outer_circle_color, |
- int animation_duration); |
- ~CircularThrobberView() override; |
- |
- // views::View overrides: |
- void OnPaint(gfx::Canvas* canvas) override; |
- |
- // gfx::AnimationDelegate overrides: |
- void AnimationProgressed(const gfx::Animation* animation) override; |
- |
- private: |
- // Radius of the inner circle. |
- const int inner_radius_; |
- |
- // Current radius of the outer circle. |
- int outer_radius_; |
- |
- // Minimum radius for outer animated circle. |
- const int smallest_radius_animated_circle_; |
- |
- // Maximum radius for outer animated circle. |
- const int largest_radius_animated_circle_; |
- |
- SkPaint inner_circle_paint_; |
- SkPaint outer_circle_paint_; |
- |
- std::unique_ptr<gfx::ThrobAnimation> animation_; |
- |
- // Center of the concentric circles. |
- const gfx::Point center_; |
- |
- DISALLOW_COPY_AND_ASSIGN(CircularThrobberView); |
-}; |
- |
-CircularThrobberView::CircularThrobberView(int width, |
- const SkColor& inner_circle_color, |
- const SkColor& outer_circle_color, |
- int animation_duration) |
- : inner_radius_(width / 4), |
- outer_radius_(inner_radius_), |
- smallest_radius_animated_circle_(width * kThrobberCircleRadiusFactor), |
- largest_radius_animated_circle_(width / 2), |
- center_(gfx::Point(width / 2, width / 2)) { |
- SetSize(gfx::Size(width, width)); |
- |
- inner_circle_paint_.setColor(inner_circle_color); |
- inner_circle_paint_.setStyle(SkPaint::kFill_Style); |
- inner_circle_paint_.setFlags(SkPaint::kAntiAlias_Flag); |
- |
- outer_circle_paint_.setColor(outer_circle_color); |
- outer_circle_paint_.setStyle(SkPaint::kFill_Style); |
- outer_circle_paint_.setFlags(SkPaint::kAntiAlias_Flag); |
- |
- animation_.reset(new gfx::ThrobAnimation(this)); |
- animation_->SetThrobDuration(animation_duration); |
- animation_->StartThrobbing(-1); |
- |
- SchedulePaint(); |
-} |
- |
-CircularThrobberView::~CircularThrobberView() {} |
- |
-void CircularThrobberView::OnPaint(gfx::Canvas* canvas) { |
- canvas->DrawCircle(center_, outer_radius_, outer_circle_paint_); |
- canvas->DrawCircle(center_, inner_radius_, inner_circle_paint_); |
-} |
- |
-void CircularThrobberView::AnimationProgressed( |
- const gfx::Animation* animation) { |
- if (animation != animation_.get()) |
- return; |
- outer_radius_ = animation->CurrentValueBetween( |
- smallest_radius_animated_circle_, largest_radius_animated_circle_); |
- SchedulePaint(); |
-} |
- |
-// Circular _________________________________ |
-// Throbber | | |
-// View | | |
-// ___________ | | |
-// | | | | |
-// | | | | |
-// | . | | Hint Box | |
-// | | | | |
-// |___________| | | |
-// | | |
-// | | |
-// |_________________________________| |
-// |
-// This view is set next to the throbber circle view such that their centers |
-// align. The hint box has a label text and a sublabel text to assist the |
-// user by informing them about the next step in the calibration process. |
-class HintBox : public views::View { |
- public: |
- HintBox(const gfx::Rect& bounds, int border_radius); |
- ~HintBox() override; |
- |
- // views::View overrides: |
- void OnPaint(gfx::Canvas* canvas) override; |
- |
- void SetLabel(const base::string16& text, const SkColor& color); |
- void SetSubLabel(const base::string16& text, const SkColor& color); |
- |
- private: |
- base::string16 label_text_; |
- base::string16 sublabel_text_; |
- |
- SkColor label_color_; |
- SkColor sublabel_color_; |
- |
- const int border_radius_; |
- |
- int horizontal_offset_; |
- |
- gfx::FontList label_font_list_; |
- gfx::FontList sublabel_font_list_; |
- |
- gfx::Rect label_text_bounds_; |
- gfx::Rect sublabel_text_bounds_; |
- |
- SkPaint paint_; |
- |
- DISALLOW_COPY_AND_ASSIGN(HintBox); |
-}; |
- |
-HintBox::HintBox(const gfx::Rect& bounds, int border_radius) |
- : border_radius_(border_radius) { |
- SetBoundsRect(bounds); |
- |
- paint_.setColor(SK_ColorWHITE); |
- paint_.setStyle(SkPaint::kFill_Style); |
- paint_.setFlags(SkPaint::kAntiAlias_Flag); |
- |
- horizontal_offset_ = width() * 0.08f; |
- int top_offset = horizontal_offset_; |
- int line_gap = height() * 0.018f; |
- int label_height = height() * 0.11f; |
- |
- label_text_bounds_.SetRect(horizontal_offset_, top_offset, 0, label_height); |
- |
- top_offset += label_text_bounds_.height() + line_gap; |
- |
- sublabel_text_bounds_.SetRect(horizontal_offset_, top_offset, 0, |
- label_height); |
-} |
- |
-HintBox::~HintBox() {} |
- |
-void HintBox::SetLabel(const base::string16& text, const SkColor& color) { |
- label_text_ = text; |
- label_color_ = color; |
- |
- label_font_list_ = |
- ui::ResourceBundle::GetSharedInstance().GetFontListWithDelta( |
- kHintBoxLabelTextSize, gfx::Font::FontStyle::NORMAL, |
- gfx::Font::Weight::NORMAL); |
- |
- // Adjust size of label bounds based on text and font. |
- gfx::Size size = GetSizeForString(label_text_, label_font_list_); |
- label_text_bounds_.set_size( |
- gfx::Size(size.width(), label_text_bounds_.height())); |
- |
- // Check if the width of hint box needs to be updated. |
- int minimum_expected_width = size.width() + 2 * horizontal_offset_; |
- if (minimum_expected_width > width()) |
- SetSize(gfx::Size(minimum_expected_width, height())); |
-} |
- |
-void HintBox::SetSubLabel(const base::string16& text, const SkColor& color) { |
- sublabel_text_ = text; |
- sublabel_color_ = color; |
- |
- sublabel_font_list_ = |
- ui::ResourceBundle::GetSharedInstance().GetFontListWithDelta( |
- kHintBoxSublabelTextSize, gfx::Font::FontStyle::NORMAL, |
- gfx::Font::Weight::NORMAL); |
- |
- // Adjust size of sublabel label bounds based on text and font. |
- gfx::Size size = GetSizeForString(sublabel_text_, sublabel_font_list_); |
- sublabel_text_bounds_.set_size( |
- gfx::Size(size.width(), sublabel_text_bounds_.height())); |
- |
- // Check if the width of hint box needs to be updated. |
- int minimum_expected_width = size.width() + 2 * horizontal_offset_; |
- if (minimum_expected_width > width()) |
- SetSize(gfx::Size(minimum_expected_width, height())); |
-} |
- |
-void HintBox::OnPaint(gfx::Canvas* canvas) { |
- canvas->DrawRoundRect(GetLocalBounds(), border_radius_, paint_); |
- canvas->DrawStringRectWithFlags(label_text_, label_font_list_, label_color_, |
- label_text_bounds_, gfx::Canvas::NO_ELLIPSIS); |
- canvas->DrawStringRectWithFlags(sublabel_text_, sublabel_font_list_, |
- sublabel_color_, sublabel_text_bounds_, |
- gfx::Canvas::NO_ELLIPSIS); |
-} |
TouchCalibratorView::TouchCalibratorView(const display::Display& target_display, |
bool is_primary_view) |
: display_(target_display), |
is_primary_view_(is_primary_view), |
- exit_label_(nullptr), |
- throbber_circle_(nullptr), |
- hint_box_view_(nullptr), |
- touch_point_view_(nullptr) { |
+ exit_label_(nullptr) { |
aura::Window* root = ash::Shell::GetInstance() |
->window_tree_host_manager() |
->GetRootWindowForDisplayId(display_.id()); |
@@ -340,52 +100,6 @@ |
exit_label_->SetVisible(false); |
AddChildView(exit_label_); |
- |
- // If this is not the screen that is being calibrated, then this is all we |
- // need to display. |
- if (!is_primary_view_) |
- return; |
- |
- // Initialize the touch point view that contains the animated circle that the |
- // user needs to tap. |
- const int kTouchPointViewHeight = kThrobberCircleViewWidth + kTapLabelHeight; |
- |
- throbber_circle_ = |
- new CircularThrobberView(kThrobberCircleViewWidth, kInnerCircleColor, |
- kOuterCircleColor, kCircleAnimationDurationMs); |
- throbber_circle_->SetPosition(gfx::Point(0, 0)); |
- |
- touch_point_view_ = new views::View; |
- touch_point_view_->SetBounds(kTouchPointViewOffset, kTouchPointViewOffset, |
- kThrobberCircleViewWidth, kTouchPointViewHeight); |
- touch_point_view_->SetVisible(false); |
- |
- touch_point_view_->AddChildView(throbber_circle_); |
- |
- AddChildView(touch_point_view_); |
- |
- // Initialize the Hint Box view. |
- base::string16 hint_label_text = |
- rb.GetLocalizedString(IDS_DISPLAY_TOUCH_CALIBRATION_HINT_LABEL_TEXT); |
- base::string16 hint_sublabel_text = |
- rb.GetLocalizedString(IDS_DISPLAY_TOUCH_CALIBRATION_HINT_SUBLABEL_TEXT); |
- |
- int tpv_width = touch_point_view_->width(); |
- |
- gfx::Size size(kHintBoxWidth, kHintBoxHeight); |
- |
- gfx::Point position( |
- touch_point_view_->x() + tpv_width * 1.2f, |
- touch_point_view_->y() + (tpv_width / 2.f) - (size.height() / 2.f)); |
- |
- HintBox* hint_box = |
- new HintBox(gfx::Rect(position, size), kHintRectBorderRadius); |
- hint_box->SetVisible(false); |
- hint_box->SetLabel(hint_label_text, kHintLabelTextColor); |
- hint_box->SetSubLabel(hint_sublabel_text, kHintSublabelTextColor); |
- hint_box_view_ = hint_box; |
- |
- AddChildView(hint_box_view_); |
} |
void TouchCalibratorView::OnPaint(gfx::Canvas* canvas) { |
@@ -423,10 +137,6 @@ |
case BACKGROUND_FADING_IN: |
exit_label_->SetVisible(true); |
state_ = is_primary_view_ ? DISPLAY_POINT_1 : CALIBRATION_COMPLETE; |
- if (is_primary_view_) { |
- touch_point_view_->SetVisible(true); |
- hint_box_view_->SetVisible(true); |
- } |
break; |
default: |
break; |