blob: ab82411fd1f729fad4111bb7b525691f6b533fc9 [file] [log] [blame]
package com.airbnb.lottie.animation;
import static com.airbnb.lottie.utils.MiscUtils.clamp;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.os.Build;
import android.os.LocaleList;
import androidx.annotation.NonNull;
/**
* Custom paint that doesn't set text locale.
* It takes ~1ms on initialization and isn't needed so removing it speeds up
* setComposition.
*/
public class LPaint extends Paint {
public LPaint() {
super();
}
public LPaint(int flags) {
super(flags);
}
public LPaint(PorterDuff.Mode porterDuffMode) {
super();
setXfermode(new PorterDuffXfermode(porterDuffMode));
}
public LPaint(int flags, PorterDuff.Mode porterDuffMode) {
super(flags);
setXfermode(new PorterDuffXfermode(porterDuffMode));
}
@Override
public void setTextLocales(@NonNull LocaleList locales) {
// Do nothing.
}
/**
* Overrides {@link android.graphics.Paint#setAlpha(int)} to avoid
* unnecessary {@link android.graphics.ColorSpace.Named ColorSpace$Named[] }
* allocations when calling this method in Android 29 or lower.
*
* @param alpha set the alpha component [0..255] of the paint's color.
*/
@Override
public void setAlpha(int alpha) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
int color = getColor();
setColor((clamp(alpha, 0, 255) << 24) | (color & 0xFFFFFF));
} else {
super.setAlpha(clamp(alpha, 0, 255));
}
}
}