| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "ash/app_list/drop_shadow_label.h" | |
| 6 | |
| 7 #include "base/utf_string_conversions.h" | |
| 8 #include "third_party/skia/include/effects/SkGradientShader.h" | |
| 9 #include "ui/gfx/canvas.h" | |
| 10 #include "ui/gfx/color_utils.h" | |
| 11 #include "ui/gfx/insets.h" | |
| 12 #include "ui/gfx/skbitmap_operations.h" | |
| 13 | |
| 14 using views::Label; | |
| 15 | |
| 16 namespace ash { | |
| 17 | |
| 18 DropShadowLabel::DropShadowLabel() { | |
| 19 } | |
| 20 | |
| 21 DropShadowLabel::~DropShadowLabel() { | |
| 22 } | |
| 23 | |
| 24 void DropShadowLabel::SetTextShadows(int shadow_count, | |
| 25 const gfx::ShadowValue* shadows) { | |
| 26 text_shadows_.clear(); | |
| 27 | |
| 28 if (shadow_count && shadows) { | |
| 29 for (int i = 0; i < shadow_count; ++i) | |
| 30 text_shadows_.push_back(shadows[i]); | |
| 31 } | |
| 32 } | |
| 33 | |
| 34 gfx::Insets DropShadowLabel::GetInsets() const { | |
| 35 gfx::Insets insets = views::Label::GetInsets(); | |
| 36 gfx::Insets shadow_margin = gfx::ShadowValue::GetMargin(text_shadows_); | |
| 37 // Negate |shadow_margin| to convert it to a padding insets needed inside | |
| 38 // the bounds and combine with label's insets. | |
| 39 insets += -shadow_margin; | |
| 40 return insets; | |
| 41 } | |
| 42 | |
| 43 void DropShadowLabel::PaintText(gfx::Canvas* canvas, | |
| 44 const string16& text, | |
| 45 const gfx::Rect& text_bounds, | |
| 46 int flags) { | |
| 47 SkColor text_color = enabled() ? enabled_color() : disabled_color(); | |
| 48 canvas->DrawStringWithShadows(text, | |
| 49 font(), | |
| 50 text_color, | |
| 51 text_bounds, | |
| 52 flags, | |
| 53 text_shadows_); | |
| 54 | |
| 55 if (HasFocus() || paint_as_focused()) { | |
| 56 gfx::Rect focus_bounds = text_bounds; | |
| 57 focus_bounds.Inset(-Label::kFocusBorderPadding, | |
| 58 -Label::kFocusBorderPadding); | |
| 59 canvas->DrawFocusRect(focus_bounds); | |
| 60 } | |
| 61 } | |
| 62 | |
| 63 } // namespace ash | |
| OLD | NEW |