Loading core/jni/android_text_StaticLayout.cpp +6 −11 Original line number Original line Diff line number Diff line Loading @@ -137,18 +137,15 @@ class Run { class StyleRun : public Run { class StyleRun : public Run { public: public: StyleRun(int32_t start, int32_t end, minikin::MinikinPaint&& paint, StyleRun(int32_t start, int32_t end, minikin::MinikinPaint&& paint, bool isRtl) std::shared_ptr<minikin::FontCollection>&& collection, bool isRtl) : Run(start, end), mPaint(std::move(paint)), mIsRtl(isRtl) {} : Run(start, end), mPaint(std::move(paint)), mCollection(std::move(collection)), mIsRtl(isRtl) {} void addTo(minikin::LineBreaker* lineBreaker) override { void addTo(minikin::LineBreaker* lineBreaker) override { lineBreaker->addStyleRun(&mPaint, mCollection, mStart, mEnd, mIsRtl); lineBreaker->addStyleRun(&mPaint, mStart, mEnd, mIsRtl); } } private: private: minikin::MinikinPaint mPaint; minikin::MinikinPaint mPaint; std::shared_ptr<minikin::FontCollection> mCollection; const bool mIsRtl; const bool mIsRtl; }; }; Loading Loading @@ -176,10 +173,8 @@ class StaticLayoutNative { mIndents(std::move(indents)), mLeftPaddings(std::move(leftPaddings)), mIndents(std::move(indents)), mLeftPaddings(std::move(leftPaddings)), mRightPaddings(std::move(rightPaddings)) {} mRightPaddings(std::move(rightPaddings)) {} void addStyleRun(int32_t start, int32_t end, minikin::MinikinPaint&& paint, void addStyleRun(int32_t start, int32_t end, minikin::MinikinPaint&& paint, bool isRtl) { std::shared_ptr<minikin::FontCollection> collection, bool isRtl) { mRuns.emplace_back(std::make_unique<StyleRun>(start, end, std::move(paint), isRtl)); mRuns.emplace_back(std::make_unique<StyleRun>( start, end, std::move(paint), std::move(collection), isRtl)); } } void addReplacementRun(int32_t start, int32_t end, float width, uint32_t localeListId) { void addReplacementRun(int32_t start, int32_t end, float width, uint32_t localeListId) { Loading Loading @@ -334,7 +329,7 @@ static void nAddStyleRun(jlong nativePtr, jlong nativePaint, jint start, jint en Paint* paint = reinterpret_cast<Paint*>(nativePaint); Paint* paint = reinterpret_cast<Paint*>(nativePaint); const Typeface* typeface = Typeface::resolveDefault(paint->getAndroidTypeface()); const Typeface* typeface = Typeface::resolveDefault(paint->getAndroidTypeface()); minikin::MinikinPaint minikinPaint = MinikinUtils::prepareMinikinPaint(paint, typeface); minikin::MinikinPaint minikinPaint = MinikinUtils::prepareMinikinPaint(paint, typeface); builder->addStyleRun(start, end, std::move(minikinPaint), typeface->fFontCollection, isRtl); builder->addStyleRun(start, end, std::move(minikinPaint), isRtl); } } // CriticalNative // CriticalNative Loading libs/hwui/hwui/MinikinUtils.cpp +21 −24 Original line number Original line Diff line number Diff line Loading @@ -30,45 +30,42 @@ minikin::MinikinPaint MinikinUtils::prepareMinikinPaint(const Paint* paint, const Typeface* typeface) { const Typeface* typeface) { const Typeface* resolvedFace = Typeface::resolveDefault(typeface); const Typeface* resolvedFace = Typeface::resolveDefault(typeface); minikin::FontStyle resolved = resolvedFace->fStyle; minikin::FontStyle resolved = resolvedFace->fStyle; const minikin::FontVariant minikinVariant = const minikin::FontVariant minikinVariant = (paint->getFontVariant() == minikin::FontVariant::ELEGANT) (paint->getFontVariant() == minikin::FontVariant::ELEGANT) ? minikin::FontVariant::ELEGANT ? minikin::FontVariant::ELEGANT : minikin::FontVariant::COMPACT; : minikin::FontVariant::COMPACT; float textSize = paint->getTextSize(); minikin::MinikinPaint minikinPaint; if (!paint->isLinearText()) { /* Prepare minikin Paint */ // If linear text is not specified, truncate the value. minikinPaint.size = textSize = trunc(textSize); paint->isLinearText() ? paint->getTextSize() : static_cast<int>(paint->getTextSize()); } minikinPaint.scaleX = paint->getTextScaleX(); return minikin::MinikinPaint( minikinPaint.skewX = paint->getTextSkewX(); textSize, minikinPaint.letterSpacing = paint->getLetterSpacing(); paint->getTextScaleX(), minikinPaint.wordSpacing = paint->getWordSpacing(); paint->getTextSkewX(), minikinPaint.paintFlags = MinikinFontSkia::packPaintFlags(paint); paint->getLetterSpacing(), minikinPaint.localeListId = paint->getMinikinLocaleListId(); paint->getWordSpacing(), minikinPaint.fontStyle = minikin::FontStyle(minikinVariant, resolved.weight, resolved.slant); MinikinFontSkia::packPaintFlags(paint), minikinPaint.fontFeatureSettings = paint->getFontFeatureSettings(); paint->getMinikinLocaleListId(), minikinPaint.hyphenEdit = minikin::HyphenEdit(paint->getHyphenEdit()); minikin::FontStyle(minikinVariant, resolved.weight, resolved.slant), return minikinPaint; minikin::HyphenEdit(paint->getHyphenEdit()), paint->getFontFeatureSettings(), resolvedFace->fFontCollection); } } minikin::Layout MinikinUtils::doLayout(const Paint* paint, minikin::Bidi bidiFlags, minikin::Layout MinikinUtils::doLayout(const Paint* paint, minikin::Bidi bidiFlags, const Typeface* typeface, const uint16_t* buf, size_t start, const Typeface* typeface, const uint16_t* buf, size_t start, size_t count, size_t bufSize) { size_t count, size_t bufSize) { minikin::MinikinPaint minikinPaint = prepareMinikinPaint(paint, typeface); minikin::Layout layout; minikin::Layout layout; layout.doLayout(buf, start, count, bufSize, bidiFlags, minikinPaint, layout.doLayout(buf, start, count, bufSize, bidiFlags, prepareMinikinPaint(paint, typeface)); Typeface::resolveDefault(typeface)->fFontCollection); return layout; return layout; } } float MinikinUtils::measureText(const Paint* paint, minikin::Bidi bidiFlags, float MinikinUtils::measureText(const Paint* paint, minikin::Bidi bidiFlags, const Typeface* typeface, const uint16_t* buf, size_t start, const Typeface* typeface, const uint16_t* buf, size_t start, size_t count, size_t bufSize, float* advances) { size_t count, size_t bufSize, float* advances) { minikin::MinikinPaint minikinPaint = prepareMinikinPaint(paint, typeface); return minikin::Layout::measureText( const Typeface* resolvedTypeface = Typeface::resolveDefault(typeface); buf, start, count, bufSize, bidiFlags, prepareMinikinPaint(paint, typeface), advances, return minikin::Layout::measureText(buf, start, count, bufSize, bidiFlags, minikinPaint, resolvedTypeface->fFontCollection, advances, nullptr /* extent */, nullptr /* overhangs */); nullptr /* extent */, nullptr /* overhangs */); } } Loading Loading
core/jni/android_text_StaticLayout.cpp +6 −11 Original line number Original line Diff line number Diff line Loading @@ -137,18 +137,15 @@ class Run { class StyleRun : public Run { class StyleRun : public Run { public: public: StyleRun(int32_t start, int32_t end, minikin::MinikinPaint&& paint, StyleRun(int32_t start, int32_t end, minikin::MinikinPaint&& paint, bool isRtl) std::shared_ptr<minikin::FontCollection>&& collection, bool isRtl) : Run(start, end), mPaint(std::move(paint)), mIsRtl(isRtl) {} : Run(start, end), mPaint(std::move(paint)), mCollection(std::move(collection)), mIsRtl(isRtl) {} void addTo(minikin::LineBreaker* lineBreaker) override { void addTo(minikin::LineBreaker* lineBreaker) override { lineBreaker->addStyleRun(&mPaint, mCollection, mStart, mEnd, mIsRtl); lineBreaker->addStyleRun(&mPaint, mStart, mEnd, mIsRtl); } } private: private: minikin::MinikinPaint mPaint; minikin::MinikinPaint mPaint; std::shared_ptr<minikin::FontCollection> mCollection; const bool mIsRtl; const bool mIsRtl; }; }; Loading Loading @@ -176,10 +173,8 @@ class StaticLayoutNative { mIndents(std::move(indents)), mLeftPaddings(std::move(leftPaddings)), mIndents(std::move(indents)), mLeftPaddings(std::move(leftPaddings)), mRightPaddings(std::move(rightPaddings)) {} mRightPaddings(std::move(rightPaddings)) {} void addStyleRun(int32_t start, int32_t end, minikin::MinikinPaint&& paint, void addStyleRun(int32_t start, int32_t end, minikin::MinikinPaint&& paint, bool isRtl) { std::shared_ptr<minikin::FontCollection> collection, bool isRtl) { mRuns.emplace_back(std::make_unique<StyleRun>(start, end, std::move(paint), isRtl)); mRuns.emplace_back(std::make_unique<StyleRun>( start, end, std::move(paint), std::move(collection), isRtl)); } } void addReplacementRun(int32_t start, int32_t end, float width, uint32_t localeListId) { void addReplacementRun(int32_t start, int32_t end, float width, uint32_t localeListId) { Loading Loading @@ -334,7 +329,7 @@ static void nAddStyleRun(jlong nativePtr, jlong nativePaint, jint start, jint en Paint* paint = reinterpret_cast<Paint*>(nativePaint); Paint* paint = reinterpret_cast<Paint*>(nativePaint); const Typeface* typeface = Typeface::resolveDefault(paint->getAndroidTypeface()); const Typeface* typeface = Typeface::resolveDefault(paint->getAndroidTypeface()); minikin::MinikinPaint minikinPaint = MinikinUtils::prepareMinikinPaint(paint, typeface); minikin::MinikinPaint minikinPaint = MinikinUtils::prepareMinikinPaint(paint, typeface); builder->addStyleRun(start, end, std::move(minikinPaint), typeface->fFontCollection, isRtl); builder->addStyleRun(start, end, std::move(minikinPaint), isRtl); } } // CriticalNative // CriticalNative Loading
libs/hwui/hwui/MinikinUtils.cpp +21 −24 Original line number Original line Diff line number Diff line Loading @@ -30,45 +30,42 @@ minikin::MinikinPaint MinikinUtils::prepareMinikinPaint(const Paint* paint, const Typeface* typeface) { const Typeface* typeface) { const Typeface* resolvedFace = Typeface::resolveDefault(typeface); const Typeface* resolvedFace = Typeface::resolveDefault(typeface); minikin::FontStyle resolved = resolvedFace->fStyle; minikin::FontStyle resolved = resolvedFace->fStyle; const minikin::FontVariant minikinVariant = const minikin::FontVariant minikinVariant = (paint->getFontVariant() == minikin::FontVariant::ELEGANT) (paint->getFontVariant() == minikin::FontVariant::ELEGANT) ? minikin::FontVariant::ELEGANT ? minikin::FontVariant::ELEGANT : minikin::FontVariant::COMPACT; : minikin::FontVariant::COMPACT; float textSize = paint->getTextSize(); minikin::MinikinPaint minikinPaint; if (!paint->isLinearText()) { /* Prepare minikin Paint */ // If linear text is not specified, truncate the value. minikinPaint.size = textSize = trunc(textSize); paint->isLinearText() ? paint->getTextSize() : static_cast<int>(paint->getTextSize()); } minikinPaint.scaleX = paint->getTextScaleX(); return minikin::MinikinPaint( minikinPaint.skewX = paint->getTextSkewX(); textSize, minikinPaint.letterSpacing = paint->getLetterSpacing(); paint->getTextScaleX(), minikinPaint.wordSpacing = paint->getWordSpacing(); paint->getTextSkewX(), minikinPaint.paintFlags = MinikinFontSkia::packPaintFlags(paint); paint->getLetterSpacing(), minikinPaint.localeListId = paint->getMinikinLocaleListId(); paint->getWordSpacing(), minikinPaint.fontStyle = minikin::FontStyle(minikinVariant, resolved.weight, resolved.slant); MinikinFontSkia::packPaintFlags(paint), minikinPaint.fontFeatureSettings = paint->getFontFeatureSettings(); paint->getMinikinLocaleListId(), minikinPaint.hyphenEdit = minikin::HyphenEdit(paint->getHyphenEdit()); minikin::FontStyle(minikinVariant, resolved.weight, resolved.slant), return minikinPaint; minikin::HyphenEdit(paint->getHyphenEdit()), paint->getFontFeatureSettings(), resolvedFace->fFontCollection); } } minikin::Layout MinikinUtils::doLayout(const Paint* paint, minikin::Bidi bidiFlags, minikin::Layout MinikinUtils::doLayout(const Paint* paint, minikin::Bidi bidiFlags, const Typeface* typeface, const uint16_t* buf, size_t start, const Typeface* typeface, const uint16_t* buf, size_t start, size_t count, size_t bufSize) { size_t count, size_t bufSize) { minikin::MinikinPaint minikinPaint = prepareMinikinPaint(paint, typeface); minikin::Layout layout; minikin::Layout layout; layout.doLayout(buf, start, count, bufSize, bidiFlags, minikinPaint, layout.doLayout(buf, start, count, bufSize, bidiFlags, prepareMinikinPaint(paint, typeface)); Typeface::resolveDefault(typeface)->fFontCollection); return layout; return layout; } } float MinikinUtils::measureText(const Paint* paint, minikin::Bidi bidiFlags, float MinikinUtils::measureText(const Paint* paint, minikin::Bidi bidiFlags, const Typeface* typeface, const uint16_t* buf, size_t start, const Typeface* typeface, const uint16_t* buf, size_t start, size_t count, size_t bufSize, float* advances) { size_t count, size_t bufSize, float* advances) { minikin::MinikinPaint minikinPaint = prepareMinikinPaint(paint, typeface); return minikin::Layout::measureText( const Typeface* resolvedTypeface = Typeface::resolveDefault(typeface); buf, start, count, bufSize, bidiFlags, prepareMinikinPaint(paint, typeface), advances, return minikin::Layout::measureText(buf, start, count, bufSize, bidiFlags, minikinPaint, resolvedTypeface->fFontCollection, advances, nullptr /* extent */, nullptr /* overhangs */); nullptr /* extent */, nullptr /* overhangs */); } } Loading