# HG changeset patch # User Matti Hamalainen # Date 1530835165 -10800 # Node ID 65e6cacd068c6bfa5b5acddc3ee75d0f84632718 # Parent 2d4b56e4d9664d64766d2ff59b3e42f7d17323ba Make PRG export work. Also some improvements in overall error handling. diff -r 2d4b56e4d966 -r 65e6cacd068c multipaint.pde --- 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");