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_aura.h" | 5 #include "ui/native_theme/native_theme_aura.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "grit/ui_resources.h" | 10 #include "grit/ui_resources.h" |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 if (part == NativeTheme::kScrollbarVerticalThumb) | 201 if (part == NativeTheme::kScrollbarVerticalThumb) |
202 thumb_rect.Inset(2, extra_padding, 2, extra_padding); | 202 thumb_rect.Inset(2, extra_padding, 2, extra_padding); |
203 else | 203 else |
204 thumb_rect.Inset(extra_padding, 2, extra_padding, 2); | 204 thumb_rect.Inset(extra_padding, 2, extra_padding, 2); |
205 PaintPainter(GetOrCreatePainter( | 205 PaintPainter(GetOrCreatePainter( |
206 kScrollbarThumbImages, state, scrollbar_thumb_painters_), | 206 kScrollbarThumbImages, state, scrollbar_thumb_painters_), |
207 sk_canvas, | 207 sk_canvas, |
208 thumb_rect); | 208 thumb_rect); |
209 } | 209 } |
210 | 210 |
| 211 void NativeThemeAura::PaintScrollbarThumbStateTransition( |
| 212 SkCanvas* canvas, |
| 213 State startState, |
| 214 State endState, |
| 215 double progress, |
| 216 const gfx::Rect& rect) const { |
| 217 // Only Overlay scrollbars should have state transition animation. |
| 218 DCHECK(IsOverlayScrollbarEnabled()); |
| 219 if (!scrollbar_overlay_thumb_painter_) { |
| 220 scrollbar_overlay_thumb_painter_ = |
| 221 CreateDualPainter(kScrollbarOverlayThumbFillImages, |
| 222 kScrollbarOverlayThumbFillAlphas, |
| 223 kScrollbarOverlayThumbStrokeImages, |
| 224 kScrollbarOverlayThumbStrokeAlphas); |
| 225 } |
| 226 |
| 227 PaintDualPainterTransition(scrollbar_overlay_thumb_painter_.get(), |
| 228 canvas, |
| 229 rect, |
| 230 startState, |
| 231 endState, |
| 232 progress); |
| 233 } |
| 234 |
211 void NativeThemeAura::PaintScrollbarCorner(SkCanvas* canvas, | 235 void NativeThemeAura::PaintScrollbarCorner(SkCanvas* canvas, |
212 State state, | 236 State state, |
213 const gfx::Rect& rect) const { | 237 const gfx::Rect& rect) const { |
214 // Overlay Scrollbar should never paint a scrollbar corner. | 238 // Overlay Scrollbar should never paint a scrollbar corner. |
215 DCHECK(!IsOverlayScrollbarEnabled()); | 239 DCHECK(!IsOverlayScrollbarEnabled()); |
216 SkPaint paint; | 240 SkPaint paint; |
217 paint.setColor(SkColorSetRGB(0xF1, 0xF1, 0xF1)); | 241 paint.setColor(SkColorSetRGB(0xF1, 0xF1, 0xF1)); |
218 paint.setStyle(SkPaint::kFill_Style); | 242 paint.setStyle(SkPaint::kFill_Style); |
219 paint.setXfermodeMode(SkXfermode::kSrc_Mode); | 243 paint.setXfermodeMode(SkXfermode::kSrc_Mode); |
220 canvas->drawIRect(RectToSkIRect(rect), paint); | 244 canvas->drawIRect(RectToSkIRect(rect), paint); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 const gfx::Rect& rect, | 286 const gfx::Rect& rect, |
263 State state) const { | 287 State state) const { |
264 DCHECK(dual_painter); | 288 DCHECK(dual_painter); |
265 scoped_ptr<gfx::Canvas> canvas(CreateCanvas(sk_canvas)); | 289 scoped_ptr<gfx::Canvas> canvas(CreateCanvas(sk_canvas)); |
266 dual_painter->fill_painter->Paint( | 290 dual_painter->fill_painter->Paint( |
267 canvas.get(), rect, dual_painter->fill_alphas[state]); | 291 canvas.get(), rect, dual_painter->fill_alphas[state]); |
268 dual_painter->stroke_painter->Paint( | 292 dual_painter->stroke_painter->Paint( |
269 canvas.get(), rect, dual_painter->stroke_alphas[state]); | 293 canvas.get(), rect, dual_painter->stroke_alphas[state]); |
270 } | 294 } |
271 | 295 |
| 296 void NativeThemeAura::PaintDualPainterTransition( |
| 297 NativeThemeAura::DualPainter* dual_painter, |
| 298 SkCanvas* sk_canvas, |
| 299 const gfx::Rect& rect, |
| 300 State startState, |
| 301 State endState, |
| 302 double progress) const { |
| 303 DCHECK(dual_painter); |
| 304 scoped_ptr<gfx::Canvas> canvas(CreateCanvas(sk_canvas)); |
| 305 uint8 fill_alpha = dual_painter->fill_alphas[startState] + |
| 306 (dual_painter->fill_alphas[endState] - |
| 307 dual_painter->fill_alphas[startState]) * |
| 308 progress; |
| 309 uint8 stroke_alpha = dual_painter->stroke_alphas[startState] + |
| 310 (dual_painter->stroke_alphas[endState] - |
| 311 dual_painter->stroke_alphas[startState]) * |
| 312 progress; |
| 313 |
| 314 dual_painter->fill_painter->Paint(canvas.get(), rect, fill_alpha); |
| 315 dual_painter->stroke_painter->Paint(canvas.get(), rect, stroke_alpha); |
| 316 } |
| 317 |
272 NativeThemeAura::DualPainter::DualPainter( | 318 NativeThemeAura::DualPainter::DualPainter( |
273 scoped_ptr<NineImagePainter> fill_painter, | 319 scoped_ptr<NineImagePainter> fill_painter, |
274 const uint8 fill_alphas[kMaxState], | 320 const uint8 fill_alphas[kMaxState], |
275 scoped_ptr<NineImagePainter> stroke_painter, | 321 scoped_ptr<NineImagePainter> stroke_painter, |
276 const uint8 stroke_alphas[kMaxState]) | 322 const uint8 stroke_alphas[kMaxState]) |
277 : fill_painter(fill_painter.Pass()), | 323 : fill_painter(fill_painter.Pass()), |
278 fill_alphas(fill_alphas), | 324 fill_alphas(fill_alphas), |
279 stroke_painter(stroke_painter.Pass()), | 325 stroke_painter(stroke_painter.Pass()), |
280 stroke_alphas(stroke_alphas) {} | 326 stroke_alphas(stroke_alphas) {} |
281 | 327 |
282 NativeThemeAura::DualPainter::~DualPainter() {} | 328 NativeThemeAura::DualPainter::~DualPainter() {} |
283 | 329 |
284 } // namespace ui | 330 } // namespace ui |
OLD | NEW |