⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 102195 in webkit


Ignore:
Timestamp:
Dec 6, 2011, 5:03:17 PM (15 years ago)
Author:
Lucas Forschler
Message:

Merged r95697.

Location:
branches/safari-534.53-branch/Source/WebCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-534.53-branch/Source/WebCore/ChangeLog

    r102193 r102195  
     12011-12-06  Lucas Forschler  <lforschler@apple.com>
     2
     3    Merge 95697
     4
     5    2011-09-21  Beth Dakin  <bdakin@apple.com>
     6
     7            https://bugs.webkit.org/show_bug.cgi?id=67415
     8            Text drawn via -webkit-background-clip:text is blurry at device scale factors >1.0
     9            -and corresponding-
     10            <rdar://problem/10060379>
     11
     12            Reviewed by Darin Adler.
     13
     14            New helper function RenderBoxModelObject scales the mask image by the
     15            deviceScaleFactor to get an image of the appropriate resolution. It also scales
     16            the image's GraphicsContext so that the clip is set up on the same scale. Back in
     17            paintFillLayerExtended() we still clip the image to the original maskRect to get
     18            everything scaled back to the appropriate size.
     19            * rendering/RenderBoxModelObject.cpp:
     20            (WebCore::createDeviceScaledImageBuffer):
     21            (WebCore::RenderBoxModelObject::paintFillLayerExtended):
     22
     23            Make the deviceScaleFactor convenience function just a namespace-level function in
     24            Page rather than a static member or Page.
     25            * page/Page.cpp:
     26            (WebCore::deviceScaleFactor):
     27            * page/Page.h:
     28
     29            Pre-existing callers of Page::deviceScaleFactor(Frame*) must now use
     30            WebCore::deviceScaleFactor(Frame*)
     31            * editing/DeleteButtonController.cpp:
     32            (WebCore::DeleteButtonController::createDeletionUI):
     33            * rendering/RenderImage.cpp:
     34            (WebCore::RenderImage::imageSizeForError):
     35            (WebCore::RenderImage::paintReplaced):
     36            * rendering/RenderLayer.cpp:
     37            (WebCore::RenderLayer::drawPlatformResizerImage):
     38
    1392011-12-06  Lucas Forschler  <lforschler@apple.com>
    240
  • branches/safari-534.53-branch/Source/WebCore/editing/DeleteButtonController.cpp

    r102192 r102195  
    256256    style->setProperty(CSSPropertyVisibility, CSSValueVisible);
    257257
    258     float deviceScaleFactor = Page::deviceScaleFactor(m_frame);
     258    float deviceScaleFactor = WebCore::deviceScaleFactor(m_frame);
    259259    RefPtr<Image> buttonImage;
    260260    if (deviceScaleFactor >= 2)
  • branches/safari-534.53-branch/Source/WebCore/page/Page.cpp

    r102192 r102195  
    114114}
    115115
     116float deviceScaleFactor(Frame* frame)
     117{
     118    if (!frame)
     119        return 1;
     120    Page* page = frame->page();
     121    if (!page)
     122        return 1;
     123    return page->deviceScaleFactor();
     124}
     125
    116126Page::Page(PageClients& pageClients)
    117127    : m_chrome(adoptPtr(new Chrome(this, pageClients.chromeClient)))
     
    614624}
    615625
    616 float Page::deviceScaleFactor(Frame* frame)
    617 {
    618     if (!frame)
    619         return 1;
    620     Page* page = frame->page();
    621     if (!page)
    622         return 1;
    623     return page->deviceScaleFactor();
    624 }
    625 
    626626void Page::didMoveOnscreen()
    627627{
  • branches/safari-534.53-branch/Source/WebCore/page/Page.h

    r102032 r102195  
    9696    enum FindDirection { FindDirectionForward, FindDirectionBackward };
    9797
     98    float deviceScaleFactor(Frame*);
     99
    98100    class Page {
    99101        WTF_MAKE_NONCOPYABLE(Page);
     
    246248        float deviceScaleFactor() const { return m_deviceScaleFactor; }
    247249        void setDeviceScaleFactor(float);
    248         static float deviceScaleFactor(Frame*);
    249250
    250251        // Notifications when the Page starts and stops being presented via a native window.
  • branches/safari-534.53-branch/Source/WebCore/rendering/RenderBoxModelObject.cpp

    r102189 r102195  
    586586    return adjustedRect;
    587587}
     588   
     589static PassOwnPtr<ImageBuffer> createDeviceScaledImageBuffer(IntSize imageSize, float deviceScaleFactor)
     590{
     591    // To create an image of the appropriate resolution, we need to scale imageRect's size
     592    // by the device scale factor.
     593    IntSize scaledImageSize = imageSize;
     594    scaledImageSize.scale(deviceScaleFactor);
     595
     596    OwnPtr<ImageBuffer> scaledImageBuffer = ImageBuffer::create(scaledImageSize);
     597    if (!scaledImageBuffer)
     598        return nullptr;
     599
     600    // Scale the whole context by the device scale factor so that all of the clips set up at
     601    // the appropriate size.
     602    scaledImageBuffer->context()->scale(FloatSize(deviceScaleFactor, deviceScaleFactor));
     603   
     604    return scaledImageBuffer.release();
     605}
    588606
    589607void RenderBoxModelObject::paintFillLayerExtended(const PaintInfo& paintInfo, const Color& color, const FillLayer* bgLayer, const IntRect& rect,
     
    680698       
    681699        // Now create the mask.
    682         OwnPtr<ImageBuffer> maskImage = ImageBuffer::create(maskRect.size());
     700        OwnPtr<ImageBuffer> maskImage = createDeviceScaledImageBuffer(maskRect.size(), WebCore::deviceScaleFactor(frame()));       
    683701        if (!maskImage)
    684702            return;
  • branches/safari-534.53-branch/Source/WebCore/rendering/RenderImage.cpp

    r102176 r102195  
    8888    IntSize imageSize;
    8989    if (newImage->willPaintBrokenImage()) {
    90         float deviceScaleFactor = Page::deviceScaleFactor(frame());
     90        float deviceScaleFactor = WebCore::deviceScaleFactor(frame());
    9191        pair<Image*, float> brokenImageAndImageScaleFactor = newImage->brokenImage(deviceScaleFactor);
    9292        imageSize = brokenImageAndImageScaleFactor.first->size();
     
    275275
    276276            if (m_imageResource->errorOccurred() && !image->isNull() && usableWidth >= image->width() && usableHeight >= image->height()) {
    277                 float deviceScaleFactor = Page::deviceScaleFactor(frame());
     277                float deviceScaleFactor = WebCore::deviceScaleFactor(frame());
    278278                // Call brokenImage() explicitly to ensure we get the broken image icon at the appropriate resolution.
    279279                pair<Image*, float> brokenImageAndImageScaleFactor = m_imageResource->cachedImage()->brokenImage(deviceScaleFactor);
  • branches/safari-534.53-branch/Source/WebCore/rendering/RenderLayer.cpp

    r102054 r102195  
    23662366void RenderLayer::drawPlatformResizerImage(GraphicsContext* context, IntRect resizerCornerRect)
    23672367{
    2368     float deviceScaleFactor = Page::deviceScaleFactor(renderer()->frame());
     2368    float deviceScaleFactor = WebCore::deviceScaleFactor(renderer()->frame());
    23692369
    23702370    RefPtr<Image> resizeCornerImage;
Note: See TracChangeset for help on using the changeset viewer.