Changeset 65783 in webkit


Ignore:
Timestamp:
Aug 22, 2010 1:38:25 AM (14 years ago)
Author:
andreas.kling@nokia.com
Message:

2010-08-22 Andreas Kling <andreas.kling@nokia.com>

Reviewed by Ariya Hidayat.

[Qt] Gradient: Support inner radius larger than outer radius
https://bugs.webkit.org/show_bug.cgi?id=44392

  • platform/graphics/qt/GradientQt.cpp: (WebCore::Gradient::platformGradient): Reverse the (radial) gradient if r0 > r1.

2010-08-22 Andreas Kling <andreas.kling@nokia.com>

Reviewed by Ariya Hidayat.

[Qt] Gradient: Support inner radius larger than outer radius
https://bugs.webkit.org/show_bug.cgi?id=44392

Unskip two tests that now pass:

  • canvas/philip/tests/2d.gradient.radial.outside2.html
  • canvas/philip/tests/2d.gradient.radial.outside3.html
  • platform/qt/Skipped:
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r65779 r65783  
     12010-08-22  Andreas Kling  <andreas.kling@nokia.com>
     2
     3        Reviewed by Ariya Hidayat.
     4
     5        [Qt] Gradient: Support inner radius larger than outer radius
     6        https://bugs.webkit.org/show_bug.cgi?id=44392
     7
     8        Unskip two tests that now pass:
     9        - canvas/philip/tests/2d.gradient.radial.outside2.html
     10        - canvas/philip/tests/2d.gradient.radial.outside3.html
     11
     12        * platform/qt/Skipped:
     13
    1142010-08-21  Eric Carlson  <eric.carlson@apple.com>
    215
  • trunk/LayoutTests/platform/qt/Skipped

    r65778 r65783  
    52315231canvas/philip/tests/2d.gradient.radial.cone.top.html
    52325232canvas/philip/tests/2d.gradient.radial.negative.html
    5233 canvas/philip/tests/2d.gradient.radial.outside2.html
    5234 canvas/philip/tests/2d.gradient.radial.outside3.html
    52355233canvas/philip/tests/2d.gradient.radial.touch1.html
    52365234canvas/philip/tests/2d.gradient.radial.touch2.html
  • trunk/WebCore/ChangeLog

    r65782 r65783  
     12010-08-22  Andreas Kling  <andreas.kling@nokia.com>
     2
     3        Reviewed by Ariya Hidayat.
     4
     5        [Qt] Gradient: Support inner radius larger than outer radius
     6        https://bugs.webkit.org/show_bug.cgi?id=44392
     7
     8        * platform/graphics/qt/GradientQt.cpp:
     9        (WebCore::Gradient::platformGradient): Reverse the (radial) gradient if r0 > r1.
     10
    1112010-08-22  Ariya Hidayat  <ariya@sencha.com>
    212
  • trunk/WebCore/platform/graphics/qt/GradientQt.cpp

    r62353 r65783  
    4747        return m_gradient;
    4848
     49    bool reversed = m_r0 > m_r1;
     50
     51    qreal innerRadius = reversed ? m_r1 : m_r0;
     52    qreal outerRadius = reversed ? m_r0 : m_r1;
     53    QPointF center = reversed ? m_p0 : m_p1;
     54    QPointF focalPoint = reversed ? m_p1 : m_p0;
     55
    4956    if (m_radial)
    50         m_gradient = new QRadialGradient(m_p1.x(), m_p1.y(), m_r1, m_p0.x(), m_p0.y());
     57        m_gradient = new QRadialGradient(center, outerRadius, focalPoint);
    5158    else
    5259        m_gradient = new QLinearGradient(m_p0.x(), m_p0.y(), m_p1.x(), m_p1.y());
     
    6673        else
    6774            lastStop = stopIterator->stop;
    68         if (m_radial && m_r0)
    69             lastStop = m_r0 / m_r1 + lastStop * (1.0f - m_r0 / m_r1);
    70         m_gradient->setColorAt(qMin(lastStop, qreal(1.0f)), stopColor);
     75
     76        if (m_radial && !qFuzzyCompare(1 + outerRadius, qreal(1))) {
     77            lastStop = lastStop * (1.0f - innerRadius / outerRadius);
     78            if (!reversed)
     79                lastStop += innerRadius / outerRadius;
     80        }
     81
     82        qreal stopPosition = qMin(lastStop, qreal(1.0f));
     83
     84        if (m_radial && reversed)
     85            stopPosition = 1 - stopPosition;
     86
     87        m_gradient->setColorAt(stopPosition, stopColor);
    7188        // Keep the lastStop as orginal value, since the following stopColor depend it
    7289        lastStop = stopIterator->stop;
Note: See TracChangeset for help on using the changeset viewer.