Changeset 166642 in webkit
- Timestamp:
- Apr 2, 2014 7:18:58 AM (10 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 1 added
- 29 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r166641 r166642 1 2014-04-02 Zalan Bujtas <zalan@apple.com> 2 3 Subpixel rendering: Transition class CSSImageGeneratorValue/class StyleImage (and its dependencies) from 4 IntSize to FloatSize to enable subpixel sized (generated)images. 5 https://bugs.webkit.org/show_bug.cgi?id=130659 6 7 Reviewed by Simon Fraser and Andreas Kling. 8 9 This is in preparation to support subpixel positioned/sized background images. Generated images 10 needs to be able to sized on device pixels. 11 12 No change in behavior. 13 14 * WebCore.vcxproj/WebCore.vcxproj: 15 * WebCore.vcxproj/WebCore.vcxproj.filters: 16 * WebCore.xcodeproj/project.pbxproj: 17 * css/CSSCanvasValue.cpp: 18 (WebCore::CSSCanvasValue::fixedSize): 19 (WebCore::CSSCanvasValue::image): 20 * css/CSSCanvasValue.h: 21 * css/CSSCrossfadeValue.cpp: 22 (WebCore::CSSCrossfadeValue::fixedSize): 23 (WebCore::CSSCrossfadeValue::image): 24 * css/CSSCrossfadeValue.h: 25 * css/CSSFilterImageValue.cpp: 26 (WebCore::CSSFilterImageValue::fixedSize): 27 (WebCore::CSSFilterImageValue::image): 28 * css/CSSFilterImageValue.h: 29 * css/CSSGradientValue.cpp: 30 (WebCore::CSSGradientValue::image): 31 (WebCore::positionFromValue): 32 (WebCore::CSSGradientValue::computeEndPoint): 33 (WebCore::endPointsFromAngle): 34 (WebCore::CSSLinearGradientValue::createGradient): 35 (WebCore::CSSRadialGradientValue::createGradient): 36 * css/CSSGradientValue.h: 37 (WebCore::CSSGradientValue::fixedSize): 38 * css/CSSImageGeneratorValue.cpp: 39 (WebCore::CSSImageGeneratorValue::cachedImageForSize): 40 (WebCore::CSSImageGeneratorValue::saveCachedImageForSize): 41 (WebCore::CSSImageGeneratorValue::evictCachedGeneratedImage): 42 (WebCore::CSSImageGeneratorValue::CachedGeneratedImage::CachedGeneratedImage): 43 (WebCore::CSSImageGeneratorValue::image): 44 (WebCore::CSSImageGeneratorValue::fixedSize): 45 * css/CSSImageGeneratorValue.h: 46 * loader/cache/CachedImage.cpp: 47 (WebCore::CachedImage::setContainerSizeForRenderer): 48 * loader/cache/CachedImage.h: 49 * platform/graphics/FloatSizeHash.h: Added. 50 (WTF::FloatHash<WebCore::FloatSize>::hash): 51 (WTF::FloatHash<WebCore::FloatSize>::equal): 52 (WTF::HashTraits<WebCore::FloatSize>::constructDeletedValue): 53 (WTF::HashTraits<WebCore::FloatSize>::isDeletedValue): 54 * platform/graphics/LayoutSize.h: 55 (WebCore::flooredForPainting): 56 * rendering/RenderImageResourceStyleImage.h: 57 * rendering/RenderListMarker.cpp: 58 (WebCore::RenderListMarker::computePreferredLogicalWidths): 59 * rendering/style/StyleCachedImage.cpp: 60 (WebCore::StyleCachedImage::imageSize): 61 (WebCore::StyleCachedImage::setContainerSizeForRenderer): 62 (WebCore::StyleCachedImage::image): 63 * rendering/style/StyleCachedImage.h: 64 * rendering/style/StyleCachedImageSet.cpp: 65 (WebCore::StyleCachedImageSet::imageSize): 66 (WebCore::StyleCachedImageSet::setContainerSizeForRenderer): 67 (WebCore::StyleCachedImageSet::image): 68 * rendering/style/StyleCachedImageSet.h: 69 * rendering/style/StyleGeneratedImage.cpp: 70 (WebCore::StyleGeneratedImage::imageSize): 71 (WebCore::StyleGeneratedImage::computeIntrinsicDimensions): 72 (WebCore::StyleGeneratedImage::image): 73 * rendering/style/StyleGeneratedImage.h: 74 * rendering/style/StyleImage.h: 75 * rendering/style/StylePendingImage.h: 76 * svg/graphics/SVGImageCache.cpp: 77 (WebCore::SVGImageCache::setContainerSizeForRenderer): 78 * svg/graphics/SVGImageCache.h: 79 1 80 2014-04-02 Gergo Balogh <gbalogh.u-szeged@partner.samsung.com> 2 81 -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj
r166633 r166642 19344 19344 <ClInclude Include="..\platform\graphics\FloatRoundedRect.h" /> 19345 19345 <ClInclude Include="..\platform\graphics\FloatSize.h" /> 19346 <ClInclude Include="..\platform\graphics\FloatSizeHash.h" /> 19346 19347 <ClInclude Include="..\platform\graphics\Font.h" /> 19347 19348 <ClInclude Include="..\platform\graphics\FontCache.h" /> -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters
r166633 r166642 12774 12774 <Filter>platform\graphics</Filter> 12775 12775 </ClInclude> 12776 <ClInclude Include="..\platform\graphics\FloatSizeHash.h"> 12777 <Filter>platform\graphics</Filter> 12778 </ClInclude> 12776 12779 <ClInclude Include="..\platform\graphics\Font.h"> 12777 12780 <Filter>platform\graphics</Filter> -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r166640 r166642 2002 2002 589556ED18D4A44000764B03 /* BorderEdge.h in Headers */ = {isa = PBXBuildFile; fileRef = 589556EC18D4A44000764B03 /* BorderEdge.h */; }; 2003 2003 58AEE2F418D4BCCF0022E7FE /* BorderEdge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58AEE2F318D4BCCF0022E7FE /* BorderEdge.cpp */; }; 2004 58CD35CB18EB4C3900B9F3AC /* FloatSizeHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 58CD35CA18EB4C3900B9F3AC /* FloatSizeHash.h */; }; 2004 2005 5905ADBF1302F3CE00F116DF /* XMLTreeViewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5905ADBD1302F3CE00F116DF /* XMLTreeViewer.cpp */; }; 2005 2006 5905ADC01302F3CE00F116DF /* XMLTreeViewer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5905ADBE1302F3CE00F116DF /* XMLTreeViewer.h */; }; … … 8997 8998 589556EC18D4A44000764B03 /* BorderEdge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BorderEdge.h; sourceTree = "<group>"; }; 8998 8999 58AEE2F318D4BCCF0022E7FE /* BorderEdge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BorderEdge.cpp; sourceTree = "<group>"; }; 9000 58CD35CA18EB4C3900B9F3AC /* FloatSizeHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FloatSizeHash.h; sourceTree = "<group>"; }; 8999 9001 5905ADBD1302F3CE00F116DF /* XMLTreeViewer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLTreeViewer.cpp; sourceTree = "<group>"; }; 9000 9002 5905ADBE1302F3CE00F116DF /* XMLTreeViewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLTreeViewer.h; sourceTree = "<group>"; }; … … 20035 20037 B275353E0B053814002CE64F /* FloatSize.cpp */, 20036 20038 B275353F0B053814002CE64F /* FloatSize.h */, 20039 58CD35CA18EB4C3900B9F3AC /* FloatSizeHash.h */, 20037 20040 B2C3DA4F0D006CD600EF6F26 /* Font.cpp */, 20038 20041 B2C3DA500D006CD600EF6F26 /* Font.h */, … … 25175 25178 A72EA3BB1585CF55004FAA26 /* RefCountedSupplement.h in Headers */, 25176 25179 9831AE4A154225C900FE2644 /* ReferrerPolicy.h in Headers */, 25180 58CD35CB18EB4C3900B9F3AC /* FloatSizeHash.h in Headers */, 25177 25181 BCAB418213E356E800D8AAF3 /* Region.h in Headers */, 25178 25182 6CDDE8D01770BB220016E072 /* RegionOversetState.h in Headers */, -
trunk/Source/WebCore/css/CSSCanvasValue.cpp
r165676 r166642 67 67 } 68 68 69 IntSize CSSCanvasValue::fixedSize(const RenderElement* renderer)69 FloatSize CSSCanvasValue::fixedSize(const RenderElement* renderer) 70 70 { 71 71 if (HTMLCanvasElement* elt = element(renderer->document())) 72 return IntSize(elt->width(), elt->height());73 return IntSize();72 return FloatSize(elt->width(), elt->height()); 73 return FloatSize(); 74 74 } 75 75 … … 85 85 } 86 86 87 PassRefPtr<Image> CSSCanvasValue::image(RenderElement* renderer, const IntSize& /*size*/)87 PassRefPtr<Image> CSSCanvasValue::image(RenderElement* renderer, const FloatSize& /*size*/) 88 88 { 89 89 ASSERT(clients().contains(renderer)); -
trunk/Source/WebCore/css/CSSCanvasValue.h
r165676 r166642 41 41 String customCSSText() const; 42 42 43 PassRefPtr<Image> image(RenderElement*, const IntSize&);43 PassRefPtr<Image> image(RenderElement*, const FloatSize&); 44 44 bool isFixedSize() const { return true; } 45 IntSize fixedSize(const RenderElement*);45 FloatSize fixedSize(const RenderElement*); 46 46 47 47 bool isPending() const { return false; } -
trunk/Source/WebCore/css/CSSCrossfadeValue.cpp
r166582 r166642 79 79 } 80 80 81 IntSize CSSCrossfadeValue::fixedSize(const RenderElement* renderer)81 FloatSize CSSCrossfadeValue::fixedSize(const RenderElement* renderer) 82 82 { 83 83 float percentage = m_percentageValue->getFloatValue(); … … 89 89 90 90 if (!cachedFromImage || !cachedToImage) 91 return IntSize();91 return FloatSize(); 92 92 93 93 FloatSize fromImageSize = cachedFromImage->imageForRenderer(renderer)->size(); … … 97 97 // a different fixed size; avoid performing the interpolation if the images are the same size. 98 98 if (fromImageSize == toImageSize) 99 return IntSize(fromImageSize);100 101 return IntSize(fromImageSize.width() * inversePercentage + toImageSize.width() * percentage,99 return fromImageSize; 100 101 return FloatSize(fromImageSize.width() * inversePercentage + toImageSize.width() * percentage, 102 102 fromImageSize.height() * inversePercentage + toImageSize.height() * percentage); 103 103 } … … 139 139 } 140 140 141 PassRefPtr<Image> CSSCrossfadeValue::image(RenderElement* renderer, const IntSize& size)141 PassRefPtr<Image> CSSCrossfadeValue::image(RenderElement* renderer, const FloatSize& size) 142 142 { 143 143 if (size.isEmpty()) -
trunk/Source/WebCore/css/CSSCrossfadeValue.h
r165676 r166642 53 53 String customCSSText() const; 54 54 55 PassRefPtr<Image> image(RenderElement*, const IntSize&);55 PassRefPtr<Image> image(RenderElement*, const FloatSize&); 56 56 bool isFixedSize() const { return true; } 57 IntSize fixedSize(const RenderElement*);57 FloatSize fixedSize(const RenderElement*); 58 58 59 59 bool isPending() const; -
trunk/Source/WebCore/css/CSSFilterImageValue.cpp
r166582 r166642 60 60 } 61 61 62 IntSize CSSFilterImageValue::fixedSize(const RenderElement* renderer)62 FloatSize CSSFilterImageValue::fixedSize(const RenderElement* renderer) 63 63 { 64 64 CachedResourceLoader* cachedResourceLoader = renderer->document().cachedResourceLoader(); … … 66 66 67 67 if (!cachedImage) 68 return IntSize();68 return FloatSize(); 69 69 70 return IntSize(cachedImage->imageForRenderer(renderer)->size());70 return cachedImage->imageForRenderer(renderer)->size(); 71 71 } 72 72 … … 97 97 } 98 98 99 PassRefPtr<Image> CSSFilterImageValue::image(RenderElement* renderer, const IntSize& size)99 PassRefPtr<Image> CSSFilterImageValue::image(RenderElement* renderer, const FloatSize& size) 100 100 { 101 101 if (size.isEmpty()) -
trunk/Source/WebCore/css/CSSFilterImageValue.h
r162139 r166642 58 58 String customCSSText() const; 59 59 60 PassRefPtr<Image> image(RenderElement*, const IntSize&);60 PassRefPtr<Image> image(RenderElement*, const FloatSize&); 61 61 bool isFixedSize() const { return true; } 62 IntSize fixedSize(const RenderElement*);62 FloatSize fixedSize(const RenderElement*); 63 63 64 64 bool isPending() const; -
trunk/Source/WebCore/css/CSSGradientValue.cpp
r165676 r166642 29 29 #include "CSSCalculationValue.h" 30 30 #include "CSSValueKeywords.h" 31 #include "FloatSize.h" 32 #include "FloatSizeHash.h" 31 33 #include "Gradient.h" 32 34 #include "GradientImage.h" 33 35 #include "Image.h" 34 #include "IntSize.h"35 #include "IntSizeHash.h"36 36 #include "NodeRenderStyle.h" 37 37 #include "RenderElement.h" … … 42 42 namespace WebCore { 43 43 44 PassRefPtr<Image> CSSGradientValue::image(RenderElement* renderer, const IntSize& size)44 PassRefPtr<Image> CSSGradientValue::image(RenderElement* renderer, const FloatSize& size) 45 45 { 46 46 if (size.isEmpty()) … … 391 391 } 392 392 393 static float positionFromValue(CSSPrimitiveValue* value, const RenderStyle& style, const RenderStyle& rootStyle, const IntSize& size, bool isHorizontal)393 static float positionFromValue(CSSPrimitiveValue* value, const RenderStyle& style, const RenderStyle& rootStyle, const FloatSize& size, bool isHorizontal) 394 394 { 395 395 float zoomFactor = style.effectiveZoom(); … … 425 425 } 426 426 427 FloatPoint CSSGradientValue::computeEndPoint(CSSPrimitiveValue* horizontal, CSSPrimitiveValue* vertical, const RenderStyle& style, const RenderStyle& rootStyle, const IntSize& size)427 FloatPoint CSSGradientValue::computeEndPoint(CSSPrimitiveValue* horizontal, CSSPrimitiveValue* vertical, const RenderStyle& style, const RenderStyle& rootStyle, const FloatSize& size) 428 428 { 429 429 FloatPoint result; … … 573 573 574 574 // Compute the endpoints so that a gradient of the given angle covers a box of the given size. 575 static void endPointsFromAngle(float angleDeg, const IntSize& size, FloatPoint& firstPoint, FloatPoint& secondPoint, CSSGradientType type)575 static void endPointsFromAngle(float angleDeg, const FloatSize& size, FloatPoint& firstPoint, FloatPoint& secondPoint, CSSGradientType type) 576 576 { 577 577 // Prefixed gradients use "polar coordinate" angles, rather than "bearing" angles. … … 640 640 } 641 641 642 PassRefPtr<Gradient> CSSLinearGradientValue::createGradient(RenderElement* renderer, const IntSize& size)642 PassRefPtr<Gradient> CSSLinearGradientValue::createGradient(RenderElement* renderer, const FloatSize& size) 643 643 { 644 644 ASSERT(!size.isEmpty()); … … 980 980 981 981 // FIXME: share code with the linear version 982 PassRefPtr<Gradient> CSSRadialGradientValue::createGradient(RenderElement* renderer, const IntSize& size)982 PassRefPtr<Gradient> CSSRadialGradientValue::createGradient(RenderElement* renderer, const FloatSize& size) 983 983 { 984 984 ASSERT(!size.isEmpty()); -
trunk/Source/WebCore/css/CSSGradientValue.h
r165676 r166642 62 62 class CSSGradientValue : public CSSImageGeneratorValue { 63 63 public: 64 PassRefPtr<Image> image(RenderElement*, const IntSize&);64 PassRefPtr<Image> image(RenderElement*, const FloatSize&); 65 65 66 66 void setFirstX(PassRefPtr<CSSPrimitiveValue> val) { m_firstX = val; } … … 80 80 81 81 bool isFixedSize() const { return false; } 82 IntSize fixedSize(const RenderElement*) const { return IntSize(); }82 FloatSize fixedSize(const RenderElement*) const { return FloatSize(); } 83 83 84 84 bool isPending() const { return false; } … … 113 113 114 114 // Resolve points/radii to front end values. 115 FloatPoint computeEndPoint(CSSPrimitiveValue*, CSSPrimitiveValue*, const RenderStyle&, const RenderStyle& rootStyle, const IntSize&);115 FloatPoint computeEndPoint(CSSPrimitiveValue*, CSSPrimitiveValue*, const RenderStyle&, const RenderStyle& rootStyle, const FloatSize&); 116 116 117 117 bool isCacheable() const; … … 146 146 147 147 // Create the gradient for a given size. 148 PassRefPtr<Gradient> createGradient(RenderElement*, const IntSize&);148 PassRefPtr<Gradient> createGradient(RenderElement*, const FloatSize&); 149 149 150 150 PassRef<CSSLinearGradientValue> clone() const … … 196 196 197 197 // Create the gradient for a given size. 198 PassRefPtr<Gradient> createGradient(RenderElement*, const IntSize&);198 PassRefPtr<Gradient> createGradient(RenderElement*, const FloatSize&); 199 199 200 200 bool equals(const CSSRadialGradientValue&) const; -
trunk/Source/WebCore/css/CSSImageGeneratorValue.cpp
r165676 r166642 66 66 } 67 67 68 GeneratedImage* CSSImageGeneratorValue::cachedImageForSize( IntSize size)68 GeneratedImage* CSSImageGeneratorValue::cachedImageForSize(FloatSize size) 69 69 { 70 70 if (size.isEmpty()) … … 79 79 } 80 80 81 void CSSImageGeneratorValue::saveCachedImageForSize( IntSize size, PassRefPtr<GeneratedImage> image)81 void CSSImageGeneratorValue::saveCachedImageForSize(FloatSize size, PassRefPtr<GeneratedImage> image) 82 82 { 83 83 ASSERT(!m_images.contains(size)); … … 85 85 } 86 86 87 void CSSImageGeneratorValue::evictCachedGeneratedImage( IntSize size)87 void CSSImageGeneratorValue::evictCachedGeneratedImage(FloatSize size) 88 88 { 89 89 ASSERT(m_images.contains(size)); … … 91 91 } 92 92 93 CSSImageGeneratorValue::CachedGeneratedImage::CachedGeneratedImage(CSSImageGeneratorValue& owner, IntSize size, PassRefPtr<GeneratedImage> image)93 CSSImageGeneratorValue::CachedGeneratedImage::CachedGeneratedImage(CSSImageGeneratorValue& owner, FloatSize size, PassRefPtr<GeneratedImage> image) 94 94 : m_owner(owner) 95 95 , m_size(size) … … 106 106 } 107 107 108 PassRefPtr<Image> CSSImageGeneratorValue::image(RenderElement* renderer, const IntSize& size)108 PassRefPtr<Image> CSSImageGeneratorValue::image(RenderElement* renderer, const FloatSize& size) 109 109 { 110 110 switch (classType()) { … … 148 148 } 149 149 150 IntSize CSSImageGeneratorValue::fixedSize(const RenderElement* renderer)150 FloatSize CSSImageGeneratorValue::fixedSize(const RenderElement* renderer) 151 151 { 152 152 switch (classType()) { … … 166 166 ASSERT_NOT_REACHED(); 167 167 } 168 return IntSize();168 return FloatSize(); 169 169 } 170 170 -
trunk/Source/WebCore/css/CSSImageGeneratorValue.h
r165676 r166642 28 28 29 29 #include "CSSValue.h" 30 #include "IntSizeHash.h" 30 #include "FloatSize.h" 31 #include "FloatSizeHash.h" 31 32 #include "Timer.h" 32 33 #include <wtf/HashCountedSet.h> … … 48 49 void removeClient(RenderElement*); 49 50 50 PassRefPtr<Image> image(RenderElement*, const IntSize&);51 PassRefPtr<Image> image(RenderElement*, const FloatSize&); 51 52 52 53 bool isFixedSize() const; 53 IntSize fixedSize(const RenderElement*);54 FloatSize fixedSize(const RenderElement*); 54 55 55 56 bool isPending() const; … … 61 62 CSSImageGeneratorValue(ClassType); 62 63 63 GeneratedImage* cachedImageForSize( IntSize);64 void saveCachedImageForSize( IntSize, PassRefPtr<GeneratedImage>);64 GeneratedImage* cachedImageForSize(FloatSize); 65 void saveCachedImageForSize(FloatSize, PassRefPtr<GeneratedImage>); 65 66 const HashCountedSet<RenderElement*>& clients() const { return m_clients; } 66 67 … … 72 73 class CachedGeneratedImage { 73 74 public: 74 CachedGeneratedImage(CSSImageGeneratorValue&, IntSize, PassRefPtr<GeneratedImage>);75 CachedGeneratedImage(CSSImageGeneratorValue&, FloatSize, PassRefPtr<GeneratedImage>); 75 76 GeneratedImage* image() { return m_image.get(); } 76 77 void puntEvictionTimer() { m_evictionTimer.restart(); } … … 80 81 81 82 CSSImageGeneratorValue& m_owner; 82 IntSize m_size;83 FloatSize m_size; 83 84 RefPtr<GeneratedImage> m_image; 84 85 DeferrableOneShotTimer<CachedGeneratedImage> m_evictionTimer; … … 86 87 87 88 friend class CachedGeneratedImage; 88 void evictCachedGeneratedImage( IntSize);89 void evictCachedGeneratedImage(FloatSize); 89 90 90 91 HashCountedSet<RenderElement*> m_clients; 91 HashMap< IntSize, std::unique_ptr<CachedGeneratedImage>> m_images;92 HashMap<FloatSize, std::unique_ptr<CachedGeneratedImage>> m_images; 92 93 }; 93 94 -
trunk/Source/WebCore/loader/cache/CachedImage.cpp
r166582 r166642 229 229 } 230 230 231 void CachedImage::setContainerSizeForRenderer(const CachedImageClient* renderer, const IntSize& containerSize, float containerZoom)231 void CachedImage::setContainerSizeForRenderer(const CachedImageClient* renderer, const LayoutSize& containerSize, float containerZoom) 232 232 { 233 233 if (containerSize.isEmpty()) -
trunk/Source/WebCore/loader/cache/CachedImage.h
r165117 r166642 67 67 bool canRender(const RenderObject* renderer, float multiplier) { return !errorOccurred() && !imageSizeForRenderer(renderer, multiplier).isEmpty(); } 68 68 69 void setContainerSizeForRenderer(const CachedImageClient*, const IntSize&, float);69 void setContainerSizeForRenderer(const CachedImageClient*, const LayoutSize&, float); 70 70 bool usesImageContainerSize() const; 71 71 bool imageHasRelativeWidth() const; … … 133 133 void addIncrementalDataBuffer(ResourceBuffer*); 134 134 135 typedef std::pair< IntSize, float> SizeAndZoom;135 typedef std::pair<LayoutSize, float> SizeAndZoom; 136 136 typedef HashMap<const CachedImageClient*, SizeAndZoom> ContainerSizeRequests; 137 137 ContainerSizeRequests m_pendingContainerSizeRequests; -
trunk/Source/WebCore/platform/graphics/LayoutSize.h
r154858 r166642 193 193 } 194 194 195 inline FloatSize flooredForPainting(const LayoutSize& size, float pixelSnappingFactor) 196 { 197 #if ENABLE(SUBPIXEL_LAYOUT) 198 return FloatSize(floorToDevicePixel(size.width(), pixelSnappingFactor), floorToDevicePixel(size.height(), pixelSnappingFactor)); 199 #else 200 UNUSED_PARAM(pixelSnappingFactor); 201 return FloatSize(point); 202 #endif 203 } 204 195 205 } // namespace WebCore 196 206 -
trunk/Source/WebCore/rendering/RenderImageResourceStyleImage.h
r162356 r166642 52 52 virtual bool imageHasRelativeHeight() const override { return m_styleImage->imageHasRelativeHeight(); } 53 53 54 virtual LayoutSize imageSize(float multiplier) const override { return m_styleImage->imageSize(m_renderer, multiplier); }55 virtual LayoutSize intrinsicSize(float multiplier) const override { return m_styleImage->imageSize(m_renderer, multiplier); }54 virtual LayoutSize imageSize(float multiplier) const override { return LayoutSize(m_styleImage->imageSize(m_renderer, multiplier)); } 55 virtual LayoutSize intrinsicSize(float multiplier) const override { return LayoutSize(m_styleImage->imageSize(m_renderer, multiplier)); } 56 56 57 57 virtual WrappedImagePtr imagePtr() const override { return m_styleImage->data(); } -
trunk/Source/WebCore/rendering/RenderListMarker.cpp
r166120 r166642 1522 1522 1523 1523 if (isImage()) { 1524 LayoutSize imageSize = m_image->imageSize(this, style().effectiveZoom());1524 LayoutSize imageSize = LayoutSize(m_image->imageSize(this, style().effectiveZoom())); 1525 1525 m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = style().isHorizontalWritingMode() ? imageSize.width() : imageSize.height(); 1526 1526 setPreferredLogicalWidthsDirty(false); -
trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp
r156622 r166642 62 62 } 63 63 64 LayoutSize StyleCachedImage::imageSize(const RenderElement* renderer, float multiplier) const64 FloatSize StyleCachedImage::imageSize(const RenderElement* renderer, float multiplier) const 65 65 { 66 66 return m_image->imageSizeForRenderer(renderer, multiplier); … … 87 87 } 88 88 89 void StyleCachedImage::setContainerSizeForRenderer(const RenderElement* renderer, const IntSize& imageContainerSize, float imageContainerZoomFactor)89 void StyleCachedImage::setContainerSizeForRenderer(const RenderElement* renderer, const FloatSize& imageContainerSize, float imageContainerZoomFactor) 90 90 { 91 m_image->setContainerSizeForRenderer(renderer, imageContainerSize, imageContainerZoomFactor);91 m_image->setContainerSizeForRenderer(renderer, LayoutSize(imageContainerSize), imageContainerZoomFactor); 92 92 } 93 93 … … 102 102 } 103 103 104 PassRefPtr<Image> StyleCachedImage::image(RenderElement* renderer, const IntSize&) const104 PassRefPtr<Image> StyleCachedImage::image(RenderElement* renderer, const FloatSize&) const 105 105 { 106 106 return m_image->imageForRenderer(renderer); -
trunk/Source/WebCore/rendering/style/StyleCachedImage.h
r164298 r166642 49 49 virtual bool isLoaded() const override; 50 50 virtual bool errorOccurred() const override; 51 virtual LayoutSize imageSize(const RenderElement*, float multiplier) const override;51 virtual FloatSize imageSize(const RenderElement*, float multiplier) const override; 52 52 virtual bool imageHasRelativeWidth() const override; 53 53 virtual bool imageHasRelativeHeight() const override; 54 54 virtual void computeIntrinsicDimensions(const RenderElement*, Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) override; 55 55 virtual bool usesImageContainerSize() const override; 56 virtual void setContainerSizeForRenderer(const RenderElement*, const IntSize&, float) override;56 virtual void setContainerSizeForRenderer(const RenderElement*, const FloatSize&, float) override; 57 57 virtual void addClient(RenderElement*) override; 58 58 virtual void removeClient(RenderElement*) override; 59 virtual PassRefPtr<Image> image(RenderElement*, const IntSize&) const override;59 virtual PassRefPtr<Image> image(RenderElement*, const FloatSize&) const override; 60 60 virtual bool knownToBeOpaque(const RenderElement*) const override; 61 61 -
trunk/Source/WebCore/rendering/style/StyleCachedImageSet.cpp
r156622 r166642 70 70 } 71 71 72 LayoutSize StyleCachedImageSet::imageSize(const RenderElement* renderer, float multiplier) const72 FloatSize StyleCachedImageSet::imageSize(const RenderElement* renderer, float multiplier) const 73 73 { 74 LayoutSize scaledImageSize = m_bestFitImage->imageSizeForRenderer(renderer, multiplier);74 FloatSize scaledImageSize = m_bestFitImage->imageSizeForRenderer(renderer, multiplier); 75 75 scaledImageSize.scale(1 / m_imageScaleFactor); 76 76 return scaledImageSize; … … 97 97 } 98 98 99 void StyleCachedImageSet::setContainerSizeForRenderer(const RenderElement* renderer, const IntSize& imageContainerSize, float imageContainerZoomFactor)99 void StyleCachedImageSet::setContainerSizeForRenderer(const RenderElement* renderer, const FloatSize& imageContainerSize, float imageContainerZoomFactor) 100 100 { 101 m_bestFitImage->setContainerSizeForRenderer(renderer, imageContainerSize, imageContainerZoomFactor);101 m_bestFitImage->setContainerSizeForRenderer(renderer, LayoutSize(imageContainerSize), imageContainerZoomFactor); 102 102 } 103 103 … … 112 112 } 113 113 114 PassRefPtr<Image> StyleCachedImageSet::image(RenderElement* renderer, const IntSize&) const114 PassRefPtr<Image> StyleCachedImageSet::image(RenderElement* renderer, const FloatSize&) const 115 115 { 116 116 return m_bestFitImage->imageForRenderer(renderer); -
trunk/Source/WebCore/rendering/style/StyleCachedImageSet.h
r164298 r166642 65 65 virtual bool isLoaded() const override; 66 66 virtual bool errorOccurred() const override; 67 virtual LayoutSize imageSize(const RenderElement*, float multiplier) const override;67 virtual FloatSize imageSize(const RenderElement*, float multiplier) const override; 68 68 virtual bool imageHasRelativeWidth() const override; 69 69 virtual bool imageHasRelativeHeight() const override; 70 70 virtual void computeIntrinsicDimensions(const RenderElement*, Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) override; 71 71 virtual bool usesImageContainerSize() const override; 72 virtual void setContainerSizeForRenderer(const RenderElement*, const IntSize&, float) override;72 virtual void setContainerSizeForRenderer(const RenderElement*, const FloatSize&, float) override; 73 73 virtual void addClient(RenderElement*) override; 74 74 virtual void removeClient(RenderElement*) override; 75 virtual PassRefPtr<Image> image(RenderElement*, const IntSize&) const override;75 virtual PassRefPtr<Image> image(RenderElement*, const FloatSize&) const override; 76 76 virtual float imageScaleFactor() const override { return m_imageScaleFactor; } 77 77 virtual bool knownToBeOpaque(const RenderElement*) const override; -
trunk/Source/WebCore/rendering/style/StyleGeneratedImage.cpp
r160528 r166642 43 43 } 44 44 45 LayoutSize StyleGeneratedImage::imageSize(const RenderElement* renderer, float multiplier) const45 FloatSize StyleGeneratedImage::imageSize(const RenderElement* renderer, float multiplier) const 46 46 { 47 47 if (m_fixedSize) { 48 IntSize fixedSize = const_cast<CSSImageGeneratorValue&>(m_imageGeneratorValue.get()).fixedSize(renderer);48 FloatSize fixedSize = const_cast<CSSImageGeneratorValue&>(m_imageGeneratorValue.get()).fixedSize(renderer); 49 49 if (multiplier == 1.0f) 50 50 return fixedSize; 51 51 52 LayoutUnit width = fixedSize.width() * multiplier;53 LayoutUnit height = fixedSize.height() * multiplier;52 float width = fixedSize.width() * multiplier; 53 float height = fixedSize.height() * multiplier; 54 54 55 // Don't let images that have a width/height >= 1 shrink below 1 when zoomed. 55 // Don't let images that have a width/height >= 1 shrink below 1 device pixel when zoomed. 56 float deviceScaleFactor = renderer ? renderer->document().deviceScaleFactor() : 1; 56 57 if (fixedSize.width() > 0) 57 width = std::max< LayoutUnit>(1, width);58 width = std::max<float>(1 / deviceScaleFactor, width); 58 59 59 60 if (fixedSize.height() > 0) 60 height = std::max< LayoutUnit>(1, height);61 height = std::max<float>(1 / deviceScaleFactor, height); 61 62 62 return LayoutSize(width, height);63 return FloatSize(width, height); 63 64 } 64 65 … … 68 69 void StyleGeneratedImage::computeIntrinsicDimensions(const RenderElement* renderer, Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) 69 70 { 70 // At a zoom level of 1 the image is guaranteed to have a n integersize.71 IntSize size = flooredIntSize(imageSize(renderer, 1));71 // At a zoom level of 1 the image is guaranteed to have a device pixel size. 72 FloatSize size = flooredForPainting(LayoutSize(imageSize(renderer, 1)), renderer ? renderer->document().deviceScaleFactor() : 1); 72 73 intrinsicWidth = Length(size.width(), Fixed); 73 74 intrinsicHeight = Length(size.height(), Fixed); … … 85 86 } 86 87 87 PassRefPtr<Image> StyleGeneratedImage::image(RenderElement* renderer, const IntSize& size) const88 PassRefPtr<Image> StyleGeneratedImage::image(RenderElement* renderer, const FloatSize& size) const 88 89 { 89 90 return const_cast<CSSImageGeneratorValue&>(m_imageGeneratorValue.get()).image(renderer, size); -
trunk/Source/WebCore/rendering/style/StyleGeneratedImage.h
r164298 r166642 46 46 virtual PassRefPtr<CSSValue> cssValue() const override; 47 47 48 virtual LayoutSize imageSize(const RenderElement*, float multiplier) const override;48 virtual FloatSize imageSize(const RenderElement*, float multiplier) const override; 49 49 virtual bool imageHasRelativeWidth() const override { return !m_fixedSize; } 50 50 virtual bool imageHasRelativeHeight() const override { return !m_fixedSize; } 51 51 virtual void computeIntrinsicDimensions(const RenderElement*, Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) override; 52 52 virtual bool usesImageContainerSize() const override { return !m_fixedSize; } 53 virtual void setContainerSizeForRenderer(const RenderElement*, const IntSize& containerSize, float) override { m_containerSize = containerSize; }53 virtual void setContainerSizeForRenderer(const RenderElement*, const FloatSize& containerSize, float) override { m_containerSize = containerSize; } 54 54 virtual void addClient(RenderElement*) override; 55 55 virtual void removeClient(RenderElement*) override; 56 virtual PassRefPtr<Image> image(RenderElement*, const IntSize&) const override;56 virtual PassRefPtr<Image> image(RenderElement*, const FloatSize&) const override; 57 57 virtual bool knownToBeOpaque(const RenderElement*) const override; 58 58 … … 60 60 61 61 Ref<CSSImageGeneratorValue> m_imageGeneratorValue; 62 IntSize m_containerSize;62 FloatSize m_containerSize; 63 63 bool m_fixedSize; 64 64 }; -
trunk/Source/WebCore/rendering/style/StyleImage.h
r164310 r166642 26 26 27 27 #include "CSSValue.h" 28 #include "FloatSize.h" 28 29 #include "Image.h" 29 #include "IntSize.h"30 #include "LayoutSize.h"31 30 #include <wtf/PassRefPtr.h> 32 31 #include <wtf/RefCounted.h> … … 56 55 virtual bool isLoaded() const { return true; } 57 56 virtual bool errorOccurred() const { return false; } 58 virtual LayoutSize imageSize(const RenderElement*, float multiplier) const = 0;57 virtual FloatSize imageSize(const RenderElement*, float multiplier) const = 0; 59 58 virtual void computeIntrinsicDimensions(const RenderElement*, Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) = 0; 60 59 virtual bool imageHasRelativeWidth() const = 0; 61 60 virtual bool imageHasRelativeHeight() const = 0; 62 61 virtual bool usesImageContainerSize() const = 0; 63 virtual void setContainerSizeForRenderer(const RenderElement*, const IntSize&, float) = 0;62 virtual void setContainerSizeForRenderer(const RenderElement*, const FloatSize&, float) = 0; 64 63 virtual void addClient(RenderElement*) = 0; 65 64 virtual void removeClient(RenderElement*) = 0; 66 virtual PassRefPtr<Image> image(RenderElement*, const IntSize&) const = 0;65 virtual PassRefPtr<Image> image(RenderElement*, const FloatSize&) const = 0; 67 66 virtual WrappedImagePtr data() const = 0; 68 67 virtual float imageScaleFactor() const { return 1; } -
trunk/Source/WebCore/rendering/style/StylePendingImage.h
r165676 r166642 61 61 virtual PassRefPtr<CSSValue> cssValue() const override { return m_value; } 62 62 63 virtual LayoutSize imageSize(const RenderElement*, float /*multiplier*/) const override { return LayoutSize(); }63 virtual FloatSize imageSize(const RenderElement*, float /*multiplier*/) const override { return FloatSize(); } 64 64 virtual bool imageHasRelativeWidth() const override { return false; } 65 65 virtual bool imageHasRelativeHeight() const override { return false; } 66 66 virtual void computeIntrinsicDimensions(const RenderElement*, Length& /* intrinsicWidth */ , Length& /* intrinsicHeight */, FloatSize& /* intrinsicRatio */) { } 67 67 virtual bool usesImageContainerSize() const override { return false; } 68 virtual void setContainerSizeForRenderer(const RenderElement*, const IntSize&, float) override { }68 virtual void setContainerSizeForRenderer(const RenderElement*, const FloatSize&, float) override { } 69 69 virtual void addClient(RenderElement*) override { } 70 70 virtual void removeClient(RenderElement*) override { } 71 71 72 virtual PassRefPtr<Image> image(RenderElement*, const IntSize&) const override72 virtual PassRefPtr<Image> image(RenderElement*, const FloatSize&) const override 73 73 { 74 74 ASSERT_NOT_REACHED(); -
trunk/Source/WebCore/svg/graphics/SVGImageCache.cpp
r166582 r166642 26 26 #include "HTMLImageElement.h" 27 27 #include "ImageBuffer.h" 28 #include "LayoutSize.h" 28 29 #include "Page.h" 29 30 #include "RenderSVGRoot.h" … … 51 52 } 52 53 53 void SVGImageCache::setContainerSizeForRenderer(const CachedImageClient* client, const IntSize& containerSize, float containerZoom)54 void SVGImageCache::setContainerSizeForRenderer(const CachedImageClient* client, const LayoutSize& containerSize, float containerZoom) 54 55 { 55 56 ASSERT(client); -
trunk/Source/WebCore/svg/graphics/SVGImageCache.h
r166582 r166642 32 32 class CachedImageClient; 33 33 class ImageBuffer; 34 class LayoutSize; 34 35 class SVGImage; 35 36 class SVGImageForContainer; … … 44 45 void removeClientFromCache(const CachedImageClient*); 45 46 46 void setContainerSizeForRenderer(const CachedImageClient*, const IntSize&, float);47 void setContainerSizeForRenderer(const CachedImageClient*, const LayoutSize&, float); 47 48 FloatSize imageSizeForRenderer(const RenderObject*) const; 48 49
Note: See TracChangeset
for help on using the changeset viewer.