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)