bool Path::pointAndNormalAtLength(float length, FloatPoint& point, float& normal) const { SkPathMeasure measure(m_path, false); if (calculatePointAndNormalOnPath(measure, WebCoreFloatToSkScalar(length), point, normal)) return true; normal = 0; point = FloatPoint(0, 0); return false; }
void Path::pointAndNormalAtLength(float length, FloatPoint& point, float& normal) const { SkPathMeasure measure(m_path, false); if (calculatePointAndNormalOnPath(measure, WebCoreFloatToSkScalar(length), point, normal)) return; SkPoint position = m_path.getPoint(0); point = FloatPoint(SkScalarToFloat(position.fX), SkScalarToFloat(position.fY)); normal = 0; }
bool Path::PositionCalculator::pointAndNormalAtLength(float length, FloatPoint& point, float& normalAngle) { SkScalar skLength = WebCoreFloatToSkScalar(length); if (skLength >= 0) { if (skLength < m_accumulatedLength) { // Reset path measurer to rewind (and restart from 0). m_pathMeasure.setPath(&m_path, false); m_accumulatedLength = 0; } else { skLength -= m_accumulatedLength; } if (calculatePointAndNormalOnPath(m_pathMeasure, skLength, point, normalAngle, &m_accumulatedLength)) return true; } normalAngle = 0; point = FloatPoint(0, 0); return false; }