joonsrenderer 1.1-java → 1.3.1-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.mvn/extensions.xml +1 -1
- data/.mvn/wrapper/MavenWrapperDownloader.java +117 -0
- data/.mvn/wrapper/maven-wrapper.properties +2 -0
- data/CHANGELOG.md +12 -1
- data/README.md +1 -1
- data/Rakefile +6 -1
- data/docs/Gemfile +2 -0
- data/docs/_config.yml +3 -0
- data/docs/_includes/header.html +1 -1
- data/docs/_includes/top.html +11 -0
- data/docs/_layouts/default.html +6 -15
- data/docs/_posts/2017-01-06-media.md +101 -0
- data/docs/_posts/2017-01-08-animated_ray_tracing.md +2 -2
- data/docs/_posts/2017-01-08-resources.md +14 -0
- data/docs/about.md +2 -2
- data/docs/assets/media_captured.png +0 -0
- data/docs/assets/media_rendered.png +0 -0
- data/joonsrenderer.gemspec +2 -2
- data/lib/commons.compiler/module-info.class +0 -0
- data/lib/commons.compiler/module-info.java +7 -0
- data/lib/janino/module-info.class +0 -0
- data/lib/janino/module-info.java +5 -0
- data/lib/joonsrenderer/version.rb +1 -1
- data/mvnw +310 -0
- data/mvnw.cmd +182 -0
- data/pom.rb +22 -22
- data/pom.xml +32 -17
- data/src/{test/java/a_maintest.java → a_maintest.java} +1 -1
- data/src/main/java/SunflowGUI.java +295 -351
- data/src/main/java/joons/JRFiller.java +15 -23
- data/src/main/java/joons/JoonsRenderer.java +6 -5
- data/src/main/java/org/sunflow/AsciiFileSunflowAPI.java +1 -1
- data/src/main/java/org/sunflow/BinaryFileSunflowAPI.java +1 -1
- data/src/main/java/org/sunflow/SunflowAPI.java +5 -5
- data/src/main/java/org/sunflow/core/GIEngine.java +3 -1
- data/src/main/java/org/sunflow/core/Geometry.java +1 -1
- data/src/main/java/org/sunflow/core/ImageSampler.java +3 -0
- data/src/main/java/org/sunflow/core/InstanceList.java +1 -1
- data/src/main/java/org/sunflow/core/IntersectionState.java +7 -6
- data/src/main/java/org/sunflow/core/ParameterList.java +3 -2
- data/src/main/java/org/sunflow/core/PhotonStore.java +1 -0
- data/src/main/java/org/sunflow/core/Ray.java +4 -3
- data/src/main/java/org/sunflow/core/TextureCache.java +1 -1
- data/src/main/java/org/sunflow/core/accel/BoundingIntervalHierarchy.java +1 -1
- data/src/main/java/org/sunflow/core/accel/KDTree.java +1 -1
- data/src/main/java/org/sunflow/core/photonmap/CausticPhotonMap.java +2 -2
- data/src/main/java/org/sunflow/core/photonmap/GlobalPhotonMap.java +2 -2
- data/src/main/java/org/sunflow/core/renderer/BucketRenderer.java +3 -1
- data/src/main/java/org/sunflow/image/writers/EXRBitmapWriter.java +28 -19
- data/src/main/java/org/sunflow/image/writers/PNGBitmapWriter.java +5 -0
- data/src/main/java/org/sunflow/image/writers/TGABitmapWriter.java +20 -14
- data/src/main/java/org/sunflow/system/BenchmarkFramework.java +2 -2
- data/src/main/java/org/sunflow/system/RenderGlobalsPanel.java +5 -4
- metadata +20 -8
- data/docs/_includes/head.html +0 -15
data/mvnw.cmd
ADDED
@@ -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.
|
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' => '
|
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
|
-
'
|
24
|
-
'janino.version' => '3.0.6',
|
22
|
+
'janino.version' => '3.1.3',
|
25
23
|
'jogl.version' => '2.3.2',
|
26
|
-
'processing.version' => '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, '
|
37
|
-
plugin :dependency, '2
|
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
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
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 '
|
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
|
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.
|
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>
|
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
|
-
<
|
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
|
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>
|
105
|
+
<version>3.1.0</version>
|
108
106
|
</plugin>
|
109
107
|
<plugin>
|
110
108
|
<artifactId>maven-dependency-plugin</artifactId>
|
111
|
-
<version>2
|
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.
|
136
|
+
<version>3.8.1</version>
|
139
137
|
<configuration>
|
140
|
-
<
|
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
|
154
|
+
<version>3.2.0</version>
|
154
155
|
<configuration>
|
155
156
|
<archive>
|
156
|
-
<
|
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,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
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
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
|
-
|
390
|
-
|
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 (
|
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(
|
552
|
-
|
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(
|
563
|
-
|
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(
|
612
|
-
|
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(
|
673
|
-
|
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(
|
684
|
-
|
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(
|
709
|
-
|
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(
|
721
|
-
|
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(
|
733
|
-
|
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(
|
744
|
-
|
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(
|
759
|
-
|
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(
|
776
|
-
|
777
|
-
|
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(
|
799
|
-
|
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(
|
810
|
-
|
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(
|
832
|
-
|
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(
|
844
|
-
|
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(
|
860
|
-
|
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(
|
871
|
-
|
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(
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
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(
|
920
|
-
|
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(
|
932
|
-
|
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(
|
944
|
-
|
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(
|
960
|
-
|
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(
|
1049
|
-
|
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(
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
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(
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
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(
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
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 (
|
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 (
|
1345
|
-
if (
|
1288
|
+
for (DataFlavor flavor : flavors) {
|
1289
|
+
if (flavor.isFlavorJavaFileListType()) {
|
1346
1290
|
return true;
|
1347
1291
|
}
|
1348
1292
|
}
|