package org.emdev.common.textmarkup.line;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;
import android.graphics.Rect;
import org.emdev.common.textmarkup.image.IImageData;
public class Image extends AbstractLineElement {
public final IImageData data;
private final Paint paint;
private final ColorFilter invertFilter;
public Image(final IImageData data, final boolean inline) {
super(data.getImageRect(inline));
this.data = data;
this.paint = new Paint(Paint.FILTER_BITMAP_FLAG);
// from: https://developer.android.com/reference/android/graphics/ColorMatrix.html
this.invertFilter = new ColorMatrixColorFilter(new float[]
{ -1, 0, 0, 0, 255,
0, -1, 0, 0, 255,
0, 0, -1, 0, 255,
0, 0, 0, 1, 0 });
}
@Override
public float render(final Canvas c, final int y, final int x, final float additionalWidth, final float left,
final float right, final int nightmode) {
if (left < x + width && x < right) {
final Bitmap bmp = data.getBitmap();
paint.setColorFilter(null);
if (nightmode != 0) {
paint.setColorFilter(invertFilter);
}
if (bmp != null) {
c.drawBitmap(bmp, null, new Rect(x, y - height, (int) (x + width), y), paint);
bmp.recycle();
} else {
c.drawRect(new Rect(x, y - height, (int) (x + width), y), paint);
}
}
return width;
}
}