changeset 29:249c4f5742f3

Refactor the import/export stuff a bit and the GUI bits for JS. Still a work in progress, only "format" export/import works now.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 04 Jul 2018 10:36:43 +0300
parents edcf9039552b
children 2eda69cb8ac0
files events.pde exporters.pde multipaint.pde
diffstat 3 files changed, 117 insertions(+), 221 deletions(-) [+]
line wrap: on
line diff
--- a/events.pde	Wed Jul 04 10:34:12 2018 +0300
+++ b/events.pde	Wed Jul 04 10:36:43 2018 +0300
@@ -639,6 +639,7 @@
             }
             g_data[int('M')] = 0;
         }
+
         if (g_data[int('m')] == 1) {
             if (ckey == 'm') {
                 g_data[int('M')] = 0;
@@ -804,14 +805,13 @@
                 message("Icons|not loaded!");
             } else {
                 message("Store|icons");
-                store("icons.bin");
+                mpSaveNativeImage("icons.bin");
             }
         }
         if (g_data[int('I')] == 1) {
             g_data[int('I')] = 0;
-            store_undo();
             message("Restore|icons");
-            restore("icons.bin");
+            mpLoadNativeImage("icons.bin", true);
             refresh();
             g_iconmode = 1;
         }
--- a/exporters.pde	Wed Jul 04 10:34:12 2018 +0300
+++ b/exporters.pde	Wed Jul 04 10:36:43 2018 +0300
@@ -391,16 +391,18 @@
     g_map[ad + 7] = byte( g_template[head] & 1);
 }
 
-void format_import(String fname) {
+
+void format_import(byte[] fhd) {
     int x, y, x2, y2, y3, head, xx, yy, yp, ad, valu;
     int p1, p2, p3;
     head = 0;
 
+    g_template = fhd;
+
     if (machine == SPECTRUM) //SCR=SCREEN$
     {
         // 32*24*8 bytes of bitmap
         // 32*24 bytes of attributes
-        import_program(fname);
         if (g_template.length < 6912) {
             message("FALSE");
             return;
@@ -444,9 +446,8 @@
         //0x0002->bitmap
         //0x1f42->colormap
         //0x232a=border (take the lower nybble)
-        import_program(fname); //art studio
         if (g_template.length < 9006) {
-            message("FALSE");
+            message("FALSE "+ str(g_template.length));
             return;
         }
         if (g_template.length >= 0x232a) {
@@ -473,8 +474,6 @@
         //2 - luminance 40*25
         //1026 - colors 40*25
         //2050 - bitmappi 40*25*8
-        import_program(fname);
-
         if (g_template.length < 10050) {
             message("FALSE");
             return;
@@ -508,8 +507,6 @@
         //1025 - bäkki2
         //1026 - colors 40*25
         //2050 - bitmap 40*25*8
-        import_program(fname);
-
         if (g_template.length < 10050) {
             message("FALSE");
             return;
@@ -550,9 +547,8 @@
         //0x232a border
         //0x232b background
         //0x233a colors2 (40*25)
-        import_program(fname);
         if (g_template.length < 10018) {
-            message("FALSE");
+            message("FALSE "+ str(g_template.length));
             return;
         }
         for (y = 0; y < 25; y++) {
@@ -580,7 +576,6 @@
     if (machine == MSX) { // sc2
         // 7=bitmap 32*24*8
         // 7+(32*24*8)=colormap 32*24
-        import_program(fname);
         if (g_template.length < 14343) {
             message("FALSE");
             return;
@@ -608,7 +603,6 @@
     }
 
     if (machine == CPC) { // a studio?
-        import_program(fname);
         message("Not|Working");
     }
 
@@ -1262,11 +1256,11 @@
 }
 
 void load_template(String fname) {
-    g_template = loadBytes("templates/" + fname);
+    g_template = mpLoadBinaryFile("templates/" + fname);
 }
 
 void import_program(String fname) {
-    g_template = loadBytes(fname);
+    g_template = mpLoadBinaryFile(fname);
 }
 
 void set_head(int pos) {
@@ -1279,10 +1273,8 @@
 }
 
 void export_program(String fname) {
-    if (g_sorsaa == 1) {
-        return;
-    }
-    saveBytes(fname, g_template);
+    if (g_sorsaa != 1)
+        mpSaveBinaryFile(fname, g_template);
 }
 
 void outputter(String oput, boolean eol) {
--- a/multipaint.pde	Wed Jul 04 10:34:12 2018 +0300
+++ b/multipaint.pde	Wed Jul 04 10:36:43 2018 +0300
@@ -21,9 +21,8 @@
 int g_animx, g_animy, g_animframes, g_animno, g_animtime, g_animspeed;
 int g_omag, g_bordh, g_bordv, g_keymacpos, g_framec;
 
-String path = "", refpath = "", filename = "", elename = "", sfilename = "", refname = "", g_expname = "", g_fmtname = "";
-String exporttxtname = "", exportemuname = "", exportfmtname;
 boolean fileselect = false, saveas = false, refselect = false, g_control = false, g_shift = false, exporttxt = false, importfmt = false, exportemu = false, exportfmt = false;
+String path = "", refpath = "", filename = "", elename = "", sfilename = "", refname = "", g_expname = "";
 String g_keymacro = "";
 
 int[] g_r = new int[266];
@@ -147,7 +146,7 @@
     g_button = LEFT;
     g_data[int('f')] = 1;
     g_data[int('g')] = 1;
-    if (fexists("icons.bin") == true) g_icons = loadBytes("icons.bin");
+    g_icons = mpLoadBinaryFile("icons.bin");
     set_tool(3);
 
     g_gridx = 8;
@@ -199,23 +198,9 @@
     message("*");
 }
 
-void store(String name) {
-    String[] m1 = match(name, ".png");
-    if (m1 != null) {
-        if (g_data[int('Q')] == 0) {
-            export_image_sans_border(name);
-        }
-        if (g_data[int('Q')] == 1) {
-            export_image(name);
-        }
-        return;
-    }
 
-    //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);
-    saveBytes(name, g_map);
+void mpSetTitle(String str) {
+    console.log("TITLE: '" + str + "'");
 }
 
 
@@ -388,55 +373,6 @@
 }
 
 
-void restore(String name) {
-    //load the picture page g_map[] with parameters
-    boolean im_import = false;
-    if (fexists(name) == false) {
-        message("NO FILE");
-        return;
-    }
-    String[] m1 = match(name, ".png");
-    if (m1 != null) im_import = true;
-    String[] m2 = match(name, ".PNG");
-    if (m2 != null) im_import = true;
-    String[] m3 = match(name, ".jpg");
-    if (m3 != null) im_import = true;
-    String[] m4 = match(name, ".JPG");
-    if (m4 != null) im_import = true;
-
-    if (im_import) {
-        int lefth = g_farge;
-        int righth = g_backg;
-        storeparameters();
-        g_data[int('d')] = 0;
-        g_data[int('t')] = 0;
-        g_data[int('b')] = 1; //old IQ
-        import_image(name);
-        restoreparameters();
-        refreshpalette();
-        refresh();
-        g_boxreconstruct = 2;
-        message("Image|loaded");
-        selectcolor(0, lefth);
-        selectcolor(1, righth);
-        return;
-    }
-    g_map = loadBytes(name);
-    if (g_map[3] != machine) {
-        message("Wrong|machine!");
-        restore_undo();
-        return;
-    }
-    refreshpalette();
-    consistency();
-    g_farge = int(g_realfront);
-    g_ofarge = g_farge;
-    g_backg = int(g_realback);
-    sussborder();
-    message("Page|loaded");
-}
-
-
 void draw() {
     int msx, msy;
 
@@ -513,151 +449,119 @@
     if (g_msgctr > 0) g_msgctr--;
 
     // UI file operations
-        if (fileselect) // Fileselect "event" for Load
+    if (fileselect) // Fileselect "event" for Load
+    {
+        mpLoadFileSelector(".mpe, .MPE",
+        function (fh, fdata)
         {
-            String s = fileselector(path, LOADIMG);
-            if (s != null) {
+            if (mpSetNativeImage(fdata))
+            {
                 store_undo();
-                if (g_spare == 0) {
-                    filename = s;
-                    frame.setTitle(filename);
-                    restore(s);
-                }
-                if (g_spare == 1) {
-                    restore(s);
-                    sfilename = s;
-                    frame.setTitle(sfilename);
-                }
+                mpSetTitle(fh.name);
+                if (g_spare == 0)
+                    filename = fh.name;
+                else
+                    sfilename = fh.name;
+
                 refresh();
             }
-            fileselect = false;
-            g_shift = false;
-            g_control = false;
-        }
-        if (saveas) // Fileselect "event" for Save as
-        {
-            String s = fileselector(path, SAVEIMG);
-            String orig = "";
-            int kuva = 0;
-            if (g_spare == 0) orig = filename;
-            if (g_spare == 1) orig = sfilename;
-            if (s != null) {
-                // Add extension if needed
-                if (s.length() <= 2) s += ".bin";
-                s = s + ".dummy.dummy";
-                String[] l = split(s, '.');
-                String[] m1 = match(l[1], "png");
-                String[] m2 = match(l[1], "PNG");
-                String[] m3 = match(l[1], "bin");
-                String[] m4 = match(l[1], "BIN");
-                if (m1 != null || m2 != null) kuva = 1;
-                if (m1 == null && m2 == null && m3 == null && m4 == null) l[1] = "bin";
+        });
+
+        fileselect = false;
+        g_shift = false;
+        g_control = false;
+    }
+
+    if (saveas) // Fileselect "event" for Save as
+    {
+        String s = fileselector(path, SAVEIMG);
+        String orig = "";
+        int kuva = 0;
+        if (g_spare == 0) orig = filename;
+        if (g_spare == 1) orig = sfilename;
 
-                if (g_spare == 0) {
-                    filename = l[0] + "." + l[1];
-                    store(filename);
-                    if (kuva == 1) filename = orig;
-                    frame.setTitle(filename);
-                }
-                if (g_spare == 1) {
-                    sfilename = l[0] + "." + l[1];
-                    store(sfilename);
-                    if (kuva == 1) sfilename = orig;
-                    frame.setTitle(sfilename);
-                }
+        if (s != null) {
+            // Add extension if needed
+            if (s.length() <= 2) s += ".bin";
+            s = s + ".dummy.dummy";
+            String[] l = split(s, '.');
+            String[] m1 = match(l[1], "png");
+            String[] m2 = match(l[1], "PNG");
+            String[] m3 = match(l[1], "bin");
+            String[] m4 = match(l[1], "BIN");
+            if (m1 != null || m2 != null) kuva = 1;
+            if (m1 == null && m2 == null && m3 == null && m4 == null) l[1] = "bin";
 
-                message("SAVED");
-                if (kuva == 1) message("EXPORTED|PNG");
+            if (g_spare == 0) {
+                filename = l[0] + "." + l[1];
+                mpSavePNGImage(filename);
+                if (kuva == 1) filename = orig;
+                mpSetTitle(filename);
+            } else {
+                sfilename = l[0] + "." + l[1];
+                mpSavePNGImage(sfilename);
+                if (kuva == 1) sfilename = orig;
+                mpSetTitle(sfilename);
             }
-            saveas = false;
-            g_shift = false;
-            g_control = false;
-        }
-        if (exporttxt) {
-            String s = fileselector(path, SAVETXT);
-            if (s != null) {
-                // Add extension if needed
-                if (s.length() <= 2) s += ".txt";
-                s = s + ".dummy.dummy";
-                String[] l = split(s, '.');
-                l[1] = "txt";
-                if (g_spare == 0) {
-                    exportemuname = l[0] + "." + l[1];
-                    machine_export(exportemuname, 1);
-                }
-                if (g_spare == 1) {
-                    exportemuname = l[0] + "." + l[1];
-                    machine_export(exportemuname, 1);
-                }
-            }
-            exporttxt = false;
-            g_shift = false;
-            g_control = false;
+
+            message("SAVED");
+            if (kuva == 1) message("EXPORTED|PNG");
         }
-        if (exportemu) {
-            String s = fileselector(path, SAVEEMU);
-            if (s != null) {
-                // Add extension if needed
-                if (s.length() <= 2) s += "." + g_expname;
-                s = s + ".dummy.dummy";
-                String[] l = split(s, '.');
-                l[1] = g_expname;
-                if (g_spare == 0) {
-                    exportemuname = l[0] + "." + l[1];
-                    machine_export(exportemuname, 0);
-                    //println(exportemuname);
-                }
-                if (g_spare == 1) {
-                    exportemuname = l[0] + "." + l[1];
-                    machine_export(exportemuname, 0);
-                }
+        saveas = false;
+        g_shift = false;
+        g_control = false;
+    }
+
+    if (exporttxt) {
+        if (g_spare == 0) {
+            exportemuname = filename + "." + l[1];
+        } else {
+            exportemuname = sfilename + "." + l[1];
+        }
 
-                //message("EXPORTED");
-            }
-            exportemu = false;
-            g_shift = false;
-            g_control = false;
+        machine_export(exportemuname, 1);
+
+        exporttxt = false;
+        g_shift = false;
+        g_control = false;
+    }
+
+    if (exportemu) {
+        if (g_spare == 0) {
+            exportemuname = filename + "." + l[1];
+        } else {
+            exportemuname = sfilename + "." + l[1];
         }
-        if (importfmt) {
-            String s = fileselector(path, LOADFMT);
-            if (s != null) {
-                store_undo();
-                format_import(s);
-                refresh();
-            }
-            importfmt = false;
-            g_shift = false;
-            g_control = false;
-        }
-        if (exportfmt) {
-            String s = fileselector(path, SAVEFMT);
-            if (s != null) {
-                boolean koalakludge = false;
-                // Add extension if needed
-                if (s.indexOf(".kla") > -1 && machine == C64M) koalakludge = true;
-                if (s.length() <= 2) s += "." + g_fmtname;
-                s = s + ".dummy.dummy";
-                String[] l = split(s, '.');
-                l[1] = g_formatextension;
+
+        machine_export(exportemuname, 0);
+
+        exportemu = false;
+        g_shift = false;
+        g_control = false;
+    }
 
-                if (koalakludge) l[1] = "kla";
+    if (importfmt) {
+        mpLoadFileSelector(".aas, .AAS",
+        function (fh, fdata)
+        {
+            store_undo();
+            filename = fh.name;
+            format_import(fdata);
+            refresh();
+        });
 
-                if (g_spare == 0) {
-                    exportfmtname = l[0] + "." + l[1];
-                    format_export(exportfmtname);
-                    //println(exportemuname);
-                }
-                if (g_spare == 1) {
-                    exportfmtname = l[0] + "." + l[1];
-                    format_export(exportfmtname);
-                }
+        importfmt = false;
+        g_shift = false;
+        g_control = false;
+    }
 
-                //message("EXPORTED");
-            }
-            exportfmt = false;
-            g_shift = false;
-            g_control = false;
-        }
+    if (exportfmt) {
+        format_export(filename +"_"+ (g_spare ? "spare" : "main") +".aas");
+
+        exportfmt = false;
+        g_shift = false;
+        g_control = false;
+    }
 
     //if(g_framec==1){saveFrame("frames/out-######.png");}
     //g_framec++;if(g_framec>1)g_framec=0;