From 6533062eb731cd5b4ca830f5352f38a32150e520 Mon Sep 17 00:00:00 2001 From: Olga Miller Date: Sat, 4 Mar 2017 14:48:28 +0100 Subject: [PATCH] Added border (bool, size, color) to Label, added border switch to EditTextActivity, draw white border of fixed size --- .../java/om/sstvencoder/EditTextActivity.java | 5 +- .../om/sstvencoder/TextOverlay/Label.java | 39 ++++++++++++--- .../TextOverlay/LabelContainer.java | 6 +++ .../sstvencoder/TextOverlay/LabelPainter.java | 49 ++++++++++++++----- .../main/res/layout/activity_edit_text.xml | 27 +++++++--- app/src/main/res/values/strings.xml | 1 + 6 files changed, 101 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/om/sstvencoder/EditTextActivity.java b/app/src/main/java/om/sstvencoder/EditTextActivity.java index e091a14..a01c72b 100644 --- a/app/src/main/java/om/sstvencoder/EditTextActivity.java +++ b/app/src/main/java/om/sstvencoder/EditTextActivity.java @@ -42,7 +42,7 @@ public class EditTextActivity extends AppCompatActivity implements AdapterView.O private FontFamilySet mFontFamilySet; private FontFamilySet.FontFamily mSelectedFontFamily; private List mFontFamilyNameList; - private CheckBox mEditItalic, mEditBold; + private CheckBox mEditItalic, mEditBold, mEditBorder; @Override protected void onCreate(Bundle savedInstanceState) { @@ -52,6 +52,7 @@ public class EditTextActivity extends AppCompatActivity implements AdapterView.O mColorPaletteView = (ColorPaletteView) findViewById(R.id.edit_color); mEditBold = (CheckBox) findViewById(R.id.edit_bold); mEditItalic = (CheckBox) findViewById(R.id.edit_italic); + mEditBorder = (CheckBox) findViewById(R.id.edit_border); } @Override @@ -65,6 +66,7 @@ public class EditTextActivity extends AppCompatActivity implements AdapterView.O mColorPaletteView.setColor(label.getForeColor()); initFontFamilySpinner(label.getFamilyName()); updateBoldAndItalic(); + mEditBorder.setChecked(label.getBorder()); } private void initFontFamilySpinner(String familyName) { @@ -160,6 +162,7 @@ public class EditTextActivity extends AppCompatActivity implements AdapterView.O label.setFamilyName(mSelectedFontFamily.name); label.setItalic(mEditItalic.isChecked()); label.setBold(mEditBold.isChecked()); + label.setBorder(mEditBorder.isChecked()); label.setForeColor(mColorPaletteView.getColor()); return label; } diff --git a/app/src/main/java/om/sstvencoder/TextOverlay/Label.java b/app/src/main/java/om/sstvencoder/TextOverlay/Label.java index 94410eb..adf53b1 100644 --- a/app/src/main/java/om/sstvencoder/TextOverlay/Label.java +++ b/app/src/main/java/om/sstvencoder/TextOverlay/Label.java @@ -21,10 +21,10 @@ import java.io.Serializable; public class Label implements Serializable { private String mText; - private float mTextSize; + private float mTextSize, mBorderSize; private String mFamilyName; - private boolean mBold, mItalic; - private int mForeColor, mBackColor; + private boolean mBold, mItalic, mBorder; + private int mForeColor, mBackColor, mBorderColor; public Label() { mText = ""; @@ -34,6 +34,9 @@ public class Label implements Serializable { mItalic = false; mForeColor = Color.BLACK; mBackColor = Color.TRANSPARENT; + mBorder = true; + mBorderSize = 0.05f; + mBorderColor = Color.WHITE; } public String getText() { @@ -49,9 +52,9 @@ public class Label implements Serializable { return mTextSize; } - public void setTextSize(float textSize) { - if (textSize > 0f) - mTextSize = textSize; + public void setTextSize(float size) { + if (size > 0f) + mTextSize = size; } public String getFamilyName() { @@ -93,4 +96,28 @@ public class Label implements Serializable { public void setBackColor(int color) { mBackColor = color; } + + public boolean getBorder() { + return mBorder; + } + + public void setBorder(boolean border) { + mBorder = border; + } + + public float getBorderSize() { + return mBorderSize; + } + + public void setBorderSize(float size) { + mBorderSize = size; + } + + public int getBorderColor() { + return mBorderColor; + } + + public void setBorderColor(int color) { + mBorderColor = color; + } } diff --git a/app/src/main/java/om/sstvencoder/TextOverlay/LabelContainer.java b/app/src/main/java/om/sstvencoder/TextOverlay/LabelContainer.java index 26df673..be52731 100644 --- a/app/src/main/java/om/sstvencoder/TextOverlay/LabelContainer.java +++ b/app/src/main/java/om/sstvencoder/TextOverlay/LabelContainer.java @@ -104,6 +104,9 @@ class LabelContainer { writer.write("italic", label.getItalic()); writer.write("fore_color", label.getForeColor()); writer.write("back_color", label.getBackColor()); + writer.write("border", label.getBorder()); + writer.write("border_size", label.getBorderSize()); + writer.write("border_color", label.getBorderColor()); } private void readLabel(IReader reader, Label label) throws IOException { @@ -114,6 +117,9 @@ class LabelContainer { label.setItalic(reader.readBoolean()); label.setForeColor(reader.readInt()); label.setBackColor(reader.readInt()); + label.setBorder(reader.readBoolean()); + label.setBorderSize(reader.readFloat()); + label.setBorderColor(reader.readInt()); } } diff --git a/app/src/main/java/om/sstvencoder/TextOverlay/LabelPainter.java b/app/src/main/java/om/sstvencoder/TextOverlay/LabelPainter.java index 4a062e3..b70ebef 100644 --- a/app/src/main/java/om/sstvencoder/TextOverlay/LabelPainter.java +++ b/app/src/main/java/om/sstvencoder/TextOverlay/LabelPainter.java @@ -47,6 +47,7 @@ class LabelPainter { @Override public void draw(Canvas canvas) { + drawBorder(canvas, mX, mY); canvas.drawText(mLabel.getText(), mX, mY, mPaint); } @@ -55,6 +56,7 @@ class LabelPainter { RectF bounds = new RectF(getBounds()); float rx = 10f; float ry = 10f; + mPaint.setStrokeWidth(0f); mPaint.setColor(Color.LTGRAY); mPaint.setAlpha(100); @@ -65,15 +67,15 @@ class LabelPainter { mPaint.setStyle(Paint.Style.STROKE); mPaint.setColor(Color.RED); - bounds.inset(-5.0f, -5.0f); + bounds.inset(-5f, -5f); canvas.drawRoundRect(bounds, rx, ry, mPaint); mPaint.setColor(Color.GREEN); - bounds.inset(1.0f, 1.0f); + bounds.inset(1f, 1f); canvas.drawRoundRect(bounds, rx, ry, mPaint); mPaint.setColor(Color.BLUE); - bounds.inset(1.0f, 1.0f); + bounds.inset(1f, 1f); canvas.drawRoundRect(bounds, rx, ry, mPaint); setPaintSettings(mSizeFactor); @@ -84,9 +86,10 @@ class LabelPainter { float factor = (dst.height() / (float) src.height()); float x = (mX - src.left) * factor; float y = (mY - src.top) * factor; - setTextSize(factor * mSizeFactor); + setSizePaintSettings(factor * mSizeFactor); + drawBorder(canvas, x, y); canvas.drawText(mLabel.getText(), x, y, mPaint); - setTextSize(mSizeFactor); + setSizePaintSettings(mSizeFactor); } @Override @@ -114,16 +117,35 @@ class LabelPainter { return bounds; } - private void setPaintSettings(float sizeFactor) { - mPaint.setAlpha(255); - mPaint.setStyle(Paint.Style.FILL); - mPaint.setColor(mLabel.getForeColor()); - mPaint.setTypeface(Typeface.create(mLabel.getFamilyName(), getTypeface())); - setTextSize(sizeFactor); + private void drawBorder(Canvas canvas, float x, float y) { + if (mLabel.getBorder()) { + setBorderPaintSettings(); + canvas.drawText(mLabel.getText(), x, y, mPaint); + setTextPaintSettings(); + } } - private void setTextSize(float sizeFactor) { - mPaint.setTextSize(mLabel.getTextSize() * sizeFactor); + private void setPaintSettings(float sizeFactor) { + mPaint.setAlpha(255); + mPaint.setTypeface(Typeface.create(mLabel.getFamilyName(), getTypeface())); + setTextPaintSettings(); + setSizePaintSettings(sizeFactor); + } + + private void setBorderPaintSettings() { + mPaint.setStyle(Paint.Style.STROKE); + mPaint.setColor(mLabel.getBorderColor()); + } + + private void setTextPaintSettings() { + mPaint.setStyle(Paint.Style.FILL); + mPaint.setColor(mLabel.getForeColor()); + } + + private void setSizePaintSettings(float sizeFactor) { + float textSize = mLabel.getTextSize() * sizeFactor; + mPaint.setTextSize(textSize); + mPaint.setStrokeWidth(mLabel.getBorderSize() * textSize); } private int getTypeface() { @@ -149,6 +171,7 @@ class LabelPainter { private OutDrawer(float min) { mMinSize = min * 0.5f; mPaint.setAlpha(255); + mPaint.setStrokeWidth(0f); } private void leftOut(RectF rect, float screenH) { diff --git a/app/src/main/res/layout/activity_edit_text.xml b/app/src/main/res/layout/activity_edit_text.xml index 1a8844f..7c677f4 100644 --- a/app/src/main/res/layout/activity_edit_text.xml +++ b/app/src/main/res/layout/activity_edit_text.xml @@ -16,11 +16,26 @@ android:inputType="text" android:textSize="32sp"/> - + android:orientation="horizontal"> + + + + + + - + android:text="@string/border"/> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 15ad11a..f2252e3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -35,4 +35,5 @@ Send Bug Report: Bold Italic + Border \ No newline at end of file