diff --git a/app/src/main/java/xdsopl/robot36/Decoder.java b/app/src/main/java/xdsopl/robot36/Decoder.java
index 9d86bfd..2636d45 100644
--- a/app/src/main/java/xdsopl/robot36/Decoder.java
+++ b/app/src/main/java/xdsopl/robot36/Decoder.java
@@ -160,8 +160,7 @@ public class Decoder {
void clear_image() { rsDecoder.invoke_reset_buffer(); }
void toggle_scaling() { image.intScale ^= true; }
- void softer_image() { rsDecoder.invoke_incr_blur(); }
- void sharper_image() { rsDecoder.invoke_decr_blur(); }
+ void adjust_blur(int blur) { rsDecoder.invoke_adjust_blur(blur); }
void toggle_debug() { rsDecoder.invoke_toggle_debug(); }
void toggle_auto() { rsDecoder.invoke_toggle_auto(); }
void enable_analyzer(boolean enable) { rsDecoder.invoke_enable_analyzer((enableAnalyzer = enable) ? 1 : 0); }
diff --git a/app/src/main/java/xdsopl/robot36/MainActivity.java b/app/src/main/java/xdsopl/robot36/MainActivity.java
index 2bafc67..9767b7a 100644
--- a/app/src/main/java/xdsopl/robot36/MainActivity.java
+++ b/app/src/main/java/xdsopl/robot36/MainActivity.java
@@ -227,11 +227,26 @@ public class MainActivity extends Activity {
case R.id.action_clear_image:
decoder.clear_image();
return true;
- case R.id.action_softer_image:
- decoder.softer_image();
+ case R.id.action_sharpest_image:
+ decoder.adjust_blur(-3);
return true;
case R.id.action_sharper_image:
- decoder.sharper_image();
+ decoder.adjust_blur(-2);
+ return true;
+ case R.id.action_sharp_image:
+ decoder.adjust_blur(-1);
+ return true;
+ case R.id.action_neutral_image:
+ decoder.adjust_blur(0);
+ return true;
+ case R.id.action_soft_image:
+ decoder.adjust_blur(1);
+ return true;
+ case R.id.action_softer_image:
+ decoder.adjust_blur(2);
+ return true;
+ case R.id.action_softest_image:
+ decoder.adjust_blur(3);
return true;
case R.id.action_toggle_scaling:
decoder.toggle_scaling();
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
index 8d8ff88..68d8259 100644
--- a/app/src/main/res/menu/menu_main.xml
+++ b/app/src/main/res/menu/menu_main.xml
@@ -27,8 +27,15 @@
android:icon="@android:drawable/ic_menu_close_clear_cancel"
android:showAsAction="ifRoom" />
-
-
+
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index baf8b6e..abe5c41 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -26,8 +26,14 @@
Scottie2 Modus
ScottieDX Modus
WraaseSC2 180 Modus
- Weicheres Bild
- Schärferes Bild
+ Bildschärfe Anpassen
+ am schärfsten
+ schärfer
+ scharf
+ neutral
+ weich
+ weicher
+ am weichsten
Skalierung umschalten
Dekodierer Ansicht
Spektrum Ansicht
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9a6a163..e29b0cf 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -26,8 +26,14 @@
Scottie2 Mode
ScottieDX Mode
WraaseSC2 180 Mode
- Softer Image
- Sharper Image
+ Image Sharpness
+ sharpest
+ sharper
+ sharp
+ neutral
+ soft
+ softer
+ softest
Toggle Scaling
Decoder View
Spectrum View
diff --git a/app/src/main/rs/blur.rsh b/app/src/main/rs/blur.rsh
index 7ebe90e..5c8b282 100644
--- a/app/src/main/rs/blur.rsh
+++ b/app/src/main/rs/blur.rsh
@@ -21,14 +21,9 @@ limitations under the License.
#include "state.rsh"
#include "blur_generated.rsh"
-void incr_blur()
+void adjust_blur(int blur)
{
- user_blur = user_blur < 6 ? user_blur + 1 : user_blur;
-}
-
-void decr_blur()
-{
- user_blur = user_blur >= 0 ? user_blur - 1 : user_blur;
+ user_blur = clamp(blur, -3, 3);
}
#endif
diff --git a/app/src/main/rs/blur_generated.rsh b/app/src/main/rs/blur_generated.rsh
index edc3e97..349e920 100644
--- a/app/src/main/rs/blur_generated.rsh
+++ b/app/src/main/rs/blur_generated.rsh
@@ -5,7 +5,7 @@ static uchar value_blur(int pixel, int begin, int end)
int i = p & buffer_mask;
int weight_sum = 0;
int value_sum = 0;
- switch (blur_power + user_blur) {
+ switch (max(0, blur_power + user_blur)) {
case 0:
if ((p-1) < begin || end <= (p+1) || (i-1) < 0 || buffer_length <= (i+1)) {
if (begin <= (p-1)) {
diff --git a/utils/blur.c b/utils/blur.c
index bdb056a..f91c767 100644
--- a/utils/blur.c
+++ b/utils/blur.c
@@ -63,7 +63,7 @@ int main()
printf("\tint i = p & buffer_mask;\n");
printf("\tint weight_sum = 0;\n");
printf("\tint value_sum = 0;\n");
- printf("\tswitch (blur_power + user_blur) {\n");
+ printf("\tswitch (max(0, blur_power + user_blur)) {\n");
int max_power = 6;
for (int i = 0; i <= max_power; ++i) {
printf("\tcase %d:\n", i);