Changeset 39240 in webkit


Ignore:
Timestamp:
Dec 12, 2008 6:11:04 AM (15 years ago)
Author:
oliver@apple.com
Message:

REGRESSION: Canvas is broken in high dpi mode
<rdar://problem/6432739> <https://bugs.webkit.org/show_bug.cgi?id=22823>

Reviewed by Alexey Proskuryakov.

Simply made sure that we correctly scale the graphics context to
account for the difference between logical and buffer resolution.

Location:
trunk/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r39238 r39240  
     12008-12-12  Oliver Hunt  <oliver@apple.com>
     2
     3        Reviewed by Alexey Proskuryakov.
     4
     5        REGRESSION: Canvas is broken in high dpi mode
     6        <rdar://problem/6432739> <https://bugs.webkit.org/show_bug.cgi?id=22823>
     7
     8        Simply made sure that we correctly scale the graphics context to
     9        account for the difference between logical and buffer resolution.
     10
     11        * html/HTMLCanvasElement.cpp:
     12        (WebCore::HTMLCanvasElement::createImageBuffer):
     13        (WebCore::HTMLCanvasElement::baseTransform):
     14
    1152008-12-12  Tor Arne Vestbø  <tavestbo@trolltech.com>
    216
  • trunk/WebCore/html/HTMLCanvasElement.cpp

    r39105 r39240  
    254254    if (!size.width() || !size.height())
    255255        return;
     256
    256257    m_imageBuffer.set(ImageBuffer::create(size, false).release());
    257 
     258    m_imageBuffer->context()->scale(FloatSize(size.width() / unscaledSize.width(), size.height() / unscaledSize.height()));
    258259    m_imageBuffer->context()->setShadowsIgnoreTransforms(true);
    259260}
     
    274275{
    275276    ASSERT(m_createdImageBuffer);
    276     return m_imageBuffer->baseTransform();
    277 }
    278 
    279 }
     277    FloatSize unscaledSize(width(), height());
     278    IntSize size = convertLogicalToDevice(unscaledSize);
     279    AffineTransform transform;
     280    if (size.width() && size.height())
     281        transform.scale(size.width() / unscaledSize.width(), size.height() / unscaledSize.height());
     282    transform.multiply(m_imageBuffer->baseTransform());
     283    return transform;
     284}
     285
     286}
Note: See TracChangeset for help on using the changeset viewer.