1
0
mirror of https://github.com/wasabeef/glide-transformations.git synced 2025-06-29 12:52:47 +08:00
This commit is contained in:
wasabeef 2015-11-10 15:03:49 +09:00
parent 5b311f74f6
commit e387df2daa

View File

@ -49,7 +49,8 @@ public class RoundedCornersTransformation implements Transformation<Bitmap> {
this(context, radius, margin, CornerType.ALL); this(context, radius, margin, CornerType.ALL);
} }
public RoundedCornersTransformation(Context context, int radius, int margin, CornerType cornerType) { public RoundedCornersTransformation(Context context, int radius, int margin,
CornerType cornerType) {
mBitmapPool = Glide.get(context).getBitmapPool(); mBitmapPool = Glide.get(context).getBitmapPool();
mRadius = radius; mRadius = radius;
mDiameter = mRadius * 2; mDiameter = mRadius * 2;
@ -134,89 +135,112 @@ public class RoundedCornersTransformation implements Transformation<Bitmap> {
} }
private void drawTopLeftRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawTopLeftRoundRect(Canvas canvas, Paint paint, float right, float bottom) {
canvas.drawRoundRect(new RectF(mMargin, mMargin, mMargin + mDiameter, mMargin + mDiameter), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(mMargin, mMargin, mMargin + mDiameter, mMargin + mDiameter),
mRadius, mRadius, paint);
canvas.drawRect(new RectF(mMargin, mMargin + mRadius, mMargin + mRadius, bottom), paint); canvas.drawRect(new RectF(mMargin, mMargin + mRadius, mMargin + mRadius, bottom), paint);
canvas.drawRect(new RectF(mMargin + mRadius, mMargin, right, bottom), paint); canvas.drawRect(new RectF(mMargin + mRadius, mMargin, right, bottom), paint);
} }
private void drawTopRightRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawTopRightRoundRect(Canvas canvas, Paint paint, float right, float bottom) {
canvas.drawRoundRect(new RectF(right - mDiameter, mMargin, right, mMargin + mDiameter), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(right - mDiameter, mMargin, right, mMargin + mDiameter), mRadius,
mRadius, paint);
canvas.drawRect(new RectF(mMargin, mMargin, right - mRadius, bottom), paint); canvas.drawRect(new RectF(mMargin, mMargin, right - mRadius, bottom), paint);
canvas.drawRect(new RectF(right - mRadius, mMargin + mRadius, right, bottom), paint); canvas.drawRect(new RectF(right - mRadius, mMargin + mRadius, right, bottom), paint);
} }
private void drawBottomLeftRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawBottomLeftRoundRect(Canvas canvas, Paint paint, float right, float bottom) {
canvas.drawRoundRect(new RectF(mMargin, bottom - mDiameter, mMargin + mDiameter, bottom), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(mMargin, bottom - mDiameter, mMargin + mDiameter, bottom),
mRadius, mRadius, paint);
canvas.drawRect(new RectF(mMargin, mMargin, mMargin + mDiameter, bottom - mRadius), paint); canvas.drawRect(new RectF(mMargin, mMargin, mMargin + mDiameter, bottom - mRadius), paint);
canvas.drawRect(new RectF(mMargin + mRadius, mMargin, right, bottom), paint); canvas.drawRect(new RectF(mMargin + mRadius, mMargin, right, bottom), paint);
} }
private void drawBottomRightRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawBottomRightRoundRect(Canvas canvas, Paint paint, float right, float bottom) {
canvas.drawRoundRect(new RectF(right - mDiameter, bottom - mDiameter, right, bottom), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(right - mDiameter, bottom - mDiameter, right, bottom), mRadius,
mRadius, paint);
canvas.drawRect(new RectF(mMargin, mMargin, right - mRadius, bottom), paint); canvas.drawRect(new RectF(mMargin, mMargin, right - mRadius, bottom), paint);
canvas.drawRect(new RectF(right - mRadius, mMargin, right, bottom - mRadius), paint); canvas.drawRect(new RectF(right - mRadius, mMargin, right, bottom - mRadius), paint);
} }
private void drawTopRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawTopRoundRect(Canvas canvas, Paint paint, float right, float bottom) {
canvas.drawRoundRect(new RectF(mMargin, mMargin, right, mMargin + mDiameter), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(mMargin, mMargin, right, mMargin + mDiameter), mRadius, mRadius,
paint);
canvas.drawRect(new RectF(mMargin, mMargin + mRadius, right, bottom), paint); canvas.drawRect(new RectF(mMargin, mMargin + mRadius, right, bottom), paint);
} }
private void drawBottomRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawBottomRoundRect(Canvas canvas, Paint paint, float right, float bottom) {
canvas.drawRoundRect(new RectF(mMargin, bottom - mDiameter, right, bottom), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(mMargin, bottom - mDiameter, right, bottom), mRadius, mRadius,
paint);
canvas.drawRect(new RectF(mMargin, mMargin, right, bottom - mRadius), paint); canvas.drawRect(new RectF(mMargin, mMargin, right, bottom - mRadius), paint);
} }
private void drawLeftRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawLeftRoundRect(Canvas canvas, Paint paint, float right, float bottom) {
canvas.drawRoundRect(new RectF(mMargin, mMargin, mMargin + mDiameter, bottom), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(mMargin, mMargin, mMargin + mDiameter, bottom), mRadius, mRadius,
paint);
canvas.drawRect(new RectF(mMargin + mRadius, mMargin, right, bottom), paint); canvas.drawRect(new RectF(mMargin + mRadius, mMargin, right, bottom), paint);
} }
private void drawRightRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawRightRoundRect(Canvas canvas, Paint paint, float right, float bottom) {
canvas.drawRoundRect(new RectF(right - mDiameter, mMargin, right, bottom), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(right - mDiameter, mMargin, right, bottom), mRadius, mRadius,
paint);
canvas.drawRect(new RectF(mMargin, mMargin, right - mRadius, bottom), paint); canvas.drawRect(new RectF(mMargin, mMargin, right - mRadius, bottom), paint);
} }
private void drawOtherTopLeftRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawOtherTopLeftRoundRect(Canvas canvas, Paint paint, float right, float bottom) {
canvas.drawRoundRect(new RectF(mMargin, bottom - mDiameter, right, bottom), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(mMargin, bottom - mDiameter, right, bottom), mRadius, mRadius,
canvas.drawRoundRect(new RectF(right - mDiameter, mMargin, right, bottom), mRadius, mRadius, paint); paint);
canvas.drawRoundRect(new RectF(right - mDiameter, mMargin, right, bottom), mRadius, mRadius,
paint);
canvas.drawRect(new RectF(mMargin, mMargin, right - mRadius, bottom - mRadius), paint); canvas.drawRect(new RectF(mMargin, mMargin, right - mRadius, bottom - mRadius), paint);
} }
private void drawOtherTopRightRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawOtherTopRightRoundRect(Canvas canvas, Paint paint, float right, float bottom) {
canvas.drawRoundRect(new RectF(mMargin, mMargin, mMargin + mDiameter, bottom), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(mMargin, mMargin, mMargin + mDiameter, bottom), mRadius, mRadius,
canvas.drawRoundRect(new RectF(mMargin, bottom - mDiameter, right, bottom), mRadius, mRadius, paint); paint);
canvas.drawRoundRect(new RectF(mMargin, bottom - mDiameter, right, bottom), mRadius, mRadius,
paint);
canvas.drawRect(new RectF(mMargin + mRadius, mMargin, right, bottom - mRadius), paint); canvas.drawRect(new RectF(mMargin + mRadius, mMargin, right, bottom - mRadius), paint);
} }
private void drawOtherBottomLeftRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawOtherBottomLeftRoundRect(Canvas canvas, Paint paint, float right, float bottom) {
canvas.drawRoundRect(new RectF(mMargin, mMargin, right, mMargin + mDiameter), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(mMargin, mMargin, right, mMargin + mDiameter), mRadius, mRadius,
canvas.drawRoundRect(new RectF(right - mDiameter, mMargin, right, bottom), mRadius, mRadius, paint); paint);
canvas.drawRoundRect(new RectF(right - mDiameter, mMargin, right, bottom), mRadius, mRadius,
paint);
canvas.drawRect(new RectF(mMargin, mMargin + mRadius, right - mRadius, bottom), paint); canvas.drawRect(new RectF(mMargin, mMargin + mRadius, right - mRadius, bottom), paint);
} }
private void drawOtherBottomRightRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawOtherBottomRightRoundRect(Canvas canvas, Paint paint, float right,
canvas.drawRoundRect(new RectF(mMargin, mMargin, right, mMargin + mDiameter), mRadius, mRadius, paint); float bottom) {
canvas.drawRoundRect(new RectF(mMargin, mMargin, mMargin + mDiameter, bottom), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(mMargin, mMargin, right, mMargin + mDiameter), mRadius, mRadius,
paint);
canvas.drawRoundRect(new RectF(mMargin, mMargin, mMargin + mDiameter, bottom), mRadius, mRadius,
paint);
canvas.drawRect(new RectF(mMargin + mRadius, mMargin + mRadius, right, bottom), paint); canvas.drawRect(new RectF(mMargin + mRadius, mMargin + mRadius, right, bottom), paint);
} }
private void drawDiagonalFromTopLeftRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawDiagonalFromTopLeftRoundRect(Canvas canvas, Paint paint, float right,
canvas.drawRoundRect(new RectF(mMargin, mMargin, mMargin + mDiameter, mMargin + mDiameter), mRadius, mRadius, paint); float bottom) {
canvas.drawRoundRect(new RectF(right - mDiameter, bottom - mDiameter, right, bottom), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(mMargin, mMargin, mMargin + mDiameter, mMargin + mDiameter),
mRadius, mRadius, paint);
canvas.drawRoundRect(new RectF(right - mDiameter, bottom - mDiameter, right, bottom), mRadius,
mRadius, paint);
canvas.drawRect(new RectF(mMargin, mMargin + mRadius, right - mDiameter, bottom), paint); canvas.drawRect(new RectF(mMargin, mMargin + mRadius, right - mDiameter, bottom), paint);
canvas.drawRect(new RectF(mMargin + mDiameter, mMargin, right, bottom - mRadius), paint); canvas.drawRect(new RectF(mMargin + mDiameter, mMargin, right, bottom - mRadius), paint);
} }
private void drawDiagonalFromTopRightRoundRect(Canvas canvas, Paint paint, float right, float bottom) { private void drawDiagonalFromTopRightRoundRect(Canvas canvas, Paint paint, float right,
canvas.drawRoundRect(new RectF(right - mDiameter, mMargin, right, mMargin + mDiameter), mRadius, mRadius, paint); float bottom) {
canvas.drawRoundRect(new RectF(mMargin, bottom - mDiameter, mMargin + mDiameter, bottom), mRadius, mRadius, paint); canvas.drawRoundRect(new RectF(right - mDiameter, mMargin, right, mMargin + mDiameter), mRadius,
mRadius, paint);
canvas.drawRoundRect(new RectF(mMargin, bottom - mDiameter, mMargin + mDiameter, bottom),
mRadius, mRadius, paint);
canvas.drawRect(new RectF(mMargin, mMargin, right - mRadius, bottom - mRadius), paint); canvas.drawRect(new RectF(mMargin, mMargin, right - mRadius, bottom - mRadius), paint);
canvas.drawRect(new RectF(mMargin + mRadius, mMargin + mRadius, right, bottom), paint); canvas.drawRect(new RectF(mMargin + mRadius, mMargin + mRadius, right, bottom), paint);
} }
@Override @Override public String getId() {
public String getId() { return "RoundedTransformation(radius=" + mRadius + ", margin=" + mMargin + ", diameter="
return "RoundedTransformation(radius=" + mRadius + ", margin=" + mMargin + ")"; + mDiameter + ", cornerType=" + mCornerType.name() + ")";
} }
} }