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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/PlaceholderImage.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 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "platform/graphics/PlaceholderImage.h" 5 #include "platform/graphics/PlaceholderImage.h"
6 6
7 #include "platform/geometry/FloatRect.h" 7 #include "platform/geometry/FloatRect.h"
8 #include "platform/graphics/Color.h" 8 #include "platform/graphics/Color.h"
9 #include "platform/graphics/GraphicsContext.h" 9 #include "platform/graphics/GraphicsContext.h"
10 #include "platform/graphics/ImageObserver.h" 10 #include "platform/graphics/ImageObserver.h"
11 #include "platform/graphics/paint/SkPictureBuilder.h" 11 #include "platform/graphics/paint/SkPictureBuilder.h"
12 #include "third_party/skia/include/core/SkCanvas.h" 12 #include "third_party/skia/include/core/SkCanvas.h"
13 #include "third_party/skia/include/core/SkColor.h" 13 #include "third_party/skia/include/core/SkColor.h"
14 #include "third_party/skia/include/core/SkPaint.h" 14 #include "third_party/skia/include/core/SkPaint.h"
15 #include "third_party/skia/include/core/SkPicture.h" 15 #include "third_party/skia/include/core/SkPicture.h"
16 #include "third_party/skia/include/core/SkRect.h" 16 #include "third_party/skia/include/core/SkRect.h"
17 #include "third_party/skia/include/core/SkSize.h" 17 #include "third_party/skia/include/core/SkSize.h"
18 18
19 namespace blink { 19 namespace blink {
20 20
21 namespace { 21 namespace {
22 22
23 // Gray with 40% opacity. 23 // Gray with 40% opacity.
24 const RGBA32 kFillColor = 0x66808080; 24 const RGBA32 kFillColor = 0x66808080;
25 25
26 } // namespace 26 } // namespace
27 27
28 PlaceholderImage::~PlaceholderImage() {} 28 PlaceholderImage::~PlaceholderImage() {}
29 29
30 sk_sp<SkImage> PlaceholderImage::imageForCurrentFrame() { 30 sk_sp<SkImage> PlaceholderImage::imageForCurrentFrame(
31 const ColorBehavior& colorBehavior) {
32 // TODO(ccameron): This function should not ignore |colorBehavior|.
33 // https://crbug.com/672306
31 if (m_imageForCurrentFrame) 34 if (m_imageForCurrentFrame)
32 return m_imageForCurrentFrame; 35 return m_imageForCurrentFrame;
33 36
34 const FloatRect destRect(0.0f, 0.0f, static_cast<float>(m_size.width()), 37 const FloatRect destRect(0.0f, 0.0f, static_cast<float>(m_size.width()),
35 static_cast<float>(m_size.height())); 38 static_cast<float>(m_size.height()));
36 SkPictureBuilder builder(destRect); 39 SkPictureBuilder builder(destRect);
37 GraphicsContext& context = builder.context(); 40 GraphicsContext& context = builder.context();
38 context.beginRecording(destRect); 41 context.beginRecording(destRect);
39 42
40 context.setFillColor(kFillColor); 43 context.setFillColor(kFillColor);
41 context.fillRect(destRect); 44 context.fillRect(destRect);
42 45
43 m_imageForCurrentFrame = SkImage::MakeFromPicture( 46 m_imageForCurrentFrame = SkImage::MakeFromPicture(
44 builder.endRecording(), SkISize::Make(m_size.width(), m_size.height()), 47 builder.endRecording(), SkISize::Make(m_size.width(), m_size.height()),
45 nullptr, nullptr); 48 nullptr, nullptr);
46 49
47 return m_imageForCurrentFrame; 50 return m_imageForCurrentFrame;
48 } 51 }
49 52
50 void PlaceholderImage::draw(SkCanvas* canvas, 53 void PlaceholderImage::draw(SkCanvas* canvas,
51 const SkPaint& basePaint, 54 const SkPaint& basePaint,
52 const FloatRect& destRect, 55 const FloatRect& destRect,
53 const FloatRect& srcRect, 56 const FloatRect& srcRect,
54 RespectImageOrientationEnum, 57 RespectImageOrientationEnum,
55 ImageClampingMode) { 58 ImageClampingMode,
59 const ColorBehavior& colorBehavior) {
60 // TODO(ccameron): This function should not ignore |colorBehavior|.
61 // https://crbug.com/672306
56 if (!srcRect.intersects(FloatRect(0.0f, 0.0f, 62 if (!srcRect.intersects(FloatRect(0.0f, 0.0f,
57 static_cast<float>(m_size.width()), 63 static_cast<float>(m_size.width()),
58 static_cast<float>(m_size.height())))) { 64 static_cast<float>(m_size.height())))) {
59 return; 65 return;
60 } 66 }
61 67
62 SkPaint paint(basePaint); 68 SkPaint paint(basePaint);
63 paint.setStyle(SkPaint::kFill_Style); 69 paint.setStyle(SkPaint::kFill_Style);
64 paint.setColor(kFillColor); 70 paint.setColor(kFillColor);
65 canvas->drawRect(destRect, paint); 71 canvas->drawRect(destRect, paint);
66 } 72 }
67 73
68 void PlaceholderImage::destroyDecodedData() { 74 void PlaceholderImage::destroyDecodedData() {
69 m_imageForCurrentFrame.reset(); 75 m_imageForCurrentFrame.reset();
70 } 76 }
71 77
72 } // namespace blink 78 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698