changeset 145:5af8b5ddf349

Merge and clean up changes from v1.8.2018
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 14 Aug 2018 13:12:43 +0300
parents f91dda5dc8da
children bb1602f371d4
files Interface.pde events.pde mpui.js multipaint.pde preview.pde
diffstat 5 files changed, 80 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/Interface.pde	Tue Aug 14 13:11:33 2018 +0300
+++ b/Interface.pde	Tue Aug 14 13:12:43 2018 +0300
@@ -434,6 +434,9 @@
 
 boolean moicon(int xx, int yy, int ww, int hh)
 {
+    if (g_pgrab)
+        return false;
+
     //check mouse/icon boundary without actually drawing the icon
     if (g_data[int('m')] == 0 && g_data[int('M')] == 0)
     {
@@ -453,6 +456,9 @@
 
 boolean doicon_drag(int xx, int yy, int ww, int hh)
 {
+    if (g_pgrab)
+        return false;
+
     if (g_iconx >= xx && g_iconx < xx + ww && g_icony >= yy && g_icony < yy + hh)
     {
         g_iconx = -1;
@@ -460,6 +466,7 @@
         g_repanel = -2;
         return true;
     }
+    else
     if (g_piconx >= xx && g_piconx < xx + ww && g_picony >= yy && g_picony < yy + hh)
     {
         g_piconx = -1;
@@ -473,6 +480,9 @@
 
 boolean doicon(int xx, int yy, int ww, int hh)
 {
+    if (g_pgrab)
+        return false;
+
     if (g_iconx >= xx && g_iconx < xx + ww && g_icony >= yy && g_icony < yy + hh)
     {
         g_iconx = -1;
@@ -537,7 +547,7 @@
 {
     String teks;
 
-    if (g_msgctr > 0)
+    if (g_msgctr > 0 || g_pgrab)
         return;
 
     clearmsg();
@@ -1287,6 +1297,13 @@
         e_rect(0, 0, width - (g_hedge + g_uizoom * 2), height - (g_vedge + g_uizoom * 2), g_rgb[259]);
     }
 
+    if (g_pgrab)
+    {
+        // avoid preview window embarassment
+        e_rect(width - (g_hedge + g_uizoom * 2), 0, g_hedge + g_uizoom * 2 - 1, height - 1, g_rgb[263]);
+        e_rect(0, height - (g_vedge + g_uizoom * 2), width - 1, g_vedge + g_uizoom * 2 - 1, g_rgb[263]);
+    }
+
     maxx--;
     mayy--;
     zonx = MX - magx();
--- a/events.pde	Tue Aug 14 13:11:33 2018 +0300
+++ b/events.pde	Tue Aug 14 13:12:43 2018 +0300
@@ -100,6 +100,12 @@
     g_iconx = mouseX;
     g_icony = mouseY;
 
+    if (g_pgrab)
+    {
+        g_prevx = g_iconx + g_phandlex;
+        g_prevy = g_icony + g_phandley;
+    }
+    else
     if (insidewindow(g_iconx, g_icony))
     {
         if (g_phase == 0)
@@ -117,8 +123,11 @@
     }
     else
     {
-        if (mouseButton == CENTER) return;
-        if (g_tooltrigger == 0) g_tooltrigger = 1;
+        if (mouseButton == CENTER)
+            return;
+
+        if (g_tooltrigger == 0)
+            g_tooltrigger = 1;
     }
 
     g_iconx = -1;
@@ -131,12 +140,25 @@
     int msx, msy;
 
     g_dirty = true;
+    if (g_pgrab)
+        return;
 
     g_iconx = mouseX;
     g_icony = mouseY;
     g_button = mouseButton;
     g_realbutton = g_button;
 
+    if (g_preview == 1 &&
+        g_iconx > g_prevx && g_icony > g_prevy &&
+        g_iconx < g_prevx + X + 16 && g_icony < g_prevy + Y + 16)
+    {
+        g_pgrab = true;
+        g_button = 0; //important
+        g_realbutton = 0;
+        g_phandlex = g_prevx - g_iconx;
+        g_phandley = g_prevy - g_icony;
+    }
+    else
     if (insidewindow(g_iconx, g_icony))
     {
         if (g_phase == 0)
@@ -264,6 +286,9 @@
         g_rubbermode = 0;
         refresh(); //needed otherwise the pen color is kept e.g. after right mousebutton
     }
+
+    update_preview_window();
+    g_pgrab = false;
 }
 
 
@@ -290,6 +315,18 @@
     if (ckey == '-') ckey = 'h';
     if (ckey == '+') ckey = 'H';
 
+    if (ckey == BACKSPACE)
+    {
+        message("Preview|on/off");
+
+        if (++g_preview > 1)
+            g_preview = 0;
+
+        update_preview_window();
+        refresh();
+        g_boxreconstruct = 2;
+    }
+
     if (ckey == TAB) {
         if (g_shift == false) {
             if (g_britemode == 1) {
@@ -860,8 +897,9 @@
 
     if (g_data[int('E')] == 1) {
         g_data[int('E')] = 0;
-        message("Export SRC|is disabled");
-/*
+
+//        message("Export SRC|is disabled");
+
         message("Source|export");
         String fname = (g_spare ? sfilename : filename) +"_"+ (g_spare ? "spare" : "main") +".asm";
         MPWriteCtx ctx = new MPWriteCtx();
@@ -870,7 +908,6 @@
             message("EXPORTED");
         else
             message("COULD NOT|EXPORT");
-*/
     }
 
     if (g_data[int('A')] == 1)
--- a/mpui.js	Tue Aug 14 13:11:33 2018 +0300
+++ b/mpui.js	Tue Aug 14 13:12:43 2018 +0300
@@ -16,6 +16,7 @@
 var mpSources =
 [
   "buffers.pde",
+  "preview.pde",
   "draw_inputs.pde",
   "draw_outputs.pde",
   "draw_smart.pde",
--- a/multipaint.pde	Tue Aug 14 13:11:33 2018 +0300
+++ b/multipaint.pde	Tue Aug 14 13:12:43 2018 +0300
@@ -1,5 +1,5 @@
 //
-// Multipaint Metal Edition 22.5.2017
+// Multipaint 1.8.2018
 // Tero Heikkinen (Dr. TerrorZ)
 // ProcessingJS port and changes by Matti Hämäläinen (ccr/TNSP)
 // processing setup draw and file things here
@@ -193,7 +193,7 @@
     sussborder();
     setup_raster();
 
-    message("Multipaint|Metal|v22.5.2017");
+    message(" Multipaint|    2018|| v1.8.2018");
     message("*");
     g_dirty = true;
 }
@@ -469,12 +469,10 @@
     g_msy = mouseY;
 
     // Actual tool drawing
-    if (g_tooltrigger == 1)
-    {
-        // comes from mousepressed, or mousedragged
-        if (g_mx <= width - g_hedge && g_my <= height - g_vedge)
-            do_tool(g_mx, g_my, g_button);
-    }
+    if (g_tooltrigger == 1 &&
+        g_mx <= width - g_hedge &&
+        g_my <= height - g_vedge)
+        do_tool(g_mx, g_my, g_button);
 
     switcher(0);
 
@@ -498,6 +496,11 @@
     loadPixels();
     viewport();
     switcher(1);
+
+    if (g_pgrab)
+        preview_box_drag();
+
+    preview_window();
     update_ui(false);
     updatePixels();
 
--- a/preview.pde	Tue Aug 14 13:11:33 2018 +0300
+++ b/preview.pde	Tue Aug 14 13:12:43 2018 +0300
@@ -6,7 +6,7 @@
 int g_prevy = 0;
 int g_phandlex = 0;
 int g_phandley = 0;
-int g_pgrab = 0;
+boolean g_pgrab = false;
 final int g_pwindow_px = 16, g_pwindow_py = 16;
 
 int[] g_pwindow = new int[(320 + g_pwindow_px) * (256 + g_pwindow_py)];
@@ -14,13 +14,13 @@
 
 void preview_window()
 {
+    if (g_preview == 0)
+        return;
+
     int wix = X + 16;
     int ofx = g_prevx;
     int ofy = g_prevy;
 
-    if (g_preview == 0)
-        return;
-
     for (int y = 0; y < Y + g_pwindow_py; y++)
     {
         int ad = (ofy + y) * width;
@@ -47,15 +47,16 @@
 
 void update_preview_window() //done at mousereleased
 {
-    int wix = X + 16;
-
     if (g_preview == 0)
         return;
 
+    int wix = X + g_pwindow_px;
+
     for (int y = 0; y < Y + g_pwindow_py; y++)
     for (int x = 0; x < X + g_pwindow_py; x++)
     {
-        if (y == 0 || y == Y + 15 || x == 0 || x == X + 15)
+        if (y == 0 || y == Y + g_pwindow_py - 1 ||
+            x == 0 || x == X + g_pwindow_py - 1)
             g_pwindow[y * wix + x] = g_rgb[257];
         else
         if (y < 8 || x < 8 || y >= Y + 8 || x >= X + 8)