Skip to content

Commit

Permalink
setCanvasBitmapDensity (#147)
Browse files Browse the repository at this point in the history
  • Loading branch information
vecharm authored and wasabeef committed Aug 15, 2019
1 parent 783d69c commit e16eda6
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,12 @@ public final Resource<Bitmap> transform(@NonNull Context context, @NonNull Resou
return result;
}

protected abstract Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool,
@NonNull Bitmap toTransform, int outWidth, int outHeight);
void setCanvasBitmapDensity(@NonNull Bitmap toTransform, @NonNull Bitmap canvasBitmap) {
canvasBitmap.setDensity(toTransform.getDensity());
}

protected abstract Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool,
@NonNull Bitmap toTransform, int outWidth, int outHeight);

@Override
public abstract void updateDiskCacheKey(@NonNull MessageDigest messageDigest);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ protected Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool,

Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);

setCanvasBitmapDensity(toTransform,bitmap);

Canvas canvas = new Canvas(bitmap);
canvas.scale(1 / (float) sampling, 1 / (float) sampling);
Paint paint = new Paint();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,13 @@ protected Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool,
toTransform.getConfig() != null ? toTransform.getConfig() : Bitmap.Config.ARGB_8888;
Bitmap bitmap = pool.get(width, height, config);

Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP));
canvas.drawBitmap(toTransform, 0, 0, paint);
setCanvasBitmapDensity(toTransform, bitmap);

Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP));
canvas.drawBitmap(toTransform, 0, 0, paint);

return bitmap;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ protected Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool,
float top = getTop(scaledHeight);
RectF targetRect = new RectF(left, top, left + scaledWidth, top + scaledHeight);

setCanvasBitmapDensity(toTransform,bitmap);

Canvas canvas = new Canvas(bitmap);
canvas.drawBitmap(toTransform, null, targetRect, null);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ protected Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool,
toTransform.getConfig() != null ? toTransform.getConfig() : Bitmap.Config.ARGB_8888;
Bitmap bitmap = pool.get(width, height, config);

setCanvasBitmapDensity(toTransform,bitmap);

Canvas canvas = new Canvas(bitmap);
ColorMatrix saturation = new ColorMatrix();
saturation.setSaturation(0f);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ protected Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool,

Drawable mask = Utils.getMaskDrawable(context.getApplicationContext(), maskId);

setCanvasBitmapDensity(toTransform,bitmap);

Canvas canvas = new Canvas(bitmap);
mask.setBounds(0, 0, width, height);
mask.draw(canvas);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,15 @@ protected Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool,
Bitmap bitmap = pool.get(width, height, Bitmap.Config.ARGB_8888);
bitmap.setHasAlpha(true);

Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(new BitmapShader(toTransform, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));
drawRoundRect(canvas, paint, width, height);
return bitmap;
}
setCanvasBitmapDensity(toTransform, bitmap);

Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(new BitmapShader(toTransform, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));
drawRoundRect(canvas, paint, width, height);
return bitmap;
}

private void drawRoundRect(Canvas canvas, Paint paint, float width, float height) {
float right = width - margin;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,13 @@ protected Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool,

Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bitmap);
canvas.scale(1 / (float) sampling, 1 / (float) sampling);
Paint paint = new Paint();
paint.setFlags(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(toTransform, 0, 0, paint);
setCanvasBitmapDensity(toTransform, bitmap);

Canvas canvas = new Canvas(bitmap);
canvas.scale(1 / (float) sampling, 1 / (float) sampling);
Paint paint = new Paint();
paint.setFlags(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(toTransform, 0, 0, paint);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
try {
Expand Down

0 comments on commit e16eda6

Please sign in to comment.