From 59de607850161a26863f92961d53caae7a2dabc8 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Tue, 06 Aug 2019 21:37:03 -0400
Subject: [PATCH] Pin button.

---
 Grafreed.java |  133 +++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 124 insertions(+), 9 deletions(-)

diff --git a/Grafreed.java b/Grafreed.java
index 088a313..ed3e880 100644
--- a/Grafreed.java
+++ b/Grafreed.java
@@ -23,6 +23,8 @@
     static float epsvertex2 = 0.001f;
     static boolean linkUV = false; // not uniform at load time
 
+    static boolean smoothmode = false;
+    
     static Wav wav = new Wav("/Users/nbriere/0ut/wavs/monoformat"); // output");
     static boolean hassound = false;
     static boolean savesound = false;
@@ -47,6 +49,79 @@
             
         }
     }
+
+    public static String RemovePrefix(String s, String prefix)
+    {
+        if (s != null && prefix != null && s.startsWith(prefix))
+        {
+            return s.substring(prefix.length());
+        }
+
+        return s;
+    }
+    
+    static void ParseFileSystem(java.io.File dir, iResourceCallBack callback, String prefix)
+    {
+        callback.CallBack(RemovePrefix(dir.toString(),prefix).split("/"));
+        File[] listFiles = dir.listFiles();
+        if (listFiles != null)
+        {
+            for (java.io.File file : listFiles)
+            {
+                ParseFileSystem(file, callback, prefix);
+            }
+        }
+    }
+        
+    static interface iResourceCallBack
+    {
+        void CallBack(String[] path);
+    }
+    
+    static void ParseResources(String path, iResourceCallBack callback)
+    {
+        java.io.File jarFile = new java.io.File(Grafreed.class.getProtectionDomain().getCodeSource().getLocation().getPath());
+
+        if (jarFile.isFile())
+        {
+            // Run with JAR file
+            try
+            {
+                java.util.jar.JarFile jar = new java.util.jar.JarFile(jarFile);
+                java.util.Enumeration<java.util.jar.JarEntry> entries = jar.entries(); //gives ALL entries in jar
+                while (entries.hasMoreElements())
+                {
+                    String name = entries.nextElement().getName();
+                    
+                    if (name.startsWith(path + "/"))
+                        callback.CallBack(RemovePrefix(name, path).split("/"));
+                }
+                jar.close();
+            } catch (Exception ex)
+            {
+                ex.printStackTrace();
+            }
+        } else
+        {
+            // Run with IDE
+            final java.net.URL url = Object3D.class.getResource("/" + path);
+            if (url != null)
+            {
+                try
+                {
+                    java.io.File apps = new java.io.File(url.toURI());
+                    ParseFileSystem(apps, callback, RemovePrefix(url.toString(), "file:"));
+//                    for (java.io.File app : apps.listFiles())
+//                    {
+//                        //System.out.println(RemovePrefix(app.toString(), RemovePrefix(url.toString(), "file:") + "/"));
+//                    }
+                } catch (Exception ex)
+                {
+                    ex.printStackTrace();
+                }
+            }
+        }
+    }
     
     public void init()
     {
@@ -56,7 +131,7 @@
         universe.material = new cMaterial();
         //god.addChild(universe);
         universe.name = "Applet";
-        grafreeD = this;
+        grafreed = this;
     }
 
     /**/
@@ -847,19 +922,59 @@
         
         //Monitor mon=MonitorFactory.start("myFirstMonitor");
         standAlone = true;
-        grafreeD = new Grafreed();
-        grafreeD.universe = new cGroup();
-        grafreeD.universe.name = "Grafreed";
-        grafreeD.universe.material = new cMaterial();
+        grafreed = new Grafreed();
+        grafreed.materials = ReadGFD(grafreed.getClass().getClassLoader().getResourceAsStream("gfd/materials.gfd"));
+        
+        grafreed.universe = new cGroup();
+        grafreed.universe.name = "Grafreed";
+        grafreed.universe.material = new cMaterial();
         //   theApplet3D.universe.textures = CameraPane.DEFAULT_TEXTURE;
 
-        grafreeD.universe.root = true;
-        grafreeD.universe.openEditWindow(null, true); //, true);
+        grafreed.universe.root = true;
+        grafreed.universe.openEditWindow(null, true); //, true);
         //mon.stop();
         //System.out.println(mon);
         //timeflow.app.TimeflowAppLauncher.GetTimeFlow();
     }
 
+    static Object3D materials;
+    
+    static Object3D ReadGFD(java.io.InputStream istream)
+    {
+        Object3D readobj = null;
+        
+        try
+        {
+            // Try compressed version first.
+            java.util.zip.GZIPInputStream zstream = new java.util.zip.GZIPInputStream(istream);
+            java.io.ObjectInputStream p = new java.io.ObjectInputStream(zstream);
+
+            readobj = (Object3D) p.readObject();
+            istream.close();
+
+            readobj.ResetDisplayList();
+        } catch (Exception e)
+        {
+            if (!e.toString().contains("GZIP"))
+                e.printStackTrace();
+            
+            try
+            {
+                java.io.ObjectInputStream p = new java.io.ObjectInputStream(istream);
+
+                readobj = (Object3D) p.readObject();
+                istream.close();
+
+                readobj.ResetDisplayList();
+            } catch (Exception e2)
+            {
+                e2.printStackTrace();
+            }
+        }
+        
+        return readobj;
+    }
+    
     // Timer callback
     public void actionPerformed(ActionEvent e)
     {
@@ -874,7 +989,7 @@
     static int depth = 0;
     static java.util.Stack stack = new java.util.Stack();
     static boolean traceoff = false; // true;
-    static float[] colorV = new float[5];
+    static float[] colorV = new float[4]; // 5];
 
     static void traceon()
     {
@@ -1083,7 +1198,7 @@
         } while (avail > 0 && numRead >= 0);
         return new String(data, 0, pos, "US-ASCII");
     }
-    public static Grafreed grafreeD;
+    public static Grafreed grafreed;
     public static boolean standAlone = true;
     public Composite universe;
     public static Object3D clipboard = new Object3D();

--
Gitblit v1.6.2