That fuck shit the fascists are using
at master 64 lines 1.8 kB view raw
1package org.tm.archive.components; 2 3import android.graphics.Canvas; 4import android.graphics.Paint; 5import android.graphics.Path; 6import android.graphics.RectF; 7 8import androidx.annotation.ColorInt; 9 10import org.tm.archive.util.ViewUtil; 11 12public class Outliner { 13 14 private final float[] radii = new float[8]; 15 private final Path corners = new Path(); 16 private final RectF bounds = new RectF(); 17 private final Paint outlinePaint = new Paint(); 18 { 19 outlinePaint.setStyle(Paint.Style.STROKE); 20 outlinePaint.setStrokeWidth(ViewUtil.dpToPx(1)); 21 outlinePaint.setAntiAlias(true); 22 } 23 24 public void setColor(@ColorInt int color) { 25 outlinePaint.setColor(color); 26 } 27 28 public void setStrokeWidth(float pixels) { 29 outlinePaint.setStrokeWidth(pixels); 30 } 31 32 public void setAlpha(int alpha) { 33 outlinePaint.setAlpha(alpha); 34 } 35 36 public void draw(Canvas canvas) { 37 draw(canvas, 0, canvas.getWidth(), canvas.getHeight(), 0); 38 } 39 40 public void draw(Canvas canvas, int top, int right, int bottom, int left) { 41 final float halfStrokeWidth = outlinePaint.getStrokeWidth() / 2; 42 43 bounds.left = left + halfStrokeWidth; 44 bounds.top = top + halfStrokeWidth; 45 bounds.right = right - halfStrokeWidth; 46 bounds.bottom = bottom - halfStrokeWidth; 47 48 corners.reset(); 49 corners.addRoundRect(bounds, radii, Path.Direction.CW); 50 51 canvas.drawPath(corners, outlinePaint); 52 } 53 54 public void setRadius(int radius) { 55 setRadii(radius, radius, radius, radius); 56 } 57 58 public void setRadii(int topLeft, int topRight, int bottomRight, int bottomLeft) { 59 radii[0] = radii[1] = topLeft; 60 radii[2] = radii[3] = topRight; 61 radii[4] = radii[5] = bottomRight; 62 radii[6] = radii[7] = bottomLeft; 63 } 64}