diff --git a/src/org/thoughtcrime/securesms/scribbles/widget/CanvasView.java b/src/org/thoughtcrime/securesms/scribbles/widget/CanvasView.java index 79a393a42f..fde325c36c 100644 --- a/src/org/thoughtcrime/securesms/scribbles/widget/CanvasView.java +++ b/src/org/thoughtcrime/securesms/scribbles/widget/CanvasView.java @@ -22,6 +22,7 @@ import android.graphics.PorterDuffXfermode; import android.graphics.RectF; import android.graphics.Typeface; import android.util.AttributeSet; +import android.util.Log; import android.view.MotionEvent; import android.view.View; @@ -34,6 +35,8 @@ import java.util.List; */ public class CanvasView extends View { + private static final String TAG = CanvasView.class.getSimpleName(); + // Enumeration for Mode public enum Mode { DRAW, @@ -52,9 +55,9 @@ public class CanvasView extends View { QUBIC_BEZIER; } - private Context context = null; - private Canvas canvas = null; - private Bitmap bitmap = null; + private int canvasWidth = 1; + private int canvasHeight = 1; + private Bitmap bitmap = null; private List pathLists = new ArrayList(); private List paintLists = new ArrayList(); @@ -80,15 +83,6 @@ public class CanvasView extends View { private float blur = 0F; private Paint.Cap lineCap = Paint.Cap.ROUND; - // for Text - private String text = ""; - private Typeface fontFamily = Typeface.DEFAULT; - private float fontSize = 32F; - private Paint.Align textAlign = Paint.Align.RIGHT; // fixed - private Paint textPaint = new Paint(); - private float textX = 0F; - private float textY = 0F; - // for Drawer private float startX = 0F; private float startY = 0F; @@ -106,7 +100,7 @@ public class CanvasView extends View { */ public CanvasView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - this.setup(context); + this.setup(); } /** @@ -117,7 +111,7 @@ public class CanvasView extends View { */ public CanvasView(Context context, AttributeSet attrs) { super(context, attrs); - this.setup(context); + this.setup(); } /** @@ -127,22 +121,13 @@ public class CanvasView extends View { */ public CanvasView(Context context) { super(context); - this.setup(context); } - /** - * Common initialization. - * - * @param context - */ - private void setup(Context context) { - this.context = context; + private void setup() { this.pathLists.add(new Path()); this.paintLists.add(this.createPaint()); this.historyPointer++; - - this.textPaint.setARGB(0, 255, 255, 255); } /** @@ -160,14 +145,6 @@ public class CanvasView extends View { paint.setStrokeCap(this.lineCap); paint.setStrokeJoin(Paint.Join.MITER); // fixed - // for Text - if (this.mode == Mode.TEXT) { - paint.setTypeface(this.fontFamily); - paint.setTextSize(this.fontSize); - paint.setTextAlign(this.textAlign); - paint.setStrokeWidth(0F); - } - if (this.mode == Mode.ERASER) { // Eraser paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); @@ -238,51 +215,6 @@ public class CanvasView extends View { return this.pathLists.get(this.historyPointer - 1); } - /** - * This method draws text. - * - * @param canvas the instance of Canvas - */ - private void drawText(Canvas canvas) { - if (this.text.length() <= 0) { - return; - } - - if (this.mode == Mode.TEXT) { - this.textX = this.startX; - this.textY = this.startY; - - this.textPaint = this.createPaint(); - } - - float textX = this.textX; - float textY = this.textY; - - Paint paintForMeasureText = new Paint(); - - // Line break automatically - float textLength = paintForMeasureText.measureText(this.text); - float lengthOfChar = textLength / (float)this.text.length(); - float restWidth = this.canvas.getWidth() - textX; // text-align : right - int numChars = (lengthOfChar <= 0) ? 1 : (int) Math.floor((double)(restWidth / lengthOfChar)); // The number of characters at 1 line - int modNumChars = (numChars < 1) ? 1 : numChars; - float y = textY; - - for (int i = 0, len = this.text.length(); i < len; i += modNumChars) { - String substring = ""; - - if ((i + modNumChars) < len) { - substring = this.text.substring(i, (i + modNumChars)); - } else { - substring = this.text.substring(i, len); - } - - y += this.fontSize; - - canvas.drawText(substring, textX, y, this.textPaint); - } - } - /** * This method defines processes on MotionEvent.ACTION_DOWN * @@ -433,17 +365,18 @@ public class CanvasView extends View { canvas.drawPath(path, paint); } + } - this.drawText(canvas); - - this.canvas = canvas; + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + this.canvasWidth = w; + this.canvasHeight = h; } public void render(Canvas canvas) { - if (this.canvas == null) return; - - float scaleX = 1.0F * canvas.getWidth() / this.canvas.getWidth(); - float scaleY = 1.0F * canvas.getHeight() / this.canvas.getHeight(); + float scaleX = 1.0F * canvas.getWidth() / canvasWidth; + float scaleY = 1.0F * canvas.getHeight() / canvasHeight; Matrix matrix = new Matrix(); matrix.setScale(scaleX, scaleY); @@ -591,8 +524,6 @@ public class CanvasView extends View { } } - this.text = ""; - // Clear this.invalidate(); } @@ -615,24 +546,6 @@ public class CanvasView extends View { this.baseColor = color; } - /** - * This method is getter for drawn text. - * - * @return - */ - public String getText() { - return this.text; - } - - /** - * This method is setter for drawn text. - * - * @param text - */ - public void setText(String text) { - this.text = text; - } - /** * This method is getter for stroke or fill. * @@ -775,47 +688,6 @@ public class CanvasView extends View { this.lineCap = cap; } - /** - * This method is getter for font size, - * - * @return - */ - public float getFontSize() { - return this.fontSize; - } - - /** - * This method is setter for font size. - * The 1st argument is greater than or equal to 0.0. - * - * @param size - */ - public void setFontSize(float size) { - if (size >= 0F) { - this.fontSize = size; - } else { - this.fontSize = 32F; - } - } - - /** - * This method is getter for font-family. - * - * @return - */ - public Typeface getFontFamily() { - return this.fontFamily; - } - - /** - * This method is setter for font-family. - * - * @param face - */ - public void setFontFamily(Typeface face) { - this.fontFamily = face; - } - /** * This method gets current canvas as bitmap. *