diff --git a/app/src/main/java/xdsopl/robot36/BaseMode.java b/app/src/main/java/xdsopl/robot36/BaseMode.java new file mode 100644 index 0000000..78b0327 --- /dev/null +++ b/app/src/main/java/xdsopl/robot36/BaseMode.java @@ -0,0 +1,16 @@ +/* +Base class for all modes + +Copyright 2025 Marek Ossowski +*/ + +package xdsopl.robot36; + +import android.graphics.Bitmap; + +public abstract class BaseMode implements Mode { + @Override + public Bitmap postProcessScopeImage(Bitmap bmp) { + return bmp; + } +} diff --git a/app/src/main/java/xdsopl/robot36/MainActivity.java b/app/src/main/java/xdsopl/robot36/MainActivity.java index b5d50dc..c73ab9d 100644 --- a/app/src/main/java/xdsopl/robot36/MainActivity.java +++ b/app/src/main/java/xdsopl/robot36/MainActivity.java @@ -828,7 +828,14 @@ public class MainActivity extends AppCompatActivity { int height = scopeBuffer.height / 2; int stride = scopeBuffer.width; int offset = stride * scopeBuffer.line; - storeBitmap(Bitmap.createBitmap(scopeBuffer.pixels, offset, stride, width, height, Bitmap.Config.ARGB_8888)); + Bitmap bmp = Bitmap.createBitmap(scopeBuffer.pixels, offset, stride, width, height, Bitmap.Config.ARGB_8888); + + if (decoder != null) + { + bmp = decoder.currentMode.postProcessScopeImage(bmp); + } + + storeBitmap(bmp); } private void createScope(Configuration config) { diff --git a/app/src/main/java/xdsopl/robot36/Mode.java b/app/src/main/java/xdsopl/robot36/Mode.java index f751112..2650ee5 100644 --- a/app/src/main/java/xdsopl/robot36/Mode.java +++ b/app/src/main/java/xdsopl/robot36/Mode.java @@ -6,6 +6,8 @@ Copyright 2024 Ahmet Inan package xdsopl.robot36; +import android.graphics.Bitmap; + public interface Mode { String getName(); @@ -21,6 +23,8 @@ public interface Mode { int getScanLineSamples(); + Bitmap postProcessScopeImage(Bitmap bmp); + void resetState(); /** diff --git a/app/src/main/java/xdsopl/robot36/PaulDon.java b/app/src/main/java/xdsopl/robot36/PaulDon.java index 74ab9d3..ee6e3cb 100644 --- a/app/src/main/java/xdsopl/robot36/PaulDon.java +++ b/app/src/main/java/xdsopl/robot36/PaulDon.java @@ -6,7 +6,7 @@ Copyright 2024 Ahmet Inan package xdsopl.robot36; -public class PaulDon implements Mode { +public class PaulDon extends BaseMode { private final ExponentialMovingAverage lowPassFilter; private final int horizontalPixels; private final int verticalPixels; diff --git a/app/src/main/java/xdsopl/robot36/RGBDecoder.java b/app/src/main/java/xdsopl/robot36/RGBDecoder.java index 12de680..fa1ef00 100644 --- a/app/src/main/java/xdsopl/robot36/RGBDecoder.java +++ b/app/src/main/java/xdsopl/robot36/RGBDecoder.java @@ -6,7 +6,7 @@ Copyright 2024 Ahmet Inan package xdsopl.robot36; -public class RGBDecoder implements Mode { +public class RGBDecoder extends BaseMode { private final ExponentialMovingAverage lowPassFilter; private final int horizontalPixels; private final int verticalPixels; diff --git a/app/src/main/java/xdsopl/robot36/RawDecoder.java b/app/src/main/java/xdsopl/robot36/RawDecoder.java index 1620363..931144d 100644 --- a/app/src/main/java/xdsopl/robot36/RawDecoder.java +++ b/app/src/main/java/xdsopl/robot36/RawDecoder.java @@ -6,7 +6,7 @@ Copyright 2024 Ahmet Inan package xdsopl.robot36; -public class RawDecoder implements Mode { +public class RawDecoder extends BaseMode { private final ExponentialMovingAverage lowPassFilter; private final int smallPictureMaxSamples; private final int mediumPictureMaxSamples; diff --git a/app/src/main/java/xdsopl/robot36/Robot_36_Color.java b/app/src/main/java/xdsopl/robot36/Robot_36_Color.java index 129e0f1..baf448e 100644 --- a/app/src/main/java/xdsopl/robot36/Robot_36_Color.java +++ b/app/src/main/java/xdsopl/robot36/Robot_36_Color.java @@ -6,7 +6,7 @@ Copyright 2024 Ahmet Inan package xdsopl.robot36; -public class Robot_36_Color implements Mode { +public class Robot_36_Color extends BaseMode { private final ExponentialMovingAverage lowPassFilter; private final int horizontalPixels; private final int verticalPixels; diff --git a/app/src/main/java/xdsopl/robot36/Robot_72_Color.java b/app/src/main/java/xdsopl/robot36/Robot_72_Color.java index 07a0564..f1bf907 100644 --- a/app/src/main/java/xdsopl/robot36/Robot_72_Color.java +++ b/app/src/main/java/xdsopl/robot36/Robot_72_Color.java @@ -6,7 +6,7 @@ Copyright 2024 Ahmet Inan package xdsopl.robot36; -public class Robot_72_Color implements Mode { +public class Robot_72_Color extends BaseMode { private final ExponentialMovingAverage lowPassFilter; private final int horizontalPixels; private final int verticalPixels;