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/browser/ui/views/location_bar/content_setting_image_view.h" | 5 #include "chrome/browser/ui/views/location_bar/content_setting_image_view.h" |
6 | 6 |
7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
8 #include "chrome/browser/content_settings/tab_specific_content_settings.h" | 8 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
9 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" | 9 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" |
10 #include "chrome/browser/ui/content_settings/content_setting_image_model.h" | 10 #include "chrome/browser/ui/content_settings/content_setting_image_model.h" |
11 #include "chrome/browser/ui/views/content_setting_bubble_contents.h" | 11 #include "chrome/browser/ui/views/content_setting_bubble_contents.h" |
12 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" | 12 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" |
13 #include "grit/theme_resources.h" | 13 #include "grit/theme_resources.h" |
14 #include "ui/base/l10n/l10n_util.h" | 14 #include "ui/base/l10n/l10n_util.h" |
15 #include "ui/base/resource/resource_bundle.h" | 15 #include "ui/base/resource/resource_bundle.h" |
16 #include "ui/gfx/color_utils.h" | 16 #include "ui/gfx/color_utils.h" |
17 #include "ui/views/controls/image_view.h" | 17 #include "ui/views/controls/image_view.h" |
18 #include "ui/views/controls/label.h" | 18 #include "ui/views/controls/label.h" |
19 #include "ui/views/widget/widget.h" | 19 #include "ui/views/widget/widget.h" |
20 | 20 |
21 | 21 |
22 namespace { | 22 namespace { |
23 const int kBackgroundImages[] = { | 23 const int kBackgroundImages[] = IMAGE_GRID(IDR_OMNIBOX_CONTENT_SETTING_BUBBLE); |
24 IDR_OMNIBOX_CONTENT_SETTING_BUBBLE_LEFT, | |
25 IDR_OMNIBOX_CONTENT_SETTING_BUBBLE_CENTER, | |
26 IDR_OMNIBOX_CONTENT_SETTING_BUBBLE_RIGHT, | |
27 }; | |
28 const int kStayOpenTimeMS = 3200; // Time spent with animation fully open. | 24 const int kStayOpenTimeMS = 3200; // Time spent with animation fully open. |
29 } | 25 } |
30 | 26 |
31 | 27 |
32 // static | 28 // static |
33 const int ContentSettingImageView::kOpenTimeMS = 150; | 29 const int ContentSettingImageView::kOpenTimeMS = 150; |
34 const int ContentSettingImageView::kAnimationDurationMS = | 30 const int ContentSettingImageView::kAnimationDurationMS = |
35 (kOpenTimeMS * 2) + kStayOpenTimeMS; | 31 (kOpenTimeMS * 2) + kStayOpenTimeMS; |
36 | 32 |
37 ContentSettingImageView::ContentSettingImageView( | 33 ContentSettingImageView::ContentSettingImageView( |
38 ContentSettingsType content_type, | 34 ContentSettingsType content_type, |
39 LocationBarView* parent, | 35 LocationBarView* parent, |
40 const gfx::Font& font, | 36 const gfx::Font& font, |
41 int font_y_offset, | 37 int font_y_offset, |
42 SkColor text_color, | 38 SkColor text_color, |
43 SkColor parent_background_color) | 39 SkColor parent_background_color) |
44 : parent_(parent), | 40 : parent_(parent), |
45 content_setting_image_model_( | 41 content_setting_image_model_( |
46 ContentSettingImageModel::CreateContentSettingImageModel( | 42 ContentSettingImageModel::CreateContentSettingImageModel( |
47 content_type)), | 43 content_type)), |
48 background_painter_(new views::HorizontalPainter(kBackgroundImages)), | 44 background_painter_( |
| 45 views::Painter::CreateImageGridPainter(kBackgroundImages)), |
49 icon_(new views::ImageView), | 46 icon_(new views::ImageView), |
50 text_label_(new views::Label), | 47 text_label_(new views::Label), |
51 slide_animator_(this), | 48 slide_animator_(this), |
52 pause_animation_(false), | 49 pause_animation_(false), |
53 pause_animation_state_(0.0), | 50 pause_animation_state_(0.0), |
54 bubble_widget_(NULL) { | 51 bubble_widget_(NULL) { |
55 icon_->SetHorizontalAlignment(views::ImageView::LEADING); | 52 icon_->SetHorizontalAlignment(views::ImageView::LEADING); |
56 AddChildView(icon_); | 53 AddChildView(icon_); |
57 | 54 |
58 text_label_->SetVisible(false); | 55 text_label_->SetVisible(false); |
59 text_label_->set_border( | 56 text_label_->set_border( |
60 views::Border::CreateEmptyBorder(font_y_offset, 0, 0, 0)); | 57 views::Border::CreateEmptyBorder(font_y_offset, 0, 0, 0)); |
61 text_label_->SetFont(font); | 58 text_label_->SetFont(font); |
62 text_label_->SetEnabledColor(text_color); | 59 text_label_->SetEnabledColor(text_color); |
63 // Calculate the actual background color for the label. The background images | 60 // Calculate the actual background color for the label. The background images |
64 // are painted atop |parent_background_color|. We grab the color of the | 61 // are painted atop |parent_background_color|. We grab the color of the |
65 // middle pixel of the middle image of the background, which we treat as the | 62 // middle pixel of the middle image of the background, which we treat as the |
66 // representative color of the entire background (reasonable, given the | 63 // representative color of the entire background (reasonable, given the |
67 // current appearance of these images). Then we alpha-blend it over the | 64 // current appearance of these images). Then we alpha-blend it over the |
68 // parent background color to determine the actual color the label text will | 65 // parent background color to determine the actual color the label text will |
69 // sit atop. | 66 // sit atop. |
70 const SkBitmap& bitmap( | 67 const SkBitmap& bitmap( |
71 ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed( | 68 ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed( |
72 kBackgroundImages[1])->GetRepresentation( | 69 kBackgroundImages[4])->GetRepresentation( |
73 ui::SCALE_FACTOR_100P).sk_bitmap()); | 70 ui::SCALE_FACTOR_100P).sk_bitmap()); |
74 SkAutoLockPixels pixel_lock(bitmap); | 71 SkAutoLockPixels pixel_lock(bitmap); |
75 SkColor background_image_color = | 72 SkColor background_image_color = |
76 bitmap.getColor(bitmap.width() / 2, bitmap.height() / 2); | 73 bitmap.getColor(bitmap.width() / 2, bitmap.height() / 2); |
77 // Tricky bit: We alpha blend an opaque version of |background_image_color| | 74 // Tricky bit: We alpha blend an opaque version of |background_image_color| |
78 // against |parent_background_color| using the original image grid color's | 75 // against |parent_background_color| using the original image grid color's |
79 // alpha. This is because AlphaBlend(a, b, 255) always returns |a| unchanged | 76 // alpha. This is because AlphaBlend(a, b, 255) always returns |a| unchanged |
80 // even if |a| is a color with non-255 alpha. | 77 // even if |a| is a color with non-255 alpha. |
81 text_label_->SetBackgroundColor( | 78 text_label_->SetBackgroundColor( |
82 color_utils::AlphaBlend(SkColorSetA(background_image_color, 255), | 79 color_utils::AlphaBlend(SkColorSetA(background_image_color, 255), |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 parent_->delegate()->CreateViewsBubble(new ContentSettingBubbleContents( | 253 parent_->delegate()->CreateViewsBubble(new ContentSettingBubbleContents( |
257 ContentSettingBubbleModel::CreateContentSettingBubbleModel( | 254 ContentSettingBubbleModel::CreateContentSettingBubbleModel( |
258 parent_->delegate()->GetContentSettingBubbleModelDelegate(), | 255 parent_->delegate()->GetContentSettingBubbleModelDelegate(), |
259 web_contents, parent_->profile(), | 256 web_contents, parent_->profile(), |
260 content_setting_image_model_->get_content_settings_type()), | 257 content_setting_image_model_->get_content_settings_type()), |
261 web_contents, this, views::BubbleBorder::TOP_RIGHT)); | 258 web_contents, this, views::BubbleBorder::TOP_RIGHT)); |
262 bubble_widget_->AddObserver(this); | 259 bubble_widget_->AddObserver(this); |
263 bubble_widget_->Show(); | 260 bubble_widget_->Show(); |
264 } | 261 } |
265 } | 262 } |
OLD | NEW |