Created
July 30, 2019 18:27
-
-
Save juniorcesarabreu/1ee332c2df541152d5cca1f7ab3c44ba to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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