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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/BitmapImage.cpp

Issue 2559013002: Add ColorBehavior to blink::Image draw methods (Closed)
Patch Set: Rebase Created 4 years 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
OLDNEW
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 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 String BitmapImage::filenameExtension() const { 257 String BitmapImage::filenameExtension() const {
258 return m_source.filenameExtension(); 258 return m_source.filenameExtension();
259 } 259 }
260 260
261 void BitmapImage::draw( 261 void BitmapImage::draw(
262 SkCanvas* canvas, 262 SkCanvas* canvas,
263 const SkPaint& paint, 263 const SkPaint& paint,
264 const FloatRect& dstRect, 264 const FloatRect& dstRect,
265 const FloatRect& srcRect, 265 const FloatRect& srcRect,
266 RespectImageOrientationEnum shouldRespectImageOrientation, 266 RespectImageOrientationEnum shouldRespectImageOrientation,
267 ImageClampingMode clampMode) { 267 ImageClampingMode clampMode,
268 const ColorBehavior& colorBehavior) {
268 TRACE_EVENT0("skia", "BitmapImage::draw"); 269 TRACE_EVENT0("skia", "BitmapImage::draw");
269 270
270 sk_sp<SkImage> image = imageForCurrentFrame(); 271 sk_sp<SkImage> image = imageForCurrentFrame(colorBehavior);
271 if (!image) 272 if (!image)
272 return; // It's too early and we don't have an image yet. 273 return; // It's too early and we don't have an image yet.
273 274
274 FloatRect adjustedSrcRect = srcRect; 275 FloatRect adjustedSrcRect = srcRect;
275 adjustedSrcRect.intersect(SkRect::Make(image->bounds())); 276 adjustedSrcRect.intersect(SkRect::Make(image->bounds()));
276 277
277 if (adjustedSrcRect.isEmpty() || dstRect.isEmpty()) 278 if (adjustedSrcRect.isEmpty() || dstRect.isEmpty())
278 return; // Nothing to draw. 279 return; // Nothing to draw.
279 280
280 ImageOrientation orientation = DefaultImageOrientation; 281 ImageOrientation orientation = DefaultImageOrientation;
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 return m_source.frameIsCompleteAtIndex(index); 364 return m_source.frameIsCompleteAtIndex(index);
364 } 365 }
365 366
366 float BitmapImage::frameDurationAtIndex(size_t index) const { 367 float BitmapImage::frameDurationAtIndex(size_t index) const {
367 if (index < m_frames.size() && m_frames[index].m_haveMetadata) 368 if (index < m_frames.size() && m_frames[index].m_haveMetadata)
368 return m_frames[index].m_duration; 369 return m_frames[index].m_duration;
369 370
370 return m_source.frameDurationAtIndex(index); 371 return m_source.frameDurationAtIndex(index);
371 } 372 }
372 373
373 sk_sp<SkImage> BitmapImage::imageForCurrentFrame() { 374 sk_sp<SkImage> BitmapImage::imageForCurrentFrame(
374 // TODO(ccameron): Allow the caller of imageForCurrentFrame to specify the 375 const ColorBehavior& colorBehavior) {
375 // the desired ColorBehavior.
376 // https://crbug.com/667420
377 const ColorBehavior& colorBehavior = m_cachedFrameColorBehavior;
378 return frameAtIndex(currentFrame(), colorBehavior); 376 return frameAtIndex(currentFrame(), colorBehavior);
379 } 377 }
380 378
381 PassRefPtr<Image> BitmapImage::imageForDefaultFrame() { 379 PassRefPtr<Image> BitmapImage::imageForDefaultFrame() {
382 // TODO(ccameron): Determine the appropriate ColorBehavior for this situation. 380 // TODO(ccameron): Determine the appropriate ColorBehavior for this situation.
383 // https://crbug.com/667420 381 // https://crbug.com/667420
384 const ColorBehavior& colorBehavior = m_cachedFrameColorBehavior; 382 const ColorBehavior& colorBehavior = m_cachedFrameColorBehavior;
385 if (frameCount() > 1) { 383 if (frameCount() > 1) {
386 sk_sp<SkImage> firstFrame = frameAtIndex(0, colorBehavior); 384 sk_sp<SkImage> firstFrame = frameAtIndex(0, colorBehavior);
387 if (firstFrame) 385 if (firstFrame)
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 getImageObserver()->animationAdvanced(this); 651 getImageObserver()->animationAdvanced(this);
654 652
655 return true; 653 return true;
656 } 654 }
657 655
658 void BitmapImage::notifyObserversOfAnimationAdvance(TimerBase*) { 656 void BitmapImage::notifyObserversOfAnimationAdvance(TimerBase*) {
659 getImageObserver()->animationAdvanced(this); 657 getImageObserver()->animationAdvanced(this);
660 } 658 }
661 659
662 } // namespace blink 660 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698