Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Unified Diff: ash/common/frame/caption_buttons/frame_caption_button.cc

Issue 2736573002: chromeos: Move files in //ash/common to //ash, part 2 (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698