# HG changeset patch # User Matti Hamalainen # Date 1530689803 -10800 # Node ID 249c4f5742f3422ed5672045b345423a35f87631 # Parent edcf9039552b784f681453abe7e78dcd9d1e5bc2 Refactor the import/export stuff a bit and the GUI bits for JS. Still a work in progress, only "format" export/import works now. diff -r edcf9039552b -r 249c4f5742f3 events.pde --- 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; } diff -r edcf9039552b -r 249c4f5742f3 exporters.pde --- 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) { diff -r edcf9039552b -r 249c4f5742f3 multipaint.pde --- 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;