Changeset 87011 in webkit


Ignore:
Timestamp:
May 20, 2011 11:44:01 PM (13 years ago)
Author:
krit@webkit.org
Message:

2011-05-20 Dirk Schulze <krit@webkit.org>

Reviewed by Nikolas Zimmermann.

Share more code in PathTraversalState
https://bugs.webkit.org/show_bug.cgi?id=61238

Share more code between SVGPathTraversalStateBuilder and Path in PathTraversalState.

No change in functionality, so no new tests.

  • platform/graphics/Path.cpp: (WebCore::pathLengthApplierFunction):
  • platform/graphics/PathTraversalState.cpp: (WebCore::PathTraversalState::processSegment):
  • platform/graphics/PathTraversalState.h:
  • svg/SVGPathTraversalStateBuilder.cpp: (WebCore::SVGPathTraversalStateBuilder::continueConsuming):
Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r87010 r87011  
     12011-05-20  Dirk Schulze  <krit@webkit.org>
     2
     3        Reviewed by Nikolas Zimmermann.
     4
     5        Share more code in PathTraversalState
     6        https://bugs.webkit.org/show_bug.cgi?id=61238
     7
     8        Share more code between SVGPathTraversalStateBuilder and Path in PathTraversalState.
     9
     10        No change in functionality, so no new tests.
     11
     12        * platform/graphics/Path.cpp:
     13        (WebCore::pathLengthApplierFunction):
     14        * platform/graphics/PathTraversalState.cpp:
     15        (WebCore::PathTraversalState::processSegment):
     16        * platform/graphics/PathTraversalState.h:
     17        * svg/SVGPathTraversalStateBuilder.cpp:
     18        (WebCore::SVGPathTraversalStateBuilder::continueConsuming):
     19
    1202011-05-21  Nikolas Zimmermann  <nzimmermann@rim.com>
    221
  • trunk/Source/WebCore/platform/graphics/Path.cpp

    r84273 r87011  
    4747    if (traversalState.m_success)
    4848        return;
    49     traversalState.m_previous = traversalState.m_current;
    5049    FloatPoint* points = element->points;
    5150    float segmentLength = 0;
     
    6867    }
    6968    traversalState.m_totalLength += segmentLength;
    70     if ((traversalState.m_action == PathTraversalState::TraversalPointAtLength ||
    71          traversalState.m_action == PathTraversalState::TraversalNormalAngleAtLength) &&
    72         (traversalState.m_totalLength >= traversalState.m_desiredLength)) {
    73         FloatSize change = traversalState.m_current - traversalState.m_previous;
    74         float slope = atan2f(change.height(), change.width());
    75 
    76         if (traversalState.m_action == PathTraversalState::TraversalPointAtLength) {
    77             float offset = traversalState.m_desiredLength - traversalState.m_totalLength;
    78             traversalState.m_current.move(offset * cosf(slope), offset * sinf(slope));
    79         } else
    80             traversalState.m_normalAngle = rad2deg(slope);
    81 
    82         traversalState.m_success = true;
    83     }
     69    traversalState.processSegment();
    8470}
    8571
  • trunk/Source/WebCore/platform/graphics/PathTraversalState.cpp

    r86928 r87011  
    204204}
    205205
    206 }
    207 
     206void PathTraversalState::processSegment()
     207{
     208    if (m_action == TraversalSegmentAtLength && m_totalLength >= m_desiredLength)
     209        m_success = true;
     210       
     211    if ((m_action == TraversalPointAtLength || m_action == TraversalNormalAngleAtLength) && m_totalLength >= m_desiredLength) {
     212        FloatSize change = m_current - m_previous;
     213        float slope = atan2f(change.height(), change.width());
     214        if (m_action == TraversalPointAtLength) {
     215            float offset = m_desiredLength - m_totalLength;
     216            m_current.move(offset * cosf(slope), offset * sinf(slope));
     217        } else
     218            m_normalAngle = rad2deg(slope);
     219        m_success = true;
     220    }
     221    m_previous = m_current;
     222}
     223
     224}
     225
  • trunk/Source/WebCore/platform/graphics/PathTraversalState.h

    r86935 r87011  
    4747    float quadraticBezierTo(const FloatPoint& newControl, const FloatPoint& newEnd);
    4848    float cubicBezierTo(const FloatPoint& newControl1, const FloatPoint& newControl2, const FloatPoint& newEnd);
     49   
     50    void processSegment();
    4951
    5052public:
  • trunk/Source/WebCore/svg/SVGPathTraversalStateBuilder.cpp

    r86973 r87011  
    6767{
    6868    ASSERT(m_traversalState);   
    69     if (m_traversalState->m_action == PathTraversalState::TraversalSegmentAtLength
    70         && m_traversalState->m_totalLength >= m_traversalState->m_desiredLength)
    71         m_traversalState->m_success = true;
    72    
    73     if ((m_traversalState->m_action == PathTraversalState::TraversalPointAtLength
    74          || m_traversalState->m_action == PathTraversalState::TraversalNormalAngleAtLength)
    75         && m_traversalState->m_totalLength >= m_traversalState->m_desiredLength) {
    76         FloatSize change = m_traversalState->m_current - m_traversalState->m_previous;
    77         float slope = atan2f(change.height(), change.width());
    78         if (m_traversalState->m_action == PathTraversalState::TraversalPointAtLength) {
    79             float offset = m_traversalState->m_desiredLength - m_traversalState->m_totalLength;
    80             m_traversalState->m_current.move(offset * cosf(slope), offset * sinf(slope));
    81         } else
    82             m_traversalState->m_normalAngle = rad2deg(slope);
    83         m_traversalState->m_success = true;
    84     }
    85     m_traversalState->m_previous = m_traversalState->m_current;
    86 
     69    m_traversalState->processSegment();
    8770    return !m_traversalState->m_success;
    8871}
Note: See TracChangeset for help on using the changeset viewer.