| Index: chrome/browser/ui/tabs/tab_audio_indicator.cc
|
| diff --git a/chrome/browser/ui/tabs/tab_audio_indicator.cc b/chrome/browser/ui/tabs/tab_audio_indicator.cc
|
| deleted file mode 100644
|
| index a1336408c9eac9bf9d324dfc3258c7caf0e1af0b..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/tabs/tab_audio_indicator.cc
|
| +++ /dev/null
|
| @@ -1,165 +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/tabs/tab_audio_indicator.h"
|
| -
|
| -#include "grit/theme_resources.h"
|
| -#include "ui/base/resource/resource_bundle.h"
|
| -#include "ui/gfx/animation/animation_container.h"
|
| -#include "ui/gfx/animation/linear_animation.h"
|
| -#include "ui/gfx/canvas.h"
|
| -#include "ui/gfx/rect.h"
|
| -#include "ui/gfx/skia_util.h"
|
| -
|
| -namespace {
|
| -
|
| -// The number of columns to draw for the equalizer graphic.
|
| -const size_t kEqualizerColumnCount = 3;
|
| -
|
| -// The equalizer cycles between these frames. An equalizer frame is 2 columns
|
| -// where each column ranges from 0 to 4.
|
| -const size_t kEqualizerFrames[][kEqualizerColumnCount] = {
|
| - { 1, 1, 1 },
|
| - { 1, 2, 2 },
|
| - { 2, 2, 3 },
|
| - { 3, 3, 2 },
|
| - { 3, 2, 1 },
|
| - { 2, 1, 2 },
|
| - { 1, 2, 3 },
|
| - { 2, 1, 2 },
|
| - { 3, 2, 1 },
|
| - { 3, 2, 1 },
|
| - { 2, 3, 2 },
|
| - { 1, 2, 3 },
|
| - { 2, 1, 2 },
|
| -};
|
| -
|
| -// The space between equalizer levels.
|
| -const int kEqualizerColumnPadding = 1;
|
| -
|
| -// The duration of each equalizer frame.
|
| -const size_t kAnimationCycleDurationMs = 250;
|
| -
|
| -// The duration of the "ending" animation once audio stops playing.
|
| -const size_t kAnimationEndingDurationMs = 1000;
|
| -
|
| -// Target frames per second. In reality fewer frames are drawn because the
|
| -// equalizer levels change slowly.
|
| -const int kFPS = 15;
|
| -
|
| -} // namespace
|
| -
|
| -TabAudioIndicator::TabAudioIndicator(Delegate* delegate)
|
| - : delegate_(delegate),
|
| - frame_index_(0),
|
| - state_(STATE_NOT_ANIMATING) {
|
| -}
|
| -
|
| -TabAudioIndicator::~TabAudioIndicator() {
|
| -}
|
| -
|
| -void TabAudioIndicator::SetAnimationContainer(
|
| - gfx::AnimationContainer* animation_container) {
|
| - animation_container_ = animation_container;
|
| -}
|
| -
|
| -void TabAudioIndicator::SetIsPlayingAudio(bool is_playing_audio) {
|
| - if (is_playing_audio && state_ != STATE_ANIMATING) {
|
| - state_ = STATE_ANIMATING;
|
| - animation_.reset(
|
| - new gfx::LinearAnimation(kAnimationCycleDurationMs, kFPS, this));
|
| - animation_->SetContainer(animation_container_.get());
|
| - animation_->Start();
|
| - } else if (!is_playing_audio && state_ == STATE_ANIMATING) {
|
| - state_ = STATE_ANIMATION_ENDING;
|
| - animation_.reset(
|
| - new gfx::LinearAnimation(kAnimationEndingDurationMs, kFPS, this));
|
| - animation_->SetContainer(animation_container_.get());
|
| - animation_->Start();
|
| - }
|
| -}
|
| -
|
| -bool TabAudioIndicator::IsAnimating() {
|
| - return state_ != STATE_NOT_ANIMATING;
|
| -}
|
| -
|
| -void TabAudioIndicator::Paint(gfx::Canvas* canvas, const gfx::Rect& rect) {
|
| - canvas->Save();
|
| - canvas->ClipRect(rect);
|
| -
|
| - // Draw 3 equalizer columns. |IDR_AUDIO_EQUALIZER_COLUMN| is a column of the
|
| - // equalizer with 4 levels. The current level is between 0 and 4 so the
|
| - // image is shifted down and then drawn.
|
| - if (state_ != STATE_NOT_ANIMATING) {
|
| - ui::ResourceBundle& rb = ResourceBundle::GetSharedInstance();
|
| - gfx::ImageSkia* image(rb.GetImageSkiaNamed(IDR_AUDIO_EQUALIZER_COLUMN));
|
| - int x = rect.right();
|
| - std::vector<int> levels = GetCurrentEqualizerLevels();
|
| - for (int i = levels.size() - 1; i >= 0; --i) {
|
| - x -= image->width();
|
| - if (levels[i] == 0)
|
| - continue;
|
| -
|
| - // Shift the image down by the level.
|
| - int y = rect.bottom() - levels[i] * 2;
|
| - canvas->DrawImageInt(*image, x, y);
|
| -
|
| - // Clip the equalizer column so the favicon doesn't obscure it.
|
| - gfx::Rect equalizer_rect(x, y, image->width(), image->height());
|
| - canvas->sk_canvas()->clipRect(
|
| - gfx::RectToSkRect(equalizer_rect), SkRegion::kDifference_Op);
|
| -
|
| - // Padding is baked into both sides of the icons so overlap the images.
|
| - x += kEqualizerColumnPadding;
|
| - }
|
| -
|
| - // Cache the levels that were just drawn. This is used to prevent
|
| - // unnecessary drawing when animation progress doesn't result in equalizer
|
| - // levels changing.
|
| - last_displayed_equalizer_levels_ = levels;
|
| - }
|
| -
|
| - if (!favicon_.isNull()) {
|
| - int dst_x = rect.x() - (favicon_.width() - rect.width()) / 2;
|
| - int dst_y = rect.y() - (favicon_.height()- rect.height()) / 2;
|
| - canvas->DrawImageInt(favicon_, dst_x, dst_y);
|
| - }
|
| -
|
| - canvas->Restore();
|
| -}
|
| -
|
| -void TabAudioIndicator::AnimationProgressed(const gfx::Animation* animation) {
|
| - std::vector<int> levels = GetCurrentEqualizerLevels();
|
| - if (last_displayed_equalizer_levels_ != levels)
|
| - delegate_->ScheduleAudioIndicatorPaint();
|
| -}
|
| -
|
| -void TabAudioIndicator::AnimationEnded(const gfx::Animation* animation) {
|
| - if (state_ == STATE_ANIMATING) {
|
| - // The current equalizer frame animation has finished. Start animating the
|
| - // next frame.
|
| - frame_index_ = (frame_index_ + 1) % arraysize(kEqualizerFrames);
|
| - animation_->Start();
|
| - } else if (state_ == STATE_ANIMATION_ENDING) {
|
| - // The "ending" animation has stopped. Update the tab state so that the UI
|
| - // can update the tab icon.
|
| - state_ = STATE_NOT_ANIMATING;
|
| - delegate_->ScheduleAudioIndicatorPaint();
|
| - }
|
| -}
|
| -
|
| -std::vector<int> TabAudioIndicator::GetCurrentEqualizerLevels() const {
|
| - int next_frame_index = (frame_index_ + 1) % arraysize(kEqualizerFrames);
|
| - std::vector<int> levels;
|
| - // For all 2 columsn of the equalizer, tween between the current equalizer
|
| - // level and the target equalizer level.
|
| - for (size_t i = 0; i < kEqualizerColumnCount; ++i) {
|
| - int start = kEqualizerFrames[frame_index_][i];
|
| - int end = state_ == STATE_ANIMATION_ENDING
|
| - ? 0
|
| - : kEqualizerFrames[next_frame_index][i];
|
| - levels.push_back(animation_->CurrentValueBetween(start, end));
|
| - }
|
| - return levels;
|
| -}
|
|
|