joonsrenderer 1.1-java → 1.3.1-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. checksums.yaml +5 -5
  2. data/.mvn/extensions.xml +1 -1
  3. data/.mvn/wrapper/MavenWrapperDownloader.java +117 -0
  4. data/.mvn/wrapper/maven-wrapper.properties +2 -0
  5. data/CHANGELOG.md +12 -1
  6. data/README.md +1 -1
  7. data/Rakefile +6 -1
  8. data/docs/Gemfile +2 -0
  9. data/docs/_config.yml +3 -0
  10. data/docs/_includes/header.html +1 -1
  11. data/docs/_includes/top.html +11 -0
  12. data/docs/_layouts/default.html +6 -15
  13. data/docs/_posts/2017-01-06-media.md +101 -0
  14. data/docs/_posts/2017-01-08-animated_ray_tracing.md +2 -2
  15. data/docs/_posts/2017-01-08-resources.md +14 -0
  16. data/docs/about.md +2 -2
  17. data/docs/assets/media_captured.png +0 -0
  18. data/docs/assets/media_rendered.png +0 -0
  19. data/joonsrenderer.gemspec +2 -2
  20. data/lib/commons.compiler/module-info.class +0 -0
  21. data/lib/commons.compiler/module-info.java +7 -0
  22. data/lib/janino/module-info.class +0 -0
  23. data/lib/janino/module-info.java +5 -0
  24. data/lib/joonsrenderer/version.rb +1 -1
  25. data/mvnw +310 -0
  26. data/mvnw.cmd +182 -0
  27. data/pom.rb +22 -22
  28. data/pom.xml +32 -17
  29. data/src/{test/java/a_maintest.java → a_maintest.java} +1 -1
  30. data/src/main/java/SunflowGUI.java +295 -351
  31. data/src/main/java/joons/JRFiller.java +15 -23
  32. data/src/main/java/joons/JoonsRenderer.java +6 -5
  33. data/src/main/java/org/sunflow/AsciiFileSunflowAPI.java +1 -1
  34. data/src/main/java/org/sunflow/BinaryFileSunflowAPI.java +1 -1
  35. data/src/main/java/org/sunflow/SunflowAPI.java +5 -5
  36. data/src/main/java/org/sunflow/core/GIEngine.java +3 -1
  37. data/src/main/java/org/sunflow/core/Geometry.java +1 -1
  38. data/src/main/java/org/sunflow/core/ImageSampler.java +3 -0
  39. data/src/main/java/org/sunflow/core/InstanceList.java +1 -1
  40. data/src/main/java/org/sunflow/core/IntersectionState.java +7 -6
  41. data/src/main/java/org/sunflow/core/ParameterList.java +3 -2
  42. data/src/main/java/org/sunflow/core/PhotonStore.java +1 -0
  43. data/src/main/java/org/sunflow/core/Ray.java +4 -3
  44. data/src/main/java/org/sunflow/core/TextureCache.java +1 -1
  45. data/src/main/java/org/sunflow/core/accel/BoundingIntervalHierarchy.java +1 -1
  46. data/src/main/java/org/sunflow/core/accel/KDTree.java +1 -1
  47. data/src/main/java/org/sunflow/core/photonmap/CausticPhotonMap.java +2 -2
  48. data/src/main/java/org/sunflow/core/photonmap/GlobalPhotonMap.java +2 -2
  49. data/src/main/java/org/sunflow/core/renderer/BucketRenderer.java +3 -1
  50. data/src/main/java/org/sunflow/image/writers/EXRBitmapWriter.java +28 -19
  51. data/src/main/java/org/sunflow/image/writers/PNGBitmapWriter.java +5 -0
  52. data/src/main/java/org/sunflow/image/writers/TGABitmapWriter.java +20 -14
  53. data/src/main/java/org/sunflow/system/BenchmarkFramework.java +2 -2
  54. data/src/main/java/org/sunflow/system/RenderGlobalsPanel.java +5 -4
  55. metadata +20 -8
  56. data/docs/_includes/head.html +0 -15
@@ -0,0 +1,182 @@
1
+ @REM ----------------------------------------------------------------------------
2
+ @REM Licensed to the Apache Software Foundation (ASF) under one
3
+ @REM or more contributor license agreements. See the NOTICE file
4
+ @REM distributed with this work for additional information
5
+ @REM regarding copyright ownership. The ASF licenses this file
6
+ @REM to you under the Apache License, Version 2.0 (the
7
+ @REM "License"); you may not use this file except in compliance
8
+ @REM with the License. You may obtain a copy of the License at
9
+ @REM
10
+ @REM http://www.apache.org/licenses/LICENSE-2.0
11
+ @REM
12
+ @REM Unless required by applicable law or agreed to in writing,
13
+ @REM software distributed under the License is distributed on an
14
+ @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ @REM KIND, either express or implied. See the License for the
16
+ @REM specific language governing permissions and limitations
17
+ @REM under the License.
18
+ @REM ----------------------------------------------------------------------------
19
+
20
+ @REM ----------------------------------------------------------------------------
21
+ @REM Maven2 Start Up Batch script
22
+ @REM
23
+ @REM Required ENV vars:
24
+ @REM JAVA_HOME - location of a JDK home dir
25
+ @REM
26
+ @REM Optional ENV vars
27
+ @REM M2_HOME - location of maven2's installed home dir
28
+ @REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
29
+ @REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
30
+ @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
31
+ @REM e.g. to debug Maven itself, use
32
+ @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
33
+ @REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
34
+ @REM ----------------------------------------------------------------------------
35
+
36
+ @REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
37
+ @echo off
38
+ @REM set title of command window
39
+ title %0
40
+ @REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
41
+ @if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
42
+
43
+ @REM set %HOME% to equivalent of $HOME
44
+ if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
45
+
46
+ @REM Execute a user defined script before this one
47
+ if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
48
+ @REM check for pre script, once with legacy .bat ending and once with .cmd ending
49
+ if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
50
+ if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
51
+ :skipRcPre
52
+
53
+ @setlocal
54
+
55
+ set ERROR_CODE=0
56
+
57
+ @REM To isolate internal variables from possible post scripts, we use another setlocal
58
+ @setlocal
59
+
60
+ @REM ==== START VALIDATION ====
61
+ if not "%JAVA_HOME%" == "" goto OkJHome
62
+
63
+ echo.
64
+ echo Error: JAVA_HOME not found in your environment. >&2
65
+ echo Please set the JAVA_HOME variable in your environment to match the >&2
66
+ echo location of your Java installation. >&2
67
+ echo.
68
+ goto error
69
+
70
+ :OkJHome
71
+ if exist "%JAVA_HOME%\bin\java.exe" goto init
72
+
73
+ echo.
74
+ echo Error: JAVA_HOME is set to an invalid directory. >&2
75
+ echo JAVA_HOME = "%JAVA_HOME%" >&2
76
+ echo Please set the JAVA_HOME variable in your environment to match the >&2
77
+ echo location of your Java installation. >&2
78
+ echo.
79
+ goto error
80
+
81
+ @REM ==== END VALIDATION ====
82
+
83
+ :init
84
+
85
+ @REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
86
+ @REM Fallback to current working directory if not found.
87
+
88
+ set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
89
+ IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
90
+
91
+ set EXEC_DIR=%CD%
92
+ set WDIR=%EXEC_DIR%
93
+ :findBaseDir
94
+ IF EXIST "%WDIR%"\.mvn goto baseDirFound
95
+ cd ..
96
+ IF "%WDIR%"=="%CD%" goto baseDirNotFound
97
+ set WDIR=%CD%
98
+ goto findBaseDir
99
+
100
+ :baseDirFound
101
+ set MAVEN_PROJECTBASEDIR=%WDIR%
102
+ cd "%EXEC_DIR%"
103
+ goto endDetectBaseDir
104
+
105
+ :baseDirNotFound
106
+ set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
107
+ cd "%EXEC_DIR%"
108
+
109
+ :endDetectBaseDir
110
+
111
+ IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
112
+
113
+ @setlocal EnableExtensions EnableDelayedExpansion
114
+ for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
115
+ @endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
116
+
117
+ :endReadAdditionalConfig
118
+
119
+ SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
120
+ set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
121
+ set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
122
+
123
+ set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
124
+
125
+ FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
126
+ IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
127
+ )
128
+
129
+ @REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
130
+ @REM This allows using the maven wrapper in projects that prohibit checking in binary data.
131
+ if exist %WRAPPER_JAR% (
132
+ if "%MVNW_VERBOSE%" == "true" (
133
+ echo Found %WRAPPER_JAR%
134
+ )
135
+ ) else (
136
+ if not "%MVNW_REPOURL%" == "" (
137
+ SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
138
+ )
139
+ if "%MVNW_VERBOSE%" == "true" (
140
+ echo Couldn't find %WRAPPER_JAR%, downloading it ...
141
+ echo Downloading from: %DOWNLOAD_URL%
142
+ )
143
+
144
+ powershell -Command "&{"^
145
+ "$webclient = new-object System.Net.WebClient;"^
146
+ "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
147
+ "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
148
+ "}"^
149
+ "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
150
+ "}"
151
+ if "%MVNW_VERBOSE%" == "true" (
152
+ echo Finished downloading %WRAPPER_JAR%
153
+ )
154
+ )
155
+ @REM End of extension
156
+
157
+ @REM Provide a "standardized" way to retrieve the CLI args that will
158
+ @REM work with both Windows and non-Windows executions.
159
+ set MAVEN_CMD_LINE_ARGS=%*
160
+
161
+ %MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
162
+ if ERRORLEVEL 1 goto error
163
+ goto end
164
+
165
+ :error
166
+ set ERROR_CODE=1
167
+
168
+ :end
169
+ @endlocal & set ERROR_CODE=%ERROR_CODE%
170
+
171
+ if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
172
+ @REM check for post script, once with legacy .bat ending and once with .cmd ending
173
+ if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
174
+ if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
175
+ :skipRcPost
176
+
177
+ @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
178
+ if "%MAVEN_BATCH_PAUSE%" == "on" pause
179
+
180
+ if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
181
+
182
+ exit /B %ERROR_CODE%
data/pom.rb CHANGED
@@ -2,11 +2,11 @@ require 'fileutils'
2
2
  project 'joonsrenderer' do
3
3
 
4
4
  model_version '4.0.0'
5
- id 'joons:joonsrenderer:1.1-SNAPSHOT'
5
+ id 'joons:joonsrenderer:1.3.0'
6
6
  packaging 'jar'
7
7
  description 'joonsrenderer for propane and JRubyArt'
8
8
  organization 'ruby-processing', 'https://ruby-processing.github.io'
9
- { 'fpsunflower' => 'Christopher Kulla', 'geneome' => 'Not Known', 'joonhyublee' => 'Joon Hyub Lee', 'monkstone' => 'Martin Prout' }.each do |key, value|
9
+ { 'fpsunflower' => 'Christopher Kulla', 'geneome' => 'Eugene Reilly', 'joonhyublee' => 'Joon Hyub Lee', 'monkstone' => 'Martin Prout' }.each do |key, value|
10
10
  developer key do
11
11
  name value
12
12
  roles 'developer'
@@ -18,12 +18,10 @@ project 'joonsrenderer' do
18
18
  properties( 'source.directory' => 'src',
19
19
  'joonsrenderer.basedir' => '${project.basedir}',
20
20
  'polyglot.dump.pom' => 'pom.xml',
21
- 'maven.compiler.source' => '1.8',
22
21
  'project.build.sourceEncoding' => 'utf-8',
23
- 'maven.compiler.target' => '1.8',
24
- 'janino.version' => '3.0.6',
22
+ 'janino.version' => '3.1.3',
25
23
  'jogl.version' => '2.3.2',
26
- 'processing.version' => '3.2.3'
24
+ 'processing.version' => '3.3.7'
27
25
  )
28
26
 
29
27
  jar 'org.processing:core:${processing.version}'
@@ -33,8 +31,8 @@ project 'joonsrenderer' do
33
31
  jar('org.codehaus.janino:janino:${janino.version}')
34
32
 
35
33
  overrides do
36
- plugin :resources, '2.6'
37
- plugin :dependency, '2.10' do
34
+ plugin :resources, '3.1.0'
35
+ plugin :dependency, '3.1.2' do
38
36
  execute_goals( id: 'default-cli',
39
37
  artifactItems:[
40
38
  { groupId: 'org.codehaus.janino',
@@ -52,24 +50,26 @@ project 'joonsrenderer' do
52
50
  ]
53
51
  )
54
52
  end
55
-
56
- plugin( :compiler, '3.6.0',
57
- source: '${maven.compiler.source}',
58
- target: '${maven.compiler.target}'
59
- )
60
- plugin( :javadoc, '2.10.4',
61
- detect_offline_links: 'false',
62
- )
63
- plugin( :jar, '3.0.2',
64
- 'archive' => {
65
- 'manifestFile' => 'MANIFEST.MF'
66
- }
67
- )
53
+ plugin(:compiler, '3.8.1',
54
+ 'release' => '11')
55
+ plugin(:javadoc, '2.10.4',
56
+ 'detectOfflineLinks' => 'false',
57
+ 'links' => ['${processing.api}',
58
+ '${jruby.api}'])
59
+ plugin(:jar, '3.2.0',
60
+ 'archive' => {
61
+ 'manifestEntries' => {
62
+ 'Automatic-Module-Name' => 'joonsrenderer'
63
+ }
64
+ })
65
+ plugin :jdeps, '3.1.2' do
66
+ execute_goals 'jdkinternals', 'test-jdkinternals'
67
+ end
68
68
  end
69
69
 
70
70
  build do
71
71
  default_goal 'package'
72
- source_directory 'src'
72
+ source_directory '${source.directory}/main/java'
73
73
  final_name 'joonsrenderer'
74
74
  end
75
75
  end
data/pom.xml CHANGED
@@ -6,12 +6,12 @@ DO NOT MODIFIY - GENERATED CODE
6
6
 
7
7
 
8
8
  -->
9
- <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
9
+ <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
10
10
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
11
11
  <modelVersion>4.0.0</modelVersion>
12
12
  <groupId>joons</groupId>
13
13
  <artifactId>joonsrenderer</artifactId>
14
- <version>1.1-SNAPSHOT</version>
14
+ <version>1.3.0</version>
15
15
  <name>joonsrenderer</name>
16
16
  <description>joonsrenderer for propane and JRubyArt</description>
17
17
  <organization>
@@ -34,7 +34,7 @@ DO NOT MODIFIY - GENERATED CODE
34
34
  </developer>
35
35
  <developer>
36
36
  <id>geneome</id>
37
- <name>Not Known</name>
37
+ <name>Eugene Reilly</name>
38
38
  <roles>
39
39
  <role>developer</role>
40
40
  </roles>
@@ -59,15 +59,13 @@ DO NOT MODIFIY - GENERATED CODE
59
59
  <url>https://github.com/monkstone/joonsrenderer/issues</url>
60
60
  </issueManagement>
61
61
  <properties>
62
+ <janino.version>3.1.3</janino.version>
62
63
  <jogl.version>2.3.2</jogl.version>
63
- <source.directory>src</source.directory>
64
64
  <joonsrenderer.basedir>${project.basedir}</joonsrenderer.basedir>
65
- <maven.compiler.target>1.8</maven.compiler.target>
66
- <processing.version>3.2.3</processing.version>
67
- <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
68
- <janino.version>3.0.6</janino.version>
69
65
  <polyglot.dump.pom>pom.xml</polyglot.dump.pom>
70
- <maven.compiler.source>1.8</maven.compiler.source>
66
+ <processing.version>3.3.7</processing.version>
67
+ <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
68
+ <source.directory>src</source.directory>
71
69
  </properties>
72
70
  <dependencies>
73
71
  <dependency>
@@ -97,18 +95,18 @@ DO NOT MODIFIY - GENERATED CODE
97
95
  </dependency>
98
96
  </dependencies>
99
97
  <build>
100
- <sourceDirectory>src</sourceDirectory>
98
+ <sourceDirectory>${source.directory}/main/java</sourceDirectory>
101
99
  <defaultGoal>package</defaultGoal>
102
100
  <finalName>joonsrenderer</finalName>
103
101
  <pluginManagement>
104
102
  <plugins>
105
103
  <plugin>
106
104
  <artifactId>maven-resources-plugin</artifactId>
107
- <version>2.6</version>
105
+ <version>3.1.0</version>
108
106
  </plugin>
109
107
  <plugin>
110
108
  <artifactId>maven-dependency-plugin</artifactId>
111
- <version>2.10</version>
109
+ <version>3.1.2</version>
112
110
  <executions>
113
111
  <execution>
114
112
  <id>default-cli</id>
@@ -135,10 +133,9 @@ DO NOT MODIFIY - GENERATED CODE
135
133
  </plugin>
136
134
  <plugin>
137
135
  <artifactId>maven-compiler-plugin</artifactId>
138
- <version>3.6.0</version>
136
+ <version>3.8.1</version>
139
137
  <configuration>
140
- <source>${maven.compiler.source}</source>
141
- <target>${maven.compiler.target}</target>
138
+ <release>11</release>
142
139
  </configuration>
143
140
  </plugin>
144
141
  <plugin>
@@ -146,17 +143,35 @@ DO NOT MODIFIY - GENERATED CODE
146
143
  <version>2.10.4</version>
147
144
  <configuration>
148
145
  <detectOfflineLinks>false</detectOfflineLinks>
146
+ <links>
147
+ <link>${processing.api}</link>
148
+ <link>${jruby.api}</link>
149
+ </links>
149
150
  </configuration>
150
151
  </plugin>
151
152
  <plugin>
152
153
  <artifactId>maven-jar-plugin</artifactId>
153
- <version>3.0.2</version>
154
+ <version>3.2.0</version>
154
155
  <configuration>
155
156
  <archive>
156
- <manifestFile>MANIFEST.MF</manifestFile>
157
+ <manifestEntries>
158
+ <Automatic-Module-Name>joonsrenderer</Automatic-Module-Name>
159
+ </manifestEntries>
157
160
  </archive>
158
161
  </configuration>
159
162
  </plugin>
163
+ <plugin>
164
+ <artifactId>maven-jdeps-plugin</artifactId>
165
+ <version>3.1.2</version>
166
+ <executions>
167
+ <execution>
168
+ <goals>
169
+ <goal>jdkinternals</goal>
170
+ <goal>test-jdkinternals</goal>
171
+ </goals>
172
+ </execution>
173
+ </executions>
174
+ </plugin>
160
175
  </plugins>
161
176
  </pluginManagement>
162
177
  </build>
@@ -1,7 +1,7 @@
1
1
  import processing.core.PApplet;
2
2
  import joons.JoonsRenderer;
3
3
 
4
- @SuppressWarnings("serial")
4
+
5
5
  public class a_maintest extends PApplet {
6
6
 
7
7
  JoonsRenderer jr;
@@ -1,3 +1,4 @@
1
+ package main.java;
1
2
 
2
3
  import java.awt.BorderLayout;
3
4
  import java.awt.Dimension;
@@ -5,8 +6,8 @@ import java.awt.FlowLayout;
5
6
  import java.awt.Toolkit;
6
7
  import java.awt.datatransfer.DataFlavor;
7
8
  import java.awt.datatransfer.Transferable;
9
+ import java.awt.datatransfer.UnsupportedFlavorException;
8
10
  import java.awt.event.ActionEvent;
9
- import java.awt.event.ActionListener;
10
11
  import java.beans.PropertyVetoException;
11
12
  import java.io.BufferedReader;
12
13
  import java.io.File;
@@ -40,6 +41,7 @@ import javax.swing.SwingUtilities;
40
41
  import javax.swing.TransferHandler;
41
42
  import javax.swing.UIManager;
42
43
  import javax.swing.UIManager.LookAndFeelInfo;
44
+ import javax.swing.UnsupportedLookAndFeelException;
43
45
  import javax.swing.filechooser.FileFilter;
44
46
  import javax.swing.plaf.metal.DefaultMetalTheme;
45
47
  import javax.swing.plaf.metal.MetalLookAndFeel;
@@ -198,196 +200,216 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
198
200
  String translateFilename = null;
199
201
  int frameStart = 1, frameStop = 1;
200
202
  while (i < args.length) {
201
- if (args[i].equals("-o")) {
202
- if (i > args.length - 2) {
203
- usage(false);
204
- }
205
- filename = args[i + 1];
206
- i += 2;
207
- } else if (args[i].equals("-nogui")) {
208
- showFrame = false;
209
- i++;
210
- } else if (args[i].equals("-ipr")) {
211
- sampler = "ipr";
212
- i++;
213
- } else if (args[i].equals("-threads")) {
214
- if (i > args.length - 2) {
215
- usage(false);
216
- }
217
- threads = Integer.parseInt(args[i + 1]);
218
- i += 2;
219
- } else if (args[i].equals("-lopri")) {
220
- lowPriority = true;
221
- i++;
222
- } else if (args[i].equals("-hipri")) {
223
- lowPriority = false;
224
- i++;
225
- } else if (args[i].equals("-sampler")) {
226
- if (i > args.length - 2) {
227
- usage(false);
228
- }
229
- sampler = args[i + 1];
230
- i += 2;
231
- } else if (args[i].equals("-smallmesh")) {
232
- TriangleMesh.setSmallTriangles(true);
233
- i++;
234
- } else if (args[i].equals("-dumpkd")) {
235
- KDTree.setDumpMode(true, "kdtree");
236
- i++;
237
- } else if (args[i].equals("-buildonly")) {
238
- noRender = true;
239
- i++;
240
- } else if (args[i].equals("-showaa")) {
241
- showAA = true;
242
- i++;
243
- } else if (args[i].equals("-nogi")) {
244
- noGI = true;
245
- i++;
246
- } else if (args[i].equals("-nocaustics")) {
247
- noCaustics = true;
248
- i++;
249
- } else if (args[i].equals("-pathgi")) {
250
- if (i > args.length - 2) {
251
- usage(false);
252
- }
253
- pathGI = Integer.parseInt(args[i + 1]);
254
- i += 2;
255
- } else if (args[i].equals("-quick_ambocc")) {
256
- if (i > args.length - 2) {
257
- usage(false);
258
- }
259
- maxDist = Float.parseFloat(args[i + 1]);
260
- shaderOverride = "ambient_occlusion"; // new
261
- // AmbientOcclusionShader(Color.WHITE,
262
- // d);
263
- i += 2;
264
- } else if (args[i].equals("-quick_uvs")) {
265
- if (i > args.length - 1) {
266
- usage(false);
267
- }
268
- shaderOverride = "show_uvs";
269
- i++;
270
- } else if (args[i].equals("-quick_normals")) {
271
- if (i > args.length - 1) {
272
- usage(false);
273
- }
274
- shaderOverride = "show_normals";
275
- i++;
276
- } else if (args[i].equals("-quick_id")) {
277
- if (i > args.length - 1) {
278
- usage(false);
279
- }
280
- shaderOverride = "show_instance_id";
281
- i++;
282
- } else if (args[i].equals("-quick_prims")) {
283
- if (i > args.length - 1) {
284
- usage(false);
285
- }
286
- shaderOverride = "show_primitive_id";
287
- i++;
288
- } else if (args[i].equals("-quick_gray")) {
289
- if (i > args.length - 1) {
290
- usage(false);
291
- }
292
- shaderOverride = "quick_gray";
293
- i++;
294
- } else if (args[i].equals("-quick_wire")) {
295
- if (i > args.length - 1) {
296
- usage(false);
297
- }
298
- shaderOverride = "wireframe";
299
- i++;
300
- } else if (args[i].equals("-resolution")) {
301
- if (i > args.length - 3) {
302
- usage(false);
303
- }
304
- resolutionW = Integer.parseInt(args[i + 1]);
305
- resolutionH = Integer.parseInt(args[i + 2]);
306
- i += 3;
307
- } else if (args[i].equals("-aa")) {
308
- if (i > args.length - 3) {
309
- usage(false);
310
- }
311
- aaMin = Integer.parseInt(args[i + 1]);
312
- aaMax = Integer.parseInt(args[i + 2]);
313
- i += 3;
314
- } else if (args[i].equals("-samples")) {
315
- if (i > args.length - 2) {
316
- usage(false);
317
- }
318
- samples = Integer.parseInt(args[i + 1]);
319
- i += 2;
320
- } else if (args[i].equals("-bucket")) {
321
- if (i > args.length - 3) {
322
- usage(false);
323
- }
324
- bucketSize = Integer.parseInt(args[i + 1]);
325
- bucketOrder = args[i + 2];
326
- i += 3;
327
- } else if (args[i].equals("-bake")) {
328
- if (i > args.length - 2) {
329
- usage(false);
330
- }
331
- bakingName = args[i + 1];
332
- i += 2;
333
- } else if (args[i].equals("-bakedir")) {
334
- if (i > args.length - 2) {
335
- usage(false);
336
- }
337
- String baketype = args[i + 1];
338
- if (baketype.equals("view")) {
339
- bakeViewdep = true;
340
- } else if (baketype.equals("ortho")) {
341
- bakeViewdep = false;
342
- } else {
343
- usage(false);
344
- }
345
- i += 2;
346
- } else if (args[i].equals("-filter")) {
347
- if (i > args.length - 2) {
348
- usage(false);
349
- }
350
- filterType = args[i + 1];
351
- i += 2;
352
- } else if (args[i].equals("-bench")) {
353
- runBenchmark = true;
354
- i++;
355
- } else if (args[i].equals("-rtbench")) {
356
- runRTBenchmark = true;
357
- i++;
358
- } else if (args[i].equals("-frame")) {
359
- if (i > args.length - 2) {
360
- usage(false);
361
- }
362
- frameStart = frameStop = Integer.parseInt(args[i + 1]);
363
- i += 2;
364
- } else if (args[i].equals("-anim")) {
365
- if (i > args.length - 3) {
366
- usage(false);
367
- }
368
- frameStart = Integer.parseInt(args[i + 1]);
369
- frameStop = Integer.parseInt(args[i + 2]);
370
- i += 3;
371
- } else if (args[i].equals("-v")) {
372
- if (i > args.length - 2) {
373
- usage(false);
374
- }
375
- UI.verbosity(Integer.parseInt(args[i + 1]));
376
- i += 2;
377
- } else if (args[i].equals("-translate")) {
378
- if (i > args.length - 2) {
379
- usage(false);
380
- }
381
- translateFilename = args[i + 1];
382
- i += 2;
383
- } else if (args[i].equals("-h") || args[i].equals("-help")) {
384
- usage(true);
385
- } else {
386
- if (input != null) {
387
- usage(false);
203
+ switch (args[i]) {
204
+ case "-o":
205
+ if (i > args.length - 2) {
206
+ usage(false);
207
+ } filename = args[i + 1];
208
+ i += 2;
209
+ break;
210
+ case "-nogui":
211
+ showFrame = false;
212
+ i++;
213
+ break;
214
+ case "-ipr":
215
+ sampler = "ipr";
216
+ i++;
217
+ break;
218
+ case "-threads":
219
+ if (i > args.length - 2) {
220
+ usage(false);
221
+ } threads = Integer.parseInt(args[i + 1]);
222
+ i += 2;
223
+ break;
224
+ case "-lopri":
225
+ lowPriority = true;
226
+ i++;
227
+ break;
228
+ case "-hipri":
229
+ lowPriority = false;
230
+ i++;
231
+ break;
232
+ case "-sampler":
233
+ if (i > args.length - 2) {
234
+ usage(false);
235
+ } sampler = args[i + 1];
236
+ i += 2;
237
+ break;
238
+ case "-smallmesh":
239
+ TriangleMesh.setSmallTriangles(true);
240
+ i++;
241
+ break;
242
+ case "-dumpkd":
243
+ KDTree.setDumpMode(true, "kdtree");
244
+ i++;
245
+ break;
246
+ case "-buildonly":
247
+ noRender = true;
248
+ i++;
249
+ break;
250
+ case "-showaa":
251
+ showAA = true;
252
+ i++;
253
+ break;
254
+ case "-nogi":
255
+ noGI = true;
256
+ i++;
257
+ break;
258
+ case "-nocaustics":
259
+ noCaustics = true;
260
+ i++;
261
+ break;
262
+ case "-pathgi":
263
+ if (i > args.length - 2) {
264
+ usage(false);
265
+ } pathGI = Integer.parseInt(args[i + 1]);
266
+ i += 2;
267
+ break;
268
+ case "-quick_ambocc":
269
+ if (i > args.length - 2) {
270
+ usage(false);
271
+ } maxDist = Float.parseFloat(args[i + 1]);
272
+ shaderOverride = "ambient_occlusion"; // new
273
+ // AmbientOcclusionShader(Color.WHITE,
274
+ // d);
275
+ i += 2;
276
+ break;
277
+ case "-quick_uvs":
278
+ if (i > args.length - 1) {
279
+ usage(false);
280
+ } shaderOverride = "show_uvs";
281
+ i++;
282
+ break;
283
+ case "-quick_normals":
284
+ if (i > args.length - 1) {
285
+ usage(false);
286
+ } shaderOverride = "show_normals";
287
+ i++;
288
+ break;
289
+ case "-quick_id":
290
+ if (i > args.length - 1) {
291
+ usage(false);
292
+ } shaderOverride = "show_instance_id";
293
+ i++;
294
+ break;
295
+ case "-quick_prims":
296
+ if (i > args.length - 1) {
297
+ usage(false);
298
+ } shaderOverride = "show_primitive_id";
299
+ i++;
300
+ break;
301
+ case "-quick_gray":
302
+ if (i > args.length - 1) {
303
+ usage(false);
304
+ } shaderOverride = "quick_gray";
305
+ i++;
306
+ break;
307
+ case "-quick_wire":
308
+ if (i > args.length - 1) {
309
+ usage(false);
310
+ } shaderOverride = "wireframe";
311
+ i++;
312
+ break;
313
+ case "-resolution":
314
+ if (i > args.length - 3) {
315
+ usage(false);
316
+ } resolutionW = Integer.parseInt(args[i + 1]);
317
+ resolutionH = Integer.parseInt(args[i + 2]);
318
+ i += 3;
319
+ break;
320
+ case "-aa":
321
+ if (i > args.length - 3) {
322
+ usage(false);
323
+ } aaMin = Integer.parseInt(args[i + 1]);
324
+ aaMax = Integer.parseInt(args[i + 2]);
325
+ i += 3;
326
+ break;
327
+ case "-samples":
328
+ if (i > args.length - 2) {
329
+ usage(false);
330
+ } samples = Integer.parseInt(args[i + 1]);
331
+ i += 2;
332
+ break;
333
+ case "-bucket":
334
+ if (i > args.length - 3) {
335
+ usage(false);
336
+ } bucketSize = Integer.parseInt(args[i + 1]);
337
+ bucketOrder = args[i + 2];
338
+ i += 3;
339
+ break;
340
+ case "-bake":
341
+ if (i > args.length - 2) {
342
+ usage(false);
343
+ } bakingName = args[i + 1];
344
+ i += 2;
345
+ break;
346
+ case "-bakedir":
347
+ if (i > args.length - 2) {
348
+ usage(false);
349
+ } String baketype = args[i + 1];
350
+ switch (baketype) {
351
+ case "view":
352
+ bakeViewdep = true;
353
+ break;
354
+ case "ortho":
355
+ bakeViewdep = false;
356
+ break;
357
+ default:
358
+ usage(false);
359
+ break;
388
360
  }
389
- input = args[i];
390
- i++;
361
+ i += 2;
362
+ break;
363
+
364
+ case "-filter":
365
+ if (i > args.length - 2) {
366
+ usage(false);
367
+ } filterType = args[i + 1];
368
+ i += 2;
369
+ break;
370
+ case "-bench":
371
+ runBenchmark = true;
372
+ i++;
373
+ break;
374
+ case "-rtbench":
375
+ runRTBenchmark = true;
376
+ i++;
377
+ break;
378
+ case "-frame":
379
+ if (i > args.length - 2) {
380
+ usage(false);
381
+ } frameStart = frameStop = Integer.parseInt(args[i + 1]);
382
+ i += 2;
383
+ break;
384
+ case "-anim":
385
+ if (i > args.length - 3) {
386
+ usage(false);
387
+ } frameStart = Integer.parseInt(args[i + 1]);
388
+ frameStop = Integer.parseInt(args[i + 2]);
389
+ i += 3;
390
+ break;
391
+ case "-v":
392
+ if (i > args.length - 2) {
393
+ usage(false);
394
+ } UI.verbosity(Integer.parseInt(args[i + 1]));
395
+ i += 2;
396
+ break;
397
+ case "-translate":
398
+ if (i > args.length - 2) {
399
+ usage(false);
400
+ } translateFilename = args[i + 1];
401
+ i += 2;
402
+ break;
403
+ case "-h":
404
+ case "-help":
405
+ usage(true);
406
+ break;
407
+ default:
408
+ if (input != null) {
409
+ usage(false);
410
+ } input = args[i];
411
+ i++;
412
+ break;
391
413
  }
392
414
  }
393
415
  if (runBenchmark) {
@@ -495,7 +517,7 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
495
517
  break;
496
518
  }
497
519
  }
498
- } catch (Exception e) {
520
+ } catch (ClassNotFoundException | IllegalAccessException | InstantiationException | UnsupportedLookAndFeelException e) {
499
521
  // If Nimbus is not available, you can set the GUI to another look and feel.
500
522
  MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
501
523
  }
@@ -548,22 +570,16 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
548
570
  renderButton = new JButton();
549
571
  jPanel1.add(renderButton);
550
572
  renderButton.setText("Render");
551
- renderButton.addActionListener(new ActionListener() {
552
- @Override
553
- public void actionPerformed(ActionEvent evt) {
554
- renderMenuItemActionPerformed(evt);
555
- }
573
+ renderButton.addActionListener((ActionEvent evt) -> {
574
+ renderMenuItemActionPerformed(evt);
556
575
  });
557
576
  }
558
577
  {
559
578
  iprButton = new JButton();
560
579
  jPanel1.add(iprButton);
561
580
  iprButton.setText("IPR");
562
- iprButton.addActionListener(new ActionListener() {
563
- @Override
564
- public void actionPerformed(ActionEvent evt) {
565
- iprMenuItemActionPerformed(evt);
566
- }
581
+ iprButton.addActionListener((ActionEvent evt) -> {
582
+ iprMenuItemActionPerformed(evt);
567
583
  });
568
584
  }
569
585
  }
@@ -608,11 +624,8 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
608
624
  buildButton = new JButton();
609
625
  jPanel3.add(buildButton);
610
626
  buildButton.setText("Build Scene");
611
- buildButton.addActionListener(new ActionListener() {
612
- @Override
613
- public void actionPerformed(ActionEvent evt) {
614
- buildMenuItemActionPerformed(evt);
615
- }
627
+ buildButton.addActionListener((ActionEvent evt) -> {
628
+ buildMenuItemActionPerformed(evt);
616
629
  });
617
630
  }
618
631
  }
@@ -669,22 +682,16 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
669
682
  jPanel5.add(taskCancelButton);
670
683
  taskCancelButton.setText("Cancel");
671
684
  taskCancelButton.setEnabled(false);
672
- taskCancelButton.addActionListener(new ActionListener() {
673
- @Override
674
- public void actionPerformed(ActionEvent evt) {
675
- UI.taskCancel();
676
- }
685
+ taskCancelButton.addActionListener((ActionEvent evt) -> {
686
+ UI.taskCancel();
677
687
  });
678
688
  }
679
689
  {
680
690
  clearConsoleButton = new JButton();
681
691
  jPanel5.add(clearConsoleButton);
682
692
  clearConsoleButton.setText("Clear");
683
- clearConsoleButton.addActionListener(new ActionListener() {
684
- @Override
685
- public void actionPerformed(ActionEvent evt) {
686
- clearConsole();
687
- }
693
+ clearConsoleButton.addActionListener((ActionEvent evt) -> {
694
+ clearConsole();
688
695
  });
689
696
  }
690
697
  }
@@ -705,11 +712,8 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
705
712
  fileMenu.add(newFileMenuItem);
706
713
  newFileMenuItem.setText("New");
707
714
  newFileMenuItem.setAccelerator(KeyStroke.getKeyStroke("ctrl N"));
708
- newFileMenuItem.addActionListener(new ActionListener() {
709
- @Override
710
- public void actionPerformed(ActionEvent evt) {
711
- newFileMenuItemActionPerformed(evt);
712
- }
715
+ newFileMenuItem.addActionListener((ActionEvent evt) -> {
716
+ newFileMenuItemActionPerformed(evt);
713
717
  });
714
718
  }
715
719
  {
@@ -717,11 +721,8 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
717
721
  fileMenu.add(openFileMenuItem);
718
722
  openFileMenuItem.setText("Open ...");
719
723
  openFileMenuItem.setAccelerator(KeyStroke.getKeyStroke("ctrl O"));
720
- openFileMenuItem.addActionListener(new ActionListener() {
721
- @Override
722
- public void actionPerformed(ActionEvent evt) {
723
- openFileMenuItemActionPerformed(evt);
724
- }
724
+ openFileMenuItem.addActionListener((ActionEvent evt) -> {
725
+ openFileMenuItemActionPerformed(evt);
725
726
  });
726
727
  }
727
728
  {
@@ -729,22 +730,16 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
729
730
  fileMenu.add(saveMenuItem);
730
731
  saveMenuItem.setText("Save");
731
732
  saveMenuItem.setAccelerator(KeyStroke.getKeyStroke("ctrl S"));
732
- saveMenuItem.addActionListener(new ActionListener() {
733
- @Override
734
- public void actionPerformed(ActionEvent evt) {
735
- saveCurrentFile(currentFile);
736
- }
733
+ saveMenuItem.addActionListener((ActionEvent evt) -> {
734
+ saveCurrentFile(currentFile);
737
735
  });
738
736
  }
739
737
  {
740
738
  saveAsMenuItem = new JMenuItem();
741
739
  fileMenu.add(saveAsMenuItem);
742
740
  saveAsMenuItem.setText("Save As ...");
743
- saveAsMenuItem.addActionListener(new ActionListener() {
744
- @Override
745
- public void actionPerformed(ActionEvent evt) {
746
- saveAsMenuItemActionPerformed(evt);
747
- }
741
+ saveAsMenuItem.addActionListener((ActionEvent evt) -> {
742
+ saveAsMenuItemActionPerformed(evt);
748
743
  });
749
744
  }
750
745
  {
@@ -755,11 +750,8 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
755
750
  exitMenuItem = new JMenuItem();
756
751
  fileMenu.add(exitMenuItem);
757
752
  exitMenuItem.setText("Exit");
758
- exitMenuItem.addActionListener(new ActionListener() {
759
- @Override
760
- public void actionPerformed(ActionEvent evt) {
761
- System.exit(0);
762
- }
753
+ exitMenuItem.addActionListener((ActionEvent evt) -> {
754
+ System.exit(0);
763
755
  });
764
756
  }
765
757
  }
@@ -772,12 +764,9 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
772
764
  sceneMenu.add(buildMenuItem);
773
765
  buildMenuItem.setText("Build");
774
766
  buildMenuItem.setAccelerator(KeyStroke.getKeyStroke("ctrl B"));
775
- buildMenuItem.addActionListener(new ActionListener() {
776
- @Override
777
- public void actionPerformed(ActionEvent evt) {
778
- if (sceneMenu.isEnabled()) {
779
- buildMenuItemActionPerformed(evt);
780
- }
767
+ buildMenuItem.addActionListener((ActionEvent evt) -> {
768
+ if (sceneMenu.isEnabled()) {
769
+ buildMenuItemActionPerformed(evt);
781
770
  }
782
771
  });
783
772
  }
@@ -795,22 +784,16 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
795
784
  renderMenuItem = new JMenuItem();
796
785
  sceneMenu.add(renderMenuItem);
797
786
  renderMenuItem.setText("Render");
798
- renderMenuItem.addActionListener(new ActionListener() {
799
- @Override
800
- public void actionPerformed(ActionEvent evt) {
801
- renderMenuItemActionPerformed(evt);
802
- }
787
+ renderMenuItem.addActionListener((ActionEvent evt) -> {
788
+ renderMenuItemActionPerformed(evt);
803
789
  });
804
790
  }
805
791
  {
806
792
  iprMenuItem = new JMenuItem();
807
793
  sceneMenu.add(iprMenuItem);
808
794
  iprMenuItem.setText("IPR");
809
- iprMenuItem.addActionListener(new ActionListener() {
810
- @Override
811
- public void actionPerformed(ActionEvent evt) {
812
- iprMenuItemActionPerformed(evt);
813
- }
795
+ iprMenuItem.addActionListener((ActionEvent evt) -> {
796
+ iprMenuItemActionPerformed(evt);
814
797
  });
815
798
  }
816
799
  {
@@ -828,11 +811,8 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
828
811
  textureCacheClearMenuItem = new JMenuItem();
829
812
  sceneMenu.add(textureCacheClearMenuItem);
830
813
  textureCacheClearMenuItem.setText("Clear Texture Cache");
831
- textureCacheClearMenuItem.addActionListener(new ActionListener() {
832
- @Override
833
- public void actionPerformed(ActionEvent evt) {
834
- textureCacheClearMenuItemActionPerformed(evt);
835
- }
814
+ textureCacheClearMenuItem.addActionListener((ActionEvent evt) -> {
815
+ textureCacheClearMenuItemActionPerformed(evt);
836
816
  });
837
817
  }
838
818
  {
@@ -840,11 +820,8 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
840
820
  sceneMenu.add(smallTrianglesMenuItem);
841
821
  smallTrianglesMenuItem.setText("Low Mem Triangles");
842
822
  smallTrianglesMenuItem.setToolTipText("Load future meshes using a low memory footprint triangle representation");
843
- smallTrianglesMenuItem.addActionListener(new ActionListener() {
844
- @Override
845
- public void actionPerformed(ActionEvent evt) {
846
- smallTrianglesMenuItemActionPerformed(evt);
847
- }
823
+ smallTrianglesMenuItem.addActionListener((ActionEvent evt) -> {
824
+ smallTrianglesMenuItemActionPerformed(evt);
848
825
  });
849
826
  }
850
827
  }
@@ -856,22 +833,16 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
856
833
  resetZoomMenuItem = new JMenuItem();
857
834
  imageMenu.add(resetZoomMenuItem);
858
835
  resetZoomMenuItem.setText("Reset Zoom");
859
- resetZoomMenuItem.addActionListener(new ActionListener() {
860
- @Override
861
- public void actionPerformed(ActionEvent evt) {
862
- imagePanel.reset();
863
- }
836
+ resetZoomMenuItem.addActionListener((ActionEvent evt) -> {
837
+ imagePanel.reset();
864
838
  });
865
839
  }
866
840
  {
867
841
  fitWindowMenuItem = new JMenuItem();
868
842
  imageMenu.add(fitWindowMenuItem);
869
843
  fitWindowMenuItem.setText("Fit to Window");
870
- fitWindowMenuItem.addActionListener(new ActionListener() {
871
- @Override
872
- public void actionPerformed(ActionEvent evt) {
873
- imagePanel.fit();
874
- }
844
+ fitWindowMenuItem.addActionListener((ActionEvent evt) -> {
845
+ imagePanel.fit();
875
846
  });
876
847
  }
877
848
  {
@@ -882,26 +853,23 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
882
853
  jMenuItem4 = new JMenuItem();
883
854
  imageMenu.add(jMenuItem4);
884
855
  jMenuItem4.setText("Save Image ...");
885
- jMenuItem4.addActionListener(new ActionListener() {
886
- @Override
887
- public void actionPerformed(ActionEvent evt) {
888
- // imagePanel.image;
889
- JFileChooser fc = new JFileChooser(".");
890
- fc.setFileFilter(new FileFilter() {
891
- @Override
892
- public String getDescription() {
893
- return "Image File";
894
- }
895
-
896
- @Override
897
- public boolean accept(File f) {
898
- return (f.isDirectory() || f.getName().endsWith(".png") || f.getName().endsWith(".tga"));
899
- }
900
- });
901
- if (fc.showSaveDialog(SunflowGUI.this) == JFileChooser.APPROVE_OPTION) {
902
- String filename = fc.getSelectedFile().getAbsolutePath();
903
- imagePanel.save(filename);
856
+ jMenuItem4.addActionListener((ActionEvent evt) -> {
857
+ // imagePanel.image;
858
+ JFileChooser fc = new JFileChooser(".");
859
+ fc.setFileFilter(new FileFilter() {
860
+ @Override
861
+ public String getDescription() {
862
+ return "Image File";
904
863
  }
864
+
865
+ @Override
866
+ public boolean accept(File f) {
867
+ return (f.isDirectory() || f.getName().endsWith(".png") || f.getName().endsWith(".tga"));
868
+ }
869
+ });
870
+ if (fc.showSaveDialog(SunflowGUI.this) == JFileChooser.APPROVE_OPTION) {
871
+ String filename = fc.getSelectedFile().getAbsolutePath();
872
+ imagePanel.save(filename);
905
873
  }
906
874
  });
907
875
  }
@@ -916,11 +884,8 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
916
884
  windowMenu.add(imageWindowMenuItem);
917
885
  imageWindowMenuItem.setText("Image");
918
886
  imageWindowMenuItem.setAccelerator(KeyStroke.getKeyStroke("ctrl 1"));
919
- imageWindowMenuItem.addActionListener(new ActionListener() {
920
- @Override
921
- public void actionPerformed(ActionEvent evt) {
922
- selectFrame(imagePanelFrame);
923
- }
887
+ imageWindowMenuItem.addActionListener((ActionEvent evt) -> {
888
+ selectFrame(imagePanelFrame);
924
889
  });
925
890
  }
926
891
  {
@@ -928,11 +893,8 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
928
893
  windowMenu.add(editorWindowMenuItem);
929
894
  editorWindowMenuItem.setText("Script Editor");
930
895
  editorWindowMenuItem.setAccelerator(KeyStroke.getKeyStroke("ctrl 2"));
931
- editorWindowMenuItem.addActionListener(new ActionListener() {
932
- @Override
933
- public void actionPerformed(ActionEvent evt) {
934
- selectFrame(editorFrame);
935
- }
896
+ editorWindowMenuItem.addActionListener((ActionEvent evt) -> {
897
+ selectFrame(editorFrame);
936
898
  });
937
899
  }
938
900
  {
@@ -940,11 +902,8 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
940
902
  windowMenu.add(consoleWindowMenuItem);
941
903
  consoleWindowMenuItem.setText("Console");
942
904
  consoleWindowMenuItem.setAccelerator(KeyStroke.getKeyStroke("ctrl 3"));
943
- consoleWindowMenuItem.addActionListener(new ActionListener() {
944
- @Override
945
- public void actionPerformed(ActionEvent evt) {
946
- selectFrame(consoleFrame);
947
- }
905
+ consoleWindowMenuItem.addActionListener((ActionEvent evt) -> {
906
+ selectFrame(consoleFrame);
948
907
  });
949
908
  }
950
909
  {
@@ -956,11 +915,8 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
956
915
  windowMenu.add(tileWindowMenuItem);
957
916
  tileWindowMenuItem.setText("Tile");
958
917
  tileWindowMenuItem.setAccelerator(KeyStroke.getKeyStroke("ctrl T"));
959
- tileWindowMenuItem.addActionListener(new ActionListener() {
960
- @Override
961
- public void actionPerformed(ActionEvent evt) {
962
- tileWindowMenuItemActionPerformed(evt);
963
- }
918
+ tileWindowMenuItem.addActionListener((ActionEvent evt) -> {
919
+ tileWindowMenuItemActionPerformed(evt);
964
920
  });
965
921
  }
966
922
  }
@@ -1045,11 +1001,8 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
1045
1001
  }
1046
1002
 
1047
1003
  private void println(final String s) {
1048
- SwingUtilities.invokeLater(new Runnable() {
1049
- @Override
1050
- public void run() {
1051
- consoleTextArea.append(s + "\n");
1052
- }
1004
+ SwingUtilities.invokeLater(() -> {
1005
+ consoleTextArea.append(s + "\n");
1053
1006
  });
1054
1007
  }
1055
1008
 
@@ -1079,16 +1032,13 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
1079
1032
  currentTaskLastP = -1;
1080
1033
  final int taskMin = min;
1081
1034
  final int taskMax = max;
1082
- SwingUtilities.invokeLater(new Runnable() {
1083
- @Override
1084
- public void run() {
1085
- taskProgressBar.setEnabled(true);
1086
- taskCancelButton.setEnabled(true);
1087
- taskProgressBar.setMinimum(taskMin);
1088
- taskProgressBar.setMaximum(taskMax);
1089
- taskProgressBar.setValue(taskMin);
1090
- taskProgressBar.setString(currentTask);
1091
- }
1035
+ SwingUtilities.invokeLater(() -> {
1036
+ taskProgressBar.setEnabled(true);
1037
+ taskCancelButton.setEnabled(true);
1038
+ taskProgressBar.setMinimum(taskMin);
1039
+ taskProgressBar.setMaximum(taskMax);
1040
+ taskProgressBar.setValue(taskMin);
1041
+ taskProgressBar.setString(currentTask);
1092
1042
  });
1093
1043
  }
1094
1044
 
@@ -1096,29 +1046,23 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
1096
1046
  public void taskUpdate(int current) {
1097
1047
  final int taskCurrent = current;
1098
1048
  final String taskString = currentTask;
1099
- SwingUtilities.invokeLater(new Runnable() {
1100
- @Override
1101
- public void run() {
1102
- taskProgressBar.setValue(taskCurrent);
1103
- int p = (int) (100.0 * taskProgressBar.getPercentComplete());
1104
- if (p > currentTaskLastP) {
1105
- taskProgressBar.setString(taskString + " [" + p + "%]");
1106
- currentTaskLastP = p;
1107
- }
1049
+ SwingUtilities.invokeLater(() -> {
1050
+ taskProgressBar.setValue(taskCurrent);
1051
+ int p = (int) (100.0 * taskProgressBar.getPercentComplete());
1052
+ if (p > currentTaskLastP) {
1053
+ taskProgressBar.setString(taskString + " [" + p + "%]");
1054
+ currentTaskLastP = p;
1108
1055
  }
1109
1056
  });
1110
1057
  }
1111
1058
 
1112
1059
  @Override
1113
1060
  public void taskStop() {
1114
- SwingUtilities.invokeLater(new Runnable() {
1115
- @Override
1116
- public void run() {
1117
- taskProgressBar.setValue(taskProgressBar.getMinimum());
1118
- taskProgressBar.setString("");
1119
- taskProgressBar.setEnabled(false);
1120
- taskCancelButton.setEnabled(false);
1121
- }
1061
+ SwingUtilities.invokeLater(() -> {
1062
+ taskProgressBar.setValue(taskProgressBar.getMinimum());
1063
+ taskProgressBar.setString("");
1064
+ taskProgressBar.setEnabled(false);
1065
+ taskCancelButton.setEnabled(false);
1122
1066
  });
1123
1067
  }
1124
1068
 
@@ -1330,7 +1274,7 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
1330
1274
  break;
1331
1275
  }
1332
1276
  }
1333
- } catch (Exception exp) {
1277
+ } catch (UnsupportedFlavorException | IOException exp) {
1334
1278
  Logger.getLogger(SunflowGUI.class.getName()).log(Level.SEVERE, null, exp);
1335
1279
  }
1336
1280
 
@@ -1341,8 +1285,8 @@ public class SunflowGUI extends javax.swing.JFrame implements UserInterface {
1341
1285
  public boolean canImport(JComponent c, DataFlavor[] flavors) {
1342
1286
  // Just a quick check to see if a file can be accepted at this time
1343
1287
  // Are there any files around?
1344
- for (int i = 0; i < flavors.length; i++) {
1345
- if (flavors[i].isFlavorJavaFileListType()) {
1288
+ for (DataFlavor flavor : flavors) {
1289
+ if (flavor.isFlavorJavaFileListType()) {
1346
1290
  return true;
1347
1291
  }
1348
1292
  }