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 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 case kWindowResizeGripper: | 149 case kWindowResizeGripper: |
150 NOTIMPLEMENTED(); | 150 NOTIMPLEMENTED(); |
151 break; | 151 break; |
152 default: | 152 default: |
153 NOTREACHED() << "Unknown theme part: " << part; | 153 NOTREACHED() << "Unknown theme part: " << part; |
154 break; | 154 break; |
155 } | 155 } |
156 return gfx::Size(); | 156 return gfx::Size(); |
157 } | 157 } |
158 | 158 |
159 void NativeThemeBase::PaintStateTransition(SkCanvas* canvas, | 159 void NativeThemeBase::PaintStateTransition( |
160 Part part, | 160 SkCanvas* canvas, |
161 State startState, | 161 Part part, |
162 State endState, | 162 State startState, |
163 double progress, | 163 State endState, |
164 const gfx::Rect& rect) const { | 164 double progress, |
| 165 const gfx::Rect& rect, |
| 166 ScrollbarOverlayColorTheme theme) const { |
165 if (rect.IsEmpty()) | 167 if (rect.IsEmpty()) |
166 return; | 168 return; |
167 | 169 |
168 // Currently state transition is animation only working for overlay scrollbars | 170 // Currently state transition is animation only working for overlay scrollbars |
169 // on Aura platforms. | 171 // on Aura platforms. |
170 switch (part) { | 172 switch (part) { |
171 case kScrollbarHorizontalThumb: | 173 case kScrollbarHorizontalThumb: |
172 case kScrollbarVerticalThumb: | 174 case kScrollbarVerticalThumb: |
173 PaintScrollbarThumbStateTransition(canvas, part, startState, endState, | 175 PaintScrollbarThumbStateTransition(canvas, part, startState, endState, |
174 progress, rect); | 176 progress, rect, theme); |
175 break; | 177 break; |
176 default: | 178 default: |
177 NOTREACHED() << "Does not support state transition for this part:" | 179 NOTREACHED() << "Does not support state transition for this part:" |
178 << part; | 180 << part; |
179 break; | 181 break; |
180 } | 182 } |
181 return; | 183 return; |
182 } | 184 } |
183 | 185 |
184 void NativeThemeBase::Paint(SkCanvas* canvas, | 186 void NativeThemeBase::Paint(SkCanvas* canvas, |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 break; | 222 break; |
221 case kScrollbarDownArrow: | 223 case kScrollbarDownArrow: |
222 case kScrollbarUpArrow: | 224 case kScrollbarUpArrow: |
223 case kScrollbarLeftArrow: | 225 case kScrollbarLeftArrow: |
224 case kScrollbarRightArrow: | 226 case kScrollbarRightArrow: |
225 if (scrollbar_button_length_ > 0) | 227 if (scrollbar_button_length_ > 0) |
226 PaintArrowButton(canvas, rect, part, state); | 228 PaintArrowButton(canvas, rect, part, state); |
227 break; | 229 break; |
228 case kScrollbarHorizontalThumb: | 230 case kScrollbarHorizontalThumb: |
229 case kScrollbarVerticalThumb: | 231 case kScrollbarVerticalThumb: |
230 PaintScrollbarThumb(canvas, part, state, rect); | 232 PaintScrollbarThumb(canvas, part, state, rect, |
| 233 extra.scrollbar_thumb.scrollbar_theme); |
231 break; | 234 break; |
232 case kScrollbarHorizontalTrack: | 235 case kScrollbarHorizontalTrack: |
233 case kScrollbarVerticalTrack: | 236 case kScrollbarVerticalTrack: |
234 PaintScrollbarTrack(canvas, part, state, extra.scrollbar_track, rect); | 237 PaintScrollbarTrack(canvas, part, state, extra.scrollbar_track, rect); |
235 break; | 238 break; |
236 case kScrollbarHorizontalGripper: | 239 case kScrollbarHorizontalGripper: |
237 case kScrollbarVerticalGripper: | 240 case kScrollbarVerticalGripper: |
238 // Invoked by views scrollbar code, don't care about for non-win | 241 // Invoked by views scrollbar code, don't care about for non-win |
239 // implementations, so no NOTIMPLEMENTED. | 242 // implementations, so no NOTIMPLEMENTED. |
240 break; | 243 break; |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 canvas->drawIRect(skrect, paint); | 430 canvas->drawIRect(skrect, paint); |
428 | 431 |
429 SkScalar thumb_hsv[3]; | 432 SkScalar thumb_hsv[3]; |
430 SkColorToHSV(thumb_inactive_color_, thumb_hsv); | 433 SkColorToHSV(thumb_inactive_color_, thumb_hsv); |
431 | 434 |
432 paint.setColor(OutlineColor(track_hsv, thumb_hsv)); | 435 paint.setColor(OutlineColor(track_hsv, thumb_hsv)); |
433 DrawBox(canvas, rect, paint); | 436 DrawBox(canvas, rect, paint); |
434 } | 437 } |
435 | 438 |
436 void NativeThemeBase::PaintScrollbarThumb(SkCanvas* canvas, | 439 void NativeThemeBase::PaintScrollbarThumb(SkCanvas* canvas, |
437 Part part, | 440 Part part, |
438 State state, | 441 State state, |
439 const gfx::Rect& rect) const { | 442 const gfx::Rect& rect, |
| 443 ScrollbarOverlayColorTheme) const { |
440 const bool hovered = state == kHovered; | 444 const bool hovered = state == kHovered; |
441 const int midx = rect.x() + rect.width() / 2; | 445 const int midx = rect.x() + rect.width() / 2; |
442 const int midy = rect.y() + rect.height() / 2; | 446 const int midy = rect.y() + rect.height() / 2; |
443 const bool vertical = part == kScrollbarVerticalThumb; | 447 const bool vertical = part == kScrollbarVerticalThumb; |
444 | 448 |
445 SkScalar thumb[3]; | 449 SkScalar thumb[3]; |
446 SkColorToHSV(hovered ? thumb_active_color_ : thumb_inactive_color_, thumb); | 450 SkColorToHSV(hovered ? thumb_active_color_ : thumb_inactive_color_, thumb); |
447 | 451 |
448 SkPaint paint; | 452 SkPaint paint; |
449 paint.setColor(SaturateAndBrighten(thumb, 0, 0.02f)); | 453 paint.setColor(SaturateAndBrighten(thumb, 0, 0.02f)); |
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1015 SkScalar min_diff = Clamp((hsv1[1] + hsv2[1]) * 1.2f, 0.28f, 0.5f); | 1019 SkScalar min_diff = Clamp((hsv1[1] + hsv2[1]) * 1.2f, 0.28f, 0.5f); |
1016 SkScalar diff = Clamp(fabs(hsv1[2] - hsv2[2]) / 2, min_diff, 0.5f); | 1020 SkScalar diff = Clamp(fabs(hsv1[2] - hsv2[2]) / 2, min_diff, 0.5f); |
1017 | 1021 |
1018 if (hsv1[2] + hsv2[2] > 1.0) | 1022 if (hsv1[2] + hsv2[2] > 1.0) |
1019 diff = -diff; | 1023 diff = -diff; |
1020 | 1024 |
1021 return SaturateAndBrighten(hsv2, -0.2f, diff); | 1025 return SaturateAndBrighten(hsv2, -0.2f, diff); |
1022 } | 1026 } |
1023 | 1027 |
1024 } // namespace ui | 1028 } // namespace ui |
OLD | NEW |