"Fossies" - the Fresh Open Source Software Archive

Member "firefox-69.0.1/gfx/skia/patches/archive/0001-Bug-687189-Implement-SkPaint-getPosTextPath.patch" (17 Sep 2019, 2350 Bytes) of package /linux/www/firefox-69.0.1.source.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Diff source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 From 27a914815e757ed12523edf968c9da134dabeaf8 Mon Sep 17 00:00:00 2001
    2 From: George Wright <gwright@mozilla.com>
    3 Date: Fri, 18 May 2012 14:10:44 -0400
    4 Subject: [PATCH 01/10]     Bug 755869 - [4] Re-apply bug 687189 - Implement
    5  SkPaint::getPosTextPath r=mattwoodrow
    6 
    7 ---
    8  gfx/skia/include/core/SkPaint.h |    3 +++
    9  gfx/skia/src/core/SkPaint.cpp   |   27 +++++++++++++++++++++++++++
   10  2 files changed, 30 insertions(+), 0 deletions(-)
   11 
   12 diff --git a/gfx/skia/include/core/SkPaint.h b/gfx/skia/include/core/SkPaint.h
   13 index 1930db1..ff37d77 100644
   14 --- a/gfx/skia/include/core/SkPaint.h
   15 +++ b/gfx/skia/include/core/SkPaint.h
   16 @@ -813,6 +813,9 @@ public:
   17      void getTextPath(const void* text, size_t length, SkScalar x, SkScalar y,
   18                       SkPath* path) const;
   19  
   20 +    void getPosTextPath(const void* text, size_t length, 
   21 +                        const SkPoint pos[], SkPath* path) const;
   22 +
   23  #ifdef SK_BUILD_FOR_ANDROID
   24      const SkGlyph& getUnicharMetrics(SkUnichar);
   25      const SkGlyph& getGlyphMetrics(uint16_t);
   26 diff --git a/gfx/skia/src/core/SkPaint.cpp b/gfx/skia/src/core/SkPaint.cpp
   27 index 1b74fa1..4c119aa 100644
   28 --- a/gfx/skia/src/core/SkPaint.cpp
   29 +++ b/gfx/skia/src/core/SkPaint.cpp
   30 @@ -1355,6 +1355,33 @@ void SkPaint::getTextPath(const void* textData, size_t length,
   31      }
   32  }
   33  
   34 +void SkPaint::getPosTextPath(const void* textData, size_t length,
   35 +                             const SkPoint pos[], SkPath* path) const {
   36 +    SkASSERT(length == 0 || textData != NULL);
   37 +
   38 +    const char* text = (const char*)textData;
   39 +    if (text == NULL || length == 0 || path == NULL) {
   40 +        return;
   41 +    }
   42 +
   43 +    SkTextToPathIter    iter(text, length, *this, false);
   44 +    SkMatrix            matrix;
   45 +    SkPoint             prevPos;
   46 +    prevPos.set(0, 0);
   47 +
   48 +    matrix.setScale(iter.getPathScale(), iter.getPathScale());
   49 +    path->reset();
   50 +
   51 +    unsigned int    i = 0;
   52 +    const SkPath*   iterPath;
   53 +    while ((iterPath = iter.next(NULL)) != NULL) {
   54 +        matrix.postTranslate(pos[i].fX - prevPos.fX, pos[i].fY - prevPos.fY);
   55 +        path->addPath(*iterPath, matrix);
   56 +        prevPos = pos[i];
   57 +        i++;
   58 +    }
   59 +}
   60 +
   61  static void add_flattenable(SkDescriptor* desc, uint32_t tag,
   62                              SkFlattenableWriteBuffer* buffer) {
   63      buffer->flatten(desc->addEntry(tag, buffer->size(), NULL));
   64 -- 
   65 1.7.5.4
   66