From 76093b407e7831a99feed6ef85fb8f0859930a59 Mon Sep 17 00:00:00 2001 From: instant992 Date: Tue, 9 Jun 2026 13:17:52 +0400 Subject: [PATCH] Sponsor heart: render sponsor.png with a moving shimmer highlight - Bundle the GhostCloud sponsor.png as drawable-nodpi/foxsponsor_heart.png - Draw the artwork and sweep a glossy highlight band across it, masked to the heart shape via the bitmap alpha (DST_IN), so it shimmers again --- .../helpers/ShimmerHeartDrawable.java | 162 ++++++++---------- .../res/drawable-nodpi/foxsponsor_heart.png | Bin 0 -> 23811 bytes 2 files changed, 72 insertions(+), 90 deletions(-) create mode 100644 TMessagesProj/src/main/res/drawable-nodpi/foxsponsor_heart.png diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/ShimmerHeartDrawable.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/ShimmerHeartDrawable.java index b70cbc69..16723676 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/ShimmerHeartDrawable.java +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/helpers/ShimmerHeartDrawable.java @@ -1,24 +1,31 @@ package tw.nekomimi.nekogram.helpers; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.ColorFilter; +import android.graphics.LinearGradient; +import android.graphics.Matrix; import android.graphics.Paint; -import android.graphics.Path; import android.graphics.PixelFormat; -import android.graphics.RadialGradient; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; import android.graphics.Rect; +import android.graphics.RectF; import android.graphics.Shader; import android.graphics.drawable.Drawable; import androidx.annotation.NonNull; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ApplicationLoader; +import org.telegram.messenger.R; /** - * A soft, airbrushed 3D heart badge matching the GhostCloud "sponsor.png": - * violet in the upper-left, blue through the centre, warm orange/coral on the - * right and bottom, all blended smoothly with a gentle glossy highlight. The - * colour blobs drift slightly so the badge subtly shimmers. + * Sponsor badge that renders the GhostCloud "sponsor.png" heart and overlays a + * moving glossy highlight ("shimmer") that is clipped to the artwork's shape + * via its alpha channel, so it looks like light sweeping across the heart. * * It self-invalidates each frame, so when attached to a view via * {@code setRightDrawable(...)} / {@code setRightDrawable2(...)} the host keeps @@ -27,15 +34,18 @@ import org.telegram.messenger.AndroidUtilities; */ public class ShimmerHeartDrawable extends Drawable { - private final Paint basePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - private final Paint blobPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - private final Paint highlightPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - private final Path heart = new Path(); + private static Bitmap sharedBitmap; - private int lastWidth = -1; - private int lastHeight = -1; + private final Paint bitmapPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG); + private final Paint shinePaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private final Paint maskPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG); + private final Matrix shineMatrix = new Matrix(); - private static final long CYCLE_MS = 5200L; + private final Bitmap bitmap; + private LinearGradient shineGradient; + private int shineWidth; + + private static final long CYCLE_MS = 2600L; private final int size; public ShimmerHeartDrawable() { @@ -44,98 +54,70 @@ public class ShimmerHeartDrawable extends Drawable { public ShimmerHeartDrawable(int sizePx) { this.size = sizePx; - basePaint.setStyle(Paint.Style.FILL); - blobPaint.setStyle(Paint.Style.FILL); - highlightPaint.setStyle(Paint.Style.FILL); + bitmap = loadBitmap(); + // The moving highlight is drawn only where the artwork is opaque. + maskPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); } - private void buildHeart(Rect b) { - heart.reset(); - float w = b.width(); - float h = b.height(); - float l = b.left; - float t = b.top; - float cx = l + w / 2f; - heart.moveTo(cx, t + h * 0.30f); - heart.cubicTo(l + w * 0.40f, t + h * 0.05f, l + w * 0.02f, t + h * 0.18f, l + w * 0.10f, t + h * 0.45f); - heart.cubicTo(l + w * 0.17f, t + h * 0.66f, l + w * 0.40f, t + h * 0.80f, cx, t + h * 0.97f); - heart.cubicTo(l + w * 0.60f, t + h * 0.80f, l + w * 0.83f, t + h * 0.66f, l + w * 0.90f, t + h * 0.45f); - heart.cubicTo(l + w * 0.98f, t + h * 0.18f, l + w * 0.60f, t + h * 0.05f, cx, t + h * 0.30f); - heart.close(); + private static Bitmap loadBitmap() { + if (sharedBitmap == null || sharedBitmap.isRecycled()) { + try { + Context ctx = ApplicationLoader.applicationContext; + BitmapFactory.Options opts = new BitmapFactory.Options(); + opts.inScaled = false; + sharedBitmap = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.foxsponsor_heart, opts); + } catch (Throwable ignore) { + } + } + return sharedBitmap; } - /** A soft circular blob of one colour fading to transparent. */ - private void drawBlob(Canvas canvas, float cx, float cy, float r, int color) { - blobPaint.setShader(new RadialGradient( - cx, cy, Math.max(1f, r), - new int[]{color, color & 0x00FFFFFF}, - new float[]{0f, 1f}, - Shader.TileMode.CLAMP)); - canvas.drawRect(getBounds(), blobPaint); - } - - @Override - protected void onBoundsChange(@NonNull Rect bounds) { - super.onBoundsChange(bounds); - buildHeart(bounds); - lastWidth = bounds.width(); - lastHeight = bounds.height(); + private void buildShine(int w) { + // A bright diagonal band, narrow relative to the badge width. + shineWidth = Math.max(1, (int) (w * 0.55f)); + shineGradient = new LinearGradient( + 0, 0, shineWidth, 0, + new int[]{0x00FFFFFF, 0x00FFFFFF, 0x99FFFFFF, 0x00FFFFFF, 0x00FFFFFF}, + new float[]{0f, 0.35f, 0.5f, 0.65f, 1f}, + Shader.TileMode.CLAMP); + shinePaint.setShader(shineGradient); } @Override public void draw(@NonNull Canvas canvas) { Rect b = getBounds(); - if (b.width() == 0 || b.height() == 0) { + if (b.width() == 0 || b.height() == 0 || bitmap == null) { return; } - if (lastWidth != b.width() || lastHeight != b.height()) { - buildHeart(b); - lastWidth = b.width(); - lastHeight = b.height(); + if (shineGradient == null || shineWidth != (int) (b.width() * 0.55f)) { + buildShine(b.width()); } - float w = b.width(); - float h = b.height(); - float l = b.left; - float t = b.top; + RectF dst = new RectF(b); - // Subtle drift so the colours softly shimmer. + // Layer so the shimmer can be masked against the artwork alpha. + int sc = canvas.saveLayer(dst, null); + + // 1) the heart artwork + canvas.drawBitmap(bitmap, null, dst, bitmapPaint); + + // 2) moving highlight band, swept diagonally float phase = (System.currentTimeMillis() % CYCLE_MS) / (float) CYCLE_MS; - double a = phase * 2 * Math.PI; - float dx = (float) Math.cos(a) * w * 0.05f; - float dy = (float) Math.sin(a) * h * 0.05f; + float travel = b.width() + shineWidth; + float x = b.left - shineWidth + phase * travel; + shineMatrix.reset(); + // slight diagonal slant + shineMatrix.postRotate(20f, 0, 0); + shineMatrix.postTranslate(x, b.top); + shineGradient.setLocalMatrix(shineMatrix); - int save = canvas.save(); - canvas.clipPath(heart); + int ssc = canvas.saveLayer(dst, null); + canvas.drawRect(dst, shinePaint); + // keep the highlight only where the artwork is opaque + canvas.drawBitmap(bitmap, null, dst, maskPaint); + canvas.restoreToCount(ssc); - // Light lavender base so blends stay airy. - basePaint.setShader(null); - basePaint.setColor(0xFFB9A8F0); - canvas.drawRect(b, basePaint); - - // Soft overlapping colour blobs (airbrushed look). - // Violet — upper-left. - drawBlob(canvas, l + w * (0.30f) + dx, t + h * (0.28f) + dy, w * 0.62f, 0xFF7A2FE0); - // Blue — centre-left. - drawBlob(canvas, l + w * (0.40f) - dx, t + h * (0.55f) + dy, w * 0.55f, 0xFF4F6BFF); - // Cyan/blue glow — centre. - drawBlob(canvas, l + w * (0.52f) + dy, t + h * (0.45f) - dx, w * 0.42f, 0xCC59B7FF); - // Warm orange — right. - drawBlob(canvas, l + w * (0.82f) - dx, t + h * (0.40f) - dy, w * 0.60f, 0xFFFF9A3D); - // Coral/pink — bottom-right. - drawBlob(canvas, l + w * (0.70f) + dx, t + h * (0.80f) + dy, w * 0.55f, 0xFFFF7E5A); - // Deep violet — bottom-left corner for contrast. - drawBlob(canvas, l + w * (0.22f) + dx, t + h * (0.82f) - dy, w * 0.45f, 0xCC6A2BC8); - - // Gentle glossy highlight, upper-centre. - highlightPaint.setShader(new RadialGradient( - l + w * 0.45f + dx, t + h * 0.30f + dy, w * 0.40f, - new int[]{0x80FFFFFF, 0x00FFFFFF}, - new float[]{0f, 1f}, - Shader.TileMode.CLAMP)); - canvas.drawRect(b, highlightPaint); - - canvas.restoreToCount(save); + canvas.restoreToCount(sc); invalidateSelf(); } @@ -152,12 +134,12 @@ public class ShimmerHeartDrawable extends Drawable { @Override public void setAlpha(int alpha) { - basePaint.setAlpha(alpha); + bitmapPaint.setAlpha(alpha); } @Override public void setColorFilter(ColorFilter colorFilter) { - basePaint.setColorFilter(colorFilter); + bitmapPaint.setColorFilter(colorFilter); } @Override diff --git a/TMessagesProj/src/main/res/drawable-nodpi/foxsponsor_heart.png b/TMessagesProj/src/main/res/drawable-nodpi/foxsponsor_heart.png new file mode 100644 index 0000000000000000000000000000000000000000..4ac70c76e0844ec642b5a4514340d49212c83468 GIT binary patch literal 23811 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 literal 0 HcmV?d00001