package org.wordpress.android.editor.legacy; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; import org.wordpress.android.editor.R; import org.wordpress.android.util.helpers.WPImageSpan; public class WPEditImageSpan extends WPImageSpan { private Bitmap mEditIconBitmap; protected WPEditImageSpan() { super(); } public WPEditImageSpan(Context context, Bitmap b, Uri src) { super(context, b, src); init(context); } public WPEditImageSpan(Context context, int resId, Uri src) { super(context, resId, src); init(context); } private void init(Context context) { if (context != null) { mEditIconBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.ab_icon_edit); } } @Override public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) { super.draw(canvas, text, start, end, x, top, y, bottom, paint); if (mEditIconBitmap != null && !mMediaFile.isVideo()) { // Add 'edit' icon at bottom right of image int width = getSize(paint, text, start, end, paint.getFontMetricsInt()); float editIconXPosition = (x + width) - mEditIconBitmap.getWidth(); float editIconYPosition = bottom - mEditIconBitmap.getHeight(); // Add a black background with a bit of alpha Paint bgPaint = new Paint(); bgPaint.setColor(Color.argb(200, 0, 0, 0)); canvas.drawRect(editIconXPosition, editIconYPosition, editIconXPosition + mEditIconBitmap.getWidth(), editIconYPosition + mEditIconBitmap.getHeight(), bgPaint); // Add the icon to the canvas canvas.drawBitmap(mEditIconBitmap, editIconXPosition, editIconYPosition, paint); } } public static final Parcelable.Creator<WPEditImageSpan> CREATOR = new Parcelable.Creator<WPEditImageSpan>() { public WPEditImageSpan createFromParcel(Parcel in) { WPEditImageSpan editSpan = new WPEditImageSpan(); editSpan.setupFromParcel(in); return editSpan; } public WPEditImageSpan[] newArray(int size) { return new WPEditImageSpan[size]; } }; }