Changeset 283531 in webkit
- Timestamp:
- Oct 4, 2021 7:32:56 PM (10 months ago)
- Location:
- trunk
- Files:
-
- 4 added
- 19 edited
- 2 moved
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/TestExpectations (modified) (1 diff)
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https-expected.txt (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js (modified) (2 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-0.7333-0-0.svg (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-1-0-0.svg (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.svg (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000.svg (added)
-
LayoutTests/platform/ios-14/TestExpectations (modified) (1 diff)
-
LayoutTests/platform/ios-simulator/TestExpectations (modified) (1 diff)
-
LayoutTests/platform/ios/TestExpectations (modified) (1 diff)
-
LayoutTests/platform/mac/TestExpectations (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp (modified) (4 diffs)
-
Source/WebCore/platform/graphics/GraphicsContext.cpp (modified) (1 diff)
-
Source/WebCore/platform/graphics/GraphicsContext.h (modified) (1 diff)
-
Source/WebCore/platform/graphics/Image.cpp (modified) (1 diff)
-
Source/WebCore/platform/graphics/Image.h (modified) (1 diff)
-
Source/WebCore/platform/graphics/MediaPlayer.h (modified) (1 diff)
-
Source/WebCore/svg/graphics/SVGImage.cpp (modified) (6 diffs)
-
Source/WebCore/svg/graphics/SVGImage.h (modified) (2 diffs)
-
Source/WebCore/svg/graphics/SVGImageForContainer.cpp (modified) (1 diff)
-
Source/WebCore/svg/graphics/SVGImageForContainer.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r283529 r283531 1 2021-10-04 Cameron McCormack <heycam@apple.com> 2 3 Choose an appropriate color space when converting an SVG image into a NativeImage for canvas drawImage 4 https://bugs.webkit.org/show_bug.cgi?id=231062 5 <rdar://problem/83752451> 6 7 Reviewed by Simon Fraser. 8 9 * TestExpectations: 10 * platform/ios-14/TestExpectations: 11 * platform/ios/TestExpectations: 12 * platform/mac/TestExpectations: 13 1 14 2021-10-04 Cameron McCormack <heycam@apple.com> 2 15 -
trunk/LayoutTests/TestExpectations
r283525 r283531 5082 5082 fast/canvas/canvas-color-space-display-p3-ImageData.html [ Failure ] 5083 5083 fast/canvas/canvas-color-space-display-p3.html [ ImageOnlyFailure ] 5084 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.ht ml [ Failure ]5084 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html [ Failure ] 5085 5085 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html [ Failure ] 5086 5086 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-ImageBitmap.html [ Failure ] -
trunk/LayoutTests/imported/w3c/ChangeLog
r283525 r283531 1 2021-10-04 Cameron McCormack <heycam@apple.com> 2 3 Choose an appropriate color space when converting an SVG image into a NativeImage for canvas drawImage 4 https://bugs.webkit.org/show_bug.cgi?id=231062 5 <rdar://problem/83752451> 6 7 Reviewed by Simon Fraser. 8 9 Add a test for drawImage() with an SVG image that has sRGB and Display 10 P3 colors. 11 12 Not adding tests for patterns pointing to SVG images for now, since 13 WebKit currently always taints the canvas in that case, or for 14 ImageBitmaps wrapping SVG images, since we always flatten them to sRGB 15 (and we don't track what content is inside the SVG to make a better 16 decision about what color space ImageBuffer to use). 17 18 * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt. 19 * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html. 20 * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js: 21 * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-0.7333-0-0.svg: Added. 22 * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-1-0-0.svg: Added. 23 * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.svg: Added. 24 * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000.svg: Added. 25 1 26 2021-10-04 Tim Nguyen <ntim@apple.com> 2 27 -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https-expected.txt
r283529 r283531 208 208 PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=false 209 209 PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=true 210 PASS sRGB-FF0000.svg, Context srgb, ImageData srgb, scaleImage=false 211 PASS sRGB-FF0000.svg, Context srgb, ImageData srgb, scaleImage=true 212 PASS sRGB-FF0000.svg, Context srgb, ImageData display-p3, scaleImage=false 213 PASS sRGB-FF0000.svg, Context srgb, ImageData display-p3, scaleImage=true 214 PASS sRGB-FF0000.svg, Context display-p3, ImageData srgb, scaleImage=false 215 PASS sRGB-FF0000.svg, Context display-p3, ImageData srgb, scaleImage=true 216 PASS sRGB-FF0000.svg, Context display-p3, ImageData display-p3, scaleImage=false 217 PASS sRGB-FF0000.svg, Context display-p3, ImageData display-p3, scaleImage=true 218 PASS sRGB-BB0000.svg, Context srgb, ImageData srgb, scaleImage=false 219 PASS sRGB-BB0000.svg, Context srgb, ImageData srgb, scaleImage=true 220 PASS sRGB-BB0000.svg, Context srgb, ImageData display-p3, scaleImage=false 221 PASS sRGB-BB0000.svg, Context srgb, ImageData display-p3, scaleImage=true 222 PASS sRGB-BB0000.svg, Context display-p3, ImageData srgb, scaleImage=false 223 PASS sRGB-BB0000.svg, Context display-p3, ImageData srgb, scaleImage=true 224 PASS sRGB-BB0000.svg, Context display-p3, ImageData display-p3, scaleImage=false 225 PASS sRGB-BB0000.svg, Context display-p3, ImageData display-p3, scaleImage=true 226 PASS Display-P3-1-0-0.svg, Context srgb, ImageData srgb, scaleImage=false 227 PASS Display-P3-1-0-0.svg, Context srgb, ImageData srgb, scaleImage=true 228 PASS Display-P3-1-0-0.svg, Context srgb, ImageData display-p3, scaleImage=false 229 PASS Display-P3-1-0-0.svg, Context srgb, ImageData display-p3, scaleImage=true 230 PASS Display-P3-1-0-0.svg, Context display-p3, ImageData srgb, scaleImage=false 231 PASS Display-P3-1-0-0.svg, Context display-p3, ImageData srgb, scaleImage=true 232 PASS Display-P3-1-0-0.svg, Context display-p3, ImageData display-p3, scaleImage=false 233 PASS Display-P3-1-0-0.svg, Context display-p3, ImageData display-p3, scaleImage=true 234 PASS Display-P3-0.7333-0-0.svg, Context srgb, ImageData srgb, scaleImage=false 235 PASS Display-P3-0.7333-0-0.svg, Context srgb, ImageData srgb, scaleImage=true 236 PASS Display-P3-0.7333-0-0.svg, Context srgb, ImageData display-p3, scaleImage=false 237 PASS Display-P3-0.7333-0-0.svg, Context srgb, ImageData display-p3, scaleImage=true 238 PASS Display-P3-0.7333-0-0.svg, Context display-p3, ImageData srgb, scaleImage=false 239 PASS Display-P3-0.7333-0-0.svg, Context display-p3, ImageData srgb, scaleImage=true 240 PASS Display-P3-0.7333-0-0.svg, Context display-p3, ImageData display-p3, scaleImage=false 241 PASS Display-P3-0.7333-0-0.svg, Context display-p3, ImageData display-p3, scaleImage=true 210 242 -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html
r283529 r283531 7 7 // sRGB and Display P3 canvases works, by reading pixels with getImageData() 8 8 // as sRGB and Display P3 values. 9 for (let [filename, expectedPixels] of Object.entries( imageTests)) {9 for (let [filename, expectedPixels] of Object.entries({...imageTests, ...svgImageTests})) { 10 10 for (let contextColorSpace of ["srgb", "display-p3"]) { 11 11 for (let imageDataColorSpace of ["srgb", "display-p3"]) { -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js
r282630 r283531 1 // Each image:1 // Each PNG: 2 2 // * is 2x2 and has a single color 3 3 // * has a filename that indicates its contents: … … 175 175 "display-p3 srgb": [219, 0, 1, 204], 176 176 "display-p3 display-p3": [201, 42, 29, 204], 177 }, 178 }; 179 180 const svgImageTests = { 181 // SVG source images 182 183 "sRGB-FF0000.svg": { 184 "srgb srgb": [255, 0, 0, 255], 185 "srgb display-p3": [234, 51, 35, 255], 186 "display-p3 srgb": [255, 0, 0, 255], 187 "display-p3 display-p3": [234, 51, 35, 255], 188 }, 189 "sRGB-BB0000.svg": { 190 "srgb srgb": [187, 0, 0, 255], 191 "srgb display-p3": [171, 35, 23, 255], 192 "display-p3 srgb": [187, 1, 0, 255], 193 "display-p3 display-p3": [171, 35, 23, 255], 194 }, 195 196 "Display-P3-1-0-0.svg": { 197 "srgb srgb": [255, 0, 0, 255], 198 "srgb display-p3": [234, 51, 35, 255], 199 "display-p3 srgb": [255, 0, 0, 255], 200 "display-p3 display-p3": [255, 0, 0, 255], 201 }, 202 "Display-P3-0.7333-0-0.svg": { 203 "srgb srgb": [205, 0, 0, 255], 204 "srgb display-p3": [188, 39, 26, 255], 205 "display-p3 srgb": [205, 0, 0, 255], 206 "display-p3 display-p3": [187, 0, 0, 255], 177 207 }, 178 208 }; -
trunk/LayoutTests/platform/ios-14/TestExpectations
r283523 r283531 66 66 fast/canvas/canvas-color-space-display-p3-ImageData.html [ Failure ] 67 67 fast/canvas/canvas-color-space-display-p3.html [ ImageOnlyFailure ] 68 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.ht ml [ Failure ]68 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html [ Failure ] 69 69 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html [ Failure ] 70 70 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-ImageBitmap.html [ Failure ] -
trunk/LayoutTests/platform/ios-simulator/TestExpectations
r283529 r283531 62 62 fast/canvas/canvas-color-space-display-p3-ImageData.html [ Failure ] 63 63 fast/canvas/canvas-color-space-display-p3.html [ ImageOnlyFailure ] 64 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.ht ml [ Failure ]64 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html [ Failure ] 65 65 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html [ Failure ] 66 66 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-ImageBitmap.html [ Failure ] -
trunk/LayoutTests/platform/ios/TestExpectations
r283523 r283531 3487 3487 fast/canvas/canvas-color-space-display-p3-ImageData.html [ Pass ] 3488 3488 fast/canvas/canvas-color-space-display-p3.html [ Pass ] 3489 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.ht ml [ Pass ]3489 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html [ Pass ] 3490 3490 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html [ Pass ] 3491 3491 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-ImageBitmap.html [ Pass ] -
trunk/LayoutTests/platform/mac/TestExpectations
r283406 r283531 2353 2353 [ Monterey+ ] fast/canvas/canvas-color-space-display-p3-ImageData.html [ Pass ] 2354 2354 [ Monterey+ ] fast/canvas/canvas-color-space-display-p3.html [ Pass ] 2355 [ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.ht ml [ Pass ]2355 [ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html [ Pass ] 2356 2356 [ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html [ Pass ] 2357 2357 [ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-ImageBitmap.html [ Pass ] -
trunk/Source/WebCore/ChangeLog
r283526 r283531 1 2021-10-04 Cameron McCormack <heycam@apple.com> 2 3 Choose an appropriate color space when converting an SVG image into a NativeImage for canvas drawImage 4 https://bugs.webkit.org/show_bug.cgi?id=231062 5 <rdar://problem/83752451> 6 7 Reviewed by Simon Fraser. 8 9 When GPUP canvas is enabled, drawImage() with an SVG image is handled 10 by drawing into a NativeImage and then sending that to the GPUP. We 11 need to choose a color space for the NativeImage's ImageBuffer that 12 matches the canvas. 13 14 Once full SVG rendering is supported by the GPU process, we can undo 15 this code, as we'll no longer be using a NativeImage. 16 17 Test: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html 18 19 * html/canvas/CanvasRenderingContext2DBase.cpp: 20 (WebCore::CanvasRenderingContext2DBase::drawImage): 21 (WebCore::drawImageToContext): 22 (WebCore::CanvasRenderingContext2DBase::fullCanvasCompositedDrawImage): 23 * platform/graphics/GraphicsContext.cpp: 24 (WebCore::GraphicsContext::drawImageForCanvas): 25 * platform/graphics/GraphicsContext.h: 26 * platform/graphics/Image.cpp: 27 (WebCore::Image::drawForCanvas): 28 * platform/graphics/Image.h: 29 * platform/graphics/MediaPlayer.h: 30 * svg/graphics/SVGImage.cpp: 31 (WebCore::SVGImage::drawForCanvasForContainer): 32 (WebCore::SVGImage::drawForContainer): 33 (WebCore::SVGImage::drawForContainerInternal): 34 (WebCore::SVGImage::nativeImage): 35 (WebCore::SVGImage::drawForCanvas): 36 (WebCore::SVGImage::draw): 37 (WebCore::SVGImage::drawInternal): 38 (WebCore::SVGImage::drawAsNativeImage): 39 * svg/graphics/SVGImage.h: 40 * svg/graphics/SVGImageForContainer.cpp: 41 (WebCore::SVGImageForContainer::drawForCanvas): 42 * svg/graphics/SVGImageForContainer.h: 43 1 44 2021-10-04 Jer Noble <jer.noble@apple.com> 2 45 -
trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp
r282920 r283531 1571 1571 bool repaintEntireCanvas = false; 1572 1572 if (rectContainsCanvas(normalizedDstRect)) { 1573 c->drawImage (*image, normalizedDstRect, normalizedSrcRect, options);1573 c->drawImageForCanvas(*image, normalizedDstRect, normalizedSrcRect, options, colorSpace()); 1574 1574 repaintEntireCanvas = true; 1575 1575 } else if (isFullCanvasCompositeMode(op)) { … … 1578 1578 } else if (op == CompositeOperator::Copy) { 1579 1579 clearCanvas(); 1580 c->drawImage (*image, normalizedDstRect, normalizedSrcRect, options);1580 c->drawImageForCanvas(*image, normalizedDstRect, normalizedSrcRect, options, colorSpace()); 1581 1581 repaintEntireCanvas = true; 1582 1582 } else 1583 c->drawImage (*image, normalizedDstRect, normalizedSrcRect, options);1583 c->drawImageForCanvas(*image, normalizedDstRect, normalizedSrcRect, options, colorSpace()); 1584 1584 1585 1585 if (isEntireBackingStoreDirty()) … … 1843 1843 } 1844 1844 1845 static void drawImageToContext(Image& image, GraphicsContext& context, const FloatRect& dest, const FloatRect& src, const ImagePaintingOptions& options )1846 { 1847 context.drawImage (image, dest, src, options);1848 } 1849 1850 static void drawImageToContext(ImageBuffer& imageBuffer, GraphicsContext& context, const FloatRect& dest, const FloatRect& src, const ImagePaintingOptions& options )1845 static void drawImageToContext(Image& image, GraphicsContext& context, const FloatRect& dest, const FloatRect& src, const ImagePaintingOptions& options, DestinationColorSpace colorSpace) 1846 { 1847 context.drawImageForCanvas(image, dest, src, options, colorSpace); 1848 } 1849 1850 static void drawImageToContext(ImageBuffer& imageBuffer, GraphicsContext& context, const FloatRect& dest, const FloatRect& src, const ImagePaintingOptions& options, DestinationColorSpace) 1851 1851 { 1852 1852 context.drawImageBuffer(imageBuffer, dest, src, options); … … 1879 1879 buffer->context().translate(croppedOffset); 1880 1880 buffer->context().concatCTM(effectiveTransform); 1881 drawImageToContext(image, buffer->context(), adjustedDest, src, { CompositeOperator::SourceOver } );1881 drawImageToContext(image, buffer->context(), adjustedDest, src, { CompositeOperator::SourceOver }, colorSpace()); 1882 1882 1883 1883 compositeBuffer(*buffer, bufferRect, op); -
trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp
r283443 r283531 546 546 } 547 547 548 ImageDrawResult GraphicsContext::drawImageForCanvas(Image& image, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& options, DestinationColorSpace canvasColorSpace) 549 { 550 InterpolationQualityMaintainer interpolationQualityForThisScope(*this, options.interpolationQuality()); 551 return image.drawForCanvas(*this, destination, source, options, canvasColorSpace); 552 } 553 548 554 ImageDrawResult GraphicsContext::drawTiledImage(Image& image, const FloatRect& destination, const FloatPoint& source, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& options) 549 555 { -
trunk/Source/WebCore/platform/graphics/GraphicsContext.h
r283273 r283531 431 431 WEBCORE_EXPORT virtual ImageDrawResult drawImage(Image&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = { ImageOrientation::FromImage }); 432 432 433 virtual ImageDrawResult drawImageForCanvas(Image&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions&, DestinationColorSpace canvasColorSpace); 434 433 435 WEBCORE_EXPORT virtual ImageDrawResult drawTiledImage(Image&, const FloatRect& destination, const FloatPoint& source, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& = { }); 434 436 WEBCORE_EXPORT virtual ImageDrawResult drawTiledImage(Image&, const FloatRect& destination, const FloatRect& source, const FloatSize& tileScaleFactor, Image::TileRule, Image::TileRule, const ImagePaintingOptions& = { }); -
trunk/Source/WebCore/platform/graphics/Image.cpp
r282696 r283531 154 154 } 155 155 156 ImageDrawResult Image::drawForCanvas(GraphicsContext& context, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options, DestinationColorSpace) 157 { 158 return draw(context, dstRect, srcRect, options); 159 } 160 156 161 ImageDrawResult Image::drawTiled(GraphicsContext& ctxt, const FloatRect& destRect, const FloatPoint& srcPoint, const FloatSize& scaledTileSize, const FloatSize& spacing, const ImagePaintingOptions& options) 157 162 { -
trunk/Source/WebCore/platform/graphics/Image.h
r282696 r283531 202 202 #endif 203 203 virtual ImageDrawResult draw(GraphicsContext&, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& = { }) = 0; 204 virtual ImageDrawResult drawForCanvas(GraphicsContext&, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions&, DestinationColorSpace canvasColorSpace); 204 205 ImageDrawResult drawTiled(GraphicsContext&, const FloatRect& dstRect, const FloatPoint& srcPoint, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& = { }); 205 206 ImageDrawResult drawTiled(GraphicsContext&, const FloatRect& dstRect, const FloatRect& srcRect, const FloatSize& tileScaleFactor, TileRule hRule, TileRule vRule, const ImagePaintingOptions& = { }); -
trunk/Source/WebCore/platform/graphics/MediaPlayer.h
r283237 r283531 66 66 class CDMInstance; 67 67 class CachedResourceLoader; 68 class DestinationColorSpace; 68 69 class GraphicsContextGL; 69 70 class GraphicsContext; -
trunk/Source/WebCore/svg/graphics/SVGImage.cpp
r282799 r283531 177 177 } 178 178 179 ImageDrawResult SVGImage::drawForContainer(GraphicsContext& context, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect, 180 const FloatRect& srcRect, const ImagePaintingOptions& options) 179 ImageDrawResult SVGImage::drawForCanvasForContainer(GraphicsContext& context, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options, DestinationColorSpace canvasColorSpace) 180 { 181 return drawForContainerInternal(context, containerSize, containerZoom, initialFragmentURL, dstRect, srcRect, options, canvasColorSpace); 182 } 183 184 ImageDrawResult SVGImage::drawForContainer(GraphicsContext& context, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options) 185 { 186 return drawForContainerInternal(context, containerSize, containerZoom, initialFragmentURL, dstRect, srcRect, options, DestinationColorSpace::SRGB()); 187 } 188 189 ImageDrawResult SVGImage::drawForContainerInternal(GraphicsContext& context, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options, DestinationColorSpace intermediateColorSpace) 181 190 { 182 191 if (!m_page) … … 202 211 frameView()->scrollToFragment(initialFragmentURL); 203 212 204 ImageDrawResult result = draw (context, dstRect, scaledSrc, options);213 ImageDrawResult result = drawInternal(context, dstRect, scaledSrc, options, intermediateColorSpace); 205 214 206 215 setImageObserver(observer); … … 215 224 RefPtr<NativeImage> SVGImage::nativeImage(const GraphicsContext*) 216 225 { 217 return nativeImage(size(), FloatRect(FloatPoint(), size()) );218 } 219 220 RefPtr<NativeImage> SVGImage::nativeImage(const FloatSize& imageSize, const FloatRect& sourceRect )226 return nativeImage(size(), FloatRect(FloatPoint(), size()), DestinationColorSpace::SRGB()); 227 } 228 229 RefPtr<NativeImage> SVGImage::nativeImage(const FloatSize& imageSize, const FloatRect& sourceRect, DestinationColorSpace colorSpace) 221 230 { 222 231 if (!m_page) 223 232 return nullptr; 224 233 225 auto imageBuffer = ImageBuffer::create(imageSize, RenderingMode::Unaccelerated, 1, DestinationColorSpace::SRGB(), PixelFormat::BGRA8);234 auto imageBuffer = ImageBuffer::create(imageSize, RenderingMode::Unaccelerated, 1, colorSpace, PixelFormat::BGRA8); 226 235 if (!imageBuffer) 227 236 return nullptr; … … 276 285 } 277 286 287 ImageDrawResult SVGImage::drawForCanvas(GraphicsContext& context, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options, DestinationColorSpace canvasColorSpace) 288 { 289 return drawInternal(context, dstRect, srcRect, options, canvasColorSpace); 290 } 291 278 292 ImageDrawResult SVGImage::draw(GraphicsContext& context, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options) 293 { 294 return drawInternal(context, dstRect, srcRect, options, DestinationColorSpace::SRGB()); 295 } 296 297 ImageDrawResult SVGImage::drawInternal(GraphicsContext& context, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options, DestinationColorSpace intermediateColorSpace) 279 298 { 280 299 if (!m_page) … … 284 303 // Display list drawing can't handle arbitrary DOM content. 285 304 // FIXME https://bugs.webkit.org/show_bug.cgi?id=227748: Remove this when it can. 286 return drawAsNativeImage(context, dstRect, srcRect, options );305 return drawAsNativeImage(context, dstRect, srcRect, options, intermediateColorSpace); 287 306 } 288 307 … … 337 356 338 357 339 ImageDrawResult SVGImage::drawAsNativeImage(GraphicsContext& context, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& options )358 ImageDrawResult SVGImage::drawAsNativeImage(GraphicsContext& context, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& options, DestinationColorSpace colorSpace) 340 359 { 341 360 ASSERT(!context.hasPlatformContext()); 342 361 343 362 auto rectInNativeImage = FloatRect { { }, destination.size() }; 344 auto nativeImage = this->nativeImage(rectInNativeImage.size(), source );363 auto nativeImage = this->nativeImage(rectInNativeImage.size(), source, colorSpace); 345 364 if (!nativeImage) 346 365 return ImageDrawResult::DidNothing; -
trunk/Source/WebCore/svg/graphics/SVGImage.h
r279793 r283531 89 89 RefPtr<NativeImage> nativeImageForCurrentFrame(const GraphicsContext* = nullptr) final; 90 90 RefPtr<NativeImage> nativeImage(const GraphicsContext* = nullptr) final; 91 RefPtr<NativeImage> nativeImage(const FloatSize& imageSize, const FloatRect& sourceRect );91 RefPtr<NativeImage> nativeImage(const FloatSize& imageSize, const FloatRect& sourceRect, DestinationColorSpace); 92 92 93 93 void startAnimationTimerFired(); … … 95 95 WEBCORE_EXPORT explicit SVGImage(ImageObserver&); 96 96 ImageDrawResult draw(GraphicsContext&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = { }) final; 97 ImageDrawResult drawAsNativeImage(GraphicsContext&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = { }); 97 ImageDrawResult drawForCanvas(GraphicsContext&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions&, DestinationColorSpace) final; 98 ImageDrawResult drawAsNativeImage(GraphicsContext&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions&, DestinationColorSpace); 98 99 ImageDrawResult drawForContainer(GraphicsContext&, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& = { }); 100 ImageDrawResult drawForContainerInternal(GraphicsContext&, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions&, DestinationColorSpace); 101 ImageDrawResult drawInternal(GraphicsContext&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions&, DestinationColorSpace); 102 ImageDrawResult drawForCanvasForContainer(GraphicsContext&, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions&, DestinationColorSpace); 99 103 void drawPatternForContainer(GraphicsContext&, const FloatSize& containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& srcRect, const AffineTransform&, const FloatPoint& phase, const FloatSize& spacing, const FloatRect&, const ImagePaintingOptions& = { }); 100 104 -
trunk/Source/WebCore/svg/graphics/SVGImageForContainer.cpp
r279793 r283531 49 49 } 50 50 51 ImageDrawResult SVGImageForContainer::drawForCanvas(GraphicsContext& context, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options, DestinationColorSpace canvasColorSpace) 52 { 53 return m_image->drawForCanvasForContainer(context, m_containerSize, m_containerZoom, m_initialFragmentURL, dstRect, srcRect, options, canvasColorSpace); 54 } 55 51 56 void SVGImageForContainer::drawPattern(GraphicsContext& context, const FloatRect& dstRect, const FloatRect& srcRect, const AffineTransform& patternTransform, 52 57 const FloatPoint& phase, const FloatSize& spacing, const ImagePaintingOptions& options) -
trunk/Source/WebCore/svg/graphics/SVGImageForContainer.h
r279793 r283531 55 55 56 56 ImageDrawResult draw(GraphicsContext&, const FloatRect&, const FloatRect&, const ImagePaintingOptions& = { }) final; 57 ImageDrawResult drawForCanvas(GraphicsContext&, const FloatRect&, const FloatRect&, const ImagePaintingOptions&, DestinationColorSpace) final; 57 58 58 59 void drawPattern(GraphicsContext&, const FloatRect&, const FloatRect&, const AffineTransform&, const FloatPoint&, const FloatSize&, const ImagePaintingOptions& = { }) final;
Note: See TracChangeset
for help on using the changeset viewer.