changeset 97:65e6cacd068c

Make PRG export work. Also some improvements in overall error handling.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 06 Jul 2018 02:59:25 +0300
parents 2d4b56e4d966
children c3aeb8acaa6c
files multipaint.pde
diffstat 1 files changed, 45 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/multipaint.pde	Fri Jul 06 02:58:28 2018 +0300
+++ b/multipaint.pde	Fri Jul 06 02:59:25 2018 +0300
@@ -342,14 +342,11 @@
 }
 
 
-bool mpLoadPNGImage(String name)
+int mpLoadPNGImage(String name)
 {
     PImage simg = null;
     if (simg == null)
-    {
-        message("Error 1");
-        return false;
-    }
+        return -1;
 
     int lefth = g_farge;
     int righth = g_backg;
@@ -360,10 +357,7 @@
     g_data[int('b')] = 1; //old IQ
 
     if (!mpImportFromImage(simg))
-    {
-        message("Error 2");
-        return false;
-    }
+        return -2;
 
     restoreparameters();
     refreshpalette();
@@ -372,32 +366,28 @@
     message("Image|loaded");
     selectcolor(0, lefth);
     selectcolor(1, righth);
-    return true;
+    return 0;
 }
 
 
-void mpSaveNativeImage(String name)
+bool mpSaveNativeImage(String name)
 {
     //save the picture page g_map[], make sure some essential parameters are correct
     g_map[3] = byte(machine);
     g_map[5] = byte(MX);
     g_map[7] = byte(MY);
 
-    mpSaveBinaryFile(name, g_map);
+    return mpSaveBinaryFile(name, g_map);
 }
 
 
-void mpSetNativeImage(byte[] data, bool noError)
+int mpSetNativeImage(byte[] data, bool noError)
 {
-    if (data == null) {
-        message("NO FILE");
-        return false;
-    }
+    if (data == null)
+        return -1;
 
-    if (data[3] != machine && !noError) {
-        message("Wrong|machine!");
-        return false;
-    }
+    if (data[3] != machine && !noError)
+        return -2;
 
     g_map = data;
 
@@ -408,13 +398,11 @@
     g_backg = int(g_realback);
     sussborder();
 
-    message("Page|loaded");
-
-    return true;
+    return 0;
 }
 
 
-bool mpLoadNativeImage(String name, bool noError)
+int mpLoadNativeImage(String name, bool noError)
 {
     return mpSetNativeImage(
         mpLoadBinaryFile(name), noError);
@@ -495,7 +483,8 @@
         mpLoadFileSelector("Multipaint image", ".mp",
         function (fh, fdata)
         {
-            if (mpSetNativeImage(fdata))
+            int err = mpSetNativeImage(fdata);
+            if (err == 0)
             {
                 store_undo();
                 mpSetTitle(fh.name);
@@ -504,8 +493,14 @@
                 else
                     filename = fh.name;
 
+                message("Image loaded");
                 refresh();
             }
+            else
+            if (err == -2)
+                message("Wrong|machine!");
+            else
+                message("ERROR!");
         });
 
         fileselect = false;
@@ -515,7 +510,11 @@
 
     if (saveas) // Fileselect "event" for Save as
     {
-        mpSaveNativeImage(filename +"_"+ (g_spare ? "spare" : "main") +".mp");
+        String fname = filename +"_"+ (g_spare ? "spare" : "main") +".mp";
+        if (mpSaveNativeImage(fname))
+            message("SAVED");
+        else
+            message("ERROR!");
 
         saveas = false;
         g_shift = false;
@@ -524,11 +523,16 @@
 
     if (exportsrc)
     {
-        message("Export TXT|is disabled");
+        message("Export SRC|is disabled");
 /*
-        exportemuname = g_spare ? sfilename : filename;
-        machine_export(exportemuname, 1);
+        String fname = (g_spare ? sfilename : filename) +"_"+ (g_spare ? "spare" : "main") +".asm";
+        byte[] fdata = mpExportMachinePRG(true);
+        if (fdata != null && mpSaveBinaryFile(fname, fdata))
+            message("EXPORTED");
+        else
+            message("COULD NOT|EXPORT");
 */
+
         exportsrc = false;
         g_shift = false;
         g_control = false;
@@ -536,11 +540,13 @@
 
     if (exportemu)
     {
-        message("Export EMU|is disabled");
-/*
-        exportemuname = g_spare ? sfilename : filename;
-        machine_export(exportemuname, 0);
-*/
+        String fname = (g_spare ? sfilename : filename) +"_"+ (g_spare ? "spare" : "main") +"."+ g_exportext;
+        byte[] fdata = mpExportMachinePRG(false);
+        if (fdata != null && mpSaveBinaryFile(fname, fdata))
+            message("EXPORTED");
+        else
+            message("COULD NOT|EXPORT");
+
         exportemu = false;
         g_shift = false;
         g_control = false;
@@ -564,14 +570,11 @@
 
     if (exportfmt)
     {
-        tmp = mpExportFormat(0); // XXX TODO
-        if (tmp != null)
-        {
-            mpSaveBinaryFile(filename +"_"+
-                (g_spare ? "spare" : "main") +"."+ g_formatext,
-                tmp);
+        byte[] fdata = mpExportFormat(0); // XXX TODO
+        String fname = filename +"_"+ (g_spare ? "spare" : "main") +"."+ g_formatext;
+
+        if (fdata != null && mpSaveBinaryFile(fname, fdata))
             message("EXPORTED");
-        }
         else
             message("COULD NOT|EXPORT");