From 0e5df3571dd74029b3b97be2e3d1a0f83faa16ec Mon Sep 17 00:00:00 2001 From: Olga Miller Date: Sat, 11 Feb 2017 10:39:48 +0100 Subject: [PATCH] Moved text size factor calculation out from LabelCollection, write to file also text size factor MainActivity: Load TextOverlayTemplate before ModeSize is changed in CropView --- app/src/main/java/om/sstvencoder/CropView.java | 2 +- .../main/java/om/sstvencoder/MainActivity.java | 11 +++++++---- .../sstvencoder/TextOverlay/LabelCollection.java | 15 +++++---------- app/src/main/java/om/sstvencoder/Utility.java | 4 ++++ 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/om/sstvencoder/CropView.java b/app/src/main/java/om/sstvencoder/CropView.java index 2b77fd3..ddab263 100644 --- a/app/src/main/java/om/sstvencoder/CropView.java +++ b/app/src/main/java/om/sstvencoder/CropView.java @@ -288,7 +288,7 @@ public class CropView extends ImageView { super.onSizeChanged(w, h, old_w, old_h); if (mModeSize != null) mOutputRect = Utility.getEmbeddedRect(w, h, mModeSize.width(), mModeSize.height()); - mLabelCollection.update(w, h); + mLabelCollection.update(w, h, Utility.getTextSizeFactor(w, h)); } @Override diff --git a/app/src/main/java/om/sstvencoder/MainActivity.java b/app/src/main/java/om/sstvencoder/MainActivity.java index 343dcc7..e9fe545 100644 --- a/app/src/main/java/om/sstvencoder/MainActivity.java +++ b/app/src/main/java/om/sstvencoder/MainActivity.java @@ -67,13 +67,16 @@ public class MainActivity extends AppCompatActivity { setContentView(R.layout.activity_main); mCropView = (CropView) findViewById(R.id.cropView); mEncoder = new Encoder(new MainActivityMessenger(this), getProgressBar(), getProgressBar2()); + + mSettings = new Settings(this); + mSettings.load(); + + mTextOverlayTemplate = new TextOverlayTemplate(); + mTextOverlayTemplate.load(mCropView.getLabels(), mSettings.getTextOverlayFile()); + IModeInfo mode = mEncoder.getModeInfo(); mCropView.setModeSize(mode.getModeSize()); setTitle(mode.getModeName()); - mSettings = new Settings(this); - mSettings.load(); - mTextOverlayTemplate = new TextOverlayTemplate(); - mTextOverlayTemplate.load(mCropView.getLabels(), mSettings.getTextOverlayFile()); loadImage(getIntent()); } diff --git a/app/src/main/java/om/sstvencoder/TextOverlay/LabelCollection.java b/app/src/main/java/om/sstvencoder/TextOverlay/LabelCollection.java index 2dc0f3d..98536ff 100644 --- a/app/src/main/java/om/sstvencoder/TextOverlay/LabelCollection.java +++ b/app/src/main/java/om/sstvencoder/TextOverlay/LabelCollection.java @@ -23,8 +23,6 @@ import java.io.IOException; import java.util.LinkedList; import java.util.List; -import om.sstvencoder.Utility; - public class LabelCollection { private class Size { private float mW, mH; @@ -55,7 +53,7 @@ public class LabelCollection { mPreviousY = 0f; } - public void update(float w, float h) { + public void update(float w, float h, float textSizeFactor) { if (mScreenSize != null) { float x = (w - mScreenSize.width()) / 2f; float y = (h - mScreenSize.height()) / 2f; @@ -63,16 +61,11 @@ public class LabelCollection { label.offset(x, y); } mScreenSize = new Size(w, h); - mTextSizeFactor = getTextSizeFactor(w, h); + mTextSizeFactor = textSizeFactor; for (LabelContainer label : mLabels) label.update(mTextSizeFactor, w, h); } - private float getTextSizeFactor(float w, float h) { - Rect bounds = Utility.getEmbeddedRect((int) w, (int) h, 320, 240); - return 0.1f * bounds.height(); - } - public void draw(Canvas canvas) { for (LabelContainer label : mLabels) label.draw(canvas); @@ -154,6 +147,7 @@ public class LabelCollection { { writer.write("width", mScreenSize.width()); writer.write("height", mScreenSize.height()); + writer.write("factor", mTextSizeFactor); writer.beginArray("labels"); { for (LabelContainer label : mLabels) @@ -169,6 +163,7 @@ public class LabelCollection { { float w = reader.readFloat(); float h = reader.readFloat(); + float textSizeFactor = reader.readFloat(); reader.beginArray(); { while (reader.hasNext()) { @@ -178,7 +173,7 @@ public class LabelCollection { } } reader.endArray(); - update(w, h); + update(w, h, textSizeFactor); } reader.endObject(); } diff --git a/app/src/main/java/om/sstvencoder/Utility.java b/app/src/main/java/om/sstvencoder/Utility.java index 079451a..857d97c 100644 --- a/app/src/main/java/om/sstvencoder/Utility.java +++ b/app/src/main/java/om/sstvencoder/Utility.java @@ -50,6 +50,10 @@ public final class Utility { return rect; } + static float getTextSizeFactor(int w, int h) { + return 0.1f * (Utility.getEmbeddedRect(w, h, 320, 240).height()); + } + static String createMessage(Exception ex) { String message = ex.getMessage() + "\n"; for (StackTraceElement el : ex.getStackTrace())