Mercurial > hg > forks > multipaint-js
changeset 153:9f4e6f888120
Integrate more changes from v1.8.2018.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 15 Aug 2018 15:55:14 +0300 |
parents | 394c52d4763a |
children | 1b2cbf3ab441 |
files | multipaint.pde |
diffstat | 1 files changed, 97 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/multipaint.pde Wed Aug 15 15:54:47 2018 +0300 +++ b/multipaint.pde Wed Aug 15 15:55:14 2018 +0300 @@ -44,15 +44,19 @@ String g_formatname, g_formatext, filename = "", sfilename = "", g_name, g_exportext = "", - g_exportname = "", g_keymacro = ""; + g_exportname = "", g_keymacro = "", + g_forcedpalette = ""; final int OLD = 0; final int NEW = 1; +final int FLATRATIO = 1; +final int SQUARERATIO = 0; int g_gridmode = OLD; int g_pixelw = 1; +int g_aspect = SQUARERATIO; + int[] g_grids = new int[16]; - int[] g_r = new int[266]; int[] g_g = new int[266]; int[] g_b = new int[266]; @@ -197,6 +201,8 @@ g_data[int('f')] = 1; // fill on g_data[int('g')] = 1; // grid on + g_data[int('m')] = 0; + g_data[int('M')] = 0; // mags off g_icons = mpLoadBinaryFile("icons.bin"); @@ -210,7 +216,7 @@ // UI colors makecolor(256, 0xff, 0, 0xff); makecolor(257, 180, 180, 180); - g_rgb[257] = 0xff808080; +// g_rgb[257] = 0xff808080; makecolor(258, 0, 0, 0); makecolor(259, 48, 48, 48); @@ -221,10 +227,57 @@ makecolor(263, 48, 48, 48); //backest UI background mpSetupMachine(machine); - g_windowx = width - (g_hedge) - (g_wzoom * X); - g_windowx = int(g_windowx / 2); - g_windowy = height - (g_vedge) - (g_wzoom * Y); - g_windowy = int(g_windowy / 2); + + if (g_forcedpalette.length() > 3) + mpLoadPalette(g_forcedpalette); + + int truwinsizex = X * g_magpix[magmode()]; + int truwinsizey = Y * g_magpiy[magmode()]; +/* + if (g_forcex == 0 || g_forcey == 0) + { +*/ + g_hadjust = 0; + g_vadjust = 0; + + int hsize = truwinsizex + g_hedge + (22) * g_wzoom; + int vsize = truwinsizey + g_vedge + (14) * g_wzoom; + + while (vsize - g_vedge < (12 * 16) * g_wzoom) + vsize += 2; + + while (hsize - g_hedge < (17 * 16) * g_wzoom) + hsize += 2; + + size(hsize, vsize); +/* + } + + if (g_forcex > 800 && g_forcey > 600) + size(g_forcex, g_forcey); +*/ + + if (g_inhibit_aspect) + g_aspect = SQUARERATIO; + + int paspect = g_wzoom; + if (g_aspect == FLATRATIO) + { + if (g_wzoom == 2) paspect = 1; + if (g_wzoom == 3) paspect = 2; + if (g_wzoom == 4) paspect = 3; + } + + g_windowx = width - (g_hedge) - (truwinsizex); + g_windowx = g_windowx / 2; + g_windowy = height - (g_vedge) - (truwinsizey); + g_windowy = g_windowy / 2; + + if (g_hadjust > 0) + g_windowx = width - (g_hedge) - (g_wzoom * X) - g_hadjust; + + if (g_vadjust > 0) + g_windowy = height - (g_vedge) - (paspect * Y) - g_vadjust; switcher(3); @@ -482,6 +535,43 @@ } +boolean mpLoadPalette(String fname) +{ + if (g_map[13] != C64) + return false; + + byte fdata[] = mpLoadbinaryFile(fname); + if (fdata == null || + fdata.length != 772 || + fdata[0x301] != byte(0x10) || + fdata[0x302] != byte(0xff) || + fdata[0x303] != byte(0xff)) + return false; + + for (int n = 0; n < 16; n++) + { + makecolor(n, + int(fdata[n * 3]), + int(fdata[n * 3 + 1]), + int(fdata[n * 3 + 2])); + } + + makecolor(256, 0xff, 0, 0xff); + makecolor(257, 180, 180, 180); +// g_rgb[257] = 0xff808080; + makecolor(258, 0, 0, 0); + makecolor(259, 48, 48, 48); + makecolor(260, 255, 0, 0); + makecolor(261, 0, 255, 0); + makecolor(262, 0, 0, 255); + + sussborder(); + refresh_all(); + + return true; +} + + void draw() { if (!focused)