Subpixel rendering: Transition class Image (and its dependencies) from int to float...
authorzalan@apple.com <zalan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 1 Apr 2014 14:17:58 +0000 (14:17 +0000)
committerzalan@apple.com <zalan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 1 Apr 2014 14:17:58 +0000 (14:17 +0000)
https://bugs.webkit.org/show_bug.cgi?id=130643

Reviewed by Simon Fraser.

This is in preparation to support subpixel positioned/sized background images. While 1x bitmap images can't take
subpixel sizing on hidpi resolutions, both generated and hidpi images can.
This patch does not change Image behavior in general as both position and size are still snapped to integral values.

No change in behavior.

Source/WebCore:

* WebCore.exp.in:
* css/CSSCrossfadeValue.cpp:
(WebCore::CSSCrossfadeValue::fixedSize):
* css/CSSFilterImageValue.cpp:
(WebCore::CSSFilterImageValue::fixedSize):
* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::drawImageIntoBuffer):
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::imageSizeForRenderer):
* page/EventHandler.cpp:
(WebCore::EventHandler::selectCursor):
* platform/Cursor.cpp:
(WebCore::determineHotSpot):
* platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::size):
(WebCore::BitmapImage::currentFrameSize):
* platform/graphics/BitmapImage.h:
* platform/graphics/CrossfadeGeneratedImage.cpp:
(WebCore::CrossfadeGeneratedImage::CrossfadeGeneratedImage):
(WebCore::drawCrossfadeSubimage):
(WebCore::CrossfadeGeneratedImage::drawCrossfade):
* platform/graphics/CrossfadeGeneratedImage.h:
* platform/graphics/GeneratedImage.h:
* platform/graphics/Gradient.cpp:
(WebCore::Gradient::adjustParametersForTiledDrawing):
* platform/graphics/Gradient.h:
* platform/graphics/GradientImage.cpp:
(WebCore::GradientImage::drawPattern):
* platform/graphics/GradientImage.h:
* platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::createCompatibleBuffer):
* platform/graphics/GraphicsContext.h:
* platform/graphics/Image.cpp:
(WebCore::Image::adjustSourceRectForDownSampling):
* platform/graphics/Image.h:
(WebCore::Image::setContainerSize):
(WebCore::Image::rect):
(WebCore::Image::width):
(WebCore::Image::height):
* platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::createCompatibleBuffer):
* platform/graphics/ImageBuffer.h:
(WebCore::ImageBuffer::create):
* platform/graphics/IntPoint.cpp:
(WebCore::IntPoint::IntPoint):
* platform/graphics/IntPoint.h:
* platform/graphics/IntSize.cpp:
(WebCore::IntSize::IntSize):
* platform/graphics/IntSize.h:
* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::ImageBuffer::ImageBuffer):
* platform/graphics/cairo/ImageCairo.cpp:
(WebCore::Image::drawPattern):
* platform/graphics/cg/ImageBufferCG.cpp:
(WebCore::ImageBuffer::ImageBuffer):
* platform/graphics/cg/ImageBufferDataCG.cpp:
* platform/graphics/cg/PDFDocumentImage.cpp:
(WebCore::PDFDocumentImage::size):
(WebCore::PDFDocumentImage::updateCachedImageIfNeeded):
(WebCore::applyRotationForPainting):
* platform/graphics/cg/PDFDocumentImage.h:
* platform/graphics/cg/PatternCG.cpp:
(WebCore::Pattern::createPlatformPattern):
* platform/graphics/mac/GraphicsContextMac.mm:
* platform/graphics/mac/IconMac.mm:
* platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:
(WebCore::TextureMapperTiledBackingStore::updateContentsFromImageIfNeeded):
* platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp:
(WebCore::CoordinatedImageBacking::update):
* platform/graphics/win/ImageCGWin.cpp:
(WebCore::BitmapImage::getHBITMAPOfSize):
(WebCore::BitmapImage::drawFrameMatchingSourceSize):
* platform/graphics/win/ImageCairoWin.cpp:
(WebCore::BitmapImage::getHBITMAPOfSize):
(WebCore::BitmapImage::drawFrameMatchingSourceSize):
* platform/mac/DragImageMac.mm:
(WebCore::createDragImageFromImage):
* platform/win/DragImageCGWin.cpp:
(WebCore::createDragImageFromImage):
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::writeImage):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::imageSizeForError):
(WebCore::RenderImage::paintReplaced):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::drawPlatformResizerImage):
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::setContainerSize):
* svg/graphics/SVGImage.h:
* svg/graphics/SVGImageCache.cpp:
(WebCore::SVGImageCache::imageSizeForRenderer):
* svg/graphics/SVGImageCache.h:
* svg/graphics/SVGImageForContainer.cpp:
(WebCore::SVGImageForContainer::size):
* svg/graphics/SVGImageForContainer.h:
* svg/graphics/filters/SVGFEImage.cpp:
(WebCore::FEImage::externalRepresentation):
* testing/Internals.cpp:
(WebCore::Internals::getCurrentCursorInfo):

Source/WebKit:

* WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

Source/WebKit2:

* Shared/WebCoreArgumentCoders.cpp:
(IPC::encodeImage):
* UIProcess/API/efl/EwkView.cpp:
(EwkView::updateCursor):

LayoutTests:

* platform/mac/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.txt:
* platform/mac/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/filters-composite-02-b-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/filters-displace-01-f-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/filters-image-01-b-expected.txt:
* svg/custom/feDisplacementMap-01-expected.txt:
* svg/filters/feImage-change-target-id-expected.txt:
* svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-objectBoundingBox-expected.txt:
* svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-userSpaceOnUse-expected.txt:
* svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-objectBoundingBox-expected.txt:
* svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-userSpaceOnUse-expected.txt:
* svg/filters/feImage-late-indirect-update-expected.txt:
* svg/filters/feImage-multiple-targets-id-change-expected.txt:
* svg/filters/feImage-position-expected.txt:
* svg/filters/feImage-preserveAspectRatio-all-expected.txt:
* svg/filters/feImage-preserveAspectratio-expected.txt:
* svg/filters/feImage-reference-invalidation-expected.txt:
* svg/filters/feImage-reference-svg-primitive-expected.txt:
* svg/filters/feImage-remove-target-expected.txt:
* svg/filters/feImage-subregions-expected.txt:
* svg/filters/feImage-subregions-preseveAspectRatio-none-expected.txt:
* svg/filters/feImage-subregions-preseveAspectRatio-none-with-viewBox-expected.txt:
* svg/filters/feImage-target-add-to-document-expected.txt:
* svg/filters/feImage-target-attribute-change-expected.txt:
* svg/filters/feImage-target-attribute-change-with-use-indirection-2-expected.txt:
* svg/filters/feImage-target-attribute-change-with-use-indirection-expected.txt:
* svg/filters/feImage-target-changes-id-expected.txt:
* svg/filters/feImage-target-id-change-expected.txt:
* svg/filters/feImage-target-inline-style-change-expected.txt:
* svg/filters/feImage-target-property-change-expected.txt:
* svg/filters/feImage-target-reappend-to-document-expected.txt:
* svg/filters/feImage-target-remove-from-document-expected.txt:
* svg/filters/feImage-target-style-change-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@166582 268f45cc-cd09-0410-ab3c-d52691b4dbfc

92 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-composite-02-b-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-displace-01-f-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-image-01-b-expected.txt
LayoutTests/svg/custom/feDisplacementMap-01-expected.txt
LayoutTests/svg/filters/feImage-change-target-id-expected.txt
LayoutTests/svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-objectBoundingBox-expected.txt
LayoutTests/svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-userSpaceOnUse-expected.txt
LayoutTests/svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-objectBoundingBox-expected.txt
LayoutTests/svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-userSpaceOnUse-expected.txt
LayoutTests/svg/filters/feImage-late-indirect-update-expected.txt
LayoutTests/svg/filters/feImage-multiple-targets-id-change-expected.txt
LayoutTests/svg/filters/feImage-position-expected.txt
LayoutTests/svg/filters/feImage-preserveAspectRatio-all-expected.txt
LayoutTests/svg/filters/feImage-preserveAspectratio-expected.txt
LayoutTests/svg/filters/feImage-reference-invalidation-expected.txt
LayoutTests/svg/filters/feImage-reference-svg-primitive-expected.txt
LayoutTests/svg/filters/feImage-remove-target-expected.txt
LayoutTests/svg/filters/feImage-subregions-expected.txt
LayoutTests/svg/filters/feImage-subregions-preseveAspectRatio-none-expected.txt
LayoutTests/svg/filters/feImage-subregions-preseveAspectRatio-none-with-viewBox-expected.txt
LayoutTests/svg/filters/feImage-target-add-to-document-expected.txt
LayoutTests/svg/filters/feImage-target-attribute-change-expected.txt
LayoutTests/svg/filters/feImage-target-attribute-change-with-use-indirection-2-expected.txt
LayoutTests/svg/filters/feImage-target-attribute-change-with-use-indirection-expected.txt
LayoutTests/svg/filters/feImage-target-changes-id-expected.txt
LayoutTests/svg/filters/feImage-target-id-change-expected.txt
LayoutTests/svg/filters/feImage-target-inline-style-change-expected.txt
LayoutTests/svg/filters/feImage-target-property-change-expected.txt
LayoutTests/svg/filters/feImage-target-reappend-to-document-expected.txt
LayoutTests/svg/filters/feImage-target-remove-from-document-expected.txt
LayoutTests/svg/filters/feImage-target-style-change-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/WebCore.exp.in
Source/WebCore/css/CSSCrossfadeValue.cpp
Source/WebCore/css/CSSFilterImageValue.cpp
Source/WebCore/html/canvas/WebGLRenderingContext.cpp
Source/WebCore/loader/cache/CachedImage.cpp
Source/WebCore/page/EventHandler.cpp
Source/WebCore/platform/Cursor.cpp
Source/WebCore/platform/graphics/BitmapImage.cpp
Source/WebCore/platform/graphics/BitmapImage.h
Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp
Source/WebCore/platform/graphics/CrossfadeGeneratedImage.h
Source/WebCore/platform/graphics/GeneratedImage.h
Source/WebCore/platform/graphics/Gradient.cpp
Source/WebCore/platform/graphics/Gradient.h
Source/WebCore/platform/graphics/GradientImage.cpp
Source/WebCore/platform/graphics/GradientImage.h
Source/WebCore/platform/graphics/GraphicsContext.cpp
Source/WebCore/platform/graphics/GraphicsContext.h
Source/WebCore/platform/graphics/Image.cpp
Source/WebCore/platform/graphics/Image.h
Source/WebCore/platform/graphics/ImageBuffer.cpp
Source/WebCore/platform/graphics/ImageBuffer.h
Source/WebCore/platform/graphics/IntPoint.cpp
Source/WebCore/platform/graphics/IntPoint.h
Source/WebCore/platform/graphics/IntSize.cpp
Source/WebCore/platform/graphics/IntSize.h
Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp
Source/WebCore/platform/graphics/cairo/ImageCairo.cpp
Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp
Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp
Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp
Source/WebCore/platform/graphics/cg/PDFDocumentImage.h
Source/WebCore/platform/graphics/cg/PatternCG.cpp
Source/WebCore/platform/graphics/mac/GraphicsContextMac.mm
Source/WebCore/platform/graphics/mac/IconMac.mm
Source/WebCore/platform/graphics/texmap/TextureMapperTiledBackingStore.cpp
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp
Source/WebCore/platform/graphics/win/ImageCGWin.cpp
Source/WebCore/platform/graphics/win/ImageCairoWin.cpp
Source/WebCore/platform/mac/DragImageMac.mm
Source/WebCore/platform/win/DragImageCGWin.cpp
Source/WebCore/platform/win/PasteboardWin.cpp
Source/WebCore/rendering/RenderImage.cpp
Source/WebCore/rendering/RenderLayer.cpp
Source/WebCore/svg/graphics/SVGImage.cpp
Source/WebCore/svg/graphics/SVGImage.h
Source/WebCore/svg/graphics/SVGImageCache.cpp
Source/WebCore/svg/graphics/SVGImageCache.h
Source/WebCore/svg/graphics/SVGImageForContainer.cpp
Source/WebCore/svg/graphics/SVGImageForContainer.h
Source/WebCore/svg/graphics/filters/SVGFEImage.cpp
Source/WebCore/testing/Internals.cpp
Source/WebKit/ChangeLog
Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in
Source/WebKit2/ChangeLog
Source/WebKit2/Shared/WebCoreArgumentCoders.cpp
Source/WebKit2/UIProcess/API/efl/EwkView.cpp

index 8d20ddc..c7765db 100644 (file)
@@ -1,3 +1,50 @@
+2014-04-01  Zalan Bujtas  <zalan@apple.com>
+
+        Subpixel rendering: Transition class Image (and its dependencies) from int to float to enable subpixel positioned/sized images.
+        https://bugs.webkit.org/show_bug.cgi?id=130643
+
+        Reviewed by Simon Fraser.
+
+        This is in preparation to support subpixel positioned/sized background images. While 1x bitmap images can't take
+        subpixel sizing on hidpi resolutions, both generated and hidpi images can.
+        This patch does not change Image behavior in general as both position and size are still snapped to integral values.  
+
+        No change in behavior.
+
+        * platform/mac/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1-SE/filters-image-05-f-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/filters-composite-02-b-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/filters-displace-01-f-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/filters-image-01-b-expected.txt:
+        * svg/custom/feDisplacementMap-01-expected.txt:
+        * svg/filters/feImage-change-target-id-expected.txt:
+        * svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-objectBoundingBox-expected.txt:
+        * svg/filters/feImage-filterUnits-objectBoundingBox-primitiveUnits-userSpaceOnUse-expected.txt:
+        * svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-objectBoundingBox-expected.txt:
+        * svg/filters/feImage-filterUnits-userSpaceOnUse-primitiveUnits-userSpaceOnUse-expected.txt:
+        * svg/filters/feImage-late-indirect-update-expected.txt:
+        * svg/filters/feImage-multiple-targets-id-change-expected.txt:
+        * svg/filters/feImage-position-expected.txt:
+        * svg/filters/feImage-preserveAspectRatio-all-expected.txt:
+        * svg/filters/feImage-preserveAspectratio-expected.txt:
+        * svg/filters/feImage-reference-invalidation-expected.txt:
+        * svg/filters/feImage-reference-svg-primitive-expected.txt:
+        * svg/filters/feImage-remove-target-expected.txt:
+        * svg/filters/feImage-subregions-expected.txt:
+        * svg/filters/feImage-subregions-preseveAspectRatio-none-expected.txt:
+        * svg/filters/feImage-subregions-preseveAspectRatio-none-with-viewBox-expected.txt:
+        * svg/filters/feImage-target-add-to-document-expected.txt:
+        * svg/filters/feImage-target-attribute-change-expected.txt:
+        * svg/filters/feImage-target-attribute-change-with-use-indirection-2-expected.txt:
+        * svg/filters/feImage-target-attribute-change-with-use-indirection-expected.txt:
+        * svg/filters/feImage-target-changes-id-expected.txt:
+        * svg/filters/feImage-target-id-change-expected.txt:
+        * svg/filters/feImage-target-inline-style-change-expected.txt:
+        * svg/filters/feImage-target-property-change-expected.txt:
+        * svg/filters/feImage-target-reappend-to-document-expected.txt:
+        * svg/filters/feImage-target-remove-from-document-expected.txt:
+        * svg/filters/feImage-target-style-change-expected.txt:
+
 2014-03-31  Alexey Proskuryakov  <ap@apple.com>
 
         Crashes in PageConsole::addMessage
index 33ca98f..3608884 100644 (file)
@@ -6,23 +6,23 @@ layer at (0,0) size 480x360
     RenderSVGContainer {g} at (59,99) size 352x152
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id="default"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="all_specified_relative"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="all_specified_absolute"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="x_specified"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="y_specified"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="width_specified"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="height_specified"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="width_height_specified"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="x_y_specified"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
       RenderSVGContainer {g} at (59,99) size 352x152 [transform={m=((1.00,0.00)(0.00,1.00)) t=(60.00,100.00)}]
         RenderSVGRect {rect} at (60,100) size 50x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
           [filter="default"] RenderSVGResourceFilter {filter} at (0,0) size 50x50
index 8ce4faa..80a3e79 100644 (file)
@@ -6,43 +6,43 @@ layer at (0,0) size 480x360
     RenderSVGContainer {g} at (10,15) size 420x280
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id="default"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMinYMinMeet"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMidYMinMeet"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMaxYMinMeet"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMinYMidMeet"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMidYMidMeet"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMaxYMidMeet"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMinYMaxMeet"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMidYMaxMeet"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMaxYMaxMeet"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMinYMinSlice"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMidYMinSlice"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMaxYMinSlice"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMinYMidSlice"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMidYMidSlice"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMaxYMidSlice"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMinYMaxSlice"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMidYMaxSlice"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
         RenderSVGResourceFilter {filter} [id="xMaxYMaxSlice"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="100x100"]
+          [feImage image-size="100.00x100.00"]
       RenderSVGContainer {g} at (10,15) size 420x280 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,30.00)}]
         RenderSVGText {text} at (63,-15) size 354x19 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 354x18
index cef8779..7c0e257 100644 (file)
@@ -10,52 +10,52 @@ layer at (0,0) size 480x360
         RenderSVGPath {path} at (15,0) size 150x90 [fill={[type=SOLID] [color=#FF00FF] [opacity=0.50]}] [data="M 0 0 L 0 150 L 150 0 Z"]
         RenderSVGResourceFilter {filter} [id="over"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feComposite operation="OVER"]
-            [feImage image-size="150x150"]
-            [feImage image-size="150x150"]
+            [feImage image-size="150.00x150.00"]
+            [feImage image-size="150.00x150.00"]
         RenderSVGResourceFilter {filter} [id="over50"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feComposite operation="OVER"]
-            [feImage image-size="150x150"]
-            [feImage image-size="150x150"]
+            [feImage image-size="150.00x150.00"]
+            [feImage image-size="150.00x150.00"]
         RenderSVGResourceFilter {filter} [id="in"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feComposite operation="IN"]
-            [feImage image-size="150x150"]
-            [feImage image-size="150x150"]
+            [feImage image-size="150.00x150.00"]
+            [feImage image-size="150.00x150.00"]
         RenderSVGResourceFilter {filter} [id="in50"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feComposite operation="IN"]
-            [feImage image-size="150x150"]
-            [feImage image-size="150x150"]
+            [feImage image-size="150.00x150.00"]
+            [feImage image-size="150.00x150.00"]
         RenderSVGResourceFilter {filter} [id="out"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feComposite operation="OUT"]
-            [feImage image-size="150x150"]
-            [feImage image-size="150x150"]
+            [feImage image-size="150.00x150.00"]
+            [feImage image-size="150.00x150.00"]
         RenderSVGResourceFilter {filter} [id="out50"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feComposite operation="OUT"]
-            [feImage image-size="150x150"]
-            [feImage image-size="150x150"]
+            [feImage image-size="150.00x150.00"]
+            [feImage image-size="150.00x150.00"]
         RenderSVGResourceFilter {filter} [id="atop"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feComposite operation="ATOP"]
-            [feImage image-size="150x150"]
-            [feImage image-size="150x150"]
+            [feImage image-size="150.00x150.00"]
+            [feImage image-size="150.00x150.00"]
         RenderSVGResourceFilter {filter} [id="atop50"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feComposite operation="ATOP"]
-            [feImage image-size="150x150"]
-            [feImage image-size="150x150"]
+            [feImage image-size="150.00x150.00"]
+            [feImage image-size="150.00x150.00"]
         RenderSVGResourceFilter {filter} [id="xor"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feComposite operation="XOR"]
-            [feImage image-size="150x150"]
-            [feImage image-size="150x150"]
+            [feImage image-size="150.00x150.00"]
+            [feImage image-size="150.00x150.00"]
         RenderSVGResourceFilter {filter} [id="xor50"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feComposite operation="XOR"]
-            [feImage image-size="150x150"]
-            [feImage image-size="150x150"]
+            [feImage image-size="150.00x150.00"]
+            [feImage image-size="150.00x150.00"]
         RenderSVGResourceFilter {filter} [id="arithmetic"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feComposite operation="ARITHMETIC" k1="0.50" k2="0.50" k3="0.50" k4="0.50"]
-            [feImage image-size="150x150"]
-            [feImage image-size="150x150"]
+            [feImage image-size="150.00x150.00"]
+            [feImage image-size="150.00x150.00"]
         RenderSVGResourceFilter {filter} [id="arithmetic50"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feComposite operation="ARITHMETIC" k1="0.50" k2="0.50" k3="0.50" k4="0.50"]
-            [feImage image-size="150x150"]
-            [feImage image-size="150x150"]
+            [feImage image-size="150.00x150.00"]
+            [feImage image-size="150.00x150.00"]
       RenderSVGContainer {g} at (19,9) size 442x292 [transform={m=((0.40,0.00)(0.00,0.40)) t=(5.00,70.00)}]
         RenderSVGRect {rect} at (19,9) size 442x292 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=1098.00] [height=723.00]
         RenderSVGText {text} at (100,14) size 765x74 contains 1 chunk(s)
index 1531dc8..405103b 100644 (file)
@@ -5,19 +5,19 @@ layer at (0,0) size 480x360
     RenderSVGContainer {g} at (15,15) size 415x333
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id="DispMapChecker"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="256x256"]
+          [feImage image-size="256.00x256.00"]
         RenderSVGResourceFilter {filter} [id="RotateMap"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="128x128"]
+          [feImage image-size="128.00x128.00"]
         RenderSVGResourceFilter {filter} [id="SphereMap"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="128x128"]
+          [feImage image-size="128.00x128.00"]
         RenderSVGResourceFilter {filter} [id="RotateMapTest"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feDisplacementMap scale="64.00" xChannelSelector="RED" yChannelSelector="GREEN"]
-            [feImage image-size="256x256"]
-            [feImage image-size="128x128"]
+            [feImage image-size="256.00x256.00"]
+            [feImage image-size="128.00x128.00"]
         RenderSVGResourceFilter {filter} [id="SphereMapTest"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feDisplacementMap scale="64.00" xChannelSelector="RED" yChannelSelector="GREEN"]
-            [feImage image-size="256x256"]
-            [feImage image-size="128x128"]
+            [feImage image-size="256.00x256.00"]
+            [feImage image-size="128.00x128.00"]
       RenderSVGContainer {g} at (15,15) size 415x333
         RenderSVGRect {rect} at (15,15) size 128x128 [fill={[type=SOLID] [color=#000000]}] [x=15.00] [y=15.00] [width=128.00] [height=128.00]
           [filter="DispMapChecker"] RenderSVGResourceFilter {filter} at (15,15) size 128x128
index eb53209..5ccb44a 100644 (file)
@@ -5,7 +5,7 @@ layer at (0,0) size 480x360
     RenderSVGContainer {g} at (0,0) size 480x360
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id="image"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feImage image-size="503x503"]
+          [feImage image-size="503.00x503.00"]
       RenderSVGText {text} at (147,9) size 186x14 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 185x14
           chunk 1 (middle anchor) text run 1 at (147.50,20.00) startOffset 0 endOffset 37 width 185.00: "Basic test of feImage filter support."
index 2cf8be6..645beac 100644 (file)
@@ -6,8 +6,8 @@ layer at (0,0) size 800x600
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id="ResultImage"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
           [feDisplacementMap scale="100.00" xChannelSelector="RED" yChannelSelector="GREEN"]
-            [feImage image-size="100x100"]
-            [feImage image-size="100x100"]
+            [feImage image-size="100.00x100.00"]
+            [feImage image-size="100.00x100.00"]
       RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
         [filter="ResultImage"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
       RenderSVGRect {rect} at (0,0) size 101x101 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
index cffc1e3..a71e465 100644 (file)
@@ -5,6 +5,6 @@ layer at (0,0) size 800x600
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="0x0"]
+        [feImage image-size="0.00x0.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index a1ff55c..468414c 100644 (file)
@@ -5,13 +5,13 @@ layer at (0,0) size 800x800
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGEllipse {circle} at (200,200) size 400x400 [fill={[type=SOLID] [color=#008000]}] [cx=400.00] [cy=400.00] [r=200.00]
       RenderSVGResourceFilter {filter} [id="filter1a-rel"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter1b-rel"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter2a-rel"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter2b-rel"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
     RenderSVGContainer {g} at (0,0) size 350x200
       RenderSVGRect {rect} at (49,49) size 102x102 [stroke={[type=SOLID] [color=#FF0000]}] [x=50.00] [y=50.00] [width=100.00] [height=100.00]
       RenderSVGRect {rect} at (0,0) size 200x200 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=200.00] [height=200.00]
index c02521d..0ac072f 100644 (file)
@@ -6,21 +6,21 @@ layer at (0,0) size 800x800
       RenderSVGEllipse {circle} at (200,200) size 400x400 [fill={[type=SOLID] [color=#008000]}] [cx=400.00] [cy=400.00] [r=200.00]
       RenderSVGEllipse {circle} at (50,50) size 100x100 [fill={[type=SOLID] [color=#008000]}] [cx=100.00] [cy=100.00] [r=50.00]
       RenderSVGResourceFilter {filter} [id="filter1a-rel"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter1b-rel"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter2a-rel"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter2b-rel"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter1a-abs"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter1b-abs"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter2a-abs"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter2b-abs"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGContainer {g} at (0,0) size 650x200
       RenderSVGRect {rect} at (49,49) size 102x102 [stroke={[type=SOLID] [color=#FF0000]}] [x=50.00] [y=50.00] [width=100.00] [height=100.00]
       RenderSVGRect {rect} at (0,0) size 200x200 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=200.00] [height=200.00]
index 828dd23..a685199 100644 (file)
@@ -5,13 +5,13 @@ layer at (0,0) size 800x800
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGEllipse {circle} at (200,200) size 400x400 [fill={[type=SOLID] [color=#008000]}] [cx=400.00] [cy=400.00] [r=200.00]
       RenderSVGResourceFilter {filter} [id="filter1a-rel"] [filterUnits=userSpaceOnUse] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter1b-rel"] [filterUnits=userSpaceOnUse] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter2a-rel"] [filterUnits=userSpaceOnUse] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter2b-rel"] [filterUnits=userSpaceOnUse] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
     RenderSVGContainer {g} at (0,0) size 350x200
       RenderSVGRect {rect} at (49,49) size 102x102 [stroke={[type=SOLID] [color=#FF0000]}] [x=50.00] [y=50.00] [width=100.00] [height=100.00]
       RenderSVGRect {rect} at (0,0) size 200x200 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=200.00] [height=200.00]
index 78b58ed..1974711 100644 (file)
@@ -6,21 +6,21 @@ layer at (0,0) size 800x800
       RenderSVGEllipse {circle} at (200,200) size 400x400 [fill={[type=SOLID] [color=#008000]}] [cx=400.00] [cy=400.00] [r=200.00]
       RenderSVGEllipse {circle} at (50,50) size 100x100 [fill={[type=SOLID] [color=#008000]}] [cx=100.00] [cy=100.00] [r=50.00]
       RenderSVGResourceFilter {filter} [id="filter1a-rel"] [filterUnits=userSpaceOnUse] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter1b-rel"] [filterUnits=userSpaceOnUse] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter2a-rel"] [filterUnits=userSpaceOnUse] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter2b-rel"] [filterUnits=userSpaceOnUse] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="400x400"]
+        [feImage image-size="400.00x400.00"]
       RenderSVGResourceFilter {filter} [id="filter1a-abs"] [filterUnits=userSpaceOnUse] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter1b-abs"] [filterUnits=userSpaceOnUse] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter2a-abs"] [filterUnits=userSpaceOnUse] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter2b-abs"] [filterUnits=userSpaceOnUse] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGContainer {g} at (0,0) size 650x200
       RenderSVGRect {rect} at (49,49) size 102x102 [stroke={[type=SOLID] [color=#FF0000]}] [x=50.00] [y=50.00] [width=100.00] [height=100.00]
       RenderSVGRect {rect} at (0,0) size 200x200 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=200.00] [height=200.00]
index 751e4ea..ad9c4ce 100644 (file)
@@ -6,7 +6,7 @@ layer at (0,0) size 800x600
       RenderSVGResourceLinearGradient {linearGradient} [id="gradient"] [gradientUnits=objectBoundingBox] [start=(0,0)] [end=(1,1)]
         RenderSVGGradientStop {stop} [offset=0.00] [color=#008000]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="400x300"]
+        [feImage image-size="400.00x300.00"]
       RenderSVGEllipse {ellipse} at (200,150) size 400x300 [fill={[type=LINEAR-GRADIENT] [id="gradient"]}] [cx=400.00] [cy=300.00] [rx=200.00] [ry=150.00]
     RenderSVGRect {rect} at (0,0) size 800x600 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=800.00] [height=600.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-80,-60) size 960x720
index 44c1a4c..d92c1cb 100644 (file)
@@ -5,9 +5,9 @@ layer at (0,0) size 800x600
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="image1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="image2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 56x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=50.00] [height=100.00]
       [filter="image1"] RenderSVGResourceFilter {filter} at (-5,-10) size 60x120
     RenderSVGRect {rect} at (45,0) size 60x111 [fill={[type=SOLID] [color=#000000]}] [x=50.00] [y=0.00] [width=50.00] [height=100.00]
index ce80d46..fde9172 100644 (file)
@@ -5,6 +5,6 @@ layer at (0,0) size 800x600
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 441x221 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=400.00] [height=200.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-40,-20) size 480x240
index 6731d5c..e85a379 100644 (file)
@@ -4,19 +4,19 @@ layer at (0,0) size 800x400
   RenderSVGRoot {svg} at (0,0) size 800x333
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGResourceFilter {filter} [id="none"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="slice_mid"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="slice_max"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="slice_min"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="meet_mid"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="meet_max"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="meet_min"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 800x333 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=1198.00] [height=498.00]
     RenderSVGContainer {g} at (20,3) size 760x311
       RenderSVGRect {rect} at (26,3) size 81x161 [fill={[type=SOLID] [color=#000000]}] [x=50.00] [y=25.00] [width=100.00] [height=200.00]
index 196691d..912f94f 100644 (file)
@@ -4,11 +4,11 @@ layer at (0,0) size 600x250
   RenderSVGRoot {svg} at (0,0) size 600x250
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGResourceFilter {filter} [id="Default"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="Fitted"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="Shifted"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 600x250 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=598.00] [height=248.00]
     RenderSVGContainer {g} at (40,5) size 520x241
       RenderSVGRect {rect} at (40,5) size 120x241 [fill={[type=SOLID] [color=#000000]}] [x=50.00] [y=25.00] [width=100.00] [height=200.00]
index 309ac76..6743c2d 100644 (file)
@@ -6,6 +6,6 @@ layer at (0,0) size 800x600
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="image"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="image"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index 27ba803..0c4d8bd 100644 (file)
@@ -4,7 +4,7 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (85,0) size 330x315
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGResourceFilter {filter} [id="image"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="200x200"]
+        [feImage image-size="200.00x200.00"]
       RenderSVGResourceFilter {filter} [id="flood"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
         [feFlood flood-color="#008000" flood-opacity="1.00"]
       RenderSVGEllipse {circle} at (0,0) size 250x150 [fill={[type=SOLID] [color=#0000FF]}] [cx=0.00] [cy=0.00] [r=100.00]
index 1c71cd3..f034a16 100644 (file)
@@ -4,6 +4,6 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 111x111
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="0x0"]
+        [feImage image-size="0.00x0.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index 8f9f4ac..0fb33a4 100644 (file)
@@ -5,13 +5,13 @@ layer at (0,0) size 800x600
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGContainer {g} at (10,0) size 481x480 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,10.00)}]
       RenderSVGRect {rect} at (10,0) size 481x231 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=400.00] [height=200.00]
         [filter="filter1"] RenderSVGResourceFilter {filter} at (-40,-20) size 480x240
index a1fd043..37f4dc3 100644 (file)
@@ -5,13 +5,13 @@ layer at (0,0) size 800x600
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGContainer {g} at (10,0) size 481x480 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,10.00)}]
       RenderSVGRect {rect} at (10,0) size 481x231 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=400.00] [height=200.00]
         [filter="filter1"] RenderSVGResourceFilter {filter} at (-40,-20) size 480x240
index 608d778..649b3bb 100644 (file)
@@ -5,13 +5,13 @@ layer at (0,0) size 400x500
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGRect {rect} at (0,100) size 50x50 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
       RenderSVGResourceFilter {filter} [id="filter4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGContainer {g} at (5,95) size 241x245 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,10.00)}]
       RenderSVGRect {rect} at (5,95) size 241x120 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=400.00] [height=200.00]
         [filter="filter1"] RenderSVGResourceFilter {filter} at (-40,-20) size 480x240
index c3c346a..ec5ec55 100644 (file)
@@ -6,6 +6,6 @@ layer at (0,0) size 800x600
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index 96cc36d..7db8295 100644 (file)
@@ -5,6 +5,6 @@ layer at (0,0) size 800x600
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index 340596f..8d51683 100644 (file)
@@ -7,6 +7,6 @@ layer at (0,0) size 800x600
       RenderSVGContainer {use} at (0,0) size 100x100 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,0.00)}]
         RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=-50.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index 3326078..0f74028 100644 (file)
@@ -7,6 +7,6 @@ layer at (0,0) size 800x600
       RenderSVGContainer {use} at (0,0) size 100x100
         RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index 96cc36d..7db8295 100644 (file)
@@ -5,6 +5,6 @@ layer at (0,0) size 800x600
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index 96cc36d..7db8295 100644 (file)
@@ -5,6 +5,6 @@ layer at (0,0) size 800x600
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index 96cc36d..7db8295 100644 (file)
@@ -5,6 +5,6 @@ layer at (0,0) size 800x600
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index 96cc36d..7db8295 100644 (file)
@@ -5,6 +5,6 @@ layer at (0,0) size 800x600
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index c3c346a..ec5ec55 100644 (file)
@@ -6,6 +6,6 @@ layer at (0,0) size 800x600
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index c3c346a..ec5ec55 100644 (file)
@@ -6,6 +6,6 @@ layer at (0,0) size 800x600
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index 96cc36d..7db8295 100644 (file)
@@ -5,6 +5,6 @@ layer at (0,0) size 800x600
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feImage image-size="100x100"]
+        [feImage image-size="100.00x100.00"]
     RenderSVGRect {rect} at (0,0) size 111x111 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [filter="filter"] RenderSVGResourceFilter {filter} at (-10,-10) size 120x120
index 0b1152b..1e19562 100644 (file)
@@ -1,3 +1,116 @@
+2014-04-01  Zalan Bujtas  <zalan@apple.com>
+
+        Subpixel rendering: Transition class Image (and its dependencies) from int to float to enable subpixel positioned/sized images.
+        https://bugs.webkit.org/show_bug.cgi?id=130643
+
+        Reviewed by Simon Fraser.
+
+        This is in preparation to support subpixel positioned/sized background images. While 1x bitmap images can't take
+        subpixel sizing on hidpi resolutions, both generated and hidpi images can.
+        This patch does not change Image behavior in general as both position and size are still snapped to integral values.  
+
+        No change in behavior.
+
+        * WebCore.exp.in:
+        * css/CSSCrossfadeValue.cpp:
+        (WebCore::CSSCrossfadeValue::fixedSize):
+        * css/CSSFilterImageValue.cpp:
+        (WebCore::CSSFilterImageValue::fixedSize):
+        * html/canvas/WebGLRenderingContext.cpp:
+        (WebCore::WebGLRenderingContext::drawImageIntoBuffer):
+        * loader/cache/CachedImage.cpp:
+        (WebCore::CachedImage::imageSizeForRenderer):
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::selectCursor):
+        * platform/Cursor.cpp:
+        (WebCore::determineHotSpot):
+        * platform/graphics/BitmapImage.cpp:
+        (WebCore::BitmapImage::size):
+        (WebCore::BitmapImage::currentFrameSize):
+        * platform/graphics/BitmapImage.h:
+        * platform/graphics/CrossfadeGeneratedImage.cpp:
+        (WebCore::CrossfadeGeneratedImage::CrossfadeGeneratedImage):
+        (WebCore::drawCrossfadeSubimage):
+        (WebCore::CrossfadeGeneratedImage::drawCrossfade):
+        * platform/graphics/CrossfadeGeneratedImage.h:
+        * platform/graphics/GeneratedImage.h:
+        * platform/graphics/Gradient.cpp:
+        (WebCore::Gradient::adjustParametersForTiledDrawing):
+        * platform/graphics/Gradient.h:
+        * platform/graphics/GradientImage.cpp:
+        (WebCore::GradientImage::drawPattern):
+        * platform/graphics/GradientImage.h:
+        * platform/graphics/GraphicsContext.cpp:
+        (WebCore::GraphicsContext::createCompatibleBuffer):
+        * platform/graphics/GraphicsContext.h:
+        * platform/graphics/Image.cpp:
+        (WebCore::Image::adjustSourceRectForDownSampling):
+        * platform/graphics/Image.h:
+        (WebCore::Image::setContainerSize):
+        (WebCore::Image::rect):
+        (WebCore::Image::width):
+        (WebCore::Image::height):
+        * platform/graphics/ImageBuffer.cpp:
+        (WebCore::ImageBuffer::createCompatibleBuffer):
+        * platform/graphics/ImageBuffer.h:
+        (WebCore::ImageBuffer::create):
+        * platform/graphics/IntPoint.cpp:
+        (WebCore::IntPoint::IntPoint):
+        * platform/graphics/IntPoint.h:
+        * platform/graphics/IntSize.cpp:
+        (WebCore::IntSize::IntSize):
+        * platform/graphics/IntSize.h:
+        * platform/graphics/cairo/ImageBufferCairo.cpp:
+        (WebCore::ImageBuffer::ImageBuffer):
+        * platform/graphics/cairo/ImageCairo.cpp:
+        (WebCore::Image::drawPattern):
+        * platform/graphics/cg/ImageBufferCG.cpp:
+        (WebCore::ImageBuffer::ImageBuffer):
+        * platform/graphics/cg/ImageBufferDataCG.cpp:
+        * platform/graphics/cg/PDFDocumentImage.cpp:
+        (WebCore::PDFDocumentImage::size):
+        (WebCore::PDFDocumentImage::updateCachedImageIfNeeded):
+        (WebCore::applyRotationForPainting):
+        * platform/graphics/cg/PDFDocumentImage.h:
+        * platform/graphics/cg/PatternCG.cpp:
+        (WebCore::Pattern::createPlatformPattern):
+        * platform/graphics/mac/GraphicsContextMac.mm:
+        * platform/graphics/mac/IconMac.mm:
+        * platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:
+        (WebCore::TextureMapperTiledBackingStore::updateContentsFromImageIfNeeded):
+        * platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp:
+        (WebCore::CoordinatedImageBacking::update):
+        * platform/graphics/win/ImageCGWin.cpp:
+        (WebCore::BitmapImage::getHBITMAPOfSize):
+        (WebCore::BitmapImage::drawFrameMatchingSourceSize):
+        * platform/graphics/win/ImageCairoWin.cpp:
+        (WebCore::BitmapImage::getHBITMAPOfSize):
+        (WebCore::BitmapImage::drawFrameMatchingSourceSize):
+        * platform/mac/DragImageMac.mm:
+        (WebCore::createDragImageFromImage):
+        * platform/win/DragImageCGWin.cpp:
+        (WebCore::createDragImageFromImage):
+        * platform/win/PasteboardWin.cpp:
+        (WebCore::Pasteboard::writeImage):
+        * rendering/RenderImage.cpp:
+        (WebCore::RenderImage::imageSizeForError):
+        (WebCore::RenderImage::paintReplaced):
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::drawPlatformResizerImage):
+        * svg/graphics/SVGImage.cpp:
+        (WebCore::SVGImage::setContainerSize):
+        * svg/graphics/SVGImage.h:
+        * svg/graphics/SVGImageCache.cpp:
+        (WebCore::SVGImageCache::imageSizeForRenderer):
+        * svg/graphics/SVGImageCache.h:
+        * svg/graphics/SVGImageForContainer.cpp:
+        (WebCore::SVGImageForContainer::size):
+        * svg/graphics/SVGImageForContainer.h:
+        * svg/graphics/filters/SVGFEImage.cpp:
+        (WebCore::FEImage::externalRepresentation):
+        * testing/Internals.cpp:
+        (WebCore::Internals::getCurrentCursorInfo):
+
 2014-04-01  Ryuan Choi  <ryuan.choi@samsung.com>
 
         Unreviewed build fix when disabled ACCESSIBILITY
index 459d08a..01bef02 100644 (file)
@@ -1305,8 +1305,10 @@ __ZN7WebCore9FloatRect5uniteERKS0_
 __ZN7WebCore9FloatRect9intersectERKS0_
 __ZN7WebCore9FloatRectC1ERK6CGRect
 __ZN7WebCore9FloatRectC1ERKNS_7IntRectE
+__ZNK7WebCore9FloatRect8containsERKNS_10FloatPointENS0_12ContainsModeE
 __ZN7WebCore9FloatSizeC1ERK6CGSize
 __ZN7WebCore9FloatSizeC1ERKNS_7IntSizeE
+__ZN7WebCore7IntSizeC1ERKNS_9FloatSizeE
 __ZN7WebCore9FontCache10invalidateEv
 __ZN7WebCore9FontCache13fontDataCountEv
 __ZN7WebCore9FontCache21inactiveFontDataCountEv
index 1eee95e..7418650 100644 (file)
@@ -90,13 +90,13 @@ IntSize CSSCrossfadeValue::fixedSize(const RenderElement* renderer)
     if (!cachedFromImage || !cachedToImage)
         return IntSize();
 
-    IntSize fromImageSize = cachedFromImage->imageForRenderer(renderer)->size();
-    IntSize toImageSize = cachedToImage->imageForRenderer(renderer)->size();
+    FloatSize fromImageSize = cachedFromImage->imageForRenderer(renderer)->size();
+    FloatSize toImageSize = cachedToImage->imageForRenderer(renderer)->size();
 
     // Rounding issues can cause transitions between images of equal size to return
     // a different fixed size; avoid performing the interpolation if the images are the same size.
     if (fromImageSize == toImageSize)
-        return fromImageSize;
+        return IntSize(fromImageSize);
 
     return IntSize(fromImageSize.width() * inversePercentage + toImageSize.width() * percentage,
         fromImageSize.height() * inversePercentage + toImageSize.height() * percentage);
index f217a8a..48eb5c1 100644 (file)
@@ -67,7 +67,7 @@ IntSize CSSFilterImageValue::fixedSize(const RenderElement* renderer)
     if (!cachedImage)
         return IntSize();
 
-    return cachedImage->imageForRenderer(renderer)->size();
+    return IntSize(cachedImage->imageForRenderer(renderer)->size());
 }
 
 bool CSSFilterImageValue::isPending() const
index 18688ee..460b51c 100644 (file)
@@ -3880,8 +3880,8 @@ PassRefPtr<Image> WebGLRenderingContext::drawImageIntoBuffer(Image* image, int w
         return nullptr;
     }
 
-    IntRect srcRect(IntPoint(), image->size());
-    IntRect destRect(IntPoint(), size);
+    FloatRect srcRect(FloatPoint(), image->size());
+    FloatRect destRect(FloatPoint(), size);
     buf->context()->drawImage(image, ColorSpaceDeviceRGB, destRect, srcRect);
     return buf->copyImage(ImageBuffer::fastCopyImageMode());
 }
index b8f6f0a..8ebc8f7 100644 (file)
@@ -276,7 +276,7 @@ LayoutSize CachedImage::imageSizeForRenderer(const RenderObject* renderer, float
     ASSERT(!isPurgeable());
 
     if (!m_image)
-        return IntSize();
+        return LayoutSize();
 
     LayoutSize imageSize(m_image->size());
 
@@ -284,24 +284,24 @@ LayoutSize CachedImage::imageSizeForRenderer(const RenderObject* renderer, float
     if (renderer && m_image->isBitmapImage()) {
         ImageOrientationDescription orientationDescription(renderer->shouldRespectImageOrientation(), renderer->style().imageOrientation());
         if (orientationDescription.respectImageOrientation() == RespectImageOrientation)
-            imageSize = toBitmapImage(m_image.get())->sizeRespectingOrientation(orientationDescription);
+            imageSize = LayoutSize(toBitmapImage(m_image.get())->sizeRespectingOrientation(orientationDescription));
     }
 #else
     if (m_image->isBitmapImage() && (renderer && renderer->shouldRespectImageOrientation() == RespectImageOrientation))
 #if !PLATFORM(IOS)
-        imageSize = toBitmapImage(m_image.get())->sizeRespectingOrientation();
+        imageSize = LayoutSize(toBitmapImage(m_image.get())->sizeRespectingOrientation());
 #else
     {
         // On iOS, the image may have been subsampled to accommodate our size restrictions. However
         // we should tell the renderer what the original size was.
-        imageSize = toBitmapImage(m_image.get())->originalSizeRespectingOrientation();
+        imageSize = LayoutSize(toBitmapImage(m_image.get())->originalSizeRespectingOrientation());
     } else if (m_image->isBitmapImage())
-        imageSize = toBitmapImage(m_image.get())->originalSize();
+        imageSize = LayoutSize(toBitmapImage(m_image.get())->originalSize());
 #endif // !PLATFORM(IOS)
 #endif // ENABLE(CSS_IMAGE_ORIENTATION)
 
     else if (m_image->isSVGImage() && sizeType == UsedSize) {
-        imageSize = m_svgImageCache->imageSizeForRenderer(renderer);
+        imageSize = LayoutSize(m_svgImageCache->imageSizeForRenderer(renderer));
     }
 
     if (multiplier == 1.0f)
index 129a58e..620a96a 100644 (file)
@@ -1361,7 +1361,7 @@ OptionalCursor EventHandler::selectCursor(const HitTestResult& result, bool shif
             // Get hotspot and convert from logical pixels to physical pixels.
             IntPoint hotSpot = (*cursors)[i].hotSpot();
             hotSpot.scale(scale, scale);
-            IntSize size = cachedImage->imageForRenderer(renderer)->size();
+            FloatSize size = cachedImage->imageForRenderer(renderer)->size();
             if (cachedImage->errorOccurred())
                 continue;
             // Limit the size of cursors (in UI pixels) so that they cannot be
index 190c7e5..93593ad 100644 (file)
@@ -27,6 +27,7 @@
 #include "Cursor.h"
 
 #include "Image.h"
+#include "IntRect.h"
 #include <wtf/Assertions.h>
 
 namespace WebCore {
@@ -37,7 +38,7 @@ IntPoint determineHotSpot(Image* image, const IntPoint& specifiedHotSpot)
         return IntPoint();
 
     // Hot spot must be inside cursor rectangle.
-    IntRect imageRect = image->rect();
+    IntRect imageRect = IntRect(image->rect());
     if (imageRect.contains(specifiedHotSpot))
         return specifiedHotSpot;
 
index 8378a9f..fad9843 100644 (file)
@@ -247,7 +247,7 @@ void BitmapImage::updateSize(ImageOrientationDescription description) const
     didDecodeProperties();
 }
 
-IntSize BitmapImage::size() const
+FloatSize BitmapImage::size() const
 {
     updateSize();
     return m_size;
@@ -276,7 +276,7 @@ IntSize BitmapImage::originalSizeRespectingOrientation() const
 IntSize BitmapImage::currentFrameSize() const
 {
     if (!m_currentFrame || m_hasUniformFrameSize)
-        return size();
+        return IntSize(size());
     IntSize frameSize = m_source.frameSizeAtIndex(m_currentFrame);
     didDecodeProperties();
     return frameSize;
index ea74201..2e450a2 100644 (file)
@@ -134,7 +134,8 @@ public:
 
     virtual bool hasSingleSecurityOrigin() const override;
 
-    virtual IntSize size() const override;
+    // FloatSize due to override.
+    virtual FloatSize size() const override;
     IntSize sizeRespectingOrientation(ImageOrientationDescription = ImageOrientationDescription()) const;
 #if PLATFORM(IOS)
     virtual IntSize originalSize() const;
index 771809b..d7746a9 100644 (file)
@@ -32,7 +32,7 @@
 
 namespace WebCore {
 
-CrossfadeGeneratedImage::CrossfadeGeneratedImage(Image* fromImage, Image* toImage, float percentage, IntSize crossfadeSize, const IntSize& size)
+CrossfadeGeneratedImage::CrossfadeGeneratedImage(Image* fromImage, Image* toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize& size)
     : m_fromImage(fromImage)
     , m_toImage(toImage)
     , m_percentage(percentage)
@@ -41,9 +41,9 @@ CrossfadeGeneratedImage::CrossfadeGeneratedImage(Image* fromImage, Image* toImag
     setContainerSize(size);
 }
 
-static void drawCrossfadeSubimage(GraphicsContext* context, Image* image, CompositeOperator operation, float opacity, IntSize targetSize)
+static void drawCrossfadeSubimage(GraphicsContext* context, Image* image, CompositeOperator operation, float opacity, const FloatSize& targetSize)
 {
-    IntSize imageSize = image->size();
+    FloatSize imageSize = image->size();
 
     // SVGImage resets the opacity when painting, so we have to use transparency layers to accurately paint one at a given opacity.
     bool useTransparencyLayer = image->isSVGImage();
@@ -58,8 +58,7 @@ static void drawCrossfadeSubimage(GraphicsContext* context, Image* image, Compos
         context->setAlpha(opacity);
 
     if (targetSize != imageSize)
-        context->scale(FloatSize(static_cast<float>(targetSize.width()) / imageSize.width(),
-            static_cast<float>(targetSize.height()) / imageSize.height()));
+        context->scale(FloatSize(targetSize.width() / imageSize.width(), targetSize.height() / imageSize.height()));
     context->drawImage(image, ColorSpaceDeviceRGB, IntPoint());
 
     if (useTransparencyLayer)
@@ -74,7 +73,7 @@ void CrossfadeGeneratedImage::drawCrossfade(GraphicsContext* context)
 
     GraphicsContextStateSaver stateSaver(*context);
 
-    context->clip(IntRect(IntPoint(), m_crossfadeSize));
+    context->clip(FloatRect(FloatPoint(), m_crossfadeSize));
     context->beginTransparencyLayer(1);
 
     drawCrossfadeSubimage(context, m_fromImage, CompositeSourceOver, 1 - m_percentage, m_crossfadeSize);
index b79adf7..aa11669 100644 (file)
 #ifndef CrossfadeGeneratedImage_h
 #define CrossfadeGeneratedImage_h
 
+#include "FloatSize.h"
 #include "GeneratedImage.h"
 #include "Image.h"
 #include "ImageObserver.h"
-#include "IntSize.h"
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
@@ -38,23 +38,23 @@ class CSSCrossfadeValue;
 
 class CrossfadeGeneratedImage final : public GeneratedImage {
 public:
-    static PassRefPtr<CrossfadeGeneratedImage> create(Image* fromImage, Image* toImage, float percentage, IntSize crossfadeSize, const IntSize& size)
+    static PassRefPtr<CrossfadeGeneratedImage> create(Image* fromImage, Image* toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize& size)
     {
         return adoptRef(new CrossfadeGeneratedImage(fromImage, toImage, percentage, crossfadeSize, size));
     }
 
-    virtual void setContainerSize(const IntSize&) override { }
+    virtual void setContainerSize(const FloatSize&) override { }
     virtual bool usesContainerSize() const override { return false; }
     virtual bool hasRelativeWidth() const override { return false; }
     virtual bool hasRelativeHeight() const override { return false; }
 
-    virtual IntSize size() const override { return m_crossfadeSize; }
+    virtual FloatSize size() const override { return m_crossfadeSize; }
 
 protected:
     virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode, ImageOrientationDescription) override;
     virtual void drawPattern(GraphicsContext*, const FloatRect& srcRect, const AffineTransform& patternTransform, const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator, const FloatRect& dstRect, BlendMode) override;
 
-    CrossfadeGeneratedImage(Image* fromImage, Image* toImage, float percentage, IntSize crossfadeSize, const IntSize&);
+    CrossfadeGeneratedImage(Image* fromImage, Image* toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize&);
 
 private:
     void drawCrossfade(GraphicsContext*);
@@ -63,7 +63,7 @@ private:
     Image* m_toImage;
 
     float m_percentage;
-    IntSize m_crossfadeSize;
+    FloatSize m_crossfadeSize;
 };
 
 }
index 7fcb331..92179ee 100644 (file)
@@ -26,9 +26,9 @@
 #ifndef GeneratedImage_h
 #define GeneratedImage_h
 
+#include "FloatSize.h"
 #include "Image.h"
 
-#include "IntSize.h"
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
@@ -37,13 +37,13 @@ class GeneratedImage : public Image {
 public:
     virtual bool hasSingleSecurityOrigin() const override { return true; }
 
-    virtual void setContainerSize(const IntSize& size) override { m_size = size; }
+    virtual void setContainerSize(const FloatSize& size) override { m_size = size; }
     virtual bool usesContainerSize() const override { return true; }
     virtual bool hasRelativeWidth() const override { return true; }
     virtual bool hasRelativeHeight() const override { return true; }
     virtual void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) override;
 
-    virtual IntSize size() const override { return m_size; }
+    virtual FloatSize size() const override { return m_size; }
 
     // Assume that generated content has no decoded data we need to worry about
     virtual void destroyDecodedData(bool /*destroyAll*/ = true) override { }
@@ -59,7 +59,7 @@ protected:
     GeneratedImage() { }
 
 private:
-    IntSize m_size;
+    FloatSize m_size;
 };
 
 }
index 3895d0f..23d9b32 100644 (file)
@@ -69,7 +69,7 @@ Gradient::~Gradient()
     platformDestroy();
 }
 
-void Gradient::adjustParametersForTiledDrawing(IntSize& size, FloatRect& srcRect)
+void Gradient::adjustParametersForTiledDrawing(FloatSize& size, FloatRect& srcRect)
 {
     if (m_radial)
         return;
index 3951f90..9a091ae 100644 (file)
@@ -150,7 +150,7 @@ namespace WebCore {
         AffineTransform gradientSpaceTransform() { return m_gradientSpaceTransformation; }
 
         void fill(GraphicsContext*, const FloatRect&);
-        void adjustParametersForTiledDrawing(IntSize&, FloatRect&);
+        void adjustParametersForTiledDrawing(FloatSize&, FloatRect&);
 
         void setPlatformGradientSpaceTransform(const AffineTransform& gradientSpaceTransformation);
 
index e8c4203..6e69236 100644 (file)
@@ -48,7 +48,7 @@ void GradientImage::drawPattern(GraphicsContext* destContext, const FloatRect& s
     const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator compositeOp, const FloatRect& destRect, BlendMode blendMode)
 {
     // Allow the generator to provide visually-equivalent tiling parameters for better performance.
-    IntSize adjustedSize = size();
+    FloatSize adjustedSize = size();
     FloatRect adjustedSrcRect = srcRect;
     m_gradient->adjustParametersForTiledDrawing(adjustedSize, adjustedSrcRect);
 
index a9d3e12..66567c6 100644 (file)
 #ifndef GradientImage_h
 #define GradientImage_h
 
+#include "FloatSize.h"
 #include "GeneratedImage.h"
 #include "Gradient.h"
 #include "Image.h"
 #include "ImageBuffer.h"
-#include "IntSize.h"
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
 
 class GradientImage final : public GeneratedImage {
 public:
-    static PassRefPtr<GradientImage> create(PassRefPtr<Gradient> generator, const IntSize& size)
+    static PassRefPtr<GradientImage> create(PassRefPtr<Gradient> generator, const FloatSize& size)
     {
         return adoptRef(new GradientImage(generator, size));
     }
@@ -49,7 +49,7 @@ protected:
     virtual void drawPattern(GraphicsContext*, const FloatRect& srcRect, const AffineTransform& patternTransform,
         const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator, const FloatRect& destRect, BlendMode) override;
 
-    GradientImage(PassRefPtr<Gradient> generator, const IntSize& size)
+    GradientImage(PassRefPtr<Gradient> generator, const FloatSize& size)
         : m_gradient(generator)
     {
         setContainerSize(size);
@@ -58,7 +58,7 @@ protected:
 private:
     RefPtr<Gradient> m_gradient;
     std::unique_ptr<ImageBuffer> m_cachedImageBuffer;
-    IntSize m_cachedAdjustedSize;
+    FloatSize m_cachedAdjustedSize;
     unsigned m_cachedGeneratorHash;
 };
 
index 3fb820e..58abb69 100644 (file)
@@ -880,21 +880,20 @@ static bool scalesMatch(AffineTransform a, AffineTransform b)
     return a.xScale() == b.xScale() && a.yScale() == b.yScale();
 }
 
-std::unique_ptr<ImageBuffer> GraphicsContext::createCompatibleBuffer(const IntSize& size, bool hasAlpha) const
+std::unique_ptr<ImageBuffer> GraphicsContext::createCompatibleBuffer(const FloatSize& size, bool hasAlpha) const
 {
     // Make the buffer larger if the context's transform is scaling it so we need a higher
     // resolution than one pixel per unit. Also set up a corresponding scale factor on the
     // graphics context.
 
     AffineTransform transform = getCTM(DefinitelyIncludeDeviceScale);
-    IntSize scaledSize(static_cast<int>(ceil(size.width() * transform.xScale())), static_cast<int>(ceil(size.height() * transform.yScale())));
+    FloatSize scaledSize(static_cast<int>(ceil(size.width() * transform.xScale())), static_cast<int>(ceil(size.height() * transform.yScale())));
 
     std::unique_ptr<ImageBuffer> buffer = ImageBuffer::createCompatibleBuffer(scaledSize, 1, ColorSpaceDeviceRGB, this, hasAlpha);
     if (!buffer)
         return nullptr;
 
-    buffer->context()->scale(FloatSize(static_cast<float>(scaledSize.width()) / size.width(),
-        static_cast<float>(scaledSize.height()) / size.height()));
+    buffer->context()->scale(FloatSize(scaledSize.width() / size.width(), scaledSize.height() / size.height()));
 
     return buffer;
 }
index 7f1c314..ca958e7 100644 (file)
@@ -447,7 +447,7 @@ namespace WebCore {
 #endif
         // Create an image buffer compatible with this context, with suitable resolution
         // for drawing into the buffer and then into this context.
-        std::unique_ptr<ImageBuffer> createCompatibleBuffer(const IntSize&, bool hasAlpha = true) const;
+        std::unique_ptr<ImageBuffer> createCompatibleBuffer(const FloatSize&, bool hasAlpha = true) const;
         bool isCompatibleWithBuffer(ImageBuffer*) const;
 
         // This function applies the device scale factor to the context, making the context capable of
index 5f1ebd6..6f755e1 100644 (file)
@@ -31,7 +31,6 @@
 #include "BitmapImage.h"
 #include "GraphicsContext.h"
 #include "ImageObserver.h"
-#include "IntRect.h"
 #include "Length.h"
 #include "MIMETypeRegistry.h"
 #include "SharedBuffer.h"
@@ -233,7 +232,7 @@ void Image::drawTiled(GraphicsContext* ctxt, const FloatRect& dstRect, const Flo
 #if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
 FloatRect Image::adjustSourceRectForDownSampling(const FloatRect& srcRect, const IntSize& scaledSize) const
 {
-    const IntSize unscaledSize = size();
+    const FloatSize unscaledSize = size();
     if (unscaledSize == scaledSize)
         return srcRect;
 
index 3c3b6e6..c3c78c9 100644 (file)
@@ -29,6 +29,7 @@
 
 #include "Color.h"
 #include "ColorSpace.h"
+#include "FloatRect.h"
 #include "FloatSize.h"
 #include "GraphicsTypes.h"
 #include "ImageOrientation.h"
@@ -62,7 +63,6 @@ namespace WebCore {
 
 class AffineTransform;
 class FloatPoint;
-class FloatRect;
 class FloatSize;
 class GraphicsContext;
 class SharedBuffer;
@@ -92,16 +92,16 @@ public:
     static Image* nullImage();
     bool isNull() const { return size().isEmpty(); }
 
-    virtual void setContainerSize(const IntSize&) { }
+    virtual void setContainerSize(const FloatSize&) { }
     virtual bool usesContainerSize() const { return false; }
     virtual bool hasRelativeWidth() const { return false; }
     virtual bool hasRelativeHeight() const { return false; }
     virtual void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio);
 
-    virtual IntSize size() const = 0;
-    IntRect rect() const { return IntRect(IntPoint(), size()); }
-    int width() const { return size().width(); }
-    int height() const { return size().height(); }
+    virtual FloatSize size() const = 0;
+    FloatRect rect() const { return FloatRect(FloatPoint(), size()); }
+    float width() const { return size().width(); }
+    float height() const { return size().height(); }
     virtual bool getHotSpot(IntPoint&) const { return false; }
 
     bool setData(PassRefPtr<SharedBuffer> data, bool allDataReceived);
index ae415a7..10c6ad0 100644 (file)
@@ -110,7 +110,7 @@ bool ImageBuffer::copyToPlatformTexture(GraphicsContext3D&, Platform3DObject, GC
     return false;
 }
 
-std::unique_ptr<ImageBuffer> ImageBuffer::createCompatibleBuffer(const IntSize& size, float resolutionScale, ColorSpace colorSpace, const GraphicsContext* context, bool)
+std::unique_ptr<ImageBuffer> ImageBuffer::createCompatibleBuffer(const FloatSize& size, float resolutionScale, ColorSpace colorSpace, const GraphicsContext* context, bool)
 {
     return create(size, resolutionScale, colorSpace, context->isAcceleratedContext() ? Accelerated : Unaccelerated);
 }
index f2dcb27..b080f58 100644 (file)
@@ -78,7 +78,7 @@ namespace WebCore {
         WTF_MAKE_NONCOPYABLE(ImageBuffer); WTF_MAKE_FAST_ALLOCATED;
     public:
         // Will return a null pointer on allocation failure.
-        static std::unique_ptr<ImageBuffer> create(const IntSize& size, float resolutionScale = 1, ColorSpace colorSpace = ColorSpaceDeviceRGB, RenderingMode renderingMode = Unaccelerated)
+        static std::unique_ptr<ImageBuffer> create(const FloatSize& size, float resolutionScale = 1, ColorSpace colorSpace = ColorSpaceDeviceRGB, RenderingMode renderingMode = Unaccelerated)
         {
             bool success = false;
             std::unique_ptr<ImageBuffer> buffer(new ImageBuffer(size, resolutionScale, colorSpace, renderingMode, success));
@@ -87,7 +87,7 @@ namespace WebCore {
             return buffer;
         }
 
-        static std::unique_ptr<ImageBuffer> createCompatibleBuffer(const IntSize&, float resolutionScale, ColorSpace, const GraphicsContext*, bool hasAlpha);
+        static std::unique_ptr<ImageBuffer> createCompatibleBuffer(const FloatSize&, float resolutionScale, ColorSpace, const GraphicsContext*, bool hasAlpha);
 
         ~ImageBuffer();
 
@@ -160,7 +160,7 @@ namespace WebCore {
 
         // This constructor will place its success into the given out-variable
         // so that create() knows when it should return failure.
-        ImageBuffer(const IntSize&, float resolutionScale, ColorSpace, RenderingMode, bool& success);
+        ImageBuffer(const FloatSize&, float resolutionScale, ColorSpace, RenderingMode, bool& success);
     };
 
 #if USE(CG)
index 0781f45..fa4220a 100644 (file)
@@ -26,6 +26,7 @@
 #include "config.h"
 #include "IntPoint.h"
 
+#include "FloatPoint.h"
 #include <wtf/PrintStream.h>
 
 namespace WebCore {
@@ -35,4 +36,10 @@ void IntPoint::dump(PrintStream& out) const
     out.printf("(%d, %d)", x(), y());
 }
 
+IntPoint::IntPoint(const FloatPoint& p)
+    : m_x(clampToInteger(p.x()))
+    , m_y(clampToInteger(p.y()))
+{
+}
+
 }
index 9127856..fd98001 100644 (file)
@@ -53,11 +53,14 @@ typedef struct _GdkPoint GdkPoint;
 
 namespace WebCore {
 
+class FloatPoint;
+
 class IntPoint {
 public:
     IntPoint() : m_x(0), m_y(0) { }
     IntPoint(int x, int y) : m_x(x), m_y(y) { }
     explicit IntPoint(const IntSize& size) : m_x(size.width()), m_y(size.height()) { }
+    explicit IntPoint(const FloatPoint&); // don't do this implicitly since it's lossy
 
     static IntPoint zero() { return IntPoint(); }
 
index 753b055..385891c 100644 (file)
@@ -26,6 +26,7 @@
 #include "config.h"
 #include "IntSize.h"
 
+#include "FloatSize.h"
 #include <wtf/PrintStream.h>
 
 namespace WebCore {
@@ -35,4 +36,10 @@ void IntSize::dump(PrintStream& out) const
     out.printf("(%d x %d)", width(), height());
 }
 
+IntSize::IntSize(const FloatSize& s)
+    : m_width(clampToInteger(s.width()))
+    , m_height(clampToInteger(s.height()))
+{
+}
+
 }
index 9b54fb6..8f20a0d 100644 (file)
@@ -56,10 +56,13 @@ class PrintStream;
 
 namespace WebCore {
 
+class FloatSize;
+
 class IntSize {
 public:
     IntSize() : m_width(0), m_height(0) { }
     IntSize(int width, int height) : m_width(width), m_height(height) { }
+    explicit IntSize(const FloatSize&); // don't do this implicitly since it's lossy
     
     int width() const { return m_width; }
     int height() const { return m_height; }
index aa80707..4f094a6 100644 (file)
@@ -91,8 +91,8 @@ PassRefPtr<cairo_surface_t> createCairoGLSurface(const IntSize& size, uint32_t&
 }
 #endif
 
-ImageBuffer::ImageBuffer(const IntSize& size, float /* resolutionScale */, ColorSpace, RenderingMode renderingMode, bool& success)
-    : m_data(size)
+ImageBuffer::ImageBuffer(const FloatSize& size, float /* resolutionScale */, ColorSpace, RenderingMode renderingMode, bool& success)
+    : m_data(IntSize(size))
     , m_size(size)
     , m_logicalSize(size)
 {
index 5b8c764..fa16d8d 100644 (file)
@@ -49,7 +49,7 @@ void Image::drawPattern(GraphicsContext* context, const FloatRect& tileRect, con
         return;
 
     cairo_t* cr = context->platformContext()->cr();
-    drawPatternToCairoContext(cr, surface.get(), size(), tileRect, patternTransform, phase, toCairoOperator(op), destRect);
+    drawPatternToCairoContext(cr, surface.get(), IntSize(size()), tileRect, patternTransform, phase, toCairoOperator(op), destRect);
 
     if (imageObserver())
         imageObserver()->didDraw(this);
index 54d8fb1..24bbbbc 100644 (file)
@@ -32,6 +32,7 @@
 #include "GraphicsContext.h"
 #include "GraphicsContextCG.h"
 #include "ImageData.h"
+#include "IntRect.h"
 #include "MIMETypeRegistry.h"
 #include <math.h>
 #include <CoreGraphics/CoreGraphics.h>
@@ -42,7 +43,6 @@
 #include <wtf/RetainPtr.h>
 #include <wtf/text/Base64.h>
 #include <wtf/text/WTFString.h>
-
 #if PLATFORM(COCOA)
 #include "WebCoreSystemInterface.h"
 #endif
@@ -124,8 +124,8 @@ static FloatSize scaleSizeToUserSpace(const FloatSize& logicalSize, const IntSiz
     return FloatSize(logicalSize.width() * xMagnification, logicalSize.height() * yMagnification);
 }
 
-ImageBuffer::ImageBuffer(const IntSize& size, float resolutionScale, ColorSpace imageColorSpace, RenderingMode renderingMode, bool& success)
-    : m_data(size) // NOTE: The input here isn't important as ImageBufferDataCG's constructor just ignores it.
+ImageBuffer::ImageBuffer(const FloatSize& size, float resolutionScale, ColorSpace imageColorSpace, RenderingMode renderingMode, bool& success)
+    : m_data(IntSize(size)) // NOTE: The input here isn't important as ImageBufferDataCG's constructor just ignores it.
     , m_logicalSize(size)
     , m_resolutionScale(resolutionScale)
 {
index 46a9e66..e7ec862 100644 (file)
@@ -26,6 +26,7 @@
 #include "config.h"
 #include "ImageBufferData.h"
 
+#include "IntRect.h"
 #include <CoreGraphics/CoreGraphics.h>
 #include <wtf/Assertions.h>
 
index 98b6d6c..9fe9101 100644 (file)
@@ -39,6 +39,7 @@
 #include "GraphicsContext.h"
 #include "ImageBuffer.h"
 #include "ImageObserver.h"
+#include "IntRect.h"
 #include "Length.h"
 #include "SharedBuffer.h"
 #include <CoreGraphics/CGContext.h>
@@ -69,9 +70,9 @@ String PDFDocumentImage::filenameExtension() const
     return "pdf";
 }
 
-IntSize PDFDocumentImage::size() const
+FloatSize PDFDocumentImage::size() const
 {
-    IntSize expandedCropBoxSize = expandedIntSize(m_cropBox.size());
+    FloatSize expandedCropBoxSize = FloatSize(expandedIntSize(m_cropBox.size()));
 
     if (m_rotationDegrees == 90 || m_rotationDegrees == 270)
         return expandedCropBoxSize.transposedSize();
@@ -149,7 +150,7 @@ void PDFDocumentImage::updateCachedImageIfNeeded(GraphicsContext* context, const
     bool useLowQualityInterpolation = interpolationQuality == InterpolationNone || interpolationQuality == InterpolationLow;
 
     if (!m_cachedImageBuffer || (!cacheParametersMatch(context, dstRect, srcRect) && !useLowQualityInterpolation)) {
-        m_cachedImageBuffer = context->createCompatibleBuffer(enclosingIntRect(dstRect).size());
+        m_cachedImageBuffer = context->createCompatibleBuffer(FloatRect(enclosingIntRect(dstRect)).size());
         if (!m_cachedImageBuffer)
             return;
         GraphicsContext* bufferContext = m_cachedImageBuffer->context();
@@ -234,7 +235,7 @@ unsigned PDFDocumentImage::pageCount() const
     return CGPDFDocumentGetNumberOfPages(m_document.get());
 }
 
-static void applyRotationForPainting(GraphicsContext* context, IntSize size, int rotationDegrees)
+static void applyRotationForPainting(GraphicsContext* context, FloatSize size, int rotationDegrees)
 {
     if (rotationDegrees == 90)
         context->translate(0, size.height());
index 2c9d8af..48fd8a7 100644 (file)
@@ -67,7 +67,7 @@ private:
     virtual void destroyDecodedData(bool /*destroyAll*/ = true) override;
 
     virtual void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) override;
-    virtual IntSize size() const override;
+    virtual FloatSize size() const override;
 
     virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode, ImageOrientationDescription) override;
 
index b1c3bfa..626c37a 100644 (file)
@@ -66,7 +66,7 @@ static void patternReleaseCallback(void* info)
 
 CGPatternRef Pattern::createPlatformPattern(const AffineTransform& userSpaceTransformation) const
 {
-    IntRect tileRect = tileImage()->rect();
+    FloatRect tileRect = tileImage()->rect();
 
     AffineTransform patternTransform = userSpaceTransformation * m_patternSpaceTransformation;
     patternTransform.scaleNonUniform(1, -1);
index b2e8760..0a62067 100644 (file)
@@ -28,6 +28,7 @@
 
 #import "GraphicsContextCG.h"
 #import "GraphicsContextPlatformPrivateCG.h"
+#import "IntRect.h"
 #if USE(APPKIT)
 #import <AppKit/AppKit.h>
 #endif
index a0d6eee..1fc094e 100644 (file)
@@ -24,6 +24,7 @@
 #import "Icon.h"
 
 #import "GraphicsContext.h"
+#import "IntRect.h"
 #import "LocalCurrentGraphicsContext.h"
 #import <wtf/PassRefPtr.h>
 #include <wtf/text/WTFString.h>
index b81b89f..60cac27 100644 (file)
@@ -38,7 +38,7 @@ void TextureMapperTiledBackingStore::updateContentsFromImageIfNeeded(TextureMapp
     if (!m_image)
         return;
 
-    updateContents(textureMapper, m_image.get(), m_image->size(), m_image->rect(), BitmapTexture::UpdateCannotModifyOriginalImageData);
+    updateContents(textureMapper, m_image.get(), m_image->size(), enclosingIntRect(m_image->rect()), BitmapTexture::UpdateCannotModifyOriginalImageData);
     m_image.clear();
 }
 
index 39633bd..50f4eee 100644 (file)
@@ -120,13 +120,13 @@ void CoordinatedImageBacking::update()
         }
     }
 
-    m_surface = CoordinatedSurface::create(m_image->size(), !m_image->currentFrameKnownToBeOpaque() ? CoordinatedSurface::SupportsAlpha : CoordinatedSurface::NoFlags);
+    m_surface = CoordinatedSurface::create(IntSize(m_image->size()), !m_image->currentFrameKnownToBeOpaque() ? CoordinatedSurface::SupportsAlpha : CoordinatedSurface::NoFlags);
     if (!m_surface) {
         m_isDirty = false;
         return;
     }
 
-    IntRect rect(IntPoint::zero(), m_image->size());
+    IntRect rect(IntPoint::zero(), IntSize(m_image->size()));
 
     ImageBackingSurfaceClient surfaceClient(m_image.get(), rect);
     m_surface->paintToSurface(rect, &surfaceClient);
index b318aa4..723eadb 100644 (file)
@@ -74,7 +74,7 @@ bool BitmapImage::getHBITMAPOfSize(HBITMAP bmp, const IntSize* size)
   
     GraphicsContext gc(cgContext);
 
-    IntSize imageSize = BitmapImage::size();
+    FloatSize imageSize = BitmapImage::size();
     if (size)
         drawFrameMatchingSourceSize(&gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), *size, ColorSpaceDeviceRGB, CompositeCopy);
     else
@@ -101,7 +101,7 @@ void BitmapImage::drawFrameMatchingSourceSize(GraphicsContext* ctxt, const Float
     }
 
     // No image of the correct size was found, fallback to drawing the current frame
-    IntSize imageSize = BitmapImage::size();
+    FloatSize imageSize = BitmapImage::size();
     draw(ctxt, dstRect, FloatRect(0.0f, 0.0f, imageSize.width(), imageSize.height()), styleColorSpace, compositeOp, BlendModeNormal, ImageOrientationDescription());
 }
 
index 466ef25..4fd6394 100644 (file)
@@ -77,7 +77,7 @@ bool BitmapImage::getHBITMAPOfSize(HBITMAP bmp, const IntSize* size)
 
     GraphicsContext gc(targetRef);
 
-    IntSize imageSize = BitmapImage::size();
+    FloatSize imageSize = BitmapImage::size();
     if (size)
         drawFrameMatchingSourceSize(&gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), *size, ColorSpaceDeviceRGB, CompositeCopy);
     else
@@ -107,7 +107,7 @@ void BitmapImage::drawFrameMatchingSourceSize(GraphicsContext* ctxt, const Float
     }
 
     // No image of the correct size was found, fallback to drawing the current frame
-    IntSize imageSize = BitmapImage::size();
+    FloatSize imageSize = BitmapImage::size();
     draw(ctxt, dstRect, FloatRect(0.0f, 0.0f, imageSize.width(), imageSize.height()), ColorSpaceDeviceRGB, compositeOp, BlendModeNormal, ImageOrientationDescription());
 }
 
index ddd01cc..9d0303d 100644 (file)
@@ -82,7 +82,7 @@ RetainPtr<NSImage> dissolveDragImageToFraction(RetainPtr<NSImage> image, float d
         
 RetainPtr<NSImage> createDragImageFromImage(Image* image, ImageOrientationDescription description)
 {
-    IntSize size = image->size();
+    FloatSize size = image->size();
 
     if (image->isBitmapImage()) {
         ImageOrientation orientation;
index 8f42c01..0cca690 100644 (file)
@@ -124,13 +124,13 @@ DragImageRef createDragImageFromImage(Image* img, ImageOrientationDescription)
         return 0;
 
     CGContextRef drawContext = 0;
-    auto hbmp = allocImage(workingDC.get(), img->size(), &drawContext);
+    auto hbmp = allocImage(workingDC.get(), IntSize(img->size()), &drawContext);
     if (!hbmp || !drawContext)
         return 0;
 
     CGImageRef srcImage = img->getCGImageRef();
     CGRect rect;
-    rect.size = img->size();
+    rect.size = IntSize(img->size());
     rect.origin.x = 0;
     rect.origin.y = -rect.size.height;
     static const CGFloat white [] = {1.0, 1.0, 1.0, 1.0};
index a2b9861..3ea4a0e 100644 (file)
@@ -745,7 +745,7 @@ void Pasteboard::writeImage(Element& element, const URL&, const String&)
     auto resultBitmap = adoptGDIObject(::CreateCompatibleBitmap(dc, image->width(), image->height()));
     HGDIOBJ oldBitmap = ::SelectObject(compatibleDC.get(), resultBitmap.get());
 
-    BitmapInfo bmInfo = BitmapInfo::create(image->size());
+    BitmapInfo bmInfo = BitmapInfo::create(IntSize(image->size()));
 
     auto coreBitmap = adoptGDIObject(::CreateDIBSection(dc, &bmInfo, DIB_RGB_COLORS, 0, 0, 0));
     HGDIOBJ oldSource = ::SelectObject(sourceDC.get(), coreBitmap.get());
index fc64df9..c68c87e 100644 (file)
@@ -165,7 +165,7 @@ IntSize RenderImage::imageSizeForError(CachedImage* newImage) const
     ASSERT_ARG(newImage, newImage);
     ASSERT_ARG(newImage, newImage->imageForRenderer(this));
 
-    IntSize imageSize;
+    FloatSize imageSize;
     if (newImage->willPaintBrokenImage()) {
         std::pair<Image*, float> brokenImageAndImageScaleFactor = newImage->brokenImage(document().deviceScaleFactor());
         imageSize = brokenImageAndImageScaleFactor.first->size();
@@ -424,7 +424,7 @@ void RenderImage::paintReplaced(PaintInfo& paintInfo, const LayoutPoint& paintOf
                 // Call brokenImage() explicitly to ensure we get the broken image icon at the appropriate resolution.
                 std::pair<Image*, float> brokenImageAndImageScaleFactor = imageResource().cachedImage()->brokenImage(document().deviceScaleFactor());
                 image = brokenImageAndImageScaleFactor.first;
-                IntSize imageSize = image->size();
+                FloatSize imageSize = image->size();
                 imageSize.scale(1 / brokenImageAndImageScaleFactor.second);
                 // Center the error image, accounting for border and padding.
                 LayoutUnit centerX = (usableWidth - imageSize.width()) / 2;
index f4e3f51..c4ca6ec 100644 (file)
@@ -3457,7 +3457,7 @@ void RenderLayer::paintScrollCorner(GraphicsContext* context, const IntPoint& pa
 void RenderLayer::drawPlatformResizerImage(GraphicsContext* context, const LayoutRect& resizerCornerRect)
 {
     RefPtr<Image> resizeCornerImage;
-    IntSize cornerResizerSize;
+    FloatSize cornerResizerSize;
     if (renderer().document().deviceScaleFactor() >= 2) {
         DEPRECATED_DEFINE_STATIC_LOCAL(Image*, resizeCornerImageHiRes, (Image::loadPlatformResource("textAreaResizeCorner@2x").leakRef()));
         resizeCornerImage = resizeCornerImageHiRes;
index 780ae4a..15fcc94 100644 (file)
@@ -81,7 +81,7 @@ bool SVGImage::hasSingleSecurityOrigin() const
     return true;
 }
 
-void SVGImage::setContainerSize(const IntSize& size)
+void SVGImage::setContainerSize(const FloatSize& size)
 {
     if (!m_page || !usesContainerSize())
         return;
@@ -96,7 +96,7 @@ void SVGImage::setContainerSize(const IntSize& size)
     FrameView* view = frameView();
     view->resize(this->containerSize());
 
-    renderer->setContainerSize(size);
+    renderer->setContainerSize(IntSize(size));
 }
 
 IntSize SVGImage::containerSize() const
index 58eef30..4893daf 100644 (file)
@@ -51,7 +51,7 @@ public:
     FrameView* frameView() const;
 
     virtual bool isSVGImage() const override { return true; }
-    virtual IntSize size() const override { return m_intrinsicSize; }
+    virtual FloatSize size() const override { return m_intrinsicSize; }
 
     void setURL(const URL& url) { m_url = url; }
 
@@ -76,7 +76,7 @@ private:
 
     virtual String filenameExtension() const override;
 
-    virtual void setContainerSize(const IntSize&) override;
+    virtual void setContainerSize(const FloatSize&) override;
     IntSize containerSize() const;
     virtual bool usesContainerSize() const override { return true; }
     virtual void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) override;
@@ -97,7 +97,7 @@ private:
 
     std::unique_ptr<SVGImageChromeClient> m_chromeClient;
     std::unique_ptr<Page> m_page;
-    IntSize m_intrinsicSize;
+    FloatSize m_intrinsicSize;
     URL m_url;
 };
 
index 23131c0..db5b06b 100644 (file)
@@ -62,9 +62,9 @@ void SVGImageCache::setContainerSizeForRenderer(const CachedImageClient* client,
     m_imageForContainerMap.set(client, SVGImageForContainer::create(m_svgImage, containerSizeWithoutZoom, containerZoom));
 }
 
-IntSize SVGImageCache::imageSizeForRenderer(const RenderObject* renderer) const
+FloatSize SVGImageCache::imageSizeForRenderer(const RenderObject* renderer) const
 {
-    IntSize imageSize = m_svgImage->size();
+    FloatSize imageSize = m_svgImage->size();
     if (!renderer)
         return imageSize;
 
index 79db431..f860cbd 100644 (file)
@@ -44,7 +44,7 @@ public:
     void removeClientFromCache(const CachedImageClient*);
 
     void setContainerSizeForRenderer(const CachedImageClient*, const IntSize&, float);
-    IntSize imageSizeForRenderer(const RenderObject*) const;
+    FloatSize imageSizeForRenderer(const RenderObject*) const;
 
     Image* imageForRenderer(const RenderObject*);
 
index 434efc8..42f8739 100644 (file)
 
 namespace WebCore {
 
-IntSize SVGImageForContainer::size() const
+FloatSize SVGImageForContainer::size() const
 {
     FloatSize scaledContainerSize(m_containerSize);
     scaledContainerSize.scale(m_zoom);
-    return roundedIntSize(scaledContainerSize);
+    return FloatSize(roundedIntSize(scaledContainerSize));
 }
 
 void SVGImageForContainer::draw(GraphicsContext* context, const FloatRect& dstRect,
index de4003f..c50506b 100644 (file)
@@ -44,7 +44,7 @@ public:
 
     virtual bool isSVGImage() const override { return true; }
 
-    virtual IntSize size() const override;
+    virtual FloatSize size() const override;
 
     void setURL(const URL& url) { m_image->setURL(url); }
 
index 2d53ef4..e652493 100644 (file)
@@ -150,7 +150,7 @@ void FEImage::dump()
 
 TextStream& FEImage::externalRepresentation(TextStream& ts, int indent) const
 {
-    IntSize imageSize;
+    FloatSize imageSize;
     if (m_image)
         imageSize = m_image->size();
     else if (RenderObject* renderer = referencedRenderer())
index cfe8164..23e2e1f 100644 (file)
@@ -2015,7 +2015,7 @@ String Internals::getCurrentCursorInfo(ExceptionCode& ec)
     result.append(",");
     result.appendNumber(cursor.hotSpot().y());
     if (cursor.image()) {
-        IntSize size = cursor.image()->size();
+        FloatSize size = cursor.image()->size();
         result.append(" image=");
         result.appendNumber(size.width());
         result.append("x");
index 3e709db..f802bd7 100644 (file)
@@ -1,3 +1,18 @@
+2014-04-01  Zalan Bujtas  <zalan@apple.com>
+
+        Subpixel rendering: Transition class Image (and its dependencies) from int to float to enable subpixel positioned/sized images.
+        https://bugs.webkit.org/show_bug.cgi?id=130643
+
+        Reviewed by Simon Fraser.
+
+        This is in preparation to support subpixel positioned/sized background images. While 1x bitmap images can't take
+        subpixel sizing on hidpi resolutions, both generated and hidpi images can.
+        This patch does not change Image behavior in general as both position and size are still snapped to integral values.  
+
+        No change in behavior.
+
+        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
+
 2014-03-31  Andreas Kling  <akling@apple.com>
 
         Blind Windows build fix. Check my mangle-fu.
index 8b85b04..d018961 100644 (file)
@@ -372,7 +372,7 @@ EXPORTS
         symbolWithPointer(?currentFrameKnownToBeOpaque@BitmapImage@WebCore@@UAE_NXZ, ?currentFrameKnownToBeOpaque@BitmapImage@WebCore@@UEAA_NXZ)
         symbolWithPointer(?hasSingleSecurityOrigin@BitmapImage@WebCore@@UBE_NXZ, ?hasSingleSecurityOrigin@BitmapImage@WebCore@@UEBA_NXZ)
         symbolWithPointer(?computeIntrinsicDimensions@Image@WebCore@@UAEXAAULength@2@0AAVFloatSize@2@@Z, ?computeIntrinsicDimensions@Image@WebCore@@UEAAXAEAULength@2@0AEAVFloatSize@2@@Z)
-        symbolWithPointer(?size@BitmapImage@WebCore@@UBE?AVIntSize@2@XZ, ?size@BitmapImage@WebCore@@UEBA?AVIntSize@2@XZ)
+        symbolWithPointer(?size@BitmapImage@WebCore@@UBE?AVFloatSize@2@XZ, ?size@BitmapImage@WebCore@@UEBA?AVFloatSize@2@XZ)
         symbolWithPointer(?getHotSpot@BitmapImage@WebCore@@UBE_NAAVIntPoint@2@@Z, ?getHotSpot@BitmapImage@WebCore@@UEBA_NAEAVIntPoint@2@@Z)
         symbolWithPointer(?dataChanged@BitmapImage@WebCore@@UAE_N_N@Z, ?dataChanged@BitmapImage@WebCore@@UEAA_N_N@Z)
         symbolWithPointer(?filenameExtension@BitmapImage@WebCore@@UBE?AVString@WTF@@XZ, ?filenameExtension@BitmapImage@WebCore@@UEBA?AVString@WTF@@XZ)
index ce821fc..bdc4e33 100644 (file)
@@ -1,3 +1,21 @@
+2014-04-01  Zalan Bujtas  <zalan@apple.com>
+
+        Subpixel rendering: Transition class Image (and its dependencies) from int to float to enable subpixel positioned/sized images.
+        https://bugs.webkit.org/show_bug.cgi?id=130643
+
+        Reviewed by Simon Fraser.
+
+        This is in preparation to support subpixel positioned/sized background images. While 1x bitmap images can't take
+        subpixel sizing on hidpi resolutions, both generated and hidpi images can.
+        This patch does not change Image behavior in general as both position and size are still snapped to integral values.  
+
+        No change in behavior.
+
+        * Shared/WebCoreArgumentCoders.cpp:
+        (IPC::encodeImage):
+        * UIProcess/API/efl/EwkView.cpp:
+        (EwkView::updateCursor):
+
 2014-04-01  Joonghun Park  <jh718.park@samsung.com>
 
         [EFL][WK2] Fix and update the existing test case for ewk_database_manager_origins_async_get API
index ba9ba9b..2cb5248 100644 (file)
@@ -491,7 +491,7 @@ bool ArgumentCoder<Credential>::decode(ArgumentDecoder& decoder, Credential& cre
 
 static void encodeImage(ArgumentEncoder& encoder, Image* image)
 {
-    RefPtr<ShareableBitmap> bitmap = ShareableBitmap::createShareable(image->size(), ShareableBitmap::SupportsAlpha);
+    RefPtr<ShareableBitmap> bitmap = ShareableBitmap::createShareable(IntSize(image->size()), ShareableBitmap::SupportsAlpha);
     bitmap->createGraphicsContext()->drawImage(image, ColorSpaceDeviceRGB, IntPoint());
 
     ShareableBitmap::Handle handle;
index 390b41a..6719031 100644 (file)
@@ -430,7 +430,7 @@ void EwkView::updateCursor()
         if (!cursorObject)
             return;
 
-        IntSize cursorSize = cursorImage->size();
+        IntSize cursorSize = IntSize(cursorImage->size());
         // Resize cursor.
         evas_object_resize(cursorObject.get(), cursorSize.width(), cursorSize.height());