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

Side by Side Diff: third_party/WebKit/Source/core/frame/ImageBitmap.cpp

Issue 1423513005: Reland of: Make Imagebitmap Transferable (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "config.h" 5 #include "config.h"
6 #include "core/frame/ImageBitmap.h" 6 #include "core/frame/ImageBitmap.h"
7 7
8 #include "core/html/HTMLCanvasElement.h" 8 #include "core/html/HTMLCanvasElement.h"
9 #include "core/html/HTMLVideoElement.h" 9 #include "core/html/HTMLVideoElement.h"
10 #include "core/html/ImageData.h" 10 #include "core/html/ImageData.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 ImageBitmap::ImageBitmap(ImageBitmap* bitmap, const IntRect& cropRect) 80 ImageBitmap::ImageBitmap(ImageBitmap* bitmap, const IntRect& cropRect)
81 { 81 {
82 m_image = cropImage(bitmap->skImage(), cropRect); 82 m_image = cropImage(bitmap->skImage(), cropRect);
83 } 83 }
84 84
85 ImageBitmap::ImageBitmap(Image* image, const IntRect& cropRect) 85 ImageBitmap::ImageBitmap(Image* image, const IntRect& cropRect)
86 { 86 {
87 m_image = cropImage(image->imageForCurrentFrame(), cropRect); 87 m_image = cropImage(image->imageForCurrentFrame(), cropRect);
88 } 88 }
89 89
90 ImageBitmap::ImageBitmap(SkImage* image)
91 {
92 m_image = adoptRef(image);
93 }
94
95 PassRefPtr<SkImage> ImageBitmap::transfer()
96 {
97 return m_image.release();
Justin Novosad 2015/11/11 05:29:08 From the postMessage spec: "If any object is liste
xidachen 2015/11/16 18:00:51 Done.
98 }
99
90 ImageBitmap::~ImageBitmap() 100 ImageBitmap::~ImageBitmap()
91 { 101 {
92 } 102 }
93 103
94 PassRefPtrWillBeRawPtr<ImageBitmap> ImageBitmap::create(HTMLImageElement* image, const IntRect& cropRect) 104 PassRefPtrWillBeRawPtr<ImageBitmap> ImageBitmap::create(HTMLImageElement* image, const IntRect& cropRect)
95 { 105 {
96 IntRect normalizedCropRect = normalizeRect(cropRect); 106 IntRect normalizedCropRect = normalizeRect(cropRect);
97 return adoptRefWillBeNoop(new ImageBitmap(image, normalizedCropRect)); 107 return adoptRefWillBeNoop(new ImageBitmap(image, normalizedCropRect));
98 } 108 }
99 109
(...skipping 20 matching lines...) Expand all
120 IntRect normalizedCropRect = normalizeRect(cropRect); 130 IntRect normalizedCropRect = normalizeRect(cropRect);
121 return adoptRefWillBeNoop(new ImageBitmap(bitmap, normalizedCropRect)); 131 return adoptRefWillBeNoop(new ImageBitmap(bitmap, normalizedCropRect));
122 } 132 }
123 133
124 PassRefPtrWillBeRawPtr<ImageBitmap> ImageBitmap::create(Image* image, const IntR ect& cropRect) 134 PassRefPtrWillBeRawPtr<ImageBitmap> ImageBitmap::create(Image* image, const IntR ect& cropRect)
125 { 135 {
126 IntRect normalizedCropRect = normalizeRect(cropRect); 136 IntRect normalizedCropRect = normalizeRect(cropRect);
127 return adoptRefWillBeNoop(new ImageBitmap(image, normalizedCropRect)); 137 return adoptRefWillBeNoop(new ImageBitmap(image, normalizedCropRect));
128 } 138 }
129 139
140 PassRefPtrWillBeRawPtr<ImageBitmap> ImageBitmap::create(SkImage* image)
141 {
142 return adoptRefWillBeNoop(new ImageBitmap(image));
143 }
144
130 PassRefPtr<SkImage> ImageBitmap::cropImage(PassRefPtr<SkImage> image, const IntR ect& cropRect) 145 PassRefPtr<SkImage> ImageBitmap::cropImage(PassRefPtr<SkImage> image, const IntR ect& cropRect)
131 { 146 {
132 ASSERT(image); 147 ASSERT(image);
133 148
134 IntRect imgRect = IntRect(IntPoint(), IntSize(image->width(), image->height( ))); 149 IntRect imgRect = IntRect(IntPoint(), IntSize(image->width(), image->height( )));
135 const IntRect srcRect = intersection(imgRect, cropRect); 150 const IntRect srcRect = intersection(imgRect, cropRect);
136 151
137 if (cropRect == srcRect) 152 if (cropRect == srcRect)
138 return adoptRef(image->newSubset(srcRect)); 153 return adoptRef(image->newSubset(srcRect));
139 154
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 { 186 {
172 return FloatSize(width(), height()); 187 return FloatSize(width(), height());
173 } 188 }
174 189
175 DEFINE_TRACE(ImageBitmap) 190 DEFINE_TRACE(ImageBitmap)
176 { 191 {
177 ImageLoaderClient::trace(visitor); 192 ImageLoaderClient::trace(visitor);
178 } 193 }
179 194
180 } // namespace blink 195 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698