OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 2 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |
3 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. | 3 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 16 matching lines...) Expand all Loading... |
27 #include "platform/graphics/BitmapImage.h" | 27 #include "platform/graphics/BitmapImage.h" |
28 | 28 |
29 #include "platform/PlatformInstrumentation.h" | 29 #include "platform/PlatformInstrumentation.h" |
30 #include "platform/RuntimeEnabledFeatures.h" | 30 #include "platform/RuntimeEnabledFeatures.h" |
31 #include "platform/Timer.h" | 31 #include "platform/Timer.h" |
32 #include "platform/geometry/FloatRect.h" | 32 #include "platform/geometry/FloatRect.h" |
33 #include "platform/graphics/BitmapImageMetrics.h" | 33 #include "platform/graphics/BitmapImageMetrics.h" |
34 #include "platform/graphics/DeferredImageDecoder.h" | 34 #include "platform/graphics/DeferredImageDecoder.h" |
35 #include "platform/graphics/ImageObserver.h" | 35 #include "platform/graphics/ImageObserver.h" |
36 #include "platform/graphics/StaticBitmapImage.h" | 36 #include "platform/graphics/StaticBitmapImage.h" |
| 37 #include "platform/graphics/paint/PaintCanvas.h" |
| 38 #include "platform/graphics/paint/PaintFlags.h" |
37 #include "platform/graphics/skia/SkiaUtils.h" | 39 #include "platform/graphics/skia/SkiaUtils.h" |
38 #include "platform/instrumentation/tracing/TraceEvent.h" | 40 #include "platform/instrumentation/tracing/TraceEvent.h" |
39 #include "third_party/skia/include/core/SkCanvas.h" | |
40 #include "wtf/PassRefPtr.h" | 41 #include "wtf/PassRefPtr.h" |
41 #include "wtf/PtrUtil.h" | 42 #include "wtf/PtrUtil.h" |
42 #include "wtf/text/WTFString.h" | 43 #include "wtf/text/WTFString.h" |
43 | 44 |
44 namespace blink { | 45 namespace blink { |
45 | 46 |
46 namespace { | 47 namespace { |
47 | 48 |
48 ColorBehavior defaultColorBehavior() { | 49 ColorBehavior defaultColorBehavior() { |
49 // TODO(ccameron): ColorBehavior should be specified by the caller requesting | 50 // TODO(ccameron): ColorBehavior should be specified by the caller requesting |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 | 254 |
254 bool BitmapImage::hasColorProfile() const { | 255 bool BitmapImage::hasColorProfile() const { |
255 return m_source.hasColorProfile(); | 256 return m_source.hasColorProfile(); |
256 } | 257 } |
257 | 258 |
258 String BitmapImage::filenameExtension() const { | 259 String BitmapImage::filenameExtension() const { |
259 return m_source.filenameExtension(); | 260 return m_source.filenameExtension(); |
260 } | 261 } |
261 | 262 |
262 void BitmapImage::draw( | 263 void BitmapImage::draw( |
263 SkCanvas* canvas, | 264 PaintCanvas* canvas, |
264 const SkPaint& paint, | 265 const PaintFlags& paint, |
265 const FloatRect& dstRect, | 266 const FloatRect& dstRect, |
266 const FloatRect& srcRect, | 267 const FloatRect& srcRect, |
267 RespectImageOrientationEnum shouldRespectImageOrientation, | 268 RespectImageOrientationEnum shouldRespectImageOrientation, |
268 ImageClampingMode clampMode, | 269 ImageClampingMode clampMode, |
269 const ColorBehavior& colorBehavior) { | 270 const ColorBehavior& colorBehavior) { |
270 TRACE_EVENT0("skia", "BitmapImage::draw"); | 271 TRACE_EVENT0("skia", "BitmapImage::draw"); |
271 | 272 |
272 sk_sp<SkImage> image = imageForCurrentFrame(colorBehavior); | 273 sk_sp<SkImage> image = imageForCurrentFrame(colorBehavior); |
273 if (!image) | 274 if (!image) |
274 return; // It's too early and we don't have an image yet. | 275 return; // It's too early and we don't have an image yet. |
275 | 276 |
276 FloatRect adjustedSrcRect = srcRect; | 277 FloatRect adjustedSrcRect = srcRect; |
277 adjustedSrcRect.intersect(SkRect::Make(image->bounds())); | 278 adjustedSrcRect.intersect(SkRect::Make(image->bounds())); |
278 | 279 |
279 if (adjustedSrcRect.isEmpty() || dstRect.isEmpty()) | 280 if (adjustedSrcRect.isEmpty() || dstRect.isEmpty()) |
280 return; // Nothing to draw. | 281 return; // Nothing to draw. |
281 | 282 |
282 ImageOrientation orientation = DefaultImageOrientation; | 283 ImageOrientation orientation = DefaultImageOrientation; |
283 if (shouldRespectImageOrientation == RespectImageOrientation) | 284 if (shouldRespectImageOrientation == RespectImageOrientation) |
284 orientation = frameOrientationAtIndex(m_currentFrame); | 285 orientation = frameOrientationAtIndex(m_currentFrame); |
285 | 286 |
286 SkAutoCanvasRestore autoRestore(canvas, false); | 287 PaintCanvasAutoRestore autoRestore(canvas, false); |
287 FloatRect adjustedDstRect = dstRect; | 288 FloatRect adjustedDstRect = dstRect; |
288 if (orientation != DefaultImageOrientation) { | 289 if (orientation != DefaultImageOrientation) { |
289 canvas->save(); | 290 canvas->save(); |
290 | 291 |
291 // ImageOrientation expects the origin to be at (0, 0) | 292 // ImageOrientation expects the origin to be at (0, 0) |
292 canvas->translate(adjustedDstRect.x(), adjustedDstRect.y()); | 293 canvas->translate(adjustedDstRect.x(), adjustedDstRect.y()); |
293 adjustedDstRect.setLocation(FloatPoint()); | 294 adjustedDstRect.setLocation(FloatPoint()); |
294 | 295 |
295 canvas->concat(affineTransformToSkMatrix( | 296 canvas->concat(affineTransformToSkMatrix( |
296 orientation.transformFromDefault(adjustedDstRect.size()))); | 297 orientation.transformFromDefault(adjustedDstRect.size()))); |
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
652 getImageObserver()->animationAdvanced(this); | 653 getImageObserver()->animationAdvanced(this); |
653 | 654 |
654 return true; | 655 return true; |
655 } | 656 } |
656 | 657 |
657 void BitmapImage::notifyObserversOfAnimationAdvance(TimerBase*) { | 658 void BitmapImage::notifyObserversOfAnimationAdvance(TimerBase*) { |
658 getImageObserver()->animationAdvanced(this); | 659 getImageObserver()->animationAdvanced(this); |
659 } | 660 } |
660 | 661 |
661 } // namespace blink | 662 } // namespace blink |
OLD | NEW |