Chromium Code Reviews| 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 "ui/native_theme/native_theme_base.h" | 5 #include "ui/native_theme/native_theme_base.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <memory> | 8 #include <memory> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 351 paint.setColor(OutlineColor(trackHSV, thumbHSV)); | 351 paint.setColor(OutlineColor(trackHSV, thumbHSV)); |
| 352 canvas->drawPath(outline, paint); | 352 canvas->drawPath(outline, paint); |
| 353 | 353 |
| 354 PaintArrow(canvas, rect, direction, GetArrowColor(state)); | 354 PaintArrow(canvas, rect, direction, GetArrowColor(state)); |
| 355 } | 355 } |
| 356 | 356 |
| 357 void NativeThemeBase::PaintArrow(SkCanvas* gc, | 357 void NativeThemeBase::PaintArrow(SkCanvas* gc, |
| 358 const gfx::Rect& rect, | 358 const gfx::Rect& rect, |
| 359 Part direction, | 359 Part direction, |
| 360 SkColor color) const { | 360 SkColor color) const { |
| 361 int width_middle, length_middle; | 361 int width_middle = rect.width() / 2 + 1; |
| 362 if (direction == kScrollbarUpArrow || direction == kScrollbarDownArrow) { | 362 int length_middle = rect.height() / 2 + 1; |
|
Evan Stade
2016/04/25 02:35:59
confusing var name -- why not height_middle?
Bret
2016/04/25 23:24:32
No reason, it was named that before I messed with
| |
| 363 width_middle = rect.width() / 2 + 1; | |
| 364 length_middle = rect.height() / 2 + 1; | |
| 365 } else { | |
| 366 length_middle = rect.width() / 2 + 1; | |
| 367 width_middle = rect.height() / 2 + 1; | |
| 368 } | |
| 369 | 363 |
| 370 SkPaint paint; | 364 SkPaint paint; |
| 371 paint.setColor(color); | 365 paint.setColor(color); |
| 372 paint.setAntiAlias(false); | 366 paint.setAntiAlias(false); |
| 373 paint.setStyle(SkPaint::kFill_Style); | 367 paint.setStyle(SkPaint::kFill_Style); |
| 374 | 368 |
| 369 int arrow_altitude; | |
| 370 if (direction == kScrollbarUpArrow || direction == kScrollbarDownArrow) { | |
| 371 arrow_altitude = length_middle / 2; | |
| 372 } else { | |
|
Evan Stade
2016/04/25 02:35:59
nit: no curlies
also ternary assignment is probab
Bret
2016/04/25 23:24:32
Replaced with ternary.
| |
| 373 arrow_altitude = width_middle / 2; | |
| 374 } | |
| 375 int arrow_base_length = arrow_altitude * 2 - 1; | |
|
Evan Stade
2016/04/25 02:35:59
seems a bit silly to divide by 2 then multiply by
Bret
2016/04/25 23:24:32
I guess it does look silly, but those are the valu
Evan Stade
2016/04/25 23:38:16
oops, this last bit of the comment was supposed to
| |
| 376 | |
| 375 SkPath path; | 377 SkPath path; |
| 376 // The constants in this block of code are hand-tailored to produce good | 378 // The calculations in this block of code are hand-tailored to produce good |
| 377 // looking arrows without anti-aliasing. | 379 // looking arrows without anti-aliasing. |
| 378 switch (direction) { | 380 switch (direction) { |
|
Evan Stade
2016/04/25 02:35:59
what if you just calculated the path once (for an
Bret
2016/04/25 23:24:32
Didn't work. The arrows still need to be centered
| |
| 379 case kScrollbarUpArrow: | 381 case kScrollbarUpArrow: |
| 380 path.moveTo(rect.x() + width_middle - 4, rect.y() + length_middle + 2); | 382 path.moveTo(rect.x() + width_middle - arrow_altitude, |
| 381 path.rLineTo(7, 0); | 383 rect.y() + length_middle + (arrow_altitude / 2)); |
|
Evan Stade
2016/04/25 02:35:59
the asymmetry here is weird. Why are you doing int
Bret
2016/04/25 23:24:32
I was making sure everything looked the same at 1x
| |
| 382 path.rLineTo(-4, -4); | 384 path.rLineTo(arrow_base_length, 0); |
| 385 path.rLineTo(-arrow_altitude, -arrow_altitude); | |
| 383 break; | 386 break; |
| 384 case kScrollbarDownArrow: | 387 case kScrollbarDownArrow: |
| 385 path.moveTo(rect.x() + width_middle - 4, rect.y() + length_middle - 3); | 388 path.moveTo(rect.x() + width_middle - arrow_altitude, |
| 386 path.rLineTo(7, 0); | 389 rect.y() + length_middle - ceil(arrow_altitude / 2.0)); |
| 387 path.rLineTo(-4, 4); | 390 path.rLineTo(arrow_base_length, 0); |
| 391 path.rLineTo(-arrow_altitude, arrow_altitude); | |
| 388 break; | 392 break; |
| 389 case kScrollbarRightArrow: | 393 case kScrollbarRightArrow: |
| 390 path.moveTo(rect.x() + length_middle - 3, rect.y() + width_middle - 4); | 394 path.moveTo(rect.x() + width_middle - (arrow_altitude / 2), |
| 391 path.rLineTo(0, 7); | 395 rect.y() + length_middle - arrow_altitude); |
| 392 path.rLineTo(4, -4); | 396 path.rLineTo(0, arrow_base_length); |
| 397 path.rLineTo(arrow_altitude, -arrow_altitude); | |
| 393 break; | 398 break; |
| 394 case kScrollbarLeftArrow: | 399 case kScrollbarLeftArrow: |
| 395 path.moveTo(rect.x() + length_middle + 1, rect.y() + width_middle - 5); | 400 path.moveTo(rect.x() + width_middle + 1, |
| 396 path.rLineTo(0, 9); | 401 rect.y() + length_middle - (arrow_altitude + 1)); |
| 397 path.rLineTo(-4, -4); | 402 path.rLineTo(0, arrow_base_length + 2); |
|
Evan Stade
2016/04/25 02:35:59
can you leave comments explaining the magic consta
Bret
2016/04/25 23:24:32
To be honest, I'm not really sure why these consta
Evan Stade
2016/04/25 23:38:16
The new code is even kookier than the old, and I s
| |
| 403 path.rLineTo(-arrow_altitude, -arrow_altitude); | |
| 398 break; | 404 break; |
| 399 default: | 405 default: |
| 400 break; | 406 break; |
| 401 } | 407 } |
| 402 path.close(); | 408 path.close(); |
| 403 | 409 |
| 404 gc->drawPath(path, paint); | 410 gc->drawPath(path, paint); |
| 405 } | 411 } |
| 406 | 412 |
| 407 void NativeThemeBase::PaintScrollbarTrack(SkCanvas* canvas, | 413 void NativeThemeBase::PaintScrollbarTrack(SkCanvas* canvas, |
| (...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1025 SkScalar min_diff = Clamp((hsv1[1] + hsv2[1]) * 1.2f, 0.28f, 0.5f); | 1031 SkScalar min_diff = Clamp((hsv1[1] + hsv2[1]) * 1.2f, 0.28f, 0.5f); |
| 1026 SkScalar diff = Clamp(fabs(hsv1[2] - hsv2[2]) / 2, min_diff, 0.5f); | 1032 SkScalar diff = Clamp(fabs(hsv1[2] - hsv2[2]) / 2, min_diff, 0.5f); |
| 1027 | 1033 |
| 1028 if (hsv1[2] + hsv2[2] > 1.0) | 1034 if (hsv1[2] + hsv2[2] > 1.0) |
| 1029 diff = -diff; | 1035 diff = -diff; |
| 1030 | 1036 |
| 1031 return SaturateAndBrighten(hsv2, -0.2f, diff); | 1037 return SaturateAndBrighten(hsv2, -0.2f, diff); |
| 1032 } | 1038 } |
| 1033 | 1039 |
| 1034 } // namespace ui | 1040 } // namespace ui |
| OLD | NEW |