diff options
Diffstat (limited to 'gfx/skia/patches/archive/0001-Bug-687189-Implement-SkPaint-getPosTextPath.patch')
-rw-r--r-- | gfx/skia/patches/archive/0001-Bug-687189-Implement-SkPaint-getPosTextPath.patch | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/gfx/skia/patches/archive/0001-Bug-687189-Implement-SkPaint-getPosTextPath.patch b/gfx/skia/patches/archive/0001-Bug-687189-Implement-SkPaint-getPosTextPath.patch new file mode 100644 index 0000000000..f8e76dbb90 --- /dev/null +++ b/gfx/skia/patches/archive/0001-Bug-687189-Implement-SkPaint-getPosTextPath.patch @@ -0,0 +1,66 @@ +From 27a914815e757ed12523edf968c9da134dabeaf8 Mon Sep 17 00:00:00 2001 +From: George Wright <gwright@mozilla.com> +Date: Fri, 18 May 2012 14:10:44 -0400 +Subject: [PATCH 01/10] Bug 755869 - [4] Re-apply bug 687189 - Implement + SkPaint::getPosTextPath r=mattwoodrow + +--- + gfx/skia/include/core/SkPaint.h | 3 +++ + gfx/skia/src/core/SkPaint.cpp | 27 +++++++++++++++++++++++++++ + 2 files changed, 30 insertions(+), 0 deletions(-) + +diff --git a/gfx/skia/include/core/SkPaint.h b/gfx/skia/include/core/SkPaint.h +index 1930db1..ff37d77 100644 +--- a/gfx/skia/include/core/SkPaint.h ++++ b/gfx/skia/include/core/SkPaint.h +@@ -813,6 +813,9 @@ public: + void getTextPath(const void* text, size_t length, SkScalar x, SkScalar y, + SkPath* path) const; + ++ void getPosTextPath(const void* text, size_t length, ++ const SkPoint pos[], SkPath* path) const; ++ + #ifdef SK_BUILD_FOR_ANDROID + const SkGlyph& getUnicharMetrics(SkUnichar); + const SkGlyph& getGlyphMetrics(uint16_t); +diff --git a/gfx/skia/src/core/SkPaint.cpp b/gfx/skia/src/core/SkPaint.cpp +index 1b74fa1..4c119aa 100644 +--- a/gfx/skia/src/core/SkPaint.cpp ++++ b/gfx/skia/src/core/SkPaint.cpp +@@ -1355,6 +1355,33 @@ void SkPaint::getTextPath(const void* textData, size_t length, + } + } + ++void SkPaint::getPosTextPath(const void* textData, size_t length, ++ const SkPoint pos[], SkPath* path) const { ++ SkASSERT(length == 0 || textData != NULL); ++ ++ const char* text = (const char*)textData; ++ if (text == NULL || length == 0 || path == NULL) { ++ return; ++ } ++ ++ SkTextToPathIter iter(text, length, *this, false); ++ SkMatrix matrix; ++ SkPoint prevPos; ++ prevPos.set(0, 0); ++ ++ matrix.setScale(iter.getPathScale(), iter.getPathScale()); ++ path->reset(); ++ ++ unsigned int i = 0; ++ const SkPath* iterPath; ++ while ((iterPath = iter.next(NULL)) != NULL) { ++ matrix.postTranslate(pos[i].fX - prevPos.fX, pos[i].fY - prevPos.fY); ++ path->addPath(*iterPath, matrix); ++ prevPos = pos[i]; ++ i++; ++ } ++} ++ + static void add_flattenable(SkDescriptor* desc, uint32_t tag, + SkFlattenableWriteBuffer* buffer) { + buffer->flatten(desc->addEntry(tag, buffer->size(), NULL)); +-- +1.7.5.4 + |