Normand Briere
2019-08-01 c49ad213b600f844e9070cb09390c3e6d3d13db4
ObjEditor.java
....@@ -41,11 +41,25 @@
4141 JFrame frame;
4242
4343 static ObjEditor theFrame;
44
+
45
+ public cGridBag GetSeparator()
46
+ {
47
+ cGridBag separator = new cGridBag();
48
+ separator.add(new JSeparator());
49
+ separator.preferredHeight = 5;
50
+ return separator;
51
+ }
4452
4553 cButton GetButton(String name, boolean border)
4654 {
4755 ImageIcon icon = GetIcon(name);
4856 return new cButton(icon, border);
57
+ }
58
+
59
+ cLabel GetLabel(String name, boolean border)
60
+ {
61
+ //ImageIcon icon = GetIcon(name);
62
+ return new cLabel(GetImage(name), border);
4963 }
5064
5165 cToggleButton GetToggleButton(String name, boolean border)
....@@ -60,26 +74,40 @@
6074 return new cCheckBox(icon, border);
6175 }
6276
63
- private ImageIcon GetIcon(String name)
77
+ ImageIcon GetIcon(String name)
6478 {
6579 try
6680 {
6781 BufferedImage image = javax.imageio.ImageIO.read(getClass().getClassLoader().getResourceAsStream(name));
6882
69
- if (image.getWidth() != 24 && image.getHeight() != 24)
70
- {
71
- BufferedImage resized = new BufferedImage(24, 24, image.getType());
72
- Graphics2D g = resized.createGraphics();
73
- g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
74
- //g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
75
- g.drawImage(image, 0, 0, 24, 24, 0, 0, image.getWidth(), image.getHeight(), null);
76
- g.dispose();
77
-
78
- image = resized;
79
- }
83
+// if (image.getWidth() > 48 && image.getHeight() > 48)
84
+// {
85
+// BufferedImage resized = new BufferedImage(48, 48, image.getType());
86
+// Graphics2D g = resized.createGraphics();
87
+// g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
88
+// //g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
89
+// g.drawImage(image, 0, 0, 48, 48, 0, 0, image.getWidth(), image.getHeight(), null);
90
+// g.dispose();
91
+//
92
+// image = resized;
93
+// }
8094
8195 javax.swing.ImageIcon icon = new javax.swing.ImageIcon(image);
8296 return icon;
97
+ }
98
+ catch (Exception e)
99
+ {
100
+ return null;
101
+ }
102
+ }
103
+
104
+ BufferedImage GetImage(String name)
105
+ {
106
+ try
107
+ {
108
+ BufferedImage image = javax.imageio.ImageIO.read(getClass().getClassLoader().getResourceAsStream(name));
109
+
110
+ return image;
83111 }
84112 catch (Exception e)
85113 {
....@@ -270,7 +298,7 @@
270298
271299 if (copy.versions == null)
272300 {
273
- copy.versions = new byte[100][];
301
+ copy.versions = new Object3D[100];
274302 copy.versionindex = -1;
275303 }
276304
....@@ -289,7 +317,7 @@
289317
290318 if (copy.versions == null)
291319 {
292
- copy.versions = new byte[100][];
320
+ copy.versions = new Object3D[100];
293321 copy.versionindex = -1;
294322 }
295323
....@@ -327,8 +355,8 @@
327355
328356 if (copy.versions == null)
329357 {
330
- copy.versions = new byte[100][];
331
- copy.versionindex = -1;
358
+// copy.versions = new byte[100][];
359
+// copy.versionindex = -1;
332360 }
333361
334362 SetupMenu();
....@@ -436,7 +464,7 @@
436464 editPanel.add(editCommandsPanel);
437465 editPanel.add(ctrlPanel);
438466
439
- toolboxPanel = new cGridBag().setVertical(false);
467
+ toolboxPanel = new cGridBag().setVertical(true);
440468 //toolboxPanel.setName("Toolbox");
441469
442470 materialPanel = new cGridBag().setVertical(true);
....@@ -822,7 +850,7 @@
822850 frame.validate();
823851 }
824852
825
- private byte[] CompressCopy()
853
+ private Object3D CompressCopy()
826854 {
827855 boolean temp = CameraPane.SWITCH;
828856 CameraPane.SWITCH = false;
....@@ -830,10 +858,11 @@
830858 copy.ExtractBigData(versiontable);
831859 // if (copy == client)
832860
833
- byte[] versions[] = copy.versions;
861
+ Object3D versions[] = copy.versions;
834862 copy.versions = null;
835863
836
- byte[] compress = Compress(copy);
864
+ //byte[] compress = Compress(copy);
865
+ Object3D compress = (Object3D)Grafreed.clone(copy);
837866
838867 copy.versions = versions;
839868
....@@ -974,7 +1003,7 @@
9741003 // NumberSlider vDivsField;
9751004 // JCheckBox endcaps;
9761005 JCheckBox liveCB;
977
- JCheckBox selectCB;
1006
+ JCheckBox selectableCB;
9781007 JCheckBox hideCB;
9791008 JCheckBox link2masterCB;
9801009 JCheckBox markCB;
....@@ -1186,13 +1215,16 @@
11861215
11871216 liveCB = AddCheckBox(setupPanel, "Live", copy.live);
11881217 liveCB.setToolTipText("Animate object");
1189
- selectCB = AddCheckBox(setupPanel, "Select", !copy.dontselect);
1190
- selectCB.setToolTipText("Make object selectable");
1218
+ selectableCB = AddCheckBox(setupPanel, "Select", !copy.dontselect);
1219
+ selectableCB.setToolTipText("Make object selectable");
11911220 // Return();
1221
+
11921222 hideCB = AddCheckBox(setupPanel, "Hide", copy.hide);
11931223 hideCB.setToolTipText("Hide object");
11941224 markCB = AddCheckBox(setupPanel, "Mark", copy.marked);
11951225 markCB.setToolTipText("As animation target transform");
1226
+
1227
+ ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false);
11961228
11971229 setupPanel2 = new cGridBag().setVertical(false);
11981230
....@@ -1519,22 +1551,28 @@
15191551 //tmp.setName("Edit");
15201552 objectPanel.add(materialPanel);
15211553 objectPanel.setIconAt(0, GetIcon("icons/material.png"));
1554
+ objectPanel.setToolTipTextAt(0, "Material panel");
1555
+
15221556 // JPanel north = new JPanel(new BorderLayout());
15231557 // north.setName("Edit");
15241558 // north.add(ctrlPanel, BorderLayout.NORTH);
15251559 // objectPanel.add(north);
15261560 objectPanel.add(editPanel);
15271561 objectPanel.setIconAt(1, GetIcon("icons/write.png"));
1562
+ objectPanel.setToolTipTextAt(1, "Edit panel");
15281563
15291564 //if (Globals.ADVANCED)
15301565 objectPanel.add(infoPanel);
15311566 objectPanel.setIconAt(2, GetIcon("icons/info.png"));
1567
+ objectPanel.setToolTipTextAt(2, "Info panel");
15321568
15331569 objectPanel.add(XYZPanel);
15341570 objectPanel.setIconAt(3, GetIcon("icons/XYZ.png"));
1571
+ objectPanel.setToolTipTextAt(3, "XYZ/RGB panel");
15351572
15361573 objectPanel.add(toolboxPanel);
15371574 objectPanel.setIconAt(4, GetIcon("icons/primitives.png"));
1575
+ objectPanel.setToolTipTextAt(4, "Objects/backgrounds panel");
15381576
15391577 /*
15401578 aConstraints.gridx = 0;
....@@ -1674,7 +1712,6 @@
16741712 frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
16751713 frame.addWindowListener(new WindowAdapter()
16761714 {
1677
-
16781715 public void windowClosing(WindowEvent e)
16791716 {
16801717 Close();
....@@ -1736,27 +1773,48 @@
17361773 //ctrlPanel.add(new JLabel("----------------------------------")); // , aConstraints);
17371774
17381775 cGridBag colorSection = new cGridBag().setVertical(true);
1776
+
1777
+ cGridBag huepanel = new cGridBag();
1778
+ cGridBag huelabel = new cGridBag();
1779
+ huelabel.add(GetLabel("icons/hue.png", false));
1780
+ huelabel.preferredWidth = 20;
1781
+ huepanel.add(new cGridBag()); // Label
1782
+ huepanel.add(huelabel); // Field/slider
1783
+
1784
+ huepanel.preferredHeight = 7;
1785
+
1786
+ colorSection.add(huepanel);
17391787
17401788 cGridBag color = new cGridBag();
1741
- color.add(colorLabel = new JLabel("Color/hue")); // , aConstraints);
1742
- colorLabel.setHorizontalAlignment(SwingConstants.TRAILING);
1743
- color.add(colorField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
1789
+
1790
+ color.add(colorLabel = new JLabel("Color/hue")); // , aConstraints);
1791
+ colorLabel.setHorizontalAlignment(SwingConstants.TRAILING);
1792
+ color.add(colorField = new cNumberSlider(this, 0.001, 1)); // , aConstraints);
1793
+
17441794 //colorField.preferredWidth = 200;
17451795 colorSection.add(color);
17461796
17471797 cGridBag modulation = new cGridBag();
17481798 modulation.add(modulationLabel = new JLabel("Saturation")); // , aConstraints);
17491799 modulationLabel.setHorizontalAlignment(SwingConstants.TRAILING);
1750
- modulation.add(modulationField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
1800
+ modulation.add(modulationField = new cNumberSlider(this, 0.001, 1)); // , aConstraints);
17511801 colorSection.add(modulation);
17521802
1803
+ cGridBag opacity = new cGridBag();
1804
+ opacity.add(opacityLabel = new JLabel("Opacity")); // , aConstraints);
1805
+ opacityLabel.setHorizontalAlignment(SwingConstants.TRAILING);
1806
+ opacity.add(opacityField = new cNumberSlider(this, 0.001, 1)); // , aConstraints);
1807
+ colorSection.add(opacity);
1808
+
1809
+ colorSection.add(GetSeparator());
1810
+
17531811 cGridBag texture = new cGridBag();
17541812 texture.add(textureLabel = new JLabel("Texture")); // , aConstraints);
17551813 textureLabel.setHorizontalAlignment(SwingConstants.TRAILING);
17561814 texture.add(textureField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
17571815 colorSection.add(texture);
17581816
1759
- panel.add(new JSeparator());
1817
+ panel.add(GetSeparator());
17601818
17611819 panel.add(colorSection);
17621820
....@@ -1812,7 +1870,7 @@
18121870 shadowbias.add(shadowbiasField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
18131871 diffuseSection.add(shadowbias);
18141872
1815
- panel.add(new JSeparator());
1873
+ panel.add(GetSeparator());
18161874
18171875 panel.add(diffuseSection);
18181876
....@@ -1875,7 +1933,7 @@
18751933 specularSection.add(anisoV);
18761934
18771935
1878
- panel.add(new JSeparator());
1936
+ panel.add(GetSeparator());
18791937
18801938 panel.add(specularSection);
18811939
....@@ -1900,12 +1958,6 @@
19001958 backlitLabel.setHorizontalAlignment(SwingConstants.TRAILING);
19011959 backlit.add(backlitField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
19021960 colorSection.add(backlit);
1903
-
1904
- cGridBag opacity = new cGridBag();
1905
- opacity.add(opacityLabel = new JLabel("Opacity")); // , aConstraints);
1906
- opacityLabel.setHorizontalAlignment(SwingConstants.TRAILING);
1907
- opacity.add(opacityField = new cNumberSlider(this, 0.001, 1, -0.5)); // , aConstraints);
1908
- colorSection.add(opacity);
19091961
19101962 //panel.add(new JSeparator());
19111963
....@@ -1951,7 +2003,7 @@
19512003 opacityPower.add(opacityPowerField = new cNumberSlider(this, 0.0, 10 /*10 dec 2013*/)); // , aConstraints);
19522004 textureSection.add(opacityPower);
19532005
1954
- panel.add(new JSeparator());
2006
+ panel.add(GetSeparator());
19552007
19562008 panel.add(textureSection);
19572009
....@@ -3250,7 +3302,7 @@
32503302 {
32513303 copy.live ^= true;
32523304 return;
3253
- } else if (event.getSource() == selectCB)
3305
+ } else if (event.getSource() == selectableCB)
32543306 {
32553307 copy.dontselect ^= true;
32563308 return;
....@@ -3514,6 +3566,7 @@
35143566
35153567 static public byte[] Compress(Object3D o)
35163568 {
3569
+ // Slower to actually compress.
35173570 try
35183571 {
35193572 ByteArrayOutputStream baos = new ByteArrayOutputStream();
....@@ -3641,15 +3694,14 @@
36413694
36423695 cRadio tab = GetCurrentTab();
36433696
3644
- byte[] compress = CompressCopy();
3697
+ Object3D compress = CompressCopy(); // Saved version. No need for "Replace".
36453698
36463699 boolean thesame = false;
36473700
3648
- // Quick heuristic using length. Works only when stream is compressed.
3649
- if (copy.versionindex > 0 && copy.versions[copy.versionindex-1] != null && Equal(compress, copy.versions[copy.versionindex-1]))
3650
- {
3651
- thesame = true;
3652
- }
3701
+// if (copy.versionindex > 0 && copy.versions[copy.versionindex-1] != null && Equal(compress, copy.versions[copy.versionindex-1]))
3702
+// {
3703
+// thesame = true;
3704
+// }
36533705
36543706 //EditorFrame.m_MainFrame.requestFocusInWindow();
36553707 if (!thesame)
....@@ -3708,6 +3760,9 @@
37083760
37093761 copy.clear();
37103762
3763
+ copy.skyboxname = obj.skyboxname;
3764
+ copy.skyboxext = obj.skyboxext;
3765
+
37113766 for (int i=0; i<obj.Size(); i++)
37123767 {
37133768 copy.add(obj.get(i));
....@@ -3806,7 +3861,7 @@
38063861
38073862 copy.versionindex -= 1;
38083863
3809
- CopyChanged((Object3D)Uncompress(copy.versions[copy.versionindex]));
3864
+ CopyChanged((Object3D)copy.versions[copy.versionindex]);
38103865
38113866 return true;
38123867 }
....@@ -3823,7 +3878,8 @@
38233878 return false;
38243879 }
38253880
3826
- CopyChanged((Object3D)Uncompress(copy.versions[copy.versionindex]));
3881
+ //CopyChanged((Object3D)Uncompress(copy.versions[copy.versionindex]));
3882
+ CopyChanged(copy.versions[copy.versionindex]);
38273883
38283884 return true;
38293885 }
....@@ -3860,7 +3916,7 @@
38603916
38613917 copy.versionindex += 1;
38623918
3863
- CopyChanged((Object3D)Uncompress(copy.versions[copy.versionindex]));
3919
+ CopyChanged(copy.versions[copy.versionindex]);
38643920
38653921 //if (!tab.user[tab.versionindex])
38663922 // tab.graphs[tab.versionindex] = null;
....@@ -4173,7 +4229,7 @@
41734229
41744230 if (copy.versions[version] != null)
41754231 {
4176
- CopyChanged((Object3D)Uncompress(copy.versions[copy.versionindex = version]));
4232
+ CopyChanged(copy.versions[copy.versionindex = version]);
41774233 }
41784234
41794235 return;
....@@ -4768,7 +4824,9 @@
47684824 readobj.ResetDisplayList();
47694825 } catch (Exception e)
47704826 {
4771
- //e.printStackTrace();
4827
+ if (!e.toString().contains("GZIP"))
4828
+ e.printStackTrace();
4829
+
47724830 try
47734831 {
47744832 java.io.FileInputStream istream = new java.io.FileInputStream(fullname);
....@@ -4848,6 +4906,8 @@
48484906 {
48494907 //readobj.deepCopySelf(copy);
48504908 copy.clear(); // june 2014
4909
+ copy.skyboxname = readobj.skyboxname;
4910
+ copy.skyboxext = readobj.skyboxext;
48514911 for (int i = 0; i < readobj.size(); i++)
48524912 {
48534913 Object3D child = readobj.get(i); // reserve(i);
....@@ -4888,6 +4948,7 @@
48884948 }
48894949 } catch (ClassCastException e)
48904950 {
4951
+ e.printStackTrace();
48914952 assert (false);
48924953 Composite c = (Composite) copy;
48934954 c.children.clear();
....@@ -4903,7 +4964,7 @@
49034964
49044965 if (copy.versions == null)
49054966 {
4906
- copy.versions = new byte[100][];
4967
+ copy.versions = new Object3D[100];
49074968 copy.versionindex = -1;
49084969 }
49094970
....@@ -5018,6 +5079,7 @@
50185079 //ps.print(buffer.toString());
50195080 } catch (IOException e)
50205081 {
5082
+ e.printStackTrace();
50215083 }
50225084 }
50235085