diff options
| author | 2023-10-25 03:32:12 +0000 | |
|---|---|---|
| committer | 2023-10-25 03:32:12 +0000 | |
| commit | c672afbd3e0ac434a2669e96763f44b48d7cf05b (patch) | |
| tree | 7422022193e2f9a1de68e9783a1542af2b6c32a7 /graphics/java | |
| parent | b00814f38f5e4bf59f5b05e08a809a54936f0977 (diff) | |
| parent | de05ca718cbaf1594723894651b31b77264d386d (diff) | |
Merge "Change default value of setElegantTextFlag" into main
Diffstat (limited to 'graphics/java')
| -rw-r--r-- | graphics/java/android/graphics/Paint.java | 54 |
1 files changed, 49 insertions, 5 deletions
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java index 4eaa01309ab1..92c4de6490a3 100644 --- a/graphics/java/android/graphics/Paint.java +++ b/graphics/java/android/graphics/Paint.java @@ -27,6 +27,9 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.Px; import android.annotation.Size; +import android.app.compat.CompatChanges; +import android.compat.annotation.ChangeId; +import android.compat.annotation.EnabledSince; import android.compat.annotation.UnsupportedAppUsage; import android.graphics.fonts.FontVariationAxis; import android.os.Build; @@ -614,6 +617,7 @@ public class Paint { mCompatScaling = mInvCompatScaling = 1; setTextLocales(LocaleList.getAdjustedDefault()); mColor = Color.pack(Color.BLACK); + resetElegantTextHeight(); } /** @@ -654,7 +658,7 @@ public class Paint { mBidiFlags = BIDI_DEFAULT_LTR; setTextLocales(LocaleList.getAdjustedDefault()); - setElegantTextHeight(false); + resetElegantTextHeight(); mFontFeatureSettings = null; mFontVariationSettings = null; @@ -1735,12 +1739,30 @@ public class Paint { /** * Get the elegant metrics flag. * + * From API {@link Build.VERSION_CODES#VANILLA_ICE_CREAM}, the default value will be true by + * default if the app has a target SDK of API {@link Build.VERSION_CODES#VANILLA_ICE_CREAM} or + * later. + * * @return true if elegant metrics are enabled for text drawing. */ public boolean isElegantTextHeight() { - return nIsElegantTextHeight(mNativePaint); + int rawValue = nGetElegantTextHeight(mNativePaint); + switch (rawValue) { + case ELEGANT_TEXT_HEIGHT_DISABLED: + return false; + case ELEGANT_TEXT_HEIGHT_ENABLED: + return true; + case ELEGANT_TEXT_HEIGHT_UNSET: + default: + return com.android.text.flags.Flags.deprecateUiFonts(); + } } + // Note: the following three values must be equal to the ones in the JNI file: Paint.cpp + private static final int ELEGANT_TEXT_HEIGHT_UNSET = -1; + private static final int ELEGANT_TEXT_HEIGHT_ENABLED = 0; + private static final int ELEGANT_TEXT_HEIGHT_DISABLED = 1; + /** * Set the paint's elegant height metrics flag. This setting selects font * variants that have not been compacted to fit Latin-based vertical @@ -1749,7 +1771,29 @@ public class Paint { * @param elegant set the paint's elegant metrics flag for drawing text. */ public void setElegantTextHeight(boolean elegant) { - nSetElegantTextHeight(mNativePaint, elegant); + nSetElegantTextHeight(mNativePaint, + elegant ? ELEGANT_TEXT_HEIGHT_ENABLED : ELEGANT_TEXT_HEIGHT_DISABLED); + } + + /** + * A change ID for deprecating UI fonts. + * + * From API {@link Build.VERSION_CODES#VANILLA_ICE_CREAM}, the default value will be true by + * default if the app has a target SDK of API {@link Build.VERSION_CODES#VANILLA_ICE_CREAM} or + * later. + * + * @hide + */ + @ChangeId + @EnabledSince(targetSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM) + public static final long DEPRECATE_UI_FONT = 279646685L; + + private void resetElegantTextHeight() { + if (CompatChanges.isChangeEnabled(DEPRECATE_UI_FONT)) { + nSetElegantTextHeight(mNativePaint, ELEGANT_TEXT_HEIGHT_UNSET); + } else { + nSetElegantTextHeight(mNativePaint, ELEGANT_TEXT_HEIGHT_DISABLED); + } } /** @@ -3660,9 +3704,9 @@ public class Paint { @CriticalNative private static native void nSetStrikeThruText(long paintPtr, boolean strikeThruText); @CriticalNative - private static native boolean nIsElegantTextHeight(long paintPtr); + private static native int nGetElegantTextHeight(long paintPtr); @CriticalNative - private static native void nSetElegantTextHeight(long paintPtr, boolean elegant); + private static native void nSetElegantTextHeight(long paintPtr, int elegant); @CriticalNative private static native float nGetTextSize(long paintPtr); @CriticalNative |