| Index: ash/common/frame/caption_buttons/frame_caption_button.cc
|
| diff --git a/ash/common/frame/caption_buttons/frame_caption_button.cc b/ash/common/frame/caption_buttons/frame_caption_button.cc
|
| deleted file mode 100644
|
| index 0d26e0d626890eef84974bd746c8f5cd0d56820e..0000000000000000000000000000000000000000
|
| --- a/ash/common/frame/caption_buttons/frame_caption_button.cc
|
| +++ /dev/null
|
| @@ -1,191 +0,0 @@
|
| -// Copyright 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 "ash/common/frame/caption_buttons/frame_caption_button.h"
|
| -
|
| -#include "ui/gfx/animation/slide_animation.h"
|
| -#include "ui/gfx/animation/throb_animation.h"
|
| -#include "ui/gfx/canvas.h"
|
| -#include "ui/gfx/color_palette.h"
|
| -#include "ui/gfx/paint_vector_icon.h"
|
| -#include "ui/gfx/vector_icons_public.h"
|
| -
|
| -namespace ash {
|
| -
|
| -namespace {
|
| -
|
| -// The duration of the crossfade animation when swapping the button's images.
|
| -const int kSwapImagesAnimationDurationMs = 200;
|
| -
|
| -// The duration of the fade out animation of the old icon during a crossfade
|
| -// animation as a ratio of |kSwapImagesAnimationDurationMs|.
|
| -const float kFadeOutRatio = 0.5f;
|
| -
|
| -// The alpha to draw inactive icons with.
|
| -const float kInactiveIconAlpha = 0.2f;
|
| -
|
| -// The colors and alpha values used for the button background hovered and
|
| -// pressed states.
|
| -// TODO(tdanderson|estade): Request these colors from ThemeProvider.
|
| -const int kHoveredAlpha = 0x14;
|
| -const int kPressedAlpha = 0x24;
|
| -
|
| -} // namespace
|
| -
|
| -// static
|
| -const char FrameCaptionButton::kViewClassName[] = "FrameCaptionButton";
|
| -
|
| -FrameCaptionButton::FrameCaptionButton(views::ButtonListener* listener,
|
| - CaptionButtonIcon icon)
|
| - : CustomButton(listener),
|
| - icon_(icon),
|
| - paint_as_active_(false),
|
| - use_light_images_(false),
|
| - alpha_(255),
|
| - swap_images_animation_(new gfx::SlideAnimation(this)) {
|
| - set_animate_on_state_change(true);
|
| - swap_images_animation_->Reset(1);
|
| -
|
| - // Do not flip the gfx::Canvas passed to the OnPaint() method. The snap left
|
| - // and snap right button icons should not be flipped. The other icons are
|
| - // horizontally symmetrical.
|
| -}
|
| -
|
| -FrameCaptionButton::~FrameCaptionButton() {}
|
| -
|
| -void FrameCaptionButton::SetImage(CaptionButtonIcon icon,
|
| - Animate animate,
|
| - const gfx::VectorIcon& icon_definition) {
|
| - gfx::ImageSkia new_icon_image = gfx::CreateVectorIcon(
|
| - icon_definition,
|
| - use_light_images_ ? SK_ColorWHITE : gfx::kChromeIconGrey);
|
| -
|
| - // The early return is dependent on |animate| because callers use SetImage()
|
| - // with ANIMATE_NO to progress the crossfade animation to the end.
|
| - if (icon == icon_ &&
|
| - (animate == ANIMATE_YES || !swap_images_animation_->is_animating()) &&
|
| - new_icon_image.BackedBySameObjectAs(icon_image_)) {
|
| - return;
|
| - }
|
| -
|
| - if (animate == ANIMATE_YES)
|
| - crossfade_icon_image_ = icon_image_;
|
| -
|
| - icon_ = icon;
|
| - icon_definition_ = &icon_definition;
|
| - icon_image_ = new_icon_image;
|
| -
|
| - if (animate == ANIMATE_YES) {
|
| - swap_images_animation_->Reset(0);
|
| - swap_images_animation_->SetSlideDuration(kSwapImagesAnimationDurationMs);
|
| - swap_images_animation_->Show();
|
| - } else {
|
| - swap_images_animation_->Reset(1);
|
| - }
|
| - PreferredSizeChanged();
|
| - SchedulePaint();
|
| -}
|
| -
|
| -bool FrameCaptionButton::IsAnimatingImageSwap() const {
|
| - return swap_images_animation_->is_animating();
|
| -}
|
| -
|
| -void FrameCaptionButton::SetAlpha(int alpha) {
|
| - if (alpha_ != alpha) {
|
| - alpha_ = alpha;
|
| - SchedulePaint();
|
| - }
|
| -}
|
| -
|
| -gfx::Size FrameCaptionButton::GetPreferredSize() const {
|
| - return size_;
|
| -}
|
| -
|
| -const char* FrameCaptionButton::GetClassName() const {
|
| - return kViewClassName;
|
| -}
|
| -
|
| -void FrameCaptionButton::OnPaint(gfx::Canvas* canvas) {
|
| - SkAlpha bg_alpha = SK_AlphaTRANSPARENT;
|
| - if (hover_animation().is_animating())
|
| - bg_alpha = hover_animation().CurrentValueBetween(0, kHoveredAlpha);
|
| - else if (state() == STATE_HOVERED)
|
| - bg_alpha = kHoveredAlpha;
|
| - else if (state() == STATE_PRESSED)
|
| - bg_alpha = kPressedAlpha;
|
| -
|
| - if (bg_alpha != SK_AlphaTRANSPARENT) {
|
| - canvas->DrawColor(SkColorSetA(
|
| - use_light_images_ ? SK_ColorWHITE : SK_ColorBLACK, bg_alpha));
|
| - }
|
| -
|
| - int icon_alpha = swap_images_animation_->CurrentValueBetween(0, 255);
|
| - int crossfade_icon_alpha = 0;
|
| - if (icon_alpha < static_cast<int>(kFadeOutRatio * 255))
|
| - crossfade_icon_alpha = static_cast<int>(255 - icon_alpha / kFadeOutRatio);
|
| -
|
| - if (crossfade_icon_alpha > 0 && !crossfade_icon_image_.isNull()) {
|
| - gfx::Canvas icon_canvas(icon_image_.size(), canvas->image_scale(), false);
|
| - cc::PaintFlags flags;
|
| - flags.setAlpha(icon_alpha);
|
| - icon_canvas.DrawImageInt(icon_image_, 0, 0, flags);
|
| -
|
| - flags.setAlpha(crossfade_icon_alpha);
|
| - flags.setBlendMode(SkBlendMode::kPlus);
|
| - icon_canvas.DrawImageInt(crossfade_icon_image_, 0, 0, flags);
|
| -
|
| - PaintCentered(canvas, gfx::ImageSkia(icon_canvas.ExtractImageRep()),
|
| - alpha_);
|
| - } else {
|
| - if (!swap_images_animation_->is_animating())
|
| - icon_alpha = alpha_;
|
| - PaintCentered(canvas, icon_image_, icon_alpha);
|
| - }
|
| -}
|
| -
|
| -void FrameCaptionButton::OnGestureEvent(ui::GestureEvent* event) {
|
| - // CustomButton does not become pressed when the user drags off and then back
|
| - // onto the button. Make FrameCaptionButton pressed in this case because this
|
| - // behavior is more consistent with AlternateFrameSizeButton.
|
| - if (event->type() == ui::ET_GESTURE_SCROLL_BEGIN ||
|
| - event->type() == ui::ET_GESTURE_SCROLL_UPDATE) {
|
| - if (HitTestPoint(event->location())) {
|
| - SetState(STATE_PRESSED);
|
| - RequestFocus();
|
| - event->StopPropagation();
|
| - } else {
|
| - SetState(STATE_NORMAL);
|
| - }
|
| - } else if (event->type() == ui::ET_GESTURE_SCROLL_END) {
|
| - if (HitTestPoint(event->location())) {
|
| - SetState(STATE_HOVERED);
|
| - NotifyClick(*event);
|
| - event->StopPropagation();
|
| - }
|
| - }
|
| - CustomButton::OnGestureEvent(event);
|
| -}
|
| -
|
| -void FrameCaptionButton::PaintCentered(gfx::Canvas* canvas,
|
| - const gfx::ImageSkia& to_center,
|
| - int alpha) {
|
| - if (!paint_as_active_) {
|
| - // Paint icons as active when they are hovered over or pressed.
|
| - double inactive_alpha = kInactiveIconAlpha;
|
| - if (hover_animation().is_animating()) {
|
| - inactive_alpha =
|
| - hover_animation().CurrentValueBetween(inactive_alpha, 1.0f);
|
| - } else if (state() == STATE_PRESSED || state() == STATE_HOVERED) {
|
| - inactive_alpha = 1.0f;
|
| - }
|
| - alpha *= inactive_alpha;
|
| - }
|
| -
|
| - cc::PaintFlags flags;
|
| - flags.setAlpha(alpha);
|
| - canvas->DrawImageInt(to_center, (width() - to_center.width()) / 2,
|
| - (height() - to_center.height()) / 2, flags);
|
| -}
|
| -
|
| -} // namespace ash
|
|
|