Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save juniorcesarabreu/1ee332c2df541152d5cca1f7ab3c44ba to your computer and use it in GitHub Desktop.
Save juniorcesarabreu/1ee332c2df541152d5cca1f7ab3c44ba to your computer and use it in GitHub Desktop.
public class Text extends DrawinObject {
@Type
private static final String type = Type.TEXT;
private Paint paintText;
private Paint paintInput;
private Paint.FontMetrics fm;
private float startX, startY;
private String textMessage;
private boolean isEditable = false;
Text() {
paintText = new Paint();
// Draw the line.
paintText.setColor(getResources().getColor(R.color.black_overlay));
paintText.setStrokeWidth(5f);
paintText.setStyle(Paint.Style.FILL);
paintText.setAntiAlias(true);
paintText.setTextSize(30); // set font size
Typeface currentTypeFace = paintText.getTypeface();
Typeface bold = Typeface.create(currentTypeFace, Typeface.BOLD);
paintText.setTypeface(bold);
paintText.setTextAlign(Paint.Align.CENTER);
fm = new Paint.FontMetrics();
paintText.getFontMetrics(fm);
textMessage = "";
// Input Paint
paintInput = new Paint();
paintInput.setColor(getResources().getColor(R.color.error));
paintInput.setStyle(Paint.Style.STROKE);
paintInput.setStrokeWidth(5f);
}
@Override
public void updatePhysics() {
}
@Override
public void draw(Canvas canvas) {
if (isEditable) {
canvas.drawRect(
startX - paintText.measureText(textMessage) / 2 - 10,
startY - paintText.getTextSize() / 2 - 5,
startX + paintText.measureText(textMessage) / 2 + 10,
startY + paintText.getTextSize() / 2 + 5, paintInput
);
}
// canvas.drawRect(startX, startY - paintText.getTextSize(), startX + paintText.measureText(textMessage), startY, paintText);
canvas.drawText(textMessage, startX, startY + -(fm.ascent + fm.descent) / 2, paintText);
// canvas.drawText(textMessage, startX, startY, paintText);
// paintText.setTextSize(20);
// paintText.setTextAlign(Paint.Align.CENTER);
// int width = r.width();
//
// int numOfChars = paintText.breakText(text,true,width,null);
// int start = (text.length()-numOfChars)/2;
// canvas.drawText(text,start,start+numOfChars,r.exactCenterX(),r.exactCenterY(),paintText);
}
@Override
public JSONObject toJSON() {
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("type", getType());
jsonObject.put("startX", startX);
jsonObject.put("startY", startY);
jsonObject.put("textMessage", textMessage);
return jsonObject;
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
@Override
public DrawinObject fromJSON(JSONObject json) {
if (json != null) {
try {
startX = (float) json.getDouble("startX");
startY = (float) json.getDouble("startY");
textMessage = json.getString("textMessage");
} catch (JSONException e) {
e.printStackTrace();
}
}
return this;
}
@Override
public String getType() {
return type;
}
public Paint getPaintText() {
return paintText;
}
public void setPaintText(Paint paintText) {
this.paintText = paintText;
}
public float getStartX() {
return startX;
}
public void setStartX(float startX) {
this.startX = startX;
}
public float getStartY() {
return startY;
}
public void setStartY(float startY) {
this.startY = startY;
}
public String getTextMessage() {
return textMessage;
}
public void setTextMessage(String textMessage) {
this.textMessage = textMessage;
}
public boolean isEditable() {
return isEditable;
}
public void setEditable(boolean editable) {
isEditable = editable;
}
public final Parcelable.Creator<Text> CREATOR = new Parcelable.Creator<Text>() {
public Text createFromParcel(Parcel in) {
return new Text(in);
}
public Text[] newArray(int size) {
return new Text[size];
}
};
private Text(Parcel in) {
// startX = in.readFloat();
// startY = in.readFloat();
// textMessage = in.readString();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// dest.writeFloat(startX);
// dest.writeFloat(startY);
// dest.writeString(textMessage);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment