Changeset 95697 in webkit
- Timestamp:
- Sep 21, 2011, 8:29:50 PM (15 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 7 edited
-
ChangeLog (modified) (1 diff)
-
editing/DeleteButtonController.cpp (modified) (1 diff)
-
page/Page.cpp (modified) (2 diffs)
-
page/Page.h (modified) (2 diffs)
-
rendering/RenderBoxModelObject.cpp (modified) (2 diffs)
-
rendering/RenderImage.cpp (modified) (2 diffs)
-
rendering/RenderLayer.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r95695 r95697 1 2011-09-21 Beth Dakin <bdakin@apple.com> 2 3 https://bugs.webkit.org/show_bug.cgi?id=67415 4 Text drawn via -webkit-background-clip:text is blurry at device scale factors >1.0 5 -and corresponding- 6 <rdar://problem/10060379> 7 8 Reviewed by Darin Adler. 9 10 New helper function RenderBoxModelObject scales the mask image by the 11 deviceScaleFactor to get an image of the appropriate resolution. It also scales 12 the image's GraphicsContext so that the clip is set up on the same scale. Back in 13 paintFillLayerExtended() we still clip the image to the original maskRect to get 14 everything scaled back to the appropriate size. 15 * rendering/RenderBoxModelObject.cpp: 16 (WebCore::createDeviceScaledImageBuffer): 17 (WebCore::RenderBoxModelObject::paintFillLayerExtended): 18 19 Make the deviceScaleFactor convenience function just a namespace-level function in 20 Page rather than a static member or Page. 21 * page/Page.cpp: 22 (WebCore::deviceScaleFactor): 23 * page/Page.h: 24 25 Pre-existing callers of Page::deviceScaleFactor(Frame*) must now use 26 WebCore::deviceScaleFactor(Frame*) 27 * editing/DeleteButtonController.cpp: 28 (WebCore::DeleteButtonController::createDeletionUI): 29 * rendering/RenderImage.cpp: 30 (WebCore::RenderImage::imageSizeForError): 31 (WebCore::RenderImage::paintReplaced): 32 * rendering/RenderLayer.cpp: 33 (WebCore::RenderLayer::drawPlatformResizerImage): 34 1 35 2011-09-21 Tim Horton <timothy_horton@apple.com> 2 36 -
trunk/Source/WebCore/editing/DeleteButtonController.cpp
r95244 r95697 256 256 style->setProperty(CSSPropertyVisibility, CSSValueVisible); 257 257 258 float deviceScaleFactor = Page::deviceScaleFactor(m_frame);258 float deviceScaleFactor = WebCore::deviceScaleFactor(m_frame); 259 259 RefPtr<Image> buttonImage; 260 260 if (deviceScaleFactor >= 2) -
trunk/Source/WebCore/page/Page.cpp
r95548 r95697 110 110 } 111 111 112 float deviceScaleFactor(Frame* frame) 113 { 114 if (!frame) 115 return 1; 116 Page* page = frame->page(); 117 if (!page) 118 return 1; 119 return page->deviceScaleFactor(); 120 } 121 112 122 Page::Page(PageClients& pageClients) 113 123 : m_chrome(adoptPtr(new Chrome(this, pageClients.chromeClient))) … … 657 667 } 658 668 659 float Page::deviceScaleFactor(Frame* frame)660 {661 if (!frame)662 return 1;663 Page* page = frame->page();664 if (!page)665 return 1;666 return page->deviceScaleFactor();667 }668 669 669 void Page::didMoveOnscreen() 670 670 { -
trunk/Source/WebCore/page/Page.h
r94900 r95697 95 95 enum FindDirection { FindDirectionForward, FindDirectionBackward }; 96 96 97 float deviceScaleFactor(Frame*); 98 97 99 class Page { 98 100 WTF_MAKE_NONCOPYABLE(Page); … … 250 252 float deviceScaleFactor() const { return m_deviceScaleFactor; } 251 253 void setDeviceScaleFactor(float); 252 static float deviceScaleFactor(Frame*);253 254 254 255 // Notifications when the Page starts and stops being presented via a native window. -
trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp
r95121 r95697 596 596 } 597 597 598 static PassOwnPtr<ImageBuffer> createDeviceScaledImageBuffer(IntSize imageSize, float deviceScaleFactor) 599 { 600 // To create an image of the appropriate resolution, we need to scale imageRect's size 601 // by the device scale factor. 602 IntSize scaledImageSize = imageSize; 603 scaledImageSize.scale(deviceScaleFactor); 604 605 OwnPtr<ImageBuffer> scaledImageBuffer = ImageBuffer::create(scaledImageSize); 606 if (!scaledImageBuffer) 607 return nullptr; 608 609 // Scale the whole context by the device scale factor so that all of the clips set up at 610 // the appropriate size. 611 scaledImageBuffer->context()->scale(FloatSize(deviceScaleFactor, deviceScaleFactor)); 612 613 return scaledImageBuffer.release(); 614 } 615 598 616 void RenderBoxModelObject::paintFillLayerExtended(const PaintInfo& paintInfo, const Color& color, const FillLayer* bgLayer, const LayoutRect& rect, 599 617 BackgroundBleedAvoidance bleedAvoidance, InlineFlowBox* box, const LayoutSize& boxSize, CompositeOperator op, RenderObject* backgroundObject) … … 689 707 690 708 // Now create the mask. 691 OwnPtr<ImageBuffer> maskImage = ImageBuffer::create(maskRect.size());709 OwnPtr<ImageBuffer> maskImage = createDeviceScaledImageBuffer(maskRect.size(), WebCore::deviceScaleFactor(frame())); 692 710 if (!maskImage) 693 711 return; -
trunk/Source/WebCore/rendering/RenderImage.cpp
r95502 r95697 87 87 IntSize imageSize; 88 88 if (newImage->willPaintBrokenImage()) { 89 float deviceScaleFactor = Page::deviceScaleFactor(frame());89 float deviceScaleFactor = WebCore::deviceScaleFactor(frame()); 90 90 pair<Image*, float> brokenImageAndImageScaleFactor = newImage->brokenImage(deviceScaleFactor); 91 91 imageSize = brokenImageAndImageScaleFactor.first->size(); … … 278 278 279 279 if (m_imageResource->errorOccurred() && !image->isNull() && usableWidth >= image->width() && usableHeight >= image->height()) { 280 float deviceScaleFactor = Page::deviceScaleFactor(frame());280 float deviceScaleFactor = WebCore::deviceScaleFactor(frame()); 281 281 // Call brokenImage() explicitly to ensure we get the broken image icon at the appropriate resolution. 282 282 pair<Image*, float> brokenImageAndImageScaleFactor = m_imageResource->cachedImage()->brokenImage(deviceScaleFactor); -
trunk/Source/WebCore/rendering/RenderLayer.cpp
r95694 r95697 2417 2417 void RenderLayer::drawPlatformResizerImage(GraphicsContext* context, LayoutRect resizerCornerRect) 2418 2418 { 2419 float deviceScaleFactor = Page::deviceScaleFactor(renderer()->frame());2419 float deviceScaleFactor = WebCore::deviceScaleFactor(renderer()->frame()); 2420 2420 2421 2421 RefPtr<Image> resizeCornerImage;
Note:
See TracChangeset
for help on using the changeset viewer.