diff options
author | Behdad Esfahbod <behdad@google.com> | 2014-07-29 12:46:07 -0400 |
---|---|---|
committer | Behdad Esfahbod <behdad@google.com> | 2014-07-29 12:46:07 -0400 |
commit | 09f1901d6befcab49ed46cb77151a5d4af14a3b9 (patch) | |
tree | c52c933c28a0cb2a88b1a6ff1e5dc6a225740f7f | |
parent | 41b1aa18d7c32b4383993cd1b0a7e2e6648be14e (diff) | |
download | android_frameworks_minikin-09f1901d6befcab49ed46cb77151a5d4af14a3b9.tar.gz android_frameworks_minikin-09f1901d6befcab49ed46cb77151a5d4af14a3b9.tar.bz2 android_frameworks_minikin-09f1901d6befcab49ed46cb77151a5d4af14a3b9.zip |
Add doLayout variant that does NOT take css string
New API removes CSS string and directly takes needed objects.
Bug: 16651112
Change-Id: Ie5f7c2ab05be6cbd77cae0a5fd6bb453771ada59
-rw-r--r-- | include/minikin/Layout.h | 4 | ||||
-rw-r--r-- | libs/minikin/Layout.cpp | 28 |
2 files changed, 24 insertions, 8 deletions
diff --git a/include/minikin/Layout.h b/include/minikin/Layout.h index 11e5819..cd08e00 100644 --- a/include/minikin/Layout.h +++ b/include/minikin/Layout.h @@ -68,9 +68,13 @@ public: void dump() const; void setFontCollection(const FontCollection* collection); + // Deprecated. Will be removed. void doLayout(const uint16_t* buf, size_t start, size_t count, size_t bufSize, const std::string& css); + void doLayout(const uint16_t* buf, size_t start, size_t count, size_t bufSize, + int bidiFlags, const FontStyle &style, const MinikinPaint &paint); + void draw(Bitmap*, int x0, int y0, float size) const; // This must be called before any invocations. diff --git a/libs/minikin/Layout.cpp b/libs/minikin/Layout.cpp index 072ceda..2a396dc 100644 --- a/libs/minikin/Layout.cpp +++ b/libs/minikin/Layout.cpp @@ -497,24 +497,36 @@ static void clearHbFonts(LayoutContext* ctx) { void Layout::doLayout(const uint16_t* buf, size_t start, size_t count, size_t bufSize, const string& css) { - AutoMutex _l(gMinikinLock); - LayoutContext ctx; CssProperties props; props.parse(css); - ctx.style = styleFromCss(props); + FontStyle style = styleFromCss(props); + MinikinPaint paint; - ctx.paint.size = props.value(fontSize).getDoubleValue(); - ctx.paint.scaleX = props.hasTag(fontScaleX) + paint.size = props.value(fontSize).getDoubleValue(); + paint.scaleX = props.hasTag(fontScaleX) ? props.value(fontScaleX).getDoubleValue() : 1; - ctx.paint.skewX = props.hasTag(fontSkewX) + paint.skewX = props.hasTag(fontSkewX) ? props.value(fontSkewX).getDoubleValue() : 0; - ctx.paint.letterSpacing = props.hasTag(letterSpacing) + paint.letterSpacing = props.hasTag(letterSpacing) ? props.value(letterSpacing).getDoubleValue() : 0; - ctx.paint.paintFlags = props.hasTag(paintFlags) + paint.paintFlags = props.hasTag(paintFlags) ? props.value(paintFlags).getUintValue() : 0; + int bidiFlags = props.hasTag(minikinBidi) ? props.value(minikinBidi).getIntValue() : 0; + + doLayout(buf, start, count, bufSize, bidiFlags, style, paint); +} + +void Layout::doLayout(const uint16_t* buf, size_t start, size_t count, size_t bufSize, + int bidiFlags, const FontStyle &style, const MinikinPaint &paint) { + AutoMutex _l(gMinikinLock); + + LayoutContext ctx; + ctx.style = style; + ctx.paint = paint; + bool isRtl = (bidiFlags & kDirection_Mask) != 0; bool doSingleRun = true; |