OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/common/extensions/extension_action.h" | 5 #include "chrome/common/extensions/extension_action.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "chrome/common/badge_util.h" | 10 #include "chrome/common/badge_util.h" |
11 #include "googleurl/src/gurl.h" | 11 #include "googleurl/src/gurl.h" |
12 #include "grit/ui_resources.h" | 12 #include "grit/ui_resources.h" |
13 #include "third_party/skia/include/core/SkBitmap.h" | 13 #include "third_party/skia/include/core/SkBitmap.h" |
14 #include "third_party/skia/include/core/SkCanvas.h" | |
15 #include "third_party/skia/include/core/SkDevice.h" | |
16 #include "third_party/skia/include/core/SkPaint.h" | |
17 #include "third_party/skia/include/effects/SkGradientShader.h" | 14 #include "third_party/skia/include/effects/SkGradientShader.h" |
18 #include "ui/base/animation/animation_delegate.h" | 15 #include "ui/base/animation/animation_delegate.h" |
19 #include "ui/base/resource/resource_bundle.h" | 16 #include "ui/base/resource/resource_bundle.h" |
20 #include "ui/gfx/canvas.h" | 17 #include "ui/gfx/canvas.h" |
21 #include "ui/gfx/rect.h" | 18 #include "ui/gfx/rect.h" |
22 | 19 |
23 namespace { | 20 namespace { |
24 | 21 |
25 // Different platforms need slightly different constants to look good. | 22 // Different platforms need slightly different constants to look good. |
26 #if defined(OS_LINUX) && !defined(TOOLKIT_VIEWS) | 23 #if defined(OS_LINUX) && !defined(TOOLKIT_VIEWS) |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 | 90 |
94 ExtensionAction::IconAnimation::IconAnimation( | 91 ExtensionAction::IconAnimation::IconAnimation( |
95 ui::AnimationDelegate* delegate) | 92 ui::AnimationDelegate* delegate) |
96 // 100ms animation at 50fps (so 5 animation frames in total). | 93 // 100ms animation at 50fps (so 5 animation frames in total). |
97 : ui::LinearAnimation(100, 50, delegate) {} | 94 : ui::LinearAnimation(100, 50, delegate) {} |
98 | 95 |
99 ExtensionAction::IconAnimation::~IconAnimation() {} | 96 ExtensionAction::IconAnimation::~IconAnimation() {} |
100 | 97 |
101 const SkBitmap& ExtensionAction::IconAnimation::Apply( | 98 const SkBitmap& ExtensionAction::IconAnimation::Apply( |
102 const SkBitmap& icon) const { | 99 const SkBitmap& icon) const { |
103 DCHECK_GT(icon.width(), 0); | 100 return icon_transform_.set_alpha(CurrentValueBetween(0, 255)) |
104 DCHECK_GT(icon.height(), 0); | 101 .RenderIcon(icon); |
105 | |
106 if (!device_.get() || | |
107 (device_->width() != icon.width()) || | |
108 (device_->height() != icon.height())) { | |
109 device_.reset(new SkDevice( | |
110 SkBitmap::kARGB_8888_Config, icon.width(), icon.height(), true)); | |
111 } | |
112 | |
113 SkCanvas canvas(device_.get()); | |
114 canvas.clear(SK_ColorWHITE); | |
115 SkPaint paint; | |
116 paint.setAlpha(CurrentValueBetween(0, 255)); | |
117 canvas.drawBitmap(icon, 0, 0, &paint); | |
118 return device_->accessBitmap(false); | |
119 } | 102 } |
120 | 103 |
121 void ExtensionAction::IconAnimation::AddObserver( | 104 void ExtensionAction::IconAnimation::AddObserver( |
122 ExtensionAction::IconAnimation::Observer* observer) { | 105 ExtensionAction::IconAnimation::Observer* observer) { |
123 observers_.AddObserver(observer); | 106 observers_.AddObserver(observer); |
124 } | 107 } |
125 | 108 |
126 void ExtensionAction::IconAnimation::RemoveObserver( | 109 void ExtensionAction::IconAnimation::RemoveObserver( |
127 ExtensionAction::IconAnimation::Observer* observer) { | 110 ExtensionAction::IconAnimation::Observer* observer) { |
128 observers_.RemoveObserver(observer); | 111 observers_.RemoveObserver(observer); |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 return (it != icon_animation_.end()) ? it->second->animation()->AsWeakPtr() | 297 return (it != icon_animation_.end()) ? it->second->animation()->AsWeakPtr() |
315 : base::WeakPtr<IconAnimation>(); | 298 : base::WeakPtr<IconAnimation>(); |
316 } | 299 } |
317 | 300 |
318 void ExtensionAction::RunIconAnimation(int tab_id) { | 301 void ExtensionAction::RunIconAnimation(int tab_id) { |
319 IconAnimationWrapper* icon_animation = | 302 IconAnimationWrapper* icon_animation = |
320 new IconAnimationWrapper(this, tab_id); | 303 new IconAnimationWrapper(this, tab_id); |
321 icon_animation_[tab_id] = make_linked_ptr(icon_animation); | 304 icon_animation_[tab_id] = make_linked_ptr(icon_animation); |
322 icon_animation->animation()->Start(); | 305 icon_animation->animation()->Start(); |
323 } | 306 } |
| 307 |
| 308 const SkBitmap& ExtensionAction::RenderIconVisibility(const SkBitmap& icon, |
| 309 int tab_id) const { |
| 310 if (GetIsVisible(tab_id)) |
| 311 return icon; |
| 312 return icon_transform_.set_alpha(63) |
| 313 .RenderIcon(icon); |
| 314 } |
OLD | NEW |