Index: chrome/browser/ui/toolbar/app_menu_icon_painter.cc |
diff --git a/chrome/browser/ui/toolbar/app_menu_icon_painter.cc b/chrome/browser/ui/toolbar/app_menu_icon_painter.cc |
deleted file mode 100644 |
index da3297323b220152fdb707c56aaac6f3a74f1ab6..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/toolbar/app_menu_icon_painter.cc |
+++ /dev/null |
@@ -1,155 +0,0 @@ |
-// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/ui/toolbar/app_menu_icon_painter.h" |
- |
-#include <algorithm> |
- |
-#include "chrome/grit/theme_resources.h" |
-#include "ui/base/theme_provider.h" |
-#include "ui/gfx/animation/multi_animation.h" |
-#include "ui/gfx/canvas.h" |
-#include "ui/gfx/geometry/rect.h" |
-#include "ui/gfx/image/image_skia.h" |
- |
-namespace { |
- |
-// The app menu icon is made up of this many bars stacked vertically. |
-const int kBarCount = 3; |
- |
-// |value| is the animation progress from 0 to 1. |index| is the index of the |
-// bar being drawn. This function returns a new progress value (from 0 to 1) |
-// such that bars appear staggered. |
-double GetStaggeredValue(double value, int index) { |
- // When animating the app menu icon's bars the bars are staggered by this |
- // factor. |
- const double kStaggerFactor = 0.15; |
- double maxStaggeredValue = 1.0 - (kBarCount - 1) * kStaggerFactor; |
- double staggeredValue = (value - kStaggerFactor * index) / maxStaggeredValue; |
- return std::min(1.0, std::max(0.0, staggeredValue)); |
-} |
- |
-} // namespace |
- |
-AppMenuIconPainter::AppMenuIconPainter(Delegate* delegate) |
- : delegate_(delegate), severity_(SEVERITY_NONE) {} |
- |
-AppMenuIconPainter::~AppMenuIconPainter() {} |
- |
-void AppMenuIconPainter::SetSeverity(Severity severity, bool animate) { |
- if (severity_ == severity) |
- return; |
- |
- severity_ = severity; |
- delegate_->ScheduleAppMenuIconPaint(); |
- animation_.reset(); |
- if (severity_ == SEVERITY_NONE || !animate) |
- return; |
- |
- gfx::MultiAnimation::Parts parts; |
- // Animate the bars left to right. |
- parts.push_back(gfx::MultiAnimation::Part(1300, gfx::Tween::LINEAR)); |
- // Fade out animation. |
- parts.push_back(gfx::MultiAnimation::Part(1000, gfx::Tween::EASE_IN)); |
- // Again, animate the bars left to right. |
- parts.push_back(gfx::MultiAnimation::Part(1300, gfx::Tween::LINEAR)); |
- |
- animation_.reset( |
- new gfx::MultiAnimation(parts, base::TimeDelta::FromMilliseconds(40))); |
- animation_->set_delegate(this); |
- animation_->set_continuous(false); |
- animation_->Start(); |
-} |
- |
-void AppMenuIconPainter::Paint(gfx::Canvas* canvas, |
- const ui::ThemeProvider* theme_provider, |
- const gfx::Rect& rect, |
- BezelType bezel_type) { |
- gfx::Point center = rect.CenterPoint(); |
- |
- // Bezel. |
- int resource_id = 0; |
- switch (bezel_type) { |
- case BEZEL_NONE: |
- break; |
- case BEZEL_HOVER: |
- resource_id = IDR_TOOLBAR_BEZEL_HOVER; |
- break; |
- case BEZEL_PRESSED: |
- resource_id = IDR_TOOLBAR_BEZEL_PRESSED; |
- break; |
- } |
- |
- if (resource_id) { |
- gfx::ImageSkia* image = theme_provider->GetImageSkiaNamed(resource_id); |
- canvas->DrawImageInt(*image, center.x() - image->width() / 2, |
- center.y() - image->height() / 2); |
- } |
- |
- // The bars with no color. |
- { |
- gfx::ImageSkia* image = theme_provider->GetImageSkiaNamed(IDR_TOOLS_BAR); |
- int x = center.x() - image->width() / 2; |
- int y = center.y() - image->height() * kBarCount / 2; |
- for (int i = 0; i < kBarCount; ++i) { |
- canvas->DrawImageInt(*image, x, y); |
- y += image->height(); |
- } |
- } |
- |
- // The bars with color based on severity. |
- int severity_image_id = GetCurrentSeverityImageID(); |
- if (severity_image_id) { |
- gfx::ImageSkia* image = |
- theme_provider->GetImageSkiaNamed(severity_image_id); |
- int x = center.x() - image->width() / 2; |
- int y = center.y() - image->height() * kBarCount / 2; |
- for (int i = 0; i < kBarCount; ++i) { |
- SkPaint paint; |
- int width = image->width(); |
- |
- if (animation_ && animation_->is_animating()) { |
- if (animation_->current_part_index() % 2 == 1) { |
- // Fade out. |
- int alpha = animation_->CurrentValueBetween(0xFF, 0); |
- if (alpha == 0) |
- continue; |
- paint.setAlpha(alpha); |
- } else { |
- // Stagger the widths. |
- width = image->width() * |
- GetStaggeredValue(animation_->GetCurrentValue(), i); |
- if (width == 0) |
- continue; |
- } |
- } |
- |
- canvas->DrawImageInt(*image, 0, 0, width, image->height(), x, y, width, |
- image->height(), false, paint); |
- y += image->height(); |
- } |
- } |
- |
- if (!badge_.isNull()) |
- canvas->DrawImageInt(badge_, 0, 0); |
-} |
- |
-void AppMenuIconPainter::AnimationProgressed(const gfx::Animation* animation) { |
- delegate_->ScheduleAppMenuIconPaint(); |
-} |
- |
-int AppMenuIconPainter::GetCurrentSeverityImageID() const { |
- switch (severity_) { |
- case SEVERITY_NONE: |
- return 0; |
- case SEVERITY_LOW: |
- return IDR_TOOLS_BAR_LOW; |
- case SEVERITY_MEDIUM: |
- return IDR_TOOLS_BAR_MEDIUM; |
- case SEVERITY_HIGH: |
- return IDR_TOOLS_BAR_HIGH; |
- } |
- NOTREACHED(); |
- return 0; |
-} |