package com.sailrobotics.posterize;
import android.annotation.SuppressLint;
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.view.SurfaceHolder;
import android.view.SurfaceView;
import java.io.File;
/**
* Created by Anandh on 07-26-15.
*/
public class ImageSurface extends SurfaceView implements SurfaceHolder.Callback {
private Bitmap icon;
private Paint paint;
public ImageSurface(Context context, File image) {
super(context);
getHolder().addCallback(this);
String imageFile = image.getAbsolutePath();
icon = BitmapFactory.decodeFile(imageFile);
paint = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int newWidth = canvas.getHeight() * icon.getWidth() / icon.getHeight();
icon = Bitmap.createScaledBitmap(icon, newWidth, canvas.getHeight(), false);
canvas.drawColor(Color.BLACK);
int cx = (canvas.getWidth() - icon.getWidth()) / 2;
int cy = (canvas.getHeight() - icon.getHeight()) / 2;
canvas.drawBitmap(icon, cx, cy, paint);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@SuppressLint("WrongCall")
@Override
public void surfaceCreated(SurfaceHolder holder) {
Canvas canvas = null;
try {
canvas = holder.lockCanvas(null);
synchronized (holder) {
onDraw(canvas);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (canvas != null) {
holder.unlockCanvasAndPost(canvas);
}
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
}