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

Side by Side Diff: ui/views/controls/label.cc

Issue 308083011: Add support for painting halos on Views Labels. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Draw halos over shadows; refine function order and example. Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/views/controls/label.h ('k') | ui/views/examples/label_example.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "ui/views/controls/label.h" 5 #include "ui/views/controls/label.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <limits> 9 #include <limits>
10 #include <vector> 10 #include <vector>
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 state->role = ui::AX_ROLE_STATIC_TEXT; 316 state->role = ui::AX_ROLE_STATIC_TEXT;
317 state->AddStateFlag(ui::AX_STATE_READ_ONLY); 317 state->AddStateFlag(ui::AX_STATE_READ_ONLY);
318 state->name = layout_text(); 318 state->name = layout_text();
319 } 319 }
320 320
321 void Label::PaintText(gfx::Canvas* canvas, 321 void Label::PaintText(gfx::Canvas* canvas,
322 const base::string16& text, 322 const base::string16& text,
323 const gfx::Rect& text_bounds, 323 const gfx::Rect& text_bounds,
324 int flags) { 324 int flags) {
325 gfx::ShadowValues shadows; 325 gfx::ShadowValues shadows;
326 if (has_shadow_) 326 if (has_shadow_) {
327 shadows.push_back(gfx::ShadowValue(shadow_offset_, shadow_blur_, 327 shadows.push_back(gfx::ShadowValue(shadow_offset_, shadow_blur_,
328 enabled() ? enabled_shadow_color_ : disabled_shadow_color_)); 328 enabled() ? enabled_shadow_color_ : disabled_shadow_color_));
329 canvas->DrawStringRectWithShadows(text, font_list_, 329 }
330 enabled() ? actual_enabled_color_ : actual_disabled_color_, 330 SkColor color = enabled() ? actual_enabled_color_ : actual_disabled_color_;
331 text_bounds, line_height_, flags, shadows); 331 canvas->DrawStringRectWithShadows(text, font_list_, color, text_bounds,
332 line_height_, flags, shadows);
333
334 if (SkColorGetA(halo_color_) != SK_AlphaTRANSPARENT) {
335 canvas->DrawStringRectWithHalo(text, font_list_, color, halo_color_,
336 text_bounds, flags);
337 }
332 338
333 if (HasFocus()) { 339 if (HasFocus()) {
334 gfx::Rect focus_bounds = text_bounds; 340 gfx::Rect focus_bounds = text_bounds;
335 focus_bounds.Inset(-kFocusBorderPadding, -kFocusBorderPadding); 341 focus_bounds.Inset(-kFocusBorderPadding, -kFocusBorderPadding);
336 canvas->DrawFocusRect(focus_bounds); 342 canvas->DrawFocusRect(focus_bounds);
337 } 343 }
338 } 344 }
339 345
340 gfx::Size Label::GetTextSize() const { 346 gfx::Size Label::GetTextSize() const {
341 if (!text_size_valid_) { 347 if (!text_size_valid_) {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 is_obscured_ = false; 399 is_obscured_ = false;
394 allow_character_break_ = false; 400 allow_character_break_ = false;
395 elide_behavior_ = ELIDE_AT_END; 401 elide_behavior_ = ELIDE_AT_END;
396 collapse_when_hidden_ = false; 402 collapse_when_hidden_ = false;
397 directionality_mode_ = USE_UI_DIRECTIONALITY; 403 directionality_mode_ = USE_UI_DIRECTIONALITY;
398 enabled_shadow_color_ = 0; 404 enabled_shadow_color_ = 0;
399 disabled_shadow_color_ = 0; 405 disabled_shadow_color_ = 0;
400 shadow_offset_.SetPoint(1, 1); 406 shadow_offset_.SetPoint(1, 1);
401 has_shadow_ = false; 407 has_shadow_ = false;
402 shadow_blur_ = 0; 408 shadow_blur_ = 0;
409 halo_color_ = SK_ColorTRANSPARENT;
403 cached_heights_.resize(kCachedSizeLimit); 410 cached_heights_.resize(kCachedSizeLimit);
404 ResetCachedSize(); 411 ResetCachedSize();
405 412
406 SetText(text); 413 SetText(text);
407 } 414 }
408 415
409 void Label::RecalculateColors() { 416 void Label::RecalculateColors() {
410 actual_enabled_color_ = auto_color_readability_ ? 417 actual_enabled_color_ = auto_color_readability_ ?
411 color_utils::GetReadableColor(requested_enabled_color_, 418 color_utils::GetReadableColor(requested_enabled_color_,
412 background_color_) : 419 background_color_) :
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 cached_heights_[i] = gfx::Size(); 565 cached_heights_[i] = gfx::Size();
559 } 566 }
560 567
561 bool Label::ShouldShowDefaultTooltip() const { 568 bool Label::ShouldShowDefaultTooltip() const {
562 return !is_multi_line_ && !is_obscured_ && 569 return !is_multi_line_ && !is_obscured_ &&
563 gfx::GetStringWidth(layout_text(), font_list_) > 570 gfx::GetStringWidth(layout_text(), font_list_) >
564 GetAvailableRect().width(); 571 GetAvailableRect().width();
565 } 572 }
566 573
567 } // namespace views 574 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/label.h ('k') | ui/views/examples/label_example.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698