Loading core/java/android/view/View.java +1 −0 Original line number Diff line number Diff line Loading @@ -4806,6 +4806,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Canvas.sCompatibilityRestore = targetSdkVersion < Build.VERSION_CODES.M; Canvas.sCompatibilitySetBitmap = targetSdkVersion < Build.VERSION_CODES.O; Canvas.setCompatibilityVersion(targetSdkVersion); // In M and newer, our widgets can pass a "hint" value in the size // for UNSPECIFIED MeasureSpecs. This lets child views of scrolling containers core/jni/android_graphics_Canvas.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -573,6 +573,11 @@ static void freeTextLayoutCaches(JNIEnv* env, jobject) { minikin::Layout::purgeCaches(); } static void setCompatibilityVersion(JNIEnv* env, jobject, jint apiLevel) { Canvas::setCompatibilityVersion(apiLevel); } }; // namespace CanvasJNI static const JNINativeMethod gMethods[] = { Loading @@ -580,6 +585,7 @@ static const JNINativeMethod gMethods[] = { {"nInitRaster", "(Landroid/graphics/Bitmap;)J", (void*) CanvasJNI::initRaster}, {"nFreeCaches", "()V", (void*) CanvasJNI::freeCaches}, {"nFreeTextLayoutCaches", "()V", (void*) CanvasJNI::freeTextLayoutCaches}, {"nSetCompatibilityVersion", "(I)V", (void*) CanvasJNI::setCompatibilityVersion}, // ------------ @FastNative ---------------- {"nSetBitmap", "(JLandroid/graphics/Bitmap;)V", (void*) CanvasJNI::setBitmap}, Loading graphics/java/android/graphics/Canvas.java +4 −0 Original line number Diff line number Diff line Loading @@ -1219,10 +1219,14 @@ public class Canvas extends BaseCanvas { nFreeTextLayoutCaches(); } /** @hide */ public static void setCompatibilityVersion(int apiLevel) { nSetCompatibilityVersion(apiLevel); } private static native void nFreeCaches(); private static native void nFreeTextLayoutCaches(); private static native long nInitRaster(Bitmap bitmap); private static native long nGetNativeFinalizer(); private static native void nSetCompatibilityVersion(int apiLevel); // ---------------- @FastNative ------------------- Loading libs/hwui/SkiaCanvas.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -742,6 +742,12 @@ void SkiaCanvas::drawGlyphs(ReadGlyphFunc glyphFunc, int count, const SkPaint& p SkPaint paintCopy(paint); paintCopy.setTextAlign(SkPaint::kLeft_Align); SkASSERT(paintCopy.getTextEncoding() == SkPaint::kGlyphID_TextEncoding); // Stroke with a hairline is drawn on HW with a fill style for compatibility with Android O and // older. if (!mCanvasOwned && sApiLevel <= 27 && paintCopy.getStrokeWidth() <= 0 && paintCopy.getStyle() == SkPaint::kStroke_Style) { paintCopy.setStyle(SkPaint::kFill_Style); } SkRect bounds = SkRect::MakeLTRB(boundsLeft + x, boundsTop + y, boundsRight + x, boundsBottom + y); Loading libs/hwui/hwui/Canvas.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -225,4 +225,10 @@ void Canvas::drawTextOnPath(const uint16_t* text, int count, minikin::Bidi bidiF MinikinUtils::forFontRun(layout, &paintCopy, f); } int Canvas::sApiLevel = 1; void Canvas::setCompatibilityVersion(int apiLevel) { sApiLevel = apiLevel; } } // namespace android Loading
core/java/android/view/View.java +1 −0 Original line number Diff line number Diff line Loading @@ -4806,6 +4806,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Canvas.sCompatibilityRestore = targetSdkVersion < Build.VERSION_CODES.M; Canvas.sCompatibilitySetBitmap = targetSdkVersion < Build.VERSION_CODES.O; Canvas.setCompatibilityVersion(targetSdkVersion); // In M and newer, our widgets can pass a "hint" value in the size // for UNSPECIFIED MeasureSpecs. This lets child views of scrolling containers
core/jni/android_graphics_Canvas.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -573,6 +573,11 @@ static void freeTextLayoutCaches(JNIEnv* env, jobject) { minikin::Layout::purgeCaches(); } static void setCompatibilityVersion(JNIEnv* env, jobject, jint apiLevel) { Canvas::setCompatibilityVersion(apiLevel); } }; // namespace CanvasJNI static const JNINativeMethod gMethods[] = { Loading @@ -580,6 +585,7 @@ static const JNINativeMethod gMethods[] = { {"nInitRaster", "(Landroid/graphics/Bitmap;)J", (void*) CanvasJNI::initRaster}, {"nFreeCaches", "()V", (void*) CanvasJNI::freeCaches}, {"nFreeTextLayoutCaches", "()V", (void*) CanvasJNI::freeTextLayoutCaches}, {"nSetCompatibilityVersion", "(I)V", (void*) CanvasJNI::setCompatibilityVersion}, // ------------ @FastNative ---------------- {"nSetBitmap", "(JLandroid/graphics/Bitmap;)V", (void*) CanvasJNI::setBitmap}, Loading
graphics/java/android/graphics/Canvas.java +4 −0 Original line number Diff line number Diff line Loading @@ -1219,10 +1219,14 @@ public class Canvas extends BaseCanvas { nFreeTextLayoutCaches(); } /** @hide */ public static void setCompatibilityVersion(int apiLevel) { nSetCompatibilityVersion(apiLevel); } private static native void nFreeCaches(); private static native void nFreeTextLayoutCaches(); private static native long nInitRaster(Bitmap bitmap); private static native long nGetNativeFinalizer(); private static native void nSetCompatibilityVersion(int apiLevel); // ---------------- @FastNative ------------------- Loading
libs/hwui/SkiaCanvas.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -742,6 +742,12 @@ void SkiaCanvas::drawGlyphs(ReadGlyphFunc glyphFunc, int count, const SkPaint& p SkPaint paintCopy(paint); paintCopy.setTextAlign(SkPaint::kLeft_Align); SkASSERT(paintCopy.getTextEncoding() == SkPaint::kGlyphID_TextEncoding); // Stroke with a hairline is drawn on HW with a fill style for compatibility with Android O and // older. if (!mCanvasOwned && sApiLevel <= 27 && paintCopy.getStrokeWidth() <= 0 && paintCopy.getStyle() == SkPaint::kStroke_Style) { paintCopy.setStyle(SkPaint::kFill_Style); } SkRect bounds = SkRect::MakeLTRB(boundsLeft + x, boundsTop + y, boundsRight + x, boundsBottom + y); Loading
libs/hwui/hwui/Canvas.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -225,4 +225,10 @@ void Canvas::drawTextOnPath(const uint16_t* text, int count, minikin::Bidi bidiF MinikinUtils::forFontRun(layout, &paintCopy, f); } int Canvas::sApiLevel = 1; void Canvas::setCompatibilityVersion(int apiLevel) { sApiLevel = apiLevel; } } // namespace android