| Index: include/core/SkPaint.h | 
| diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h | 
| index a0def42f12077a207093675ac5f2488932775478..cd170bc94f9f8fb209305e1232c1cfd449554ed9 100644 | 
| --- a/include/core/SkPaint.h | 
| +++ b/include/core/SkPaint.h | 
| @@ -885,15 +885,67 @@ public: | 
| SkRect bounds[] = NULL) const; | 
|  | 
| /** Return the path (outline) for the specified text. | 
| -        Note: just like SkCanvas::drawText, this will respect the Align setting | 
| -              in the paint. | 
| -    */ | 
| +     *  Note: just like SkCanvas::drawText, this will respect the Align setting | 
| +     *        in the paint. | 
| +     * | 
| +     *  @param text         the text | 
| +     *  @param length       number of bytes of text | 
| +     *  @param x            The x-coordinate of the origin of the text. | 
| +     *  @param y            The y-coordinate of the origin of the text. | 
| +     *  @param path         The outline of the text. | 
| +     */ | 
| void getTextPath(const void* text, size_t length, SkScalar x, SkScalar y, | 
| SkPath* path) const; | 
|  | 
| +    /** Return the path (outline) for the specified text. | 
| +     *  Note: just like SkCanvas::drawText, this will respect the Align setting | 
| +     *        in the paint. | 
| +     * | 
| +     *  @param text         the text | 
| +     *  @param length       number of bytes of text | 
| +     *  @param pos          array of positions, used to position each character | 
| +     *  @param path         The outline of the text. | 
| +     */ | 
| void getPosTextPath(const void* text, size_t length, | 
| const SkPoint pos[], SkPath* path) const; | 
|  | 
| +    /** Return the number of intervals that intersect the intercept along the axis of the advance. | 
| +     *  The return count is zero or a multiple of two, and is at most the number of glyphs * 2 in | 
| +     *  the string. The caller may pass nullptr for intervals to determine the size of the interval | 
| +     *  array, or may conservatively pre-allocate an array with length * 2 entries. The computed | 
| +     *  intervals are cached by glyph to improve performance for multiple calls. | 
| +     *  This permits constructing an underline that skips the descenders. | 
| +     * | 
| +     *  @param text         the text | 
| +     *  @param length       number of bytes of text | 
| +     *  @param x            The x-coordinate of the origin of the text. | 
| +     *  @param y            The y-coordinate of the origin of the text. | 
| +     *  @param bounds       The lower and upper line parallel to the advance. | 
| +     *  @param array        If not null, the found intersections. | 
| +     * | 
| +     *  @return             The number of intersections, which may be zero. | 
| +     */ | 
| +    int getTextIntercepts(const void* text, size_t length, SkScalar x, SkScalar y, | 
| +                          const SkScalar bounds[2], SkScalar* intervals) const; | 
| + | 
| +    /** Return the number of intervals that intersect the intercept along the axis of the advance. | 
| +     *  The return count is zero or a multiple of two, and is at most the number of glyphs * 2 in | 
| +     *  string. The caller may pass nullptr for intervals to determine the size of the interval | 
| +     *  array, or may conservatively pre-allocate an array with length * 2 entries. The computed | 
| +     *  intervals are cached by glyph to improve performance for multiple calls. | 
| +     *  This permits constructing an underline that skips the descenders. | 
| +     * | 
| +     *  @param text         the text | 
| +     *  @param length       number of bytes of text | 
| +     *  @param pos          array of positions, used to position each character | 
| +     *  @param bounds       The lower and upper line parallel to the advance. | 
| +     *  @param array        If not null, the glyph bounds contained by the advance parallel lines. | 
| +     * | 
| +     *  @return             The number of intersections, which may be zero. | 
| +     */ | 
| +    int getPosTextIntercepts(const void* text, size_t length, const SkPoint pos[], | 
| +                             const SkScalar bounds[2], SkScalar* intervals) const; | 
| + | 
| /** | 
| *  Return a rectangle that represents the union of the bounds of all | 
| *  of the glyphs, but each one positioned at (0,0). This may be conservatively large, and | 
| @@ -1091,7 +1143,7 @@ private: | 
| friend class GrTextUtils; | 
| friend class GrGLPathRendering; | 
| friend class SkScalerContext; | 
| -    friend class SkTextToPathIter; | 
| +    friend class SkTextBaseIter; | 
| friend class SkCanonicalizePaint; | 
| }; | 
|  | 
|  |