Changeset 87011 in webkit
- Timestamp:
- May 20, 2011 11:44:01 PM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r87010 r87011 1 2011-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 1 20 2011-05-21 Nikolas Zimmermann <nzimmermann@rim.com> 2 21 -
trunk/Source/WebCore/platform/graphics/Path.cpp
r84273 r87011 47 47 if (traversalState.m_success) 48 48 return; 49 traversalState.m_previous = traversalState.m_current;50 49 FloatPoint* points = element->points; 51 50 float segmentLength = 0; … … 68 67 } 69 68 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(); 84 70 } 85 71 -
trunk/Source/WebCore/platform/graphics/PathTraversalState.cpp
r86928 r87011 204 204 } 205 205 206 } 207 206 void 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 47 47 float quadraticBezierTo(const FloatPoint& newControl, const FloatPoint& newEnd); 48 48 float cubicBezierTo(const FloatPoint& newControl1, const FloatPoint& newControl2, const FloatPoint& newEnd); 49 50 void processSegment(); 49 51 50 52 public: -
trunk/Source/WebCore/svg/SVGPathTraversalStateBuilder.cpp
r86973 r87011 67 67 { 68 68 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(); 87 70 return !m_traversalState->m_success; 88 71 }
Note: See TracChangeset
for help on using the changeset viewer.