//Add WordPress image fields to ImageSpan object
package kr.kdev.dg1s.biowiki.util;
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.text.style.ImageSpan;
import kr.kdev.dg1s.biowiki.R;
import kr.kdev.dg1s.biowiki.models.MediaFile;
import kr.kdev.dg1s.biowiki.ui.posts.EditPostActivity;
public class BWImageSpan extends ImageSpan {
private Context mContext;
private Uri mImageSource = null;
private boolean mNetworkImageLoaded = false;
private boolean mIsInPostEditor;
private MediaFile mMediaFile;
public BWImageSpan(Context context, Bitmap b, Uri src) {
super(context, b);
this.mImageSource = src;
mContext = context;
mMediaFile = new MediaFile();
if (mContext instanceof EditPostActivity) {
EditPostActivity editPostActivity = (EditPostActivity) mContext;
if (editPostActivity.isEditingPostContent())
mIsInPostEditor = true;
}
}
public BWImageSpan(Context context, int resId, Uri src) {
super(context, resId);
this.mImageSource = src;
mContext = context;
mMediaFile = new MediaFile();
if (mContext instanceof EditPostActivity)
mIsInPostEditor = true;
}
public MediaFile getMediaFile() {
return mMediaFile;
}
public void setMediaFile(MediaFile mMediaFile) {
this.mMediaFile = mMediaFile;
}
public Uri getImageSource() {
return mImageSource;
}
public void setImageSource(Uri mImageSource) {
this.mImageSource = mImageSource;
}
public boolean isNetworkImageLoaded() {
return mNetworkImageLoaded;
}
public void setNetworkImageLoaded(boolean networkImageLoaded) {
this.mNetworkImageLoaded = networkImageLoaded;
}
@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 (mIsInPostEditor && !mMediaFile.isVideo()) {
// Add 'edit' icon at bottom right of image
int width = getSize(paint, text, start, end, paint.getFontMetricsInt());
Bitmap editIconBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.ab_icon_edit);
float editIconXPosition = (x + width) - editIconBitmap.getWidth();
float editIconYPosition = bottom - editIconBitmap.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 + editIconBitmap.getWidth(), editIconYPosition + editIconBitmap.getHeight(), bgPaint);
// Add the icon to the canvas
canvas.drawBitmap(editIconBitmap, editIconXPosition, editIconYPosition, paint);
}
}
}