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