// Copyright (c) 2012 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 "ui/app_list/drop_shadow_label.h" #include "ui/gfx/canvas.h" #include "ui/gfx/insets.h" namespace app_list { DropShadowLabel::DropShadowLabel() { } DropShadowLabel::~DropShadowLabel() { } void DropShadowLabel::SetTextShadows(int shadow_count, const gfx::ShadowValue* shadows) { text_shadows_.clear(); if (shadow_count && shadows) { for (int i = 0; i < shadow_count; ++i) text_shadows_.push_back(shadows[i]); } } gfx::Insets DropShadowLabel::GetInsets() const { gfx::Insets insets = views::Label::GetInsets(); gfx::Insets shadow_margin = gfx::ShadowValue::GetMargin(text_shadows_); // Negate |shadow_margin| to convert it to a padding insets needed inside // the bounds and combine with label's insets. insets += -shadow_margin; return insets; } void DropShadowLabel::PaintText(gfx::Canvas* canvas, const string16& text, const gfx::Rect& text_bounds, int flags) { SkColor text_color = enabled() ? enabled_color() : disabled_color(); canvas->DrawStringWithShadows(text, font(), text_color, text_bounds, flags, text_shadows_); if (HasFocus() || paint_as_focused()) { gfx::Rect focus_bounds = text_bounds; focus_bounds.Inset(-views::Label::kFocusBorderPadding, -views::Label::kFocusBorderPadding); canvas->DrawFocusRect(focus_bounds); } } } // namespace app_list