From 4113164b3be1e50251ac40d6fd65660f0a6c2e63 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Tue, 11 Jun 2019 18:46:21 -0400
Subject: [PATCH] Compressed undo stack.

---
 ObjEditor.java  |    9 +++++----
 CameraPane.java |    2 +-
 cRadio.java     |    2 +-
 Object3D.java   |    8 ++++++++
 4 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/CameraPane.java b/CameraPane.java
index 337c107..16d28d9 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -2265,7 +2265,7 @@
         LOOKAT ^= true;
     }
 
-    void ToggleRandom()
+    void ToggleSwitch()
     {
         SWITCH ^= true;
     }
diff --git a/ObjEditor.java b/ObjEditor.java
index 2cb5163..13331f4 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -2927,7 +2927,7 @@
             return;
         } else if (event.getSource() == toggleSwitchItem)
         {
-            cameraView.ToggleRandom();
+            cameraView.ToggleSwitch();
             cameraView.repaint();
             return;
         } else if (event.getSource() == toggleHandleItem)
@@ -3239,6 +3239,7 @@
 
     static public Object Uncompress(byte[] bytes)
     {
+        System.out.println("#bytes = " + bytes.length);
         try
         {
             ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
@@ -3308,7 +3309,7 @@
         copy.ExtractBigData(hashtable);
         
         //EditorFrame.m_MainFrame.requestFocusInWindow();
-        tab.graphs[tab.undoindex++] = (Object3D)clone(copy);
+        tab.graphs[tab.undoindex++] = Compress(copy);
 
         copy.RestoreBigData(hashtable);
         
@@ -3393,7 +3394,7 @@
 
         tab.undoindex -= 1;
 
-        CopyChanged(tab.graphs[tab.undoindex]);
+        CopyChanged((Object3D)Uncompress(tab.graphs[tab.undoindex]));
     }
 
     public void Redo()
@@ -3408,7 +3409,7 @@
 
         tab.undoindex += 1;
 
-        CopyChanged(tab.graphs[tab.undoindex]);
+        CopyChanged((Object3D)Uncompress(tab.graphs[tab.undoindex]));
     }
 
         void ImportGFD()
diff --git a/Object3D.java b/Object3D.java
index af581bd..5c5d71f 100644
--- a/Object3D.java
+++ b/Object3D.java
@@ -166,7 +166,15 @@
 void ExtractBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable)
 {
     if (hashtable.containsKey(GetUUID()))
+    {
+        Object3D o = hashtable.get(GetUUID());
+
+        assert(this.bRep == o.bRep);
+        if (this.bRep != null)
+            assert(this.bRep.support == o.transientrep);
+        
         return;
+    }
     
     Object3D o = new Object3D();
     o.bRep = this.bRep;
diff --git a/cRadio.java b/cRadio.java
index 54e8a60..83d4fc2 100644
--- a/cRadio.java
+++ b/cRadio.java
@@ -35,7 +35,7 @@
             camera = (Camera)Grafreed.clone(c);
     }
     
-    Object3D graphs[] = new Object3D[10000];
+    byte[] graphs[] = new byte[10000][];
     int undoindex = 0;
     
     Object3D object;

--
Gitblit v1.6.2