Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1a625911 authored by Seigo Nonaka's avatar Seigo Nonaka Committed by Android (Google) Code Review
Browse files

Merge "Add wordSpacing parameter to Paint"

parents af18c40b 219e2c79
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -915,6 +915,16 @@ namespace PaintGlue {
        paint->setLetterSpacing(letterSpacing);
    }

    static jfloat getWordSpacing(jlong paintHandle) {
        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
        return paint->getWordSpacing();
    }

    static void setWordSpacing(jlong paintHandle, jfloat wordSpacing) {
        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
        paint->setWordSpacing(wordSpacing);
    }

    static jint getHyphenEdit(jlong paintHandle, jint hyphen) {
        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
        return paint->getHyphenEdit();
@@ -1043,6 +1053,8 @@ static const JNINativeMethod methods[] = {
    {"nSetTextSkewX","(JF)V", (void*) PaintGlue::setTextSkewX},
    {"nGetLetterSpacing","(J)F", (void*) PaintGlue::getLetterSpacing},
    {"nSetLetterSpacing","(JF)V", (void*) PaintGlue::setLetterSpacing},
    {"nGetWordSpacing","(J)F", (void*) PaintGlue::getWordSpacing},
    {"nSetWordSpacing","(JF)V", (void*) PaintGlue::setWordSpacing},
    {"nGetHyphenEdit", "(J)I", (void*) PaintGlue::getHyphenEdit},
    {"nSetHyphenEdit", "(JI)V", (void*) PaintGlue::setHyphenEdit},
    {"nAscent","(JJ)F", (void*) PaintGlue::ascent},
+26 −0
Original line number Diff line number Diff line
@@ -1441,6 +1441,28 @@ public class Paint {
        nSetLetterSpacing(mNativePaint, letterSpacing);
    }

    /**
     * Return the paint's word-spacing for text. The default value is 0.
     *
     * @return the paint's word-spacing for drawing text.
     * @hide
     */
    public float getWordSpacing() {
        return nGetWordSpacing(mNativePaint);
    }

    /**
     * Set the paint's word-spacing for text. The default value is 0.
     * The value is in pixels (note the units are not the same as for
     * letter-spacing).
     *
     * @param wordSpacing set the paint's word-spacing for drawing text.
     * @hide
     */
    public void setWordSpacing(float wordSpacing) {
        nSetWordSpacing(mNativePaint, wordSpacing);
    }

    /**
     * Returns the font feature settings. The format is the same as the CSS
     * font-feature-settings attribute:
@@ -2711,6 +2733,10 @@ public class Paint {
    @CriticalNative
    private static native void nSetLetterSpacing(long paintPtr, float letterSpacing);
    @CriticalNative
    private static native float nGetWordSpacing(long paintPtr);
    @CriticalNative
    private static native void nSetWordSpacing(long paintPtr, float wordSpacing);
    @CriticalNative
    private static native int nGetHyphenEdit(long paintPtr);
    @CriticalNative
    private static native void nSetHyphenEdit(long paintPtr, int hyphen);
+9 −0
Original line number Diff line number Diff line
@@ -218,4 +218,13 @@ public class PaintTest extends AndroidTestCase {
            assertEquals(width, p.measureText(bidiText), 1.0f);
        }
    }

    public void testSetGetWordSpacing() {
        Paint p = new Paint();
        assertEquals(0.0f, p.getWordSpacing());  // The default value should be 0.
        p.setWordSpacing(1.0f);
        assertEquals(1.0f, p.getWordSpacing());
        p.setWordSpacing(-2.0f);
        assertEquals(-2.0f, p.getWordSpacing());
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ minikin::FontStyle MinikinUtils::prepareMinikinPaint(minikin::MinikinPaint* mini
    minikinPaint->scaleX = paint->getTextScaleX();
    minikinPaint->skewX = paint->getTextSkewX();
    minikinPaint->letterSpacing = paint->getLetterSpacing();
    minikinPaint->wordSpacing = paint->getWordSpacing();
    minikinPaint->paintFlags = MinikinFontSkia::packPaintFlags(paint);
    minikinPaint->fontFeatureSettings = paint->getFontFeatureSettings();
    minikinPaint->hyphenEdit = minikin::HyphenEdit(paint->getHyphenEdit());
+9 −0
Original line number Diff line number Diff line
@@ -48,6 +48,14 @@ public:
        return mLetterSpacing;
    }

    void setWordSpacing(float wordSpacing) {
        mWordSpacing = wordSpacing;
    }

    float getWordSpacing() const {
        return mWordSpacing;
    }

    void setFontFeatureSettings(const std::string& fontFeatureSettings) {
        mFontFeatureSettings = fontFeatureSettings;
    }
@@ -82,6 +90,7 @@ public:

private:
    float mLetterSpacing = 0;
    float mWordSpacing = 0;
    std::string mFontFeatureSettings;
    uint32_t mMinikinLangListId;
    minikin::FontVariant mFontVariant;
Loading