summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/minikin/Layout.h4
-rw-r--r--libs/minikin/Layout.cpp28
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;