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.
- 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
|
}
|