Merge branch 'main' into gradle-runner

This commit is contained in:
Stef Tervelde
2025-09-08 18:27:48 +02:00
131 changed files with 1396 additions and 25707 deletions
+114 -2
View File
@@ -350,7 +350,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/3434564?v=4",
"profile": "https://github.com/joshgiesbrecht",
"contributions": [
"code"
"code",
"bug"
]
},
{
@@ -1491,7 +1492,8 @@
"profile": "https://github.com/babaissarkar",
"contributions": [
"code",
"a11y"
"a11y",
"doc"
]
},
{
@@ -1539,6 +1541,116 @@
"contributions": [
"code"
]
},
{
"login": "jd-boyd",
"name": "Joshua D. Boyd",
"avatar_url": "https://avatars.githubusercontent.com/u/361465?v=4",
"profile": "http://blog.jdboyd.net/",
"contributions": [
"doc"
]
},
{
"login": "Vaivaswat2244",
"name": "Vaivaswat Dubey",
"avatar_url": "https://avatars.githubusercontent.com/u/113991324?v=4",
"profile": "https://github.com/Vaivaswat2244",
"contributions": [
"code"
]
},
{
"login": "jSdCool",
"name": "jSdCool",
"avatar_url": "https://avatars.githubusercontent.com/u/37940266?v=4",
"profile": "https://www.cbi-games.org",
"contributions": [
"code",
"doc"
]
},
{
"login": "AhmedMagedC",
"name": "AhmedMaged",
"avatar_url": "https://avatars.githubusercontent.com/u/111961041?v=4",
"profile": "https://github.com/AhmedMagedC",
"contributions": [
"code"
]
},
{
"login": "ThexXTURBOXx",
"name": "Nico Mexis",
"avatar_url": "https://avatars.githubusercontent.com/u/12763829?v=4",
"profile": "http://nmexis.me",
"contributions": [
"code"
]
},
{
"login": "tychedelia",
"name": "charlotte 🌸",
"avatar_url": "https://avatars.githubusercontent.com/u/10366310?v=4",
"profile": "http://charlotte.fyi",
"contributions": [
"review"
]
},
{
"login": "jdebou",
"name": "Joackim de Bourqueney",
"avatar_url": "https://avatars.githubusercontent.com/u/80685479?v=4",
"profile": "http://i-j.fr",
"contributions": [
"code"
]
},
{
"login": "toniab",
"name": "Tonz",
"avatar_url": "https://avatars.githubusercontent.com/u/370199?v=4",
"profile": "https://github.com/toniab",
"contributions": [
"code",
"doc"
]
},
{
"login": "aj-m",
"name": "Andrew",
"avatar_url": "https://avatars.githubusercontent.com/u/2524348?v=4",
"profile": "https://github.com/aj-m",
"contributions": [
"code"
]
},
{
"login": "pnngocdoan",
"name": "Ngoc Doan",
"avatar_url": "https://avatars.githubusercontent.com/u/113954980?v=4",
"profile": "https://github.com/pnngocdoan",
"contributions": [
"code"
]
},
{
"login": "manoellribeiro",
"name": "Manoel Ribeiro",
"avatar_url": "https://avatars.githubusercontent.com/u/59377764?v=4",
"profile": "https://github.com/manoellribeiro",
"contributions": [
"doc"
]
},
{
"login": "catilac",
"name": "Moon",
"avatar_url": "https://avatars.githubusercontent.com/u/15107?v=4",
"profile": "https://softmoon.world",
"contributions": [
"code"
]
}
],
"repoType": "github",
+4 -4
View File
@@ -42,7 +42,7 @@ body:
- type: input
attributes:
label: Operating system
description: "Ex: Windows/MacOSX/Linux/Android/iOS along with version"
description: "Ex: Windows/macOS/Linux/Android/iOS along with version"
validations:
required: true
@@ -60,11 +60,11 @@ body:
label: Steps to reproduce this
description: Describe what steps will produce the bug.
value: |
"1.
1.
2.
3."
3.
validations:
required: true
@@ -111,4 +111,4 @@ body:
attributes:
value: |
> [!NOTE]
> Processing is a community-driven, open-source project. If you have time and interest to help, your contribution would be greatly appreciated! See the [contribution guide](https://github.com/processing/processing4/blob/main/CONTRIBUTING.md) to learn more. And if you need some guidance or support, we're happy to help you get started.
> Processing is a community-driven, open-source project. If you have time and interest to help, your contribution would be greatly appreciated! See the [contribution guide](https://github.com/processing/processing4/blob/main/CONTRIBUTING.md) to learn more. And if you need some guidance or support, we're happy to help you get started.
+1
View File
@@ -153,6 +153,7 @@ jobs:
ORG_GRADLE_PROJECT_compose.desktop.mac.notarization.password: ${{ secrets.PROCESSING_APP_PASSWORD }}
ORG_GRADLE_PROJECT_compose.desktop.mac.notarization.teamID: ${{ secrets.PROCESSING_TEAM_ID }}
ORG_GRADLE_PROJECT_snapname: ${{ vars.SNAP_NAME }}
ORG_GRADLE_PROJECT_snapconfinement: ${{ vars.SNAP_CONFINEMENT }}
- name: Sign files with Trusted Signing
if: runner.os == 'Windows'
+106 -81
View File
@@ -1,101 +1,70 @@
.DS_Store
.AppleDouble
._*
*~
/build/shared/reference.zip
# Created by https://www.toptal.com/developers/gitignore/api/android,gradle,java
# Edit at https://www.toptal.com/developers/gitignore?templates=android,gradle,java
*.x
### Android ###
# Gradle files
.gradle/
build/
#*.iml
#/.idea
# Local configuration file (sdk path, etc)
local.properties
# may need to bring this back later
/.idea/codeStyles
# Log/OS Files
*.log
# via https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# Android Studio generated files and folders
captures/
.externalNativeBuild/
.cxx/
*.apk
output.json
# IntelliJ
out/
*.iml
.idea/*
misc.xml
deploymentTargetDropDown.xml
render.experimental.xml
# mpeltonen/sbt-idea plugin
.idea_modules/
# Keystore files
*.jks
*.keystore
# JIRA plugin
atlassian-ide-plugin.xml
# Google Services (e.g. APIs or Firebase)
google-services.json
# Cursive Clojure plugin
.idea/replstate.xml
# Android Profiling
*.hprof
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
### Android Patch ###
gen-external-apklibs
# Editor-based Rest Client
.idea/httpRequests
# Replacement of .externalNativeBuild directories introduced
# with Android Studio 3.5.
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Java ###
# Compiled class file
*.class
# temporarily ignore IntelliJ bits
*.eml
# Log file
# testing boogers
bin-test
# BlueJ files
*.ctxt
# dated folders
/19*
/20*
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# VS Code Java project files
.project
.vscode/
# Package Files #
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# Processing examples
processing-examples
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*
# Maven ignores
.kotlin
@@ -110,6 +79,62 @@ processing-examples
/java/libraries/svg/bin
/java/preprocessor/build
/java/lsp/build
### Gradle ###
.gradle
**/build/
!src/**/build/
# Ignore Gradle GUI config
gradle-app.setting
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
# Avoid ignore Gradle wrappper properties
!gradle-wrapper.properties
# Cache of project
.gradletasknamecache
# Eclipse Gradle plugin generated files
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
### Gradle Patch ###
# Java heap dump
# End of https://www.toptal.com/developers/gitignore/api/android,gradle,java
.DS_Store
bin/*
.build/
.processing/
library/*
generated/
!/build/
!.idea/runConfigurations/
!/java/application/launch4j/bin/*
!java/libraries/io/library/**/*.so
/app/lib
/build/macos/work/Processing.app
/core/library
/core/bin
/build/shared/tools/MovieMaker/tool/ffmpeg
/build/shared/tools/MovieMaker/tool/*.jar
/core/methods/methods.jar
/java/libraries/*/library/*.jar
/build/macos/*.tgz
/build/shared/tools/MovieMaker/*.gz
/app/bin/processing/app/laf/FlatLaf.properties
/app/pde.jar
/java/mode/gson.jar
/java/mode/JavaMode.jar
/java/mode/org.eclipse.lsp4j.jar
/java/mode/org.eclipse.lsp4j.jsonrpc.jar
!java/libraries/pdf/library/itext.jar
!java/libraries/serial/library/jssc.jar
/app/windows/obj
/java/gradle/build
/core/examples/build
/java/gradle/example/.processing
-3
View File
@@ -1,3 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
Generated
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AntConfiguration">
<buildFile url="file://$PROJECT_DIR$/build/build.xml" />
</component>
</project>
-6
View File
@@ -1,6 +0,0 @@
<component name="ArtifactManager">
<artifact type="jar" name="app-desktop">
<output-path>$PROJECT_DIR$/app/build/libs</output-path>
<root id="archive" name="app-desktop.jar" />
</artifact>
</component>
-6
View File
@@ -1,6 +0,0 @@
<component name="ArtifactManager">
<artifact type="jar" name="app-jvm">
<output-path>$PROJECT_DIR$/app/build/libs</output-path>
<root id="archive" name="app-jvm.jar" />
</artifact>
</component>
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="17" />
</component>
</project>
-41
View File
@@ -1,41 +0,0 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="IfCanBeSwitch" enabled="false" level="WARNING" enabled_by_default="false">
<option name="minimumBranches" value="3" />
<option name="suggestIntSwitches" value="false" />
<option name="suggestEnumSwitches" value="false" />
</inspection_tool>
<inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">
<option name="TOP_LEVEL_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="INNER_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="METHOD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
</value>
</option>
<option name="FIELD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="IGNORE_DEPRECATED" value="false" />
<option name="IGNORE_JAVADOC_PERIOD" value="true" />
<option name="IGNORE_DUPLICATED_THROWS" value="false" />
<option name="IGNORE_POINT_TO_ITSELF" value="false" />
<option name="myAdditionalJavadocTags" value="webref,webBrief,nowebref,usage,see_external" />
</inspection_tool>
</profile>
</component>
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="2.0.20" />
</component>
</project>
-7
View File
@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="temurin-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
-15
View File
@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/processing.app.commonMain.iml" filepath="$PROJECT_DIR$/.idea/modules/app/processing.app.commonMain.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/processing.app.commonTest.iml" filepath="$PROJECT_DIR$/.idea/modules/app/processing.app.commonTest.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/processing.app.desktopMain.iml" filepath="$PROJECT_DIR$/.idea/modules/app/processing.app.desktopMain.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/processing.app.desktopTest.iml" filepath="$PROJECT_DIR$/.idea/modules/app/processing.app.desktopTest.iml" />
<module fileurl="file://$PROJECT_DIR$/build/macos/appbundler/processing4-appbundler.iml" filepath="$PROJECT_DIR$/build/macos/appbundler/processing4-appbundler.iml" />
<module fileurl="file://$PROJECT_DIR$/core/methods/processing4-core-preproc.iml" filepath="$PROJECT_DIR$/core/methods/processing4-core-preproc.iml" />
<module fileurl="file://$PROJECT_DIR$/java/libraries/javafx/processing4-javafx.iml" filepath="$PROJECT_DIR$/java/libraries/javafx/processing4-javafx.iml" />
<module fileurl="file://$PROJECT_DIR$/build/shared/tools/MovieMaker/processing4-tools-moviemaker.iml" filepath="$PROJECT_DIR$/build/shared/tools/MovieMaker/processing4-tools-moviemaker.iml" />
</modules>
</component>
</project>
Generated
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
-27
View File
@@ -1,27 +0,0 @@
git:
depth: 1
language: java
jdk:
- openjdk11
before_install:
- sudo apt-get -qq update
- sudo apt-get install ant-optional
- sudo apt-get install wget
- wget --no-check-certificate https://downloads.apache.org/ant/binaries/apache-ant-1.10.8-bin.zip
- tar -xzvf apache-ant-1.10.8-bin.tar.gz
- export PATH=`pwd`/apache-ant-1.10.8/bin:$PATH
services:
- xvfb
before_script:
- export DISPLAY=:99.0
- cd build
script:
- ant clean
- ant build
- ant test
+75 -9
View File
@@ -2,14 +2,17 @@
Great to see you are interested in contributing to Processing. To get started you will need to have an IDE to build and develop Processing. Our recommendation and what we use ourselves is Intellij IDEA.
## IntelliJ IDEA
## IntelliJ IDEA (recommended)
First, [download the IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download/). Make sure to select the "Community Edition", not "Ultimate". The Community Edition is free and built on open-source software. You may need to scroll down to find the download link. Then:
First, [download the IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download/). Make sure to select the "Community Edition", not "Ultimate". The Community Edition is free and built on open-source software. You may need to scroll down to find the download link.
> [!TIP]
> If you encounter any issues with this process, Read the [Troubleshooting and Setup Tips for IntelliJ IDEA](#troubleshooting-and-setup-tips-intellij-idea)
1. Clone the Processing4 repository to your machine locally
1. Open the cloned repository in IntelliJ IDEA CE
1. When prompted, select **Trust Project**. You can preview the project in Safe Mode but you won't be able to build Processing.
1. IntelliJ may start loading Gradle dependencies automatically. Wait for this process to complete.
1. IntelliJ may ask if you want to load Gradle project. If you allow this, make sure you are using JDK version 17.
1. In the main menu, go to File > Project Structure > Project Settings > Project.
1. In the SDK Dropdown option, select a JDK version 17 or Download the jdk
1. Click the green Run Icon in the top right of the window. This is also where you can find the option to debug Processing.
@@ -25,6 +28,73 @@ First, [download the IntelliJ IDEA Community Edition](https://www.jetbrains.com/
Instructions for other editors are welcome and feel free to contribute the documentation for those [here](#other-editors)
## Other Editors
TBD
## Command Line
If you prefer not to use an IDE, you can also build Processing directly from the command line.
### Set Up the Environment
If you don't have them installed, you will need to install [Git](https://git-scm.com/downloads) and [Gradle](https://gradle.org/install/) first. Then follow these steps:
1. **Clone the repository:**
```bash
git clone https://github.com/processing/processing4.git
cd processing4
```
2. **Install Temurin JDK 17:**
Download and install the appropriate version for your platform:
- [Linux (x86)](https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.15%2B6/OpenJDK17U-jdk_x64_linux_hotspot_17.0.15_6.tar.gz)
- [macOS (Apple Silicon)](https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.15%2B6/OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.15_6.pkg)
- [Other platforms](https://adoptium.net/temurin/releases/?package=jdk&version=17&os=any&arch=any)
3. **Set the `JAVA_HOME` environment variable:**
```bash
export JAVA_HOME=/path/to/temurin/jdk-17.0.15+6/
```
### Build, Run, and Package Processing
#### Build the Project (Required First Step)
This compiles the source code and prepares everything needed to run or test Processing:
```bash
./gradlew build
```
#### Run Tests
Run unit tests and verify your build:
```bash
./gradlew test
```
#### Launch Processing
Start the Processing Development Environment (PDE):
```bash
./gradlew run
```
#### Create a Distributable Package (Optional)
Generate a packaged version of Processing, ready for distribution:
```bash
./gradlew package
```
The packaged files will be available in the `app/build/compose/binaries` directory.
## Architecture
Processing consists of three main components: `Core`, `Java`, and `App`. The `Core` is independent, while `Java` and `App` depend on it. Currently, `Java` and `App` are interdependent, but efforts are underway to decouple them.
@@ -43,7 +113,7 @@ Processing consists of three main components: `Core`, `Java`, and `App`. The `Co
- If you've written a large sketch and Processing has become slow to compile and run it, a place to improve this code can most likely be found in the `Java` section.
## User interface
Historically, Processing's UI has been written in Java Swing and Flatlaf (and some html & css). Since 2025 we have switched to include Jetpack Compose, mostly for it's backwards-compatibility with Swing. This approach allows us to gradually replace Java Swing components with Jetpack Compose ones, instead of doing a complete overhaul of the editor.
Historically, Processing's UI has been written in Java Swing and Flatlaf (and some html & css). Since 2025 we have switched to include Jetpack Compose. It is backwards-compatible with Swing, which allows us to gradually replace Java Swing components with Jetpack Compose ones, instead of doing a complete overhaul of the editor.
## Build system
@@ -60,9 +130,7 @@ The main task to run or debug the PDE is `run`. That means you just need to run
If your main concern is with the `Core` you don't need to build and start the whole PDE to test your changes. In IntelliJ IDEA you can select any of the sketches in `core/examples/src/.../` to run by click on the green arrow next to their main functions. This will just compile core and the example sketch. Feel free to create additional examples for your new functionality.
## Other editors
TBD
If you are specifically trying to run the `Processing CLI`, you can test commands from `app/test/Processing.app/CLITest`.
## Troubleshooting and Setup Tips (IntelliJ IDEA)
@@ -95,5 +163,3 @@ You may see this warning in IntelliJ:
> `Duplicate content roots detected: '.../processing4/java/src'`
This happens because multiple modules reference the same source folder. Its safe to ignore.
+8 -2
View File
@@ -34,12 +34,15 @@ Before beginning work on a code contribution, please make sure that:
- The issue has been discussed and a proposed solution has been approved.
- You have been **assigned** to the issue.
If an implementation has been agreed upon but no one has volunteered to take it on, feel free to comment and offer to help. A maintainer can then assign the issue to you.
> [!NOTE]
> If this is your first contribution to our repositories, or if an implementation has not been agreed upon yet, please include a brief explanation of how you plan to approach the issue. This helps us understand your thinking and gives us an opportunity to discuss the best solution. Note that **we do not auto-assign issues**, so comments that only say "please assign" without further context may be overlooked.
Please do **not** open a pull request for an issue that is already assigned to someone else. We follow a “first assigned, first served” approach to avoid duplicated work. If you open a PR for an issue that someone else is already working on, your PR will be closed.
If an issue has been inactive for a long time, youre welcome to check in politely by commenting to see if the assignee still plans to work on it or would be open to someone else taking over.
If an issue has been inactive for over a month, youre welcome to check in politely by commenting to see if the assignee still plans to work on it or would be open to someone else taking over.
Theres no hard deadline for completing contributions. We understand that people often contribute on a volunteer basis and timelines may vary. That said, if you run into trouble or have questions at any point, dont hesitate to ask for help in the issue thread. Maintainers and other community members are here to support you.
@@ -51,6 +54,9 @@ Before you contribute your changes, it's essential that you make sure that Proce
## Submit a pull request (PR)
> [!IMPORTANT]
> Before submitting a pull request, please ask to be assigned to the corresponding issue. If someone else is already assigned or has shared that theyre working on it, we ask that you wait or choose another issue. This helps us avoid duplicated efforts and respect each other's time. PRs submitted without assignment may be closed without a review.
Once your changes are ready:
1. Push your branch to your fork
+18 -2
View File
@@ -124,7 +124,7 @@ _Note: due to GitHub's limitations, this repository's [Contributors](https://git
<td align="center" valign="top" width="16.66%"><a href="https://github.com/dhowe"><img src="https://avatars.githubusercontent.com/u/737638?v=4?s=120" width="120px;" alt="Daniel Howe"/><br /><sub><b>Daniel Howe</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=dhowe" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/joshgiesbrecht"><img src="https://avatars.githubusercontent.com/u/3434564?v=4?s=120" width="120px;" alt="Josh Giesbrecht"/><br /><sub><b>Josh Giesbrecht</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=joshgiesbrecht" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/joshgiesbrecht"><img src="https://avatars.githubusercontent.com/u/3434564?v=4?s=120" width="120px;" alt="Josh Giesbrecht"/><br /><sub><b>Josh Giesbrecht</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=joshgiesbrecht" title="Code">💻</a> <a href="https://github.com/processing/processing4/issues?q=author%3Ajoshgiesbrecht" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://liquidex.house/"><img src="https://avatars.githubusercontent.com/u/16415678?v=4?s=120" width="120px;" alt="liquidex"/><br /><sub><b>liquidex</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=liquidev" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/bgc"><img src="https://avatars.githubusercontent.com/u/516129?v=4?s=120" width="120px;" alt="bgc"/><br /><sub><b>bgc</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=bgc" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://umair.io/"><img src="https://avatars.githubusercontent.com/u/3191547?v=4?s=120" width="120px;" alt="Mohammad Umair"/><br /><sub><b>Mohammad Umair</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=omerjerk" title="Code">💻</a></td>
@@ -292,13 +292,29 @@ _Note: due to GitHub's limitations, this repository's [Contributors](https://git
<td align="center" valign="top" width="16.66%"><a href="https://github.com/yehiarasheed"><img src="https://avatars.githubusercontent.com/u/157399068?v=4?s=120" width="120px;" alt="Yehia Rasheed"/><br /><sub><b>Yehia Rasheed</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=yehiarasheed" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/babaissarkar"><img src="https://avatars.githubusercontent.com/u/8469888?v=4?s=120" width="120px;" alt="Subhraman Sarkar"/><br /><sub><b>Subhraman Sarkar</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=babaissarkar" title="Code">💻</a> <a href="#a11y-babaissarkar" title="Accessibility">️♿️</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/babaissarkar"><img src="https://avatars.githubusercontent.com/u/8469888?v=4?s=120" width="120px;" alt="Subhraman Sarkar"/><br /><sub><b>Subhraman Sarkar</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=babaissarkar" title="Code">💻</a> <a href="#a11y-babaissarkar" title="Accessibility">️♿️</a> <a href="https://github.com/processing/processing4/commits?author=babaissarkar" title="Documentation">📖</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/SushantBansal-tech"><img src="https://avatars.githubusercontent.com/u/189839531?v=4?s=120" width="120px;" alt="SushantBansal-tech"/><br /><sub><b>SushantBansal-tech</b></sub></a><br /><a href="#ideas-SushantBansal-tech" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/processing/processing4/commits?author=SushantBansal-tech" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/Konsl"><img src="https://avatars.githubusercontent.com/u/82901383?v=4?s=120" width="120px;" alt="Konsl"/><br /><sub><b>Konsl</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=Konsl" title="Documentation">📖</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://www.mario-guzman.com"><img src="https://avatars.githubusercontent.com/u/7597610?v=4?s=120" width="120px;" alt="Mario Guzman"/><br /><sub><b>Mario Guzman</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=marioguzzzman" title="Documentation">📖</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/thisizaro"><img src="https://avatars.githubusercontent.com/u/98299268?v=4?s=120" width="120px;" alt="Aranya Dutta"/><br /><sub><b>Aranya Dutta</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=thisizaro" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/ovalnine"><img src="https://avatars.githubusercontent.com/u/13293768?v=4?s=120" width="120px;" alt="ovalnine"/><br /><sub><b>ovalnine</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=ovalnine" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="http://blog.jdboyd.net/"><img src="https://avatars.githubusercontent.com/u/361465?v=4?s=120" width="120px;" alt="Joshua D. Boyd"/><br /><sub><b>Joshua D. Boyd</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=jd-boyd" title="Documentation">📖</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/Vaivaswat2244"><img src="https://avatars.githubusercontent.com/u/113991324?v=4?s=120" width="120px;" alt="Vaivaswat Dubey"/><br /><sub><b>Vaivaswat Dubey</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=Vaivaswat2244" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://www.cbi-games.org"><img src="https://avatars.githubusercontent.com/u/37940266?v=4?s=120" width="120px;" alt="jSdCool"/><br /><sub><b>jSdCool</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=jSdCool" title="Code">💻</a> <a href="https://github.com/processing/processing4/commits?author=jSdCool" title="Documentation">📖</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/AhmedMagedC"><img src="https://avatars.githubusercontent.com/u/111961041?v=4?s=120" width="120px;" alt="AhmedMaged"/><br /><sub><b>AhmedMaged</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=AhmedMagedC" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://nmexis.me"><img src="https://avatars.githubusercontent.com/u/12763829?v=4?s=120" width="120px;" alt="Nico Mexis"/><br /><sub><b>Nico Mexis</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=ThexXTURBOXx" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://charlotte.fyi"><img src="https://avatars.githubusercontent.com/u/10366310?v=4?s=120" width="120px;" alt="charlotte 🌸"/><br /><sub><b>charlotte 🌸</b></sub></a><br /><a href="https://github.com/processing/processing4/pulls?q=is%3Apr+reviewed-by%3Atychedelia" title="Reviewed Pull Requests">👀</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="http://i-j.fr"><img src="https://avatars.githubusercontent.com/u/80685479?v=4?s=120" width="120px;" alt="Joackim de Bourqueney"/><br /><sub><b>Joackim de Bourqueney</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=jdebou" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/toniab"><img src="https://avatars.githubusercontent.com/u/370199?v=4?s=120" width="120px;" alt="Tonz"/><br /><sub><b>Tonz</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=toniab" title="Code">💻</a> <a href="https://github.com/processing/processing4/commits?author=toniab" title="Documentation">📖</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/aj-m"><img src="https://avatars.githubusercontent.com/u/2524348?v=4?s=120" width="120px;" alt="Andrew"/><br /><sub><b>Andrew</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=aj-m" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/pnngocdoan"><img src="https://avatars.githubusercontent.com/u/113954980?v=4?s=120" width="120px;" alt="Ngoc Doan"/><br /><sub><b>Ngoc Doan</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=pnngocdoan" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/manoellribeiro"><img src="https://avatars.githubusercontent.com/u/59377764?v=4?s=120" width="120px;" alt="Manoel Ribeiro"/><br /><sub><b>Manoel Ribeiro</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=manoellribeiro" title="Documentation">📖</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://softmoon.world"><img src="https://avatars.githubusercontent.com/u/15107?v=4?s=120" width="120px;" alt="Moon"/><br /><sub><b>Moon</b></sub></a><br /><a href="https://github.com/processing/processing4/commits?author=catilac" title="Code">💻</a></td>
</tr>
</tbody>
</table>
-17
View File
@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/adoptopenjdk-11">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="lib/jna.jar"/>
<classpathentry kind="lib" path="lib/jna-platform.jar"/>
<classpathentry exported="true" kind="lib" path="lib/ant.jar"/>
<classpathentry exported="true" kind="lib" path="lib/ant-launcher.jar"/>
<classpathentry kind="lib" path="/processing4-core/library-test/junit-4.13.2.jar"/>
<classpathentry kind="lib" path="/processing4-core/library-test/hamcrest-core-1.3.jar"/>
<classpathentry combineaccessrules="false" kind="src" path="/processing4-core"/>
<classpathentry kind="output" path="bin"/>
</classpath>
-2
View File
@@ -1,2 +0,0 @@
bin
pde.jar
-472
View File
@@ -1,472 +0,0 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
org.eclipse.jdt.core.compiler.problem.deadCode=ignore
org.eclipse.jdt.core.compiler.problem.deprecation=warning
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
org.eclipse.jdt.core.compiler.problem.nullReference=ignore
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=ignore
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=18
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=18
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=18
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=36
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=18
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=18
org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_field=1
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=false
org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.jdt.core.formatter.comment.line_length=80
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
org.eclipse.jdt.core.formatter.compact_else_if=true
org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_empty_lines=false
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
org.eclipse.jdt.core.formatter.indentation.size=2
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.lineSplit=80
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=space
org.eclipse.jdt.core.formatter.tabulation.size=2
org.eclipse.jdt.core.formatter.text_block_indentation=0
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-3
View File
@@ -1,3 +0,0 @@
eclipse.preferences.version=1
formatter_profile=_processing
formatter_settings_version=18
@@ -1,2 +0,0 @@
eclipse.preferences.version=1
org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
+37 -51
View File
@@ -65,7 +65,7 @@ compose.desktop {
jvmArgs(*variables.entries.map { "-D${it.key}=${it.value}" }.toTypedArray())
nativeDistributions{
modules("jdk.jdi", "java.compiler", "jdk.accessibility", "java.management.rmi", "java.scripting")
modules("jdk.jdi", "java.compiler", "jdk.accessibility", "java.management.rmi", "java.scripting", "jdk.httpserver")
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "Processing"
@@ -104,6 +104,7 @@ compose.desktop {
dependencies {
implementation(project(":core"))
runtimeOnly(project(":java"))
implementation(project(":app:utils"))
implementation(libs.flatlaf)
@@ -126,6 +127,7 @@ dependencies {
implementation(libs.markdownJVM)
implementation(gradleApi())
implementation(libs.clikt)
implementation(libs.kotlinxSerializationJson)
testImplementation(kotlin("test"))
testImplementation(libs.mockitoKotlin)
@@ -235,61 +237,44 @@ tasks.register<Exec>("packageCustomMsi"){
tasks.register("generateSnapConfiguration"){
val name = findProperty("snapname") ?: rootProject.name
onlyIf { OperatingSystem.current().isLinux }
val distributable = tasks.named<AbstractJPackageTask>("createDistributable").get()
dependsOn(distributable)
val name = findProperty("snapname") as String? ?: rootProject.name
val arch = when (System.getProperty("os.arch")) {
"amd64", "x86_64" -> "amd64"
"aarch64" -> "arm64"
else -> System.getProperty("os.arch")
}
onlyIf { OperatingSystem.current().isLinux }
val distributable = tasks.named<AbstractJPackageTask>("createDistributable").get()
dependsOn(distributable)
val confinement = findProperty("snapconfinement") as String? ?: "strict"
val dir = distributable.destinationDir.get()
val content = """
name: $name
version: $version
base: core22
summary: A creative coding editor
description: |
Processing is a flexible software sketchbook and a programming language designed for learning how to code.
confinement: strict
apps:
processing:
command: opt/processing/bin/Processing
desktop: opt/processing/lib/processing-Processing.desktop
environment:
LD_LIBRARY_PATH: ${'$'}SNAP/opt/processing/lib/runtime/lib:${'$'}LD_LIBRARY_PATH
LIBGL_DRIVERS_PATH: ${'$'}SNAP/usr/lib/${'$'}SNAPCRAFT_ARCH_TRIPLET/dri
plugs:
- desktop
- desktop-legacy
- wayland
- x11
- network
- opengl
- home
- removable-media
- audio-playback
- audio-record
- pulseaudio
- gpio
parts:
processing:
plugin: dump
source: deb/processing_$version-1_$arch.deb
source-type: deb
stage-packages:
- openjdk-17-jre
override-prime: |
snapcraftctl prime
rm -vf usr/lib/jvm/java-17-openjdk-*/lib/security/cacerts
chmod -R +x opt/processing/lib/app/resources/jdk
""".trimIndent()
dir.file("../snapcraft.yaml").asFile.writeText(content)
val base = layout.projectDirectory.file("linux/snapcraft.base.yml")
doFirst {
var content = base
.asFile
.readText()
.replace("\$name", name)
.replace("\$arch", arch)
.replace("\$version", version as String)
.replace("\$confinement", confinement)
.let {
if (confinement != "classic") return@let it
// If confinement is not strict, remove the PLUGS section
val start = it.indexOf("# PLUGS START")
val end = it.indexOf("# PLUGS END")
if (start != -1 && end != -1) {
val before = it.substring(0, start)
val after = it.substring(end + "# PLUGS END".length)
return@let before + after
}
return@let it
}
dir.file("../snapcraft.yaml").asFile.writeText(content)
}
}
tasks.register<Exec>("packageSnap"){
@@ -414,7 +399,6 @@ tasks.register<Copy>("includeJavaModeResources") {
}
tasks.register("includeProcessingResources"){
dependsOn(
"includeJdk",
"includeCore",
"includeJavaMode",
"includeSharedAssets",
@@ -422,6 +406,7 @@ tasks.register("includeProcessingResources"){
"includeProcessingWebsiteExamples",
"includeJavaModeResources"
)
mustRunAfter("includeJdk")
finalizedBy("signResources")
}
@@ -530,6 +515,7 @@ afterEvaluate {
dependsOn(listOf("core","java:preprocessor", "java:gradle", "java:gradle:hotreload").map { project(":$it").tasks.named("publishAllPublicationsToAppRepository") })
}
tasks.named("createDistributable").configure {
dependsOn("includeJdk")
finalizedBy("setExecutablePermissions")
}
}
+2
View File
@@ -13,6 +13,8 @@
<property name="ant.url"
value="https://dlcdn.apache.org//ant/binaries/${ant.zip}" />
<mkdir dir="lib" />
<fileset id="ant.files" dir="lib">
<include name="ant.jar" />
<include name="ant-launcher.jar" />
-7
View File
@@ -1,7 +0,0 @@
ant.jar
ant-launcher.jar
flatlaf.jar
jna.jar
jna-platform.jar
+42
View File
@@ -0,0 +1,42 @@
name: $name
version: $version
base: core22
summary: A creative coding editor
description: |
Processing is a flexible software sketchbook and a programming language designed for learning how to code.
confinement: $confinement
apps:
processing:
command: opt/processing/bin/Processing
desktop: opt/processing/lib/processing-Processing.desktop
environment:
LD_LIBRARY_PATH: $SNAP/opt/processing/lib/runtime/lib:$LD_LIBRARY_PATH
LIBGL_DRIVERS_PATH: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/dri
# PLUGS START
plugs:
- desktop
- desktop-legacy
- wayland
- x11
- network
- opengl
- home
- removable-media
- audio-playback
- audio-record
- pulseaudio
- gpio
# PLUGS END
parts:
processing:
plugin: dump
source: deb/processing_$version-1_$arch.deb
source-type: deb
stage-packages:
- openjdk-17-jre
override-prime: |
snapcraftctl prime
rm -vf usr/lib/jvm/java-17-openjdk-*/lib/security/cacerts
chmod -R +x opt/processing/lib/app/resources/jdk
+10 -13
View File
@@ -166,18 +166,6 @@ public class Base {
static private void createAndShowGUI(String[] args) {
// these times are fairly negligible relative to Base.<init>
// long t1 = System.currentTimeMillis();
var preferences = java.util.prefs.Preferences.userRoot().node("org/processing/app");
var installLocations = new ArrayList<>(List.of(preferences.get("installLocations", "").split(",")));
var installLocation = System.getProperty("user.dir") + "^" + Base.getVersionName();
// Check if the installLocation is already in the list
if (!installLocations.contains(installLocation)) {
// Add the installLocation to the list
installLocations.add(installLocation);
// Save the updated list back to preferences
preferences.put("installLocations", String.join(",", installLocations));
}
// TODO: Cleanup old locations if no longer installed
// TODO: Cleanup old locations if current version is installed in the same location
@@ -251,7 +239,16 @@ public class Base {
// long t2 = System.currentTimeMillis();
if (DEBUG || !SingleInstance.alreadyRunning(args)) {
// boolean flag indicating whether to create new server instance or not
boolean createNewInstance = DEBUG || !SingleInstance.alreadyRunning(args);
// free up resources by terminating the JVM
if(!createNewInstance){
System.exit(0);
return;
}
if (createNewInstance) {
// Set the look and feel before opening the window
try {
Platform.setLookAndFeel();
+1
View File
@@ -40,6 +40,7 @@ import processing.app.ui.ExamplesFrame;
import processing.app.ui.Recent;
import processing.app.ui.Toolkit;
import processing.core.PApplet;
import processing.utils.SketchException;
public abstract class Mode {
+7
View File
@@ -105,6 +105,9 @@ public class Platform {
"An unknown error occurred while trying to load\n" +
"platform-specific code for your machine.", e);
}
// Fix the issue where `java.home` points to the JRE instead of the JDK. processing/processing4#1163
System.setProperty("java.home", getJavaHome().getAbsolutePath());
}
@@ -389,6 +392,7 @@ public class Platform {
}
static public File getJavaHome() {
// Get the build in JDK location from the Jetpack Compose resources
var resourcesDir = System.getProperty("compose.application.resources.dir");
if(resourcesDir != null) {
var jdkFolder = new File(resourcesDir,"jdk");
@@ -397,10 +401,13 @@ public class Platform {
}
}
// If the JDK is set in the environment, use that.
var home = System.getProperty("java.home");
if(home != null){
return new File(home);
}
// Otherwise try to use the Ant embedded JDK.
if (Platform.isMacOS()) {
//return "Contents/PlugIns/jdk1.7.0_40.jdk/Contents/Home/jre/bin/java";
File[] plugins = getContentFile("../PlugIns").listFiles((dir, name) -> dir.isDirectory() &&
+70 -18
View File
@@ -11,7 +11,12 @@ import com.github.ajalt.clikt.parameters.options.flag
import com.github.ajalt.clikt.parameters.options.help
import com.github.ajalt.clikt.parameters.options.option
import processing.app.gradle.api.Sketch
import processing.app.api.Contributions
import processing.app.api.Sketchbook
import processing.app.ui.Start
import java.io.File
import java.util.prefs.Preferences
import kotlin.concurrent.thread
class Processing: SuspendingCliktCommand("processing"){
val version by option("-v","--version")
@@ -30,6 +35,11 @@ class Processing: SuspendingCliktCommand("processing"){
return
}
thread {
// Update the install locations in preferences
updateInstallLocations()
}
val subcommand = currentContext.invokedSubcommand
if (subcommand == null) {
Start.main(sketches.toTypedArray())
@@ -42,7 +52,9 @@ suspend fun main(args: Array<String>){
.subcommands(
LSP(),
LegacyCLI(args),
Sketch()
Sketch(),
Contributions(),
Sketchbook()
)
.main(args)
}
@@ -51,6 +63,9 @@ class LSP: SuspendingCliktCommand("lsp"){
override fun help(context: Context) = "Start the Processing Language Server"
override suspend fun run(){
try {
// run in headless mode
System.setProperty("java.awt.headless", "true")
// Indirect invocation since app does not depend on java mode
Class.forName("processing.mode.java.lsp.PdeLanguageServer")
.getMethod("main", Array<String>::class.java)
@@ -61,32 +76,69 @@ class LSP: SuspendingCliktCommand("lsp"){
}
}
class LegacyCLI(val args: Array<String>): SuspendingCliktCommand( "cli"){
override fun help(context: Context) = "Legacy processing-java command line interface"
class LegacyCLI(val args: Array<String>): SuspendingCliktCommand("cli") {
override val treatUnknownOptionsAsArgs = true
val help by option("--help").flag()
val build by option("--build").flag()
val run by option("--run").flag()
val present by option("--present").flag()
val sketch: String? by option("--sketch")
val force by option("--force").flag()
val output: String? by option("--output")
val export by option("--export").flag()
val noJava by option("--no-java").flag()
val variant: String? by option("--variant")
val arguments by argument().multiple(default = emptyList())
override suspend fun run(){
val cliArgs = args.filter { it != "cli" }
override suspend fun run() {
try {
if(build){
System.setProperty("java.awt.headless", "true")
}
System.setProperty("java.awt.headless", "true")
// Indirect invocation since app does not depend on java mode
Class.forName("processing.mode.java.Commander")
.getMethod("main", Array<String>::class.java)
.invoke(null, *arrayOf<Any>(cliArgs.toTypedArray()))
.invoke(null, arguments.toTypedArray())
} catch (e: Exception) {
throw InternalError("Failed to invoke main method", e)
}
}
}
fun updateInstallLocations(){
val preferences = Preferences.userRoot().node("org/processing/app")
val installLocations = preferences.get("installLocations", "")
.split(",")
.dropLastWhile { it.isEmpty() }
.filter { install ->
try{
val (path, version) = install.split("^")
val file = File(path)
if(!file.exists() || file.isDirectory){
return@filter false
}
// call the path to check if it is a valid install location
val process = ProcessBuilder(path, "--version")
.redirectErrorStream(true)
.start()
val exitCode = process.waitFor()
if(exitCode != 0){
return@filter false
}
val output = process.inputStream.bufferedReader().readText()
return@filter output.contains(version)
} catch (e: Exception){
false
}
}
.toMutableList()
val command = ProcessHandle.current().info().command()
if(command.isEmpty) {
return
}
val installLocation = "${command.get()}^${Base.getVersionName()}"
// Check if the installLocation is already in the list
if (installLocations.contains(installLocation)) {
return
}
// Add the installLocation to the list
installLocations.add(installLocation)
// Save the updated list back to preferences
preferences.put("installLocations", java.lang.String.join(",", installLocations))
}
+176
View File
@@ -0,0 +1,176 @@
package processing.app;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import java.io.*;
import java.net.InetSocketAddress;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.zip.*;
/**
* A simple HTTP server that serves files from a zip archive.
* Replaces the previous custom WebServer implementation.
*/
public class ReferenceServer {
private final HttpServer server;
private final ZipFile zip;
private final Map<String, ZipEntry> entries;
private final int port;
/** mapping of file extensions to content-types */
static final Map<String, String> contentTypes = new ConcurrentHashMap<>();
static {
contentTypes.put("", "content/unknown");
contentTypes.put(".css", "text/css");
contentTypes.put(".csv", "text/csv");
contentTypes.put(".eot", "application/vnd.ms-fontobject");
contentTypes.put(".gif", "image/gif");
contentTypes.put(".html", "text/html");
contentTypes.put(".ico", "image/x-icon");
contentTypes.put(".jpeg", "image/jpeg");
contentTypes.put(".jpg", "image/jpeg");
contentTypes.put(".js", "text/javascript");
contentTypes.put(".json", "application/json");
contentTypes.put(".md", "text/markdown");
contentTypes.put(".mdx", "text/mdx");
contentTypes.put(".mtl", "text/plain");
contentTypes.put(".obj", "text/plain");
contentTypes.put(".otf", "font/otf");
contentTypes.put(".pde", "text/plain");
contentTypes.put(".png", "image/png");
contentTypes.put(".svg", "image/svg+xml");
contentTypes.put(".tsv", "text/tab-separated-values");
contentTypes.put(".ttf", "font/ttf");
contentTypes.put(".txt", "text/plain");
contentTypes.put(".vlw", "application/octet-stream");
contentTypes.put(".woff", "font/woff");
contentTypes.put(".woff2", "font/woff2");
contentTypes.put(".xml", "application/xml");
contentTypes.put(".yml", "text/yaml");
contentTypes.put(".zip", "application/zip");
}
/**
* Creates a new reference server that serves files from the specified zip file.
*
* @param zipFile The zip file containing reference documentation
* @param port The port to serve on
* @throws IOException If there is an error starting the server
*/
public ReferenceServer(File zipFile, int port) throws IOException {
this.zip = new ZipFile(zipFile);
this.port = port;
// Index all entries in the zip file
entries = new HashMap<>();
Enumeration<? extends ZipEntry> en = zip.entries();
while (en.hasMoreElements()) {
ZipEntry entry = en.nextElement();
entries.put(entry.getName(), entry);
}
// Create and configure the server
server = HttpServer.create(new InetSocketAddress(port), 0);
server.createContext("/", new ReferenceHandler());
server.setExecutor(Executors.newFixedThreadPool(10));
server.start();
Messages.log("Reference server started on port " + port);
}
/**
* Gets the base URL for the server.
*
* @return The base URL
*/
public String getPrefix() {
return "http://localhost:" + port + "/";
}
/**
* Stops the server.
*/
public void stop() {
server.stop(0);
try {
zip.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* Handler for reference documentation requests.
*/
class ReferenceHandler implements HttpHandler {
@Override
public void handle(HttpExchange exchange) throws IOException {
String path = exchange.getRequestURI().getPath();
// Remove leading slash to match zip entry paths
if (path.startsWith("/")) {
path = path.substring(1);
}
// Handle empty paths or directory requests
if (path.isEmpty() || path.endsWith("/")) {
path = path + "index.html";
}
ZipEntry entry = entries.get(path);
if (entry != null) {
// Determine content type
String contentType = "application/octet-stream";
int dotIndex = path.lastIndexOf('.');
if (dotIndex > 0) {
String extension = path.substring(dotIndex);
contentType = contentTypes.getOrDefault(extension, "application/octet-stream");
}
// Send the file
exchange.getResponseHeaders().set("Content-Type", contentType);
exchange.getResponseHeaders().set("Content-Length", String.valueOf(entry.getSize()));
exchange.sendResponseHeaders(200, entry.getSize());
try (OutputStream os = exchange.getResponseBody();
InputStream is = zip.getInputStream(entry)) {
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = is.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
}
Messages.log("Serving: " + path + " (" + contentType + ")");
} else {
// Send 404
String response = "<html><body><h1>404 Not Found</h1><p>The requested resource was not found.</p></body></html>";
exchange.getResponseHeaders().set("Content-Type", "text/html");
exchange.sendResponseHeaders(404, response.length());
try (OutputStream os = exchange.getResponseBody()) {
os.write(response.getBytes());
}
Messages.log("404 Not Found: " + path);
}
}
}
/**
* A main() method for testing.
*/
static public void main(String[] args) {
try {
new ReferenceServer(new File(args[0]), 8053);
System.out.println("Server running at http://localhost:8053/");
} catch (IOException e) {
e.printStackTrace();
}
}
}
+22 -154
View File
@@ -1,162 +1,30 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */
/*
Part of the Processing project - http://processing.org
Copyright (c) 2004-08 Ben Fry and Casey Reas
Copyright (c) 2001-04 Massachusetts Institute of Technology
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// temporary band-aid class to support modes which are still looking here for the now-refactored class.
// - josh giesbrecht
package processing.app;
@Deprecated
// please migrate to using processing.utils.SketchException instead! all class functionality is the same as before.
public class SketchException extends processing.utils.SketchException {
/**
* An exception with a line number attached that occurs
* during either pre-processing, compile, or run time.
*/
public class SketchException extends Exception {
protected String message;
protected int codeIndex;
protected int codeLine;
protected int codeColumn;
protected boolean showStackTrace;
public SketchException(String message) {
this(message, true);
}
public SketchException(String message, boolean showStackTrace) {
this(message, -1, -1, -1, showStackTrace);
}
public SketchException(String message, int file, int line) {
this(message, file, line, -1, true);
}
public SketchException(String message, int file, int line, int column) {
this(message, file, line, column, true);
}
public SketchException(String message, int file, int line, int column,
boolean showStackTrace) {
this.message = message;
this.codeIndex = file;
this.codeLine = line;
this.codeColumn = column;
this.showStackTrace = showStackTrace;
}
/**
* Override getMessage() in Throwable, so that I can set
* the message text outside the constructor.
*/
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public int getCodeIndex() {
return codeIndex;
}
public void setCodeIndex(int index) {
codeIndex = index;
}
public boolean hasCodeIndex() {
return codeIndex != -1;
}
public int getCodeLine() {
return codeLine;
}
public void setCodeLine(int line) {
this.codeLine = line;
}
public boolean hasCodeLine() {
return codeLine != -1;
}
public void setCodeColumn(int column) {
this.codeColumn = column;
}
public int getCodeColumn() {
return codeColumn;
}
public void showStackTrace() {
showStackTrace = true;
}
public void hideStackTrace() {
showStackTrace = false;
}
public boolean isStackTraceEnabled() {
return showStackTrace;
}
/**
* Nix the java.lang crap out of an exception message
* because it scares the children.
* <P>
* This function must be static to be used with super()
* in each of the constructors above.
*/
/*
static public final String massage(String msg) {
if (msg.indexOf("java.lang.") == 0) {
//int dot = msg.lastIndexOf('.');
msg = msg.substring("java.lang.".length());
// Idea complained without all these super wrappers for constructors. ¯\_()_/¯ sure, why not?
public SketchException(String message) {
super(message);
}
return msg;
//return (dot == -1) ? msg : msg.substring(dot+1);
}
*/
public void printStackTrace() {
if (showStackTrace) {
super.printStackTrace();
public SketchException(String message, boolean showStackTrace) {
super(message, showStackTrace);
}
public SketchException(String message, int file, int line) {
super(message, file, line);
}
public SketchException(String message, int file, int line, int column) {
super(message, file, line, column);
}
public SketchException(String message, int file, int line, int column, boolean showStackTrace) {
super(message, file, line, column, showStackTrace);
}
}
}
+8 -5
View File
@@ -35,6 +35,7 @@ import processing.app.ui.WelcomeToBeta;
import processing.core.PApplet;
/**
* Threaded class to check for updates in the background.
* <p/>
@@ -112,6 +113,7 @@ public class UpdateCheck {
System.getProperty("os.arch"));
int latest = readInt(LATEST_URL + "?" + info);
int revision = Base.getRevision();
String lastString = Preferences.get("update.last");
long now = System.currentTimeMillis();
@@ -125,18 +127,19 @@ public class UpdateCheck {
Preferences.set("update.last", String.valueOf(now));
if (base.activeEditor != null) {
// boolean offerToUpdateContributions = true;
if (latest > Base.getRevision()) {
if (latest > revision) {
System.out.println("You are running Processing revision 0" +
Base.getRevision() + ", the latest build is 0" +
revision + ", the latest build is 0" +
latest + ".");
// Assume the person is busy downloading the latest version
// offerToUpdateContributions = !promptToVisitDownloadPage();
promptToVisitDownloadPage();
}
if(latest < Base.getRevision()){
WelcomeToBeta.showWelcomeToBeta();
int lastBetaWelcomeSeen = Preferences.getInteger("update.beta_welcome");
if(latest < revision && revision != lastBetaWelcomeSeen ) {
WelcomeToBeta.showWelcomeToBeta();
}
/*
-335
View File
@@ -1,335 +0,0 @@
package processing.app;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.zip.*;
/**
* This code is placed here in anticipation of running the reference from an
* internal web server that reads the docs from a zip file, instead of using
* thousands of .html files on the disk, which is really inefficient.
* <p/>
* This is a very simple, multi-threaded HTTP server, originally based on
* <a href="http://j.mp/6BQwpI">this</a> article on java.sun.com.
*/
public class WebServer {
static final int HTTP_OK = 200;
static final int HTTP_NOT_FOUND = 404;
static final int HTTP_BAD_METHOD = 405;
/** where worker threads stand idle */
private final Vector<Worker> threads = new Vector<>();
/** max # worker threads */
static final int WORKERS = 5;
private final int port;
private final ZipFile zip;
private final Map<String, ZipEntry> entries;
static final int BUFFER_SIZE = 8192;
static final byte[] EOL = { (byte) '\r', (byte) '\n' };
public WebServer(File zipFile, int port) throws IOException {
this.zip = new ZipFile(zipFile);
this.port = port;
entries = new HashMap<>();
Enumeration<? extends ZipEntry> en = zip.entries();
while (en.hasMoreElements()) {
ZipEntry entry = en.nextElement();
entries.put(entry.getName(), entry);
}
// start worker threads
for (int i = 0; i < WORKERS; ++i) {
Worker w = new Worker();
Thread t = new Thread(w, "Web Server Worker #" + i);
t.start();
threads.addElement(w);
}
new Thread(() -> {
try {
ServerSocket ss = new ServerSocket(port);
while (true) {
Socket s = ss.accept();
synchronized (threads) {
if (threads.isEmpty()) {
Worker ws = new Worker();
ws.setSocket(s);
(new Thread(ws, "additional worker")).start();
} else {
Worker w = threads.elementAt(0);
threads.removeElementAt(0);
w.setSocket(s);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}).start();
}
public String getPrefix() {
return "http://localhost:" + port + "/";
}
class Worker implements Runnable {
// buffer to use for requests
byte[] buffer;
private Socket socket;
Worker() {
buffer = new byte[BUFFER_SIZE];
socket = null;
}
synchronized void setSocket(Socket s) {
this.socket = s;
notify();
}
public synchronized void run() {
while (true) {
if (socket == null) {
try {
wait();
} catch (InterruptedException e) {
continue;
}
}
try {
handleClient();
} catch (Exception e) {
e.printStackTrace();
}
// go back in wait queue if there's fewer
// than numHandler connections.
socket = null;
synchronized (threads) {
if (threads.size() >= WebServer.WORKERS) {
// too many threads, exit this one
return;
} else {
threads.addElement(this);
}
}
}
}
void handleClient() throws IOException {
InputStream is = new BufferedInputStream(socket.getInputStream());
PrintStream ps = new PrintStream(socket.getOutputStream());
// we will only block in read for this many milliseconds
// before we fail with java.io.InterruptedIOException,
// at which point we will abandon the connection.
socket.setSoTimeout(10000);
socket.setTcpNoDelay(true);
// zero out the buffer from last time
for (int i = 0; i < BUFFER_SIZE; i++) {
buffer[i] = 0;
}
try {
// We only support HTTP GET/HEAD, and don't support any fancy HTTP
// options, so we're only interested really in the first line.
int length = 0;
outerLoop:
while (length < BUFFER_SIZE) {
int r = is.read(buffer, length, BUFFER_SIZE - length);
if (r == -1) {
return; // EOF
}
int i = length;
length += r;
for (; i < length; i++) {
if (buffer[i] == (byte) '\n' || buffer[i] == (byte) '\r') {
break outerLoop; // read one line
}
}
}
// are we doing a GET or just a HEAD
boolean doingGet;
// beginning of file name
int index;
if (buffer[0] == (byte) 'G' &&
buffer[1] == (byte) 'E' &&
buffer[2] == (byte) 'T' &&
buffer[3] == (byte) ' ') {
doingGet = true;
index = 4;
} else if (buffer[0] == (byte) 'H' &&
buffer[1] == (byte) 'E' &&
buffer[2] == (byte) 'A' &&
buffer[3] == (byte) 'D' &&
buffer[4] == (byte) ' ') {
doingGet = false;
index = 5;
} else {
// we don't support this method
ps.print("HTTP/1.0 " + HTTP_BAD_METHOD + " unsupported method type: ");
ps.write(buffer, 0, 5);
ps.write(EOL);
ps.flush();
socket.close();
return;
}
int i;
// find the file name, from:
// GET /foo/bar.html HTTP/1.0
// extract "/foo/bar.html"
for (i = index; i < length; i++) {
if (buffer[i] == (byte) ' ') {
break;
}
}
String path = new String(buffer, index, i - index);
// get the zip entry, remove the front slash
ZipEntry entry = entries.get(path.substring(1));
boolean ok = printHeaders(ps, path, entry);
if (entry != null) {
InputStream stream = zip.getInputStream(entry);
if (doingGet && ok) {
sendFile(stream, ps);
}
} else {
send404(ps);
}
} finally {
socket.close();
}
}
boolean printHeaders(PrintStream ps, String path, ZipEntry entry) throws IOException {
int status;
if (entry == null) {
status = HTTP_NOT_FOUND;
ps.print("HTTP/1.0 " + HTTP_NOT_FOUND + " Not Found");
} else {
status = HTTP_OK;
ps.print("HTTP/1.0 " + HTTP_OK + " OK");
}
ps.write(EOL);
Messages.log("From " + socket.getInetAddress().getHostAddress() + ": GET " + path + " --> " + status);
ps.print("Server: Processing Reference Server");
ps.write(EOL);
ps.print("Date: " + new Date());
ps.write(EOL);
if (entry != null) {
if (!entry.isDirectory()) {
ps.print("Content-length: " + entry.getSize());
ps.write(EOL);
ps.print("Last Modified: " + new Date(entry.getTime()));
ps.write(EOL);
String name = entry.getName();
int ind = name.lastIndexOf('.');
String contentType = "application/x-unknown-content-type";
if (ind > 0) {
contentType = contentTypes.getOrDefault(name.substring(ind), contentType);
}
ps.print("Content-type: " + contentType);
} else {
ps.print("Content-type: text/html");
}
ps.write(EOL);
}
ps.write(EOL); // adding another newline here [fry]
// indicates whether to send a file on return
return status == HTTP_OK;
}
void send404(PrintStream ps) throws IOException {
ps.write(EOL);
ps.write(EOL);
ps.print("<html><body><h1>404 Not Found</h1>");
ps.print("The requested resource was not found.</body></html>");
ps.write(EOL);
ps.write(EOL);
}
void sendFile(InputStream is, PrintStream ps) throws IOException {
try (is) {
int n;
while ((n = is.read(buffer)) > 0) {
ps.write(buffer, 0, n);
}
}
}
}
/** mapping of file extensions to content-types */
static final Map<String, String> contentTypes = new ConcurrentHashMap<>();
// get list of extensions to support (https://superuser.com/a/232101)
// find . -type f | sed -En 's|.*/[^/]+\.([^/.]+)$|\1|p' | sort -u
// -E is for macOS, use -r on Linux
static {
contentTypes.put("", "content/unknown");
contentTypes.put(".css", "text/css");
contentTypes.put(".csv", "text/csv");
contentTypes.put(".eot", "application/vnd.ms-fontobject"); // only in 3.x
contentTypes.put(".gif", "image/gif");
contentTypes.put(".html", "text/html");
contentTypes.put(".ico", "image/x-icon"); // only in 3.x?
contentTypes.put(".jpeg", "image/jpeg");
contentTypes.put(".jpg", "image/jpeg");
contentTypes.put(".js", "text/javascript");
contentTypes.put(".json", "application/json");
contentTypes.put(".md", "text/markdown");
contentTypes.put(".mdx", "text/mdx");
contentTypes.put(".mtl", "text/plain"); // https://stackoverflow.com/a/19304383
contentTypes.put(".obj", "text/plain"); // https://stackoverflow.com/a/19304383
contentTypes.put(".otf", "font/otf");
contentTypes.put(".pde", "text/plain");
contentTypes.put(".png", "image/png");
contentTypes.put(".svg", "image/svg+xml");
contentTypes.put(".tsv", "text/tab-separated-values");
contentTypes.put(".ttf", "font/ttf");
contentTypes.put(".txt", "text/plain");
contentTypes.put(".vlw", "application/octet-stream"); // or maybe font/x-vlw
contentTypes.put(".woff", "font/woff");
contentTypes.put(".woff2", "font/woff2");
contentTypes.put(".xml", "application/xml"); // https://datatracker.ietf.org/doc/html/rfc3023
contentTypes.put(".yml", "text/yaml");
contentTypes.put(".zip", "application/zip");
}
/**
* A main() method for testing.
*
* <pre>
* cd app
* ant
* open http://localhost:8053/reference/index.html
* java -cp pde.jar processing.app.WebServer ../java/reference.zip
* </pre>
*/
static public void main(String[] args) {
try {
new WebServer(new File(args[0]), 8053);
} catch (IOException e) {
e.printStackTrace();
}
}
}
+144
View File
@@ -0,0 +1,144 @@
package processing.app.api
import com.github.ajalt.clikt.command.SuspendingCliktCommand
import com.github.ajalt.clikt.core.Context
import com.github.ajalt.clikt.core.subcommands
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import processing.app.Platform
import processing.app.api.Sketch.Companion.getSketches
import java.io.File
class Contributions: SuspendingCliktCommand(){
override fun help(context: Context) = "Manage Processing contributions"
override suspend fun run() {
System.setProperty("java.awt.headless", "true")
}
init {
subcommands(Examples())
}
class Examples: SuspendingCliktCommand("examples") {
override fun help(context: Context) = "Manage Processing examples"
override suspend fun run() {
}
init {
subcommands(ExamplesList())
}
}
class ExamplesList: SuspendingCliktCommand("list") {
val serializer = Json {
prettyPrint = true
}
override fun help(context: Context) = "List all examples"
override suspend fun run() {
Platform.init()
// TODO: Decouple modes listing from `Base` class, defaulting to Java mode for now
// TODO: Allow the user to change the sketchbook location
// TODO: Currently blocked since `Base.getSketchbookFolder()` is not available in headless mode
val sketchbookFolder = Platform.getDefaultSketchbookFolder()
val resourcesDir = System.getProperty("compose.application.resources.dir")
val javaMode = "$resourcesDir/modes/java"
val javaModeExamples = File("$javaMode/examples")
.listFiles()
?.map { getSketches(it)}
?: emptyList()
val javaModeLibrariesExamples = File("$javaMode/libraries")
.listFiles{ it.isDirectory }
?.map { library ->
val properties = library.resolve("library.properties")
val name = findNameInProperties(properties) ?: library.name
val libraryExamples = getSketches(library.resolve("examples"))
Sketch.Companion.Folder(
type = "folder",
name = name,
path = library.absolutePath,
mode = "java",
children = libraryExamples?.children ?: emptyList(),
sketches = libraryExamples?.sketches ?: emptyList()
)
} ?: emptyList()
val javaModeLibraries = Sketch.Companion.Folder(
type = "folder",
name = "Libraries",
path = "$javaMode/libraries",
mode = "java",
children = javaModeLibrariesExamples,
sketches = emptyList()
)
val contributedLibraries = sketchbookFolder.resolve("libraries")
.listFiles{ it.isDirectory }
?.map { library ->
val properties = library.resolve("library.properties")
val name = findNameInProperties(properties) ?: library.name
// Get library name from library.properties if it exists
val libraryExamples = getSketches(library.resolve("examples"))
Sketch.Companion.Folder(
type = "folder",
name = name,
path = library.absolutePath,
mode = "java",
children = libraryExamples?.children ?: emptyList(),
sketches = libraryExamples?.sketches ?: emptyList()
)
} ?: emptyList()
val contributedLibrariesFolder = Sketch.Companion.Folder(
type = "folder",
name = "Contributed Libraries",
path = sketchbookFolder.resolve("libraries").absolutePath,
mode = "java",
children = contributedLibraries,
sketches = emptyList()
)
val contributedExamples = sketchbookFolder.resolve("examples")
.listFiles{ it.isDirectory }
?.map {
val properties = it.resolve("examples.properties")
val name = findNameInProperties(properties) ?: it.name
val sketches = getSketches(it.resolve("examples"))
Sketch.Companion.Folder(
type = "folder",
name,
path = it.absolutePath,
mode = "java",
children = sketches?.children ?: emptyList(),
sketches = sketches?.sketches ?: emptyList(),
)
}
?: emptyList()
val contributedExamplesFolder = Sketch.Companion.Folder(
type = "folder",
name = "Contributed Examples",
path = sketchbookFolder.resolve("examples").absolutePath,
mode = "java",
children = contributedExamples,
sketches = emptyList()
)
val json = serializer.encodeToString(javaModeExamples + javaModeLibraries + contributedLibrariesFolder + contributedExamplesFolder)
println(json)
}
private fun findNameInProperties(properties: File): String? {
if (!properties.exists()) return null
return properties.readLines().firstNotNullOfOrNull { line ->
line.split("=", limit = 2)
.takeIf { it.size == 2 && it[0].trim() == "name" }
?.let { it[1].trim() }
}
}
}
}
+50
View File
@@ -0,0 +1,50 @@
package processing.app.api
import kotlinx.serialization.Serializable
import java.io.File
class Sketch {
companion object{
@Serializable
data class Sketch(
val type: String = "sketch",
val name: String,
val path: String,
val mode: String = "java",
)
@Serializable
data class Folder(
val type: String = "folder",
val name: String,
val path: String,
val mode: String = "java",
val children: List<Folder> = emptyList(),
val sketches: List<Sketch> = emptyList()
)
fun getSketches(file: File, filter: (File) -> Boolean = { true }): Folder? {
val name = file.name
val (sketchesFolders, childrenFolders) = file.listFiles()?.filter (File::isDirectory)?.partition { isSketchFolder(it) } ?: return Folder(
name = name,
path = file.absolutePath,
sketches = emptyList(),
children = emptyList()
)
val children = childrenFolders.filter(filter).mapNotNull { getSketches(it) }
val sketches = sketchesFolders.map { Sketch(name = it.name, path = it.absolutePath) }
if(sketches.isEmpty() && children.isEmpty()) {
return null
}
return Folder(
name = name,
path = file.absolutePath,
children = children,
sketches = sketches
)
}
fun isSketchFolder(file: File): Boolean {
return file.isDirectory && file.listFiles().any { it.isFile && it.name.endsWith(".pde") }
}
}
}
+50
View File
@@ -0,0 +1,50 @@
package processing.app.api
import com.github.ajalt.clikt.command.SuspendingCliktCommand
import com.github.ajalt.clikt.core.Context
import com.github.ajalt.clikt.core.subcommands
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import processing.app.Platform
import processing.app.Preferences
import processing.app.api.Sketch.Companion.getSketches
import java.io.File
class Sketchbook: SuspendingCliktCommand() {
override fun help(context: Context) = "Manage the sketchbook"
override suspend fun run() {
System.setProperty("java.awt.headless", "true")
}
init {
subcommands(SketchbookList())
}
class SketchbookList: SuspendingCliktCommand("list") {
val serializer = Json {
prettyPrint = true
}
override fun help(context: Context) = "List all sketches"
override suspend fun run() {
Platform.init()
// TODO: Allow the user to change the sketchbook location
// TODO: Currently blocked since `Base.getSketchbookFolder()` is not available in headless mode
val sketchbookFolder = Platform.getDefaultSketchbookFolder()
val sketches = getSketches(sketchbookFolder) {
!listOf(
"android",
"modes",
"tools",
"examples",
"libraries"
).contains(it.name)
}
val json = serializer.encodeToString(listOf(sketches))
println(json)
}
}
}
+3 -2
View File
@@ -60,7 +60,7 @@ import processing.app.Problem;
import processing.app.RunnerListener;
import processing.app.Sketch;
import processing.app.SketchCode;
import processing.app.SketchException;
import processing.utils.SketchException;
import processing.app.contrib.ContributionManager;
import processing.app.gradle.GradleService;
import processing.app.laf.PdeMenuItemUI;
@@ -2675,7 +2675,7 @@ public abstract class Editor extends JFrame implements RunnerListener {
* Clear the status area.
*/
public void statusEmpty() {
statusNotice(EMPTY);
status.empty();
}
@@ -2746,6 +2746,7 @@ public abstract class Editor extends JFrame implements RunnerListener {
}
int tabIndex = p.getTabIndex();
sketch.setCurrentCode(tabIndex); // so we are looking at the right offsets below
int lineNumber = p.getLineNumber();
int lineStart = textarea.getLineStartOffset(lineNumber);
int lineEnd = textarea.getLineStopOffset(lineNumber);
+5 -1
View File
@@ -35,6 +35,7 @@ import com.mikepenz.markdown.m2.markdownColor
import com.mikepenz.markdown.m2.markdownTypography
import com.mikepenz.markdown.model.MarkdownColors
import com.mikepenz.markdown.model.MarkdownTypography
import processing.app.Preferences
import processing.app.Base.getRevision
import processing.app.Base.getVersionName
import processing.app.ui.theme.LocalLocale
@@ -61,7 +62,10 @@ class WelcomeToBeta {
val mac = SystemInfo.isMacFullWindowContentSupported
SwingUtilities.invokeLater {
JFrame(windowTitle).apply {
val close = { dispose() }
val close = {
Preferences.set("update.beta_welcome", getRevision().toString())
dispose()
}
rootPane.putClientProperty("apple.awt.transparentTitleBar", mac)
rootPane.putClientProperty("apple.awt.fullWindowContent", mac)
defaultCloseOperation = JFrame.DISPOSE_ON_CLOSE
+50
View File
@@ -0,0 +1,50 @@
package processing.app
import java.io.File
import kotlin.test.Test
/*
This class is used to test the CLI commands of the Processing IDE.
It mostly exists to quickly run CLI commands without having to specify run configurations
or to manually run it on the command line.
In IntelliJ IDEA, it should display runnable arrows next to each test method.
Use this to quickly test the CLI commands.
The output will be displayed in the console after `Running CLI with arguments: ...`.
When developing on the CLI commands, feel free to add more test methods here.
*/
class CLITest {
@Test
fun testLSP(){
runCLIWithArguments("lsp")
}
@Test
fun testLegacyCLI(){
runCLIWithArguments("cli --help")
}
/*
This function runs the CLI with the given arguments.
*/
fun runCLIWithArguments(args: String) {
// TODO: Once Processing PDE correctly builds in IntelliJ IDEA switch over to using the code directly
// To see if the PDE builds correctly can be tested by running the Processing.kt main function directly in IntelliJ IDEA
// Set the JAVA_HOME environment variable to the JDK used by the IDE
println("Running CLI with arguments: $args")
val process = ProcessBuilder("./gradlew", "run", "--args=$args", "--quiet")
.directory(File(System.getProperty("user.dir")).resolve("../../../"))
.inheritIO()
process.environment().apply {
put("JAVA_HOME", System.getProperty("java.home"))
}
val result = process
.start()
.waitFor()
println("Done running CLI with arguments: $args (Result: $result)")
}
}
+16
View File
@@ -0,0 +1,16 @@
plugins {
id("java")
}
repositories {
mavenCentral()
}
dependencies {
testImplementation(platform("org.junit:junit-bom:5.10.0"))
testImplementation("org.junit.jupiter:junit-jupiter")
}
tasks.test {
useJUnitPlatform()
}
@@ -0,0 +1,162 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */
/*
Part of the Processing project - http://processing.org
Copyright (c) 2004-08 Ben Fry and Casey Reas
Copyright (c) 2001-04 Massachusetts Institute of Technology
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package processing.utils;
/**
* An exception with a line number attached that occurs
* during either pre-processing, compile, or run time.
*/
public class SketchException extends Exception {
protected String message;
protected int codeIndex;
protected int codeLine;
protected int codeColumn;
protected boolean showStackTrace;
public SketchException(String message) {
this(message, true);
}
public SketchException(String message, boolean showStackTrace) {
this(message, -1, -1, -1, showStackTrace);
}
public SketchException(String message, int file, int line) {
this(message, file, line, -1, true);
}
public SketchException(String message, int file, int line, int column) {
this(message, file, line, column, true);
}
public SketchException(String message, int file, int line, int column,
boolean showStackTrace) {
this.message = message;
this.codeIndex = file;
this.codeLine = line;
this.codeColumn = column;
this.showStackTrace = showStackTrace;
}
/**
* Override getMessage() in Throwable, so that I can set
* the message text outside the constructor.
*/
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public int getCodeIndex() {
return codeIndex;
}
public void setCodeIndex(int index) {
codeIndex = index;
}
public boolean hasCodeIndex() {
return codeIndex != -1;
}
public int getCodeLine() {
return codeLine;
}
public void setCodeLine(int line) {
this.codeLine = line;
}
public boolean hasCodeLine() {
return codeLine != -1;
}
public void setCodeColumn(int column) {
this.codeColumn = column;
}
public int getCodeColumn() {
return codeColumn;
}
public void showStackTrace() {
showStackTrace = true;
}
public void hideStackTrace() {
showStackTrace = false;
}
public boolean isStackTraceEnabled() {
return showStackTrace;
}
/**
* Nix the java.lang crap out of an exception message
* because it scares the children.
* <P>
* This function must be static to be used with super()
* in each of the constructors above.
*/
/*
static public final String massage(String msg) {
if (msg.indexOf("java.lang.") == 0) {
//int dot = msg.lastIndexOf('.');
msg = msg.substring("java.lang.".length());
}
return msg;
//return (dot == -1) ? msg : msg.substring(dot+1);
}
*/
public void printStackTrace() {
if (showStackTrace) {
super.printStackTrace();
}
}
}
+9
View File
@@ -13,6 +13,7 @@
<Feature Id="MainApplication" Title="Processing" Level="1">
<Files Include="..\build\compose\binaries\main\app\Processing\**" />
<ComponentRef Id="ApplicationShortcut" />
<ComponentRef Id="PathComponent" />
</Feature>
<Directory Id="ProgramMenuFolder">
<Directory Id="ApplicationProgramsFolder" Name="Processing"/>
@@ -31,5 +32,13 @@
<RemoveFolder Id="CleanUpShortCut" Directory="ApplicationProgramsFolder" On="uninstall"/>
<RegistryValue Root="HKCU" Key="Software\Processing Foundation\Processing" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
<Component Id="PathComponent" Guid="795b17d1-6e67-4581-9588-1f80a73c1428">
<Environment Id="AddProcessingToPath"
Action="set"
Name="Path"
Part="last"
Value="[INSTALLFOLDER]">
</Environment>
</Component>
</Package>
</Wix>
-2
View File
@@ -1,2 +0,0 @@
# after running the 'ant doc' target
javadoc
+1 -1
View File
@@ -420,7 +420,7 @@
<!-- - - - - - - - - -->
<target name="revision-check">
<!-- figure out the revision number -->
<loadfile srcfile="../todo.txt" property="revision">
<loadfile srcfile="revision" property="revision">
<filterchain>
<headfilter lines="1"/>
<tokenfilter>
-116
View File
@@ -1,116 +0,0 @@
#!/usr/bin/env python3
import filecmp
import os
import subprocess
import zipfile
# script to keep the examples in sync [fry 210808]
# when changes are found, stop and open a visual diff tool to examine
DIFF_THE_MODS = False
# contains Basics, Demos, Topics
EXAMPLES_DIR = os.path.realpath('../../processing-docs/content/examples')
# contains Basic Examples, Topic Examples
P4_DOCS_REPO = os.path.realpath('../../processing-other/website/content/examples')
PDEZ_PATH = os.path.realpath('examples-pdez')
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
# location of the Kaleidoscope diff command
KSDIFF = '/usr/local/bin/ksdiff'
# location of the Xcode FileMerge command
# FILE_MERGE = '/Applications/Xcode.app/Contents/Applications/FileMerge.app'
# FILE_MERGE = '/Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents/MacOS/FileMerge'
FILE_MERGE = '/usr/bin/opendiff'
if os.path.exists(KSDIFF):
DIFF_TOOL = KSDIFF
else:
DIFF_TOOL = FILE_MERGE
def run_command(args):
# process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE)
process = subprocess.Popen(args, stdout=subprocess.PIPE)
while True:
output = process.stdout.readline()
# if output == '' and process.poll() is not None: # hangs on Python 3
if process.poll() is not None:
break
if output:
print(output.strip())
rc = process.poll()
return rc
# walk two directories and match .pde files in both locations
def handle(examples_folder, web_folder):
for root, dirs, files in os.walk(examples_folder):
for file in files:
if file.endswith('.pde'):
ex_path = os.path.join(root, file)
rel_path = ex_path[len(examples_folder)+1:]
# print(rel_path)
web_path = os.path.join(web_folder, rel_path)
# print(web_path)
status = ' '
if not os.path.exists(web_path):
status = 'missing '
elif not filecmp.cmp(ex_path, web_path, shallow=True):
status = 'modified '
if DIFF_THE_MODS:
run_command([ DIFF_TOOL, ex_path, web_path ])
exit()
print(f'{status} {rel_path}')
def write_zip(pdez_path, source_folder):
# print(f'Creating {pdez_path}')
# print(f' from {source_folder}')
rel_index = source_folder.rindex('/') + 1
zf = zipfile.ZipFile(pdez_path, mode='w')
try:
for root, dirs, files in os.walk(source_folder):
for filename in files:
path = os.path.join(root, filename)
internal_path = path[rel_index:]
# print(internal_path)
zf.write(path, internal_path, zipfile.ZIP_DEFLATED)
finally:
zf.close()
def examples_to_pdez(source_folder, target_folder):
outgoing = set()
for root, dirs, files in os.walk(source_folder):
for file in files:
if file.endswith('.pde'):
outgoing.add(root[len(source_folder)+1:])
for item in outgoing:
print(f'Packaging {item}...')
# last_slash = item.rfind('/')
rel_name, sketch_name = item.rsplit('/', 1)
# parent_path = os.path.join(source_folder)
category_folder = os.path.join(target_folder, rel_name)
# print(category_folder)
if not os.path.exists(category_folder):
os.makedirs(category_folder)
pdez_path = os.path.join(category_folder, sketch_name + '.pdez')
# write_zip(pdez_path, source_folder + '/' + item)
write_zip(pdez_path, source_folder + '/' + item)
if __name__ == "__main__":
handle(f'{EXAMPLES_DIR}/Basics', f'{P4_DOCS_REPO}/Basic Examples')
handle(f'{EXAMPLES_DIR}/Topics', f'{P4_DOCS_REPO}/Topic Examples')
# examples_to_pdez(EXAMPLES_DIR, PDEZ_PATH)
-269
View File
@@ -1,269 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="11">
<profile kind="CodeFormatterProfile" name="processing" version="11">
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="36"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="18"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
<setting id="org.eclipse.jdt.core.compiler.source" value="1.5"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="18"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="18"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.5"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="18"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="18"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.5"/>
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
</profile>
</profiles>
-5
View File
@@ -1,5 +0,0 @@
As part of a grand plan for Casey and I to rid ourselves of as much of
the duct tape and chewing gum that's holding together processing.org,
this document has been moved to Github:
https://github.com/processing/processing/wiki/Build-Instructions
-4
View File
@@ -1,4 +0,0 @@
jdk-17*.tgz
/processing-*-*.deb
/processing-*-*.tgz
work
-3
View File
@@ -1,3 +0,0 @@
appbundler.jar
jdk-17*
work
-11
View File
@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/adoptopenjdk-11">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" kind="src" path="/processing4-app"/>
<classpathentry kind="output" path="bin"/>
</classpath>
-2
View File
@@ -1,2 +0,0 @@
bin
@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/bin" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="processing4-app" />
</component>
</module>
+1
View File
@@ -0,0 +1 @@
1295
+4
View File
@@ -76,6 +76,10 @@ theme.gradient.method = rgb
# on how many people are using Processing)
update.check = true
# default value for beta_welcome
# -1 means no beta has been run
update.beta_welcome = -1
# on windows, automatically associate .pde files with processing.exe
platform.auto_file_type_associations = true
@@ -151,6 +151,8 @@ menu.help.reference.download = Download Offline Reference
menu.help.libraries_reference = Libraries Reference
menu.help.tools_reference = Tools Reference
menu.help.empty = (empty)
menu.help.report = Report a bug
menu.help.ask = Ask on the Forum
menu.help.online = Online
# Only include the .url lines in the translation file if there
@@ -167,6 +169,8 @@ menu.help.foundation = The Processing Foundation
menu.help.foundation.url = https://processing.foundation/
menu.help.visit = Visit Processing.org
menu.help.visit.url = https://processing.org/
menu.help.report.url = https://github.com/processing/processing4/issues
menu.help.ask.url = https://discourse.processing.org
# ---------------------------------------
@@ -121,6 +121,8 @@ menu.help.troubleshooting = Fehlerbehandlung
menu.help.faq = Häufig gestellte Fragen (FAQ)
menu.help.foundation = "The Processing Foundation"
menu.help.visit = Processing.org besuchen
menu.help.report = Einen Fehler melden
menu.help.ask = Im Forum fragen
# ---------------------------------------
-8
View File
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="/processing4-app"/>
<classpathentry kind="lib" path="tool/jai_imageio.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
-6
View File
@@ -1,6 +0,0 @@
bin
ffmpeg-*.gz
+2
View File
@@ -77,6 +77,8 @@
usetimestamp="true" />
</target>
<mkdir dir="tool" />
<target name="prepare-ffmpeg" depends="download-ffmpeg">
<gunzip src="${ffmpeg.gz}" dest="${ffmpeg.binary}" />
<chmod file="${ffmpeg.binary}" perm="ugo+x" />
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="EclipseModuleManager">
<libelement value="jar://$MODULE_DIR$/tool/jai_imageio.jar!/" />
<src_description expected_position="0">
<src_folder value="file://$MODULE_DIR$/src" expected_position="0" />
</src_description>
</component>
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/bin" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="inheritedJdk" />
<orderEntry type="module" module-name="processing4-app" />
</component>
</module>
@@ -1,3 +0,0 @@
MovieMaker.jar
ffmpeg
ffmpeg.exe
-3
View File
@@ -1,3 +0,0 @@
jdk-17*.zip
/processing-*.zip
work
-13
View File
@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="library/jogl-all.jar" sourcepath="library/jogl-all-src.jar"/>
<classpathentry kind="lib" path="library/gluegen-rt.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JavaFX11"/>
<classpathentry kind="output" path="bin"/>
</classpath>
-9
View File
@@ -1,9 +0,0 @@
bin
bin-test
/library/gluegen-rt*.jar
/library/jogl-all*.jar
core-sources.jar
different/build
-3
View File
@@ -1,3 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AntConfiguration">
<buildFile url="file://$PROJECT_DIR$/build.xml" />
</component>
</project>
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
-9
View File
@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/processing4-core.iml" filepath="$PROJECT_DIR$/processing4-core.iml" />
<module fileurl="file://$PROJECT_DIR$/methods/processing4-core-preproc.iml" filepath="$PROJECT_DIR$/methods/processing4-core-preproc.iml" />
</modules>
</component>
</project>
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>
-476
View File
@@ -1,476 +0,0 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
org.eclipse.jdt.core.compiler.problem.deadCode=ignore
org.eclipse.jdt.core.compiler.problem.deprecation=warning
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=disabled
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
org.eclipse.jdt.core.compiler.problem.nullReference=warning
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=18
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=18
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=18
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=36
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=18
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=18
org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_field=1
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=false
org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.jdt.core.formatter.comment.line_length=80
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
org.eclipse.jdt.core.formatter.compact_else_if=true
org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_empty_lines=false
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
org.eclipse.jdt.core.formatter.indentation.size=2
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.lineSplit=80
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=space
org.eclipse.jdt.core.formatter.tabulation.size=2
org.eclipse.jdt.core.formatter.text_block_indentation=0
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-62
View File
@@ -1,62 +0,0 @@
eclipse.preferences.version=1
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
formatter_profile=_processing
formatter_settings_version=18
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates/>
sp_cleanup.add_default_serial_version_id=true
sp_cleanup.add_generated_serial_version_id=false
sp_cleanup.add_missing_annotations=true
sp_cleanup.add_missing_deprecated_annotations=false
sp_cleanup.add_missing_methods=false
sp_cleanup.add_missing_nls_tags=false
sp_cleanup.add_missing_override_annotations=true
sp_cleanup.add_missing_override_annotations_interface_methods=false
sp_cleanup.add_serial_version_id=false
sp_cleanup.always_use_blocks=true
sp_cleanup.always_use_parentheses_in_expressions=false
sp_cleanup.always_use_this_for_non_static_field_access=false
sp_cleanup.always_use_this_for_non_static_method_access=false
sp_cleanup.convert_functional_interfaces=false
sp_cleanup.convert_to_enhanced_for_loop=false
sp_cleanup.correct_indentation=false
sp_cleanup.format_source_code=false
sp_cleanup.format_source_code_changes_only=false
sp_cleanup.insert_inferred_type_arguments=false
sp_cleanup.make_local_variable_final=false
sp_cleanup.make_parameters_final=false
sp_cleanup.make_private_fields_final=true
sp_cleanup.make_type_abstract_if_missing_method=false
sp_cleanup.make_variable_declarations_final=false
sp_cleanup.never_use_blocks=false
sp_cleanup.never_use_parentheses_in_expressions=true
sp_cleanup.on_save_use_additional_actions=true
sp_cleanup.organize_imports=false
sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
sp_cleanup.remove_private_constructors=true
sp_cleanup.remove_redundant_type_arguments=true
sp_cleanup.remove_trailing_whitespaces=true
sp_cleanup.remove_trailing_whitespaces_all=true
sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
sp_cleanup.remove_unnecessary_casts=false
sp_cleanup.remove_unnecessary_nls_tags=false
sp_cleanup.remove_unused_imports=false
sp_cleanup.remove_unused_local_variables=false
sp_cleanup.remove_unused_private_fields=true
sp_cleanup.remove_unused_private_members=false
sp_cleanup.remove_unused_private_methods=true
sp_cleanup.remove_unused_private_types=true
sp_cleanup.sort_members=false
sp_cleanup.sort_members_all=false
sp_cleanup.use_anonymous_class_creation=false
sp_cleanup.use_blocks=false
sp_cleanup.use_blocks_only_for_return_and_throw=false
sp_cleanup.use_lambda=false
sp_cleanup.use_parentheses_in_expressions=false
sp_cleanup.use_this_for_non_static_field_access=false
sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
sp_cleanup.use_this_for_non_static_method_access=false
sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-414
View File
@@ -1,414 +0,0 @@
This document was last updated for Processing 1.0.
public void setParent(PApplet parent)
public void setPrimary(boolean primary)
public void setPath(String path)
public void setSize(int iwidth, int iheight)
protected void allocate()
public void dispose()
public boolean canDraw()
public void beginDraw()
public void endDraw()
protected void checkSettings()
protected void defaultSettings()
protected void reapplySettings()
public void hint(int which)
public void beginShape()
public void beginShape(int kind)
public void edge(boolean e)
public void normal(float nx, float ny, float nz)
public void textureMode(int mode)
public void texture(PImage image)
public void vertex(float x, float y)
public void vertex(float x, float y, float z)
public void vertex(float x, float y, float u, float v)
public void vertex(float x, float y, float z, float u, float v)
protected void vertexTexture(float u, float v);
public void breakShape()
public void endShape()
public void endShape(int mode)
protected void bezierVertexCheck();
public void bezierVertex(float x2, float y2,
float x3, float y3,
float x4, float y4)
public void bezierVertex(float x2, float y2, float z2,
float x3, float y3, float z3,
float x4, float y4, float z4)
protected void curveVertexCheck();
public void curveVertex(float x, float y)
public void curveVertex(float x, float y, float z)
protected void curveVertexSegment(float x1, float y1,
float x2, float y2,
float x3, float y3,
float x4, float y4)
protected void curveVertexSegment(float x1, float y1, float z1,
float x2, float y2, float z2,
float x3, float y3, float z3,
float x4, float y4, float z4)
protected void renderPoints(int start, int stop) // P3D
protected void rawPoints(int start, int stop) // P3D
protected void renderLines(int start, int stop) // P3D
protected void rawLines(int start, int stop) // P3D
protected void renderTriangles(int start, int stop) // P3D
protected void rawTriangles(int start, int stop) // P3D
public void flush()
protected void render()
proected void sort()
public void point(float x, float y)
public void point(float x, float y, float z)
public void line(float x1, float y1, float x2, float y2)
public void line(float x1, float y1, float z1,
float x2, float y2, float z2)
public void triangle(float x1, float y1,
float x2, float y2,
float x3, float y3)
public void quad(float x1, float y1, float x2, float y2,
float x3, float y3, float x4, float y4)
public void rectMode(int mode)
public void rect(float a, float b, float c, float d)
protected void rectImpl(float x1, float y1, float x2, float y2)
public void ellipseMode(int mode)
public void ellipse(float a, float b, float c, float d)
protected void ellipseImpl(float x, float y, float w, float h)
public void arc(float a, float b, float c, float d,
float start, float stop)
protected void arcImpl(float x, float y, float w, float h,
float start, float stop)
public void box(float size)
public void box(float w, float h, float d)
public void sphereDetail(int res)
public void sphereDetail(int ures, int vres)
public void sphere(float r)
public float bezierPoint(float a, float b, float c, float d, float t)
public float bezierTangent(float a, float b, float c, float d, float t)
protected void bezierInitCheck()
protected void bezierInit()
public void bezierDetail(int detail)
public void bezier(float x1, float y1,
float x2, float y2,
float x3, float y3,
float x4, float y4)
public void bezier(float x1, float y1, float z1,
float x2, float y2, float z2,
float x3, float y3, float z3,
float x4, float y4, float z4)
public float curvePoint(float a, float b, float c, float d, float t)
public float curveTangent(float a, float b, float c, float d, float t)
public void curveDetail(int detail)
public void curveTightness(float tightness)
protected void curveInitCheck()
protected void curveInit()
public void curve(float x1, float y1,
float x2, float y2,
float x3, float y3,
float x4, float y4)
public void curve(float x1, float y1, float z1,
float x2, float y2, float z2,
float x3, float y3, float z3,
float x4, float y4, float z4)
protected void splineForward(int segments, PMatrix3D matrix)
public void smooth()
public void noSmooth()
public void imageMode(int mode)
public void image(PImage image, float x, float y)
public void image(PImage image, float x, float y, float c, float d)
public void image(PImage image,
float a, float b, float c, float d,
int u1, int v1, int u2, int v2)
protected void imageImpl(PImage image,
float x1, float y1, float x2, float y2,
int u1, int v1, int u2, int v2)
public void shapeMode(int mode)
public void shape(PShape shape)
public void shape(PShape shape, float x, float y)
public void shape(PShape shape, float x, float y, float c, float d)
public void textAlign(int align)
public void textAlign(int alignX, int alignY)
public float textAscent()
public float textDescent()
public void textFont(PFont which)
public void textFont(PFont which, float size)
public void textLeading(float leading)
public void textMode(int mode)
protected boolean textModeCheck(int mode)
public void textSize(float size)
public float textWidth(char c)
public float textWidth(String str)
protected float textWidthImpl(char buffer[], int start, int stop)
public void text(char c)
public void text(char c, float x, float y)
public void text(char c, float x, float y, float z)
public void text(String str)
public void text(String str, float x, float y)
public void text(String str, float x, float y, float z)
public void text(String str, float x1, float y1, float x2, float y2)
public void text(String s, float x1, float y1, float x2, float y2, float z)
public void text(int num, float x, float y)
public void text(int num, float x, float y, float z)
public void text(float num, float x, float y)
public void text(float num, float x, float y, float z)
protected void textLineAlignImpl(char buffer[], int start, int stop,
float x, float y)
protected void textLineImpl(char buffer[], int start, int stop,
float x, float y)
protected void textCharImpl(char ch, float x, float y)
protected void textCharModelImpl(PImage glyph,
float x1, float y1, //float z1,
float x2, float y2, //float z2,
int u2, int v2)
protected void textCharScreenImpl(PImage glyph,
int xx, int yy,
int w0, int h0)
public void pushMatrix()
public void popMatrix()
public void translate(float tx, float ty)
public void translate(float tx, float ty, float tz)
public void rotate(float angle)
public void rotateX(float angle)
public void rotateY(float angle)
public void rotateZ(float angle)
public void rotate(float angle, float vx, float vy, float vz)
public void scale(float s)
public void scale(float sx, float sy)
public void scale(float x, float y, float z)
public void resetMatrix()
public void applyMatrix(PMatrix2D source)
public void applyMatrix(float n00, float n01, float n02,
float n10, float n11, float n12)
public void applyMatrix(PMatrix3D source)
public void applyMatrix(float n00, float n01, float n02, float n03,
float n10, float n11, float n12, float n13,
float n20, float n21, float n22, float n23,
float n30, float n31, float n32, float n33)
public getMatrix(PMatrix2D target)
public getMatrix(PMatrix3D target)
public void setMatrix(PMatrix2D source)
public void setMatrix(PMatrix3D source)
public void printMatrix()
public void beginCamera()
public void endCamera()
public void camera()
public void camera(float eyeX, float eyeY, float eyeZ,
float centerX, float centerY, float centerZ,
float upX, float upY, float upZ)
public void printCamera()
public void ortho()
public void ortho(float left, float right,
float bottom, float top,
float near, float far)
public void perspective()
public void perspective(float fov, float aspect, float near, float far)
public void frustum(float left, float right,
float bottom, float top,
float near, float far)
public void printProjection()
public float screenX(float x, float y)
public float screenY(float x, float y)
public float screenX(float x, float y, float z)
public float screenY(float x, float y, float z)
public float screenZ(float x, float y, float z)
public float modelX(float x, float y, float z)
public float modelY(float x, float y, float z)
public float modelZ(float x, float y, float z)
public void pushStyle()
public void popStyle()
public void style(PStyle)
public PStyle getStyle()
public void getStyle(PStyle)
public void strokeCap(int cap)
public void strokeJoin(int join)
public void strokeWeight(float weight)
public void noStroke()
public void stroke(int rgb)
public void stroke(int rgb, float alpha)
public void stroke(float gray)
public void stroke(float gray, float alpha)
public void stroke(float x, float y, float z)
public void stroke(float x, float y, float z, float a)
protected void strokeFromCalc()
public void noTint()
public void tint(int rgb)
public void tint(int rgb, float alpha)
public void tint(float gray)
public void tint(float gray, float alpha)
public void tint(float x, float y, float z)
public void tint(float x, float y, float z, float a)
protected void tintFromCalc()
public void noFill()
public void fill(int rgb)
public void fill(int rgb, float alpha)
public void fill(float gray)
public void fill(float gray, float alpha)
public void fill(float x, float y, float z)
public void fill(float x, float y, float z, float a)
protected void fillFromCalc()
public void ambient(int rgb)
public void ambient(float gray)
public void ambient(float x, float y, float z)
protected void ambientFromCalc()
public void specular(int rgb)
public void specular(float gray)
public void specular(float x, float y, float z)
protected void specularFromCalc()
public void shininess(float shine)
public void emissive(int rgb)
public void emissive(float gray)
public void emissive(float x, float y, float z )
protected void emissiveFromCalc()
public void lights()
public void noLights()
public void ambientLight(float red, float green, float blue)
public void ambientLight(float red, float green, float blue,
float x, float y, float z)
public void directionalLight(float red, float green, float blue,
float nx, float ny, float nz)
public void pointLight(float red, float green, float blue,
float x, float y, float z)
public void spotLight(float red, float green, float blue,
float x, float y, float z,
float nx, float ny, float nz,
float angle, float concentration)
public void lightFalloff(float constant, float linear, float quadratic)
public void lightSpecular(float x, float y, float z)
protected void lightPosition(int num, float x, float y, float z)
protected void lightDirection(int num, float x, float y, float z)
public void background(int rgb)
public void background(int rgb, float alpha)
public void background(float gray)
public void background(float gray, float alpha)
public void background(float x, float y, float z)
public void background(float x, float y, float z, float a)
public void background(PImage image)
protected void backgroundFromCalc()
protected void backgroundImpl(PImage image)
protected void backgroundImpl()
public void colorMode(int mode)
public void colorMode(int mode, float max)
public void colorMode(int mode, float maxX, float maxY, float maxZ)
public void colorMode(int mode, float maxX, float maxY, float maxZ, float maxA)
protected void colorCalc(int rgb)
protected void colorCalc(int rgb, float alpha)
protected void colorCalc(float gray)
protected void colorCalc(float gray, float alpha)
protected void colorCalc(float x, float y, float z)
protected void colorCalc(float x, float y, float z, float a)
protected void colorCalcARGB(int argb, float alpha)
public final int color(int gray)
public final int color(int gray, int alpha)
public final int color(int rgb, float alpha)
public final int color(int x, int y, int z)
public final float alpha(int what)
public final float red(int what)
public final float green(int what)
public final float blue(int what)
public final float hue(int what)
public final float saturation(int what)
public final float brightness(int what)
public int lerpColor(int c1, int c2, float amt)
static public int lerpColor(int c1, int c2, float amt, int mode)
public void beginRaw(PGraphics rawGraphics)
public void endRaw()
static public void showWarning(String msg)
static public void showException(String msg)
public boolean displayable()
public boolean is2D()
public boolean is3D()
//
These are the methods found in PImage, which are inherited by PGraphics.
public PImage(Image)
public Image getImage()
public void setCache(Object parent, Object storage)
public void getCache(Object parent)
public void removeCache(Object parent)
public boolean isModified();
public void setModified();
public void setModified(boolean state);
public void loadPixels()
public void updatePixels()
public void updatePixels(int x, int y, int w, int h)
public void resize(int wide, int high)
public int get(int x, int y)
public PImage get(int x, int y, int w, int h)
protected PImage getImpl(int x, int y, int w, int h)
public PImage get()
public void set(int x, int y, int c)
public void set(int x, int y, PImage src)
protected void setImpl(int dx, int dy, int sx, int sy, int sw, int sh,
PImage src)
public void mask(int alpha[])
public void mask(PImage alpha)
public void filter(int kind)
public void filter(int kind, float param)
public void copy(int sx, int sy, int sw, int sh,
int dx, int dy, int dw, int dh)
public void copy(PImage src,
int sx, int sy, int sw, int sh,
int dx, int dy, int dw, int dh)
static public int blendColor(int c1, int c2, int mode)
public void blend(int sx, int sy, int sw, int sh,
int dx, int dy, int dw, int dh, int mode)
public void blend(PImage src,
int sx, int sy, int sw, int sh,
int dx, int dy, int dw, int dh, int mode)
public void save(String path)
-7425
View File
File diff suppressed because it is too large Load Diff
-10
View File
@@ -1,10 +0,0 @@
core.jar
jogl-all-src.jar
/macos-aarch64
/linux-arm
/linux-aarch64
/macos-x86_64
/linux-amd64
/windows-amd64
-7
View File
@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="/usr/share/ant/lib/ant.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
-2
View File
@@ -1,2 +0,0 @@
demo
methods.jar
-27
View File
@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="EclipseModuleManager">
<libelement value="file://$MODULE_DIR/../../app/lib/ant.jar" />
<src_description expected_position="0">
<src_folder value="file://$MODULE_DIR$/src" expected_position="0" />
</src_description>
</component>
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/bin" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="inheritedJdk" />
<orderEntry type="module-library">
<library name="ant.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/../../app/lib/ant.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>
+14 -4
View File
@@ -237,7 +237,7 @@ public class ShimAWT implements PConstants {
}
static public void resizeImage(PImage img, int w, int h) { // ignore
static public void resizeImage(PImage img, int w, int h, int interpolationMode) { // ignore
if (w <= 0 && h <= 0) {
throw new IllegalArgumentException("width or height must be > 0 for resize");
}
@@ -251,7 +251,8 @@ public class ShimAWT implements PConstants {
}
BufferedImage bimg =
shrinkImage((BufferedImage) img.getNative(), w*img.pixelDensity, h*img.pixelDensity);
shrinkImage((BufferedImage) img.getNative(), w*img.pixelDensity,
h*img.pixelDensity, interpolationMode);
PImage temp = new PImageAWT(bimg);
img.pixelWidth = temp.width;
@@ -274,7 +275,8 @@ public class ShimAWT implements PConstants {
// plus a fix to deal with an infinite loop if images are expanded.
// https://github.com/processing/processing/issues/1501
static private BufferedImage shrinkImage(BufferedImage img,
int targetWidth, int targetHeight) {
int targetWidth, int targetHeight,
int interpolationMode) {
int type = (img.getTransparency() == Transparency.OPAQUE) ?
BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
BufferedImage outgoing = img;
@@ -313,8 +315,16 @@ public class ShimAWT implements PConstants {
scratchImage = new BufferedImage(w, h, type);
g2 = scratchImage.createGraphics();
}
// convert the passed int value of interpolationMode to the object expected
// by setRenderingHint
Object interpolationModeValue = switch(interpolationMode) {
case 0 -> RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR;
//case 1 is the same as the default
case 2 -> RenderingHints.VALUE_INTERPOLATION_BICUBIC;
default -> RenderingHints.VALUE_INTERPOLATION_BILINEAR;
};
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
interpolationModeValue);
g2.drawImage(outgoing, 0, 0, w, h, 0, 0, prevW, prevH, null);
prevW = w;
prevH = h;
+5
View File
@@ -483,6 +483,11 @@ public interface PConstants {
int WAIT = Cursor.WAIT_CURSOR;
// image interpolation modes
int NEAREST_NEIGHBOR = 0;
int BILINEAR = 1;
int BICUBIC = 2;
// hints - hint values are positive for the alternate version,
// negative of the same value returns to the normal/default state
+36 -2
View File
@@ -478,6 +478,33 @@ public class PImage implements PConstants, Cloneable {
}
/**
*
* Resize the image to a new width and height. To make the image scale
* proportionally, use 0 as the value for the <b>wide</b> or <b>high</b>
* parameter. For instance, to make the width of an image 150 pixels, and
* change the height using the same proportion, use <b>resize(150, 0)</b>.<br />
* <br />
* Even though a PGraphics is technically a <b>PImage</b>, it is not possible to
* rescale the image data found in a <b>PGraphics</b>. (It's simply not possible
* to do this consistently across renderers: technically infeasible with
* P3D, or what would it even do with PDF?) If you want to resize <b>PGraphics</b>
* content, first get a copy of its image data using the <b>get()</b>
* method, and call <b>resize()</b> on the PImage that is returned.
*
* @webref pimage:method
* @webBrief Resize the image to a new width and height
* @usage web_application
* @param w the resized image width
* @param h the resized image height
* @param interpolationMode the type of interpolation that should be used when resizing the image
* @see PImage#get(int, int, int, int)
*/
public void resize(int w, int h,int interpolationMode) { // ignore
//throw new RuntimeException("resize() not implemented for this PImage type");
ShimAWT.resizeImage(this, w, h, interpolationMode);
}
/**
*
* Resize the image to a new width and height. To make the image scale
@@ -500,8 +527,7 @@ public class PImage implements PConstants, Cloneable {
* @see PImage#get(int, int, int, int)
*/
public void resize(int w, int h) { // ignore
//throw new RuntimeException("resize() not implemented for this PImage type");
ShimAWT.resizeImage(this, w, h);
resize(w, h, PConstants.BILINEAR);
}
@@ -840,6 +866,14 @@ public class PImage implements PConstants, Cloneable {
*/
public void mask(PImage img) {
img.loadPixels();
if (this.pixelWidth != img.pixelWidth || this.pixelHeight != img.pixelHeight) {
if (this.pixelDensity != img.pixelDensity) {
throw new IllegalArgumentException("mask() requires the mask image to have the same pixel size after adjusting for pixelDensity.");
}
else if (this.width != img.width || this.height != img.height) {
throw new IllegalArgumentException("mask() requires the mask image to have the same width and height.");
}
}
mask(img.pixels);
}
+17 -4
View File
@@ -848,13 +848,15 @@ public class PVector implements Serializable {
/**
*
* Calculate the angle of rotation for this vector (only 2D vectors)
*
* Calculate the vector's direction, that is, the angle this vector makes
* with the positive X axis (only 2D vectors)
*
*
* @webref pvector:method
* @usage web_application
* @return the angle of rotation
* @return the direction of the vector (angle with positive X axis)
* @webBrief Calculate the angle of rotation for this vector
* @see PVector#setHeading()
*/
public float heading() {
float angle = (float) Math.atan2(y, x);
@@ -867,7 +869,18 @@ public class PVector implements Serializable {
return heading();
}
/**
*
* Sets the angle this vector makes with the positive X axis (only 2D vectors)
* This is equivalent to changing the vector's direction to the given value.
*
* @webref pvector:method
* @usage web_application
* @param angle the direction of the resultant vector
* @return this vector, rotated to have the given direction
* @webBrief Set the direction for this vector
* @see PVector#heading()
*/
public PVector setHeading(float angle) {
float m = mag();
x = (float) (m * Math.cos(angle));
+12 -1
View File
@@ -1069,6 +1069,16 @@ public class PSurfaceJOGL implements PSurface {
sketch.postEvent(me);
}
private short normalizeKeyCode(short newtKeyCode) {
switch (newtKeyCode) {
case com.jogamp.newt.event.KeyEvent.VK_PAGE_UP:
return java.awt.event.KeyEvent.VK_PAGE_UP;
case com.jogamp.newt.event.KeyEvent.VK_SHIFT:
return java.awt.event.KeyEvent.VK_SHIFT;
default:
return newtKeyCode;
}
}
protected void nativeKeyEvent(com.jogamp.newt.event.KeyEvent nativeEvent,
int peAction) {
@@ -1080,7 +1090,8 @@ public class PSurfaceJOGL implements PSurface {
// InputEvent.META_MASK |
// InputEvent.ALT_MASK);
short code = nativeEvent.getKeyCode();
short code = normalizeKeyCode(nativeEvent.getKeyCode());
char keyChar;
int keyCode;
if (isPCodedKey(code, nativeEvent.isPrintableKey())) {
@@ -5,6 +5,10 @@ import org.junit.Before;
import org.junit.Test;
import processing.event.KeyEvent;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class PAppletKeyEventTest {
private static final int SHIFT_MASK = 1;
@@ -137,4 +141,37 @@ public class PAppletKeyEventTest {
Assert.assertFalse("keyPressed should be false after focus lost", applet.keyPressed);
Assert.assertEquals("pressedKeys should be empty after focus lost", true, applet.pressedKeys.isEmpty());
}
@Test
public void testShiftAndPageUpKeyCodesAreDifferent() {
final int VK_SHIFT = java.awt.event.KeyEvent.VK_SHIFT;
final int VK_PAGE_UP = java.awt.event.KeyEvent.VK_PAGE_UP;
long shiftHash = ((long)VK_SHIFT << Character.SIZE);
long pageUpHash = ((long)VK_PAGE_UP << Character.SIZE);
KeyEvent shiftPressEvent = new KeyEvent(null, 0L, KeyEvent.PRESS, SHIFT_MASK, '\0', VK_SHIFT, false);
applet.handleKeyEvent(shiftPressEvent);
assertTrue("keyPressed must be true", applet.keyPressed);
assertTrue("SHIFT should be in pressedKeys", applet.pressedKeys.contains(shiftHash));
KeyEvent pageUpPressEvent = new KeyEvent(null, 0L, KeyEvent.PRESS, 0, '\0', VK_PAGE_UP, false);
applet.handleKeyEvent(pageUpPressEvent);
assertEquals("pressedKeys must contain exactly two keys", 2, applet.pressedKeys.size());
assertTrue("PAGE_UP should be in pressedKeys", applet.pressedKeys.contains(pageUpHash));
KeyEvent shiftRelease = new KeyEvent(null, 0L, KeyEvent.RELEASE, 0, '\0', VK_SHIFT, false);
applet.handleKeyEvent(shiftRelease);
assertFalse("SHIFT should have been removed", applet.pressedKeys.contains(shiftHash));
assertTrue ("PAGE_UP should still be down", applet.pressedKeys.contains(pageUpHash));
assertTrue ("keyPressed must still be true", applet.keyPressed);
assertEquals("pressedKeys must now have one key", 1, applet.pressedKeys.size());
KeyEvent pageUpRelease = new KeyEvent(null, 0L, KeyEvent.RELEASE, 0, '\0', VK_PAGE_UP, false);
applet.handleKeyEvent(pageUpRelease);
assertTrue ("pressedKeys must now be empty", applet.pressedKeys.isEmpty());
assertFalse("keyPressed must be false", applet.keyPressed);
}
}
-790
View File
@@ -1,790 +0,0 @@
1294 (4.3.1)
X difference in text position with processing 4.3, JAVA2D vs P2D
X https://github.com/processing/processing4/issues/768
X add iterators to JSONArray
contribs
X Movie throwing NullPointerException with usedBuffers with P2D/P3D from @Clarvel
X https://github.com/processing/processing4/issues/760
X https://github.com/processing/processing4/pull/759
X Fix beginContour() when used with createShape() from @hx2A
X https://github.com/processing/processing4/issues/643
X https://github.com/processing/processing4/pull/776
X Fix `PShape.getSpecular()`, `getEmissive()`, and `getShininess()` from @hx2A
X https://github.com/processing/processing4/issues/781
X https://github.com/processing/processing4/pull/782
_ Fix hash of keyEvent being added to pressedKeys
_ https://github.com/processing/processing4/issues/779
_ https://github.com/processing/processing4/pull/786
_ JNA version of getting resolution
_ https://stackoverflow.com/a/32588375
_ note about running outside the PDE if OpenGL shows up 2x too small
_ System.setProperty("sun.java2d.uiScale.enabled", "false");
_ from https://github.com/processing/processing4/issues/763
_ args passed to main() aren't working
_ (there was a bug report for this already?)
_ were the run() and runSketch() methods merged w/o realizing loss of args?
_ runSketch() probably needs to pass applet args and sketch args separately
_ though this can't be done w/o breaking Python
_ freeze on resize with Windows (even the default renderer)
_ https://github.com/processing/processing4/issues/507
_ need option for alphabetical ordering for json serialization
_ concurrent StringDict et al
_ why no concurrent TreemMap? https://stackoverflow.com/a/17656453
_ https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentSkipListMap.html
_ how to handle fallback fonts
_ could implement this for the default, but also, SansSerif sucks
_ https://stackoverflow.com/a/9482676
_ in addition, it would need to be implemented for textWidth()
_ update P2D reference to make clear about drawing order and quality
_ https://github.com/processing/processing/issues/5880
load/save image
_ https://github.com/processing/processing4/wiki/Exorcising-AWT
_ moving loadImage() into Surface
_ https://github.com/processing/processing4/issues/56
_ other PImage save implementations
_ https://github.com/processing/processing4/pull/97
_ https://github.com/processing/processing4/pull/98
api changes
_ add callbacks to requestImage() and others
_ these would be a lot easier with newer Java syntax
_ (and also familiar to folks who have spent time with JS)
_ new FloatList(float...)
api todo
_ Surface not available inside handleSettings()
_ therefore impossible to get displays, displayWidth/Height, and pixelDensity
_ (in a non-AWT way on a system that cannot use AWT)
_ does surface have to be passed on the command line?
_ can we just require that size() goes first
_ and have it set surface *type* w/o actually setting up the size info yet
_ or even that it inits a surface-specific class for getting that info
_ implement selectInput/Output/Folder methods in PSurfaceJOGL
_ implement openLink() in PSurfaceJOGL
before final release
_ Warn users or provide auto-fix when `frame` is used in a sketch
_ https://github.com/processing/processing4/issues/59
_ ThinkDifferent unavailable with --disable-awt, needs workaround
_ https://github.com/processing/processing4/issues/52
_ Remove frame from PApplet
_ https://github.com/processing/processing4/issues/54
_ Remove all usage of AWT from PApplet
X https://github.com/processing/processing4/issues/55
_ https://github.com/codeanticode/processing-lwjgl/wiki#making-awt-optional-in-papplet
_ https://github.com/processing/processing4/issues/57
_ move loadImage() into surface
_ move AWT code out of PImage, and into its own PImageJava2D class
_ https://github.com/processing/processing4/issues/56
high-ish
_ Sort out display() being sometimes called from the EDT inside OpenGL
_ https://github.com/processing/processing4/issues/385
_ add separator option to loadTable()
_ https://github.com/processing/processing/issues/5068
_ make setting the window icon automatic, based on files in local dirs
X https://github.com/processing/processing/issues/5123
X https://github.com/processing/processing/pull/5202
_ need to make this work behind the scenes instead
_ create icon.png or have an 'icons' folder with multiple sizes
_ don't override the window icon w/ p5 logo if already set
_ requestSize() and xxxxTitle() (to diminish use of 'surface')
_ mostly held up by cross-renderer inconsistency with these
_ textAlign(CENTER) and pixelDensity(2) aligning incorrectly with Java2D
_ https://github.com/processing/processing/issues/4020
_ calling textSize() fixes it, only hpapens with the default font
_ incorrect textWidth() with pixelDensity(2) when textFont() not used
_ https://github.com/processing/processing/issues/5768
_ use exit event to set mouseY to 0 on macOS
_ https://github.com/processing/processing/pull/5796/files
_ y coords on macOS seem to be one pixel off
retina/hi-dpi/sizing
_ Sketches on Linux don't take UI scaling into account
_ gohai mentioned "xrdb -query" or "xdpyinfo" might work
_ https://github.com/processing/processing4/issues/407
_ formerly at
_ https://github.com/processing/processing/issues/4895
_ native code for checking the system dpi
_ https://github.com/processing/processing/issues/5758
_ should fullScreen() set width and height to displayWidth/Height
_ or is that being set/unset used for any state info?
_ present window draws in stages (OS X)
possible additions for 4.x?
_ Add support for floating point textures to OpenGL (using a hint?)
_ https://github.com/processing/processing/issues/3321
misc
_ should we drop the 'default' prefix from the ex handler so it's not static?
_ http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html
_ Switch to getModifiersEx() and fix the AWT modifiers used in PSurfaceAWT
_ this is an easy fix, but need to check impact elsewhere
_ does anything else rely on these modifiers?
_ try using Frame instead of JFrame
_ default sketch location using insets incorrectly
_ use the BufferStrategy directly from the Frame object?
_ might fix performance issues w/ Presentation mode
_ sketch placement (window insets) not properly set on Linux
_ https://github.com/processing/processing/issues/2063
_ note in docs that full screen and present are now different
_ on Export to Application, this has an impact
_ SVG only exports last frame
_ possibly because Java2D is disposing the Graphics2D in between?
_ https://github.com/processing/processing/issues/3753
_ when calling exit(), if sketch has halted w/ exception, force the quit
_ otherwise have to double-quit with cmd-q on OS X
_ simple test case: using size() inside setup() from Eclipse
data
_ implement strip(), lstrip(), rstrip?
_ handling of 'missing' values in Table needs serious work
_ if missing int is zero, can't just remove those values from saving a table
_ but for NaN values, it's a necessity
_ get() methods in List/Dict shouldn't allow you to get bad values
_ but set() methods can automatically resize the arrays
_ though that means insert() should allow you to insert past the end
_ and should add/div/mult let you work on non-existent elements?
_ addRow() is not efficient, probably need to do the doubling
o or have a setIncrement() function?
_ it would default to 1 on tables loaded from a file
_ and default to doubling when created with "new Table"
_ row count and array size are combined.. need to break apart
_ match and iterators
_ add match version that returns table that's only a pointer to original
_ save the constructor for the version that actually copies data
_ the table pointer version will be speedy and allow chaining
additions
_ async calls for selectInput/Output/Folder
_ now that we have saner syntax with new preproc, we can do Runnable
_ async requests
_ https://github.com/processing/processing/issues/3165
_ Request r = createRequest("http://p5.org/feed/13134.jpg");
_ Request r = createRequest("http://p5.org/feed/13134.jpg", "callbackName");
_ Request r = createRequest("http://p5.org/feed/13134, "callbackName", "jpg");
_ implement callbacks for images and other loadXxxx() functions
_ remove requestImage() and friends
_ callback for requestImage()
_ https://github.com/processing/processing/issues/680
_ remove/update requestImage example
_ check into promise api
_ http://www.html5rocks.com/en/tutorials/es6/promises/
_ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
_ how to handle the touch api
_ can't do MouseEvent et al with Android
_ http://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html
_ http://www.html5rocks.com/en/mobile/touch.html
_ decision: go with what looks like javascript/ios
_ touchEvent(), gestureEvent()?
_ touch event doesn't make sense for mouseMove on desktop, hover on Android
_ probably go with pointer: more universal for touch/mouse
discussion/decisions
_ add screen(PVector), model(PVector) and world(PVector)?
_ maybe screenVec()? or screenXYZ()?
_ drawThread()
_ we could add a method that can safely do drawing calls, but that won't be
_ any faster or make use of more processors the way that `thread()` does.
_ though it might be useful for tacking the result of thread() on at the end of draw()
_ need reference update for createShape()
_ though we need to verify the behavior here
_ createShape(RECT) uses x/y/w/h, and optionally adds a mode param
_ and optionally the corner radii
_ createShape(ELLIPSE) is x/y/w/h, and optionally adds a mode param
_ fix the registered methods doc, stop/dispose working
_ Casey needs to nudge people about libraries, so we need to fix this
_ pause(), resume(), start(), stop() clarifications
_ dispose/stop not great w/ libraries yet
_ move away from loadPixels
_ add options for image.save() (or saveImage?)
_ add quality=[0,1] for jpeg images
_ add dpi=[0,n] for for png images
_ implemented internally, just needs the wrapper for the args
_ should map() actually constrain to the low and high values?
_ or have an alternate version that does that? (or boolean param at end?)
_ decide whether to keep:
_ public float textWidth(char[] chars, int start, int length)
_ add version of math functions that use doubles?
_ what other methods should work with doubles? all math functions?
_ seems like internal (mostly static) things, but not graphics api
_ new PGraphics(... OutputStream)
_ https://github.com/processing/processing/issues/285
_ already added for PDF, just need to work out the API
_ if save() returns boolean, does saveFrame()?
_ also need to copy this over to android
_ "translate, or this variation of it" when using text(s, x, y, z) accidentally
_ change to be the text command
_ size() and resize() and whatever?
_ should be setSize(), but that's odd for image files
_ -> resize() is fine with PImage and PGraphics...
_ we may be inheriting the resize() from Java -> make it final?
_ add resize().. make it call setSize().
_ also needs to do a redraw if noLoop() has been called
_ the registered method for size() also needs to be called
_ get() or copy()? for vectors, image, etc.
_ toArray(), toArray(float[]), toVectorArray(), toVectorArray(PVector[])
_ toColorArray(), toColorArray(float[])...
_ make sure that loadXxxx() methods are used after init()
_ nasty errors when loadImage/Font/createFont/etc used outside
_ decision: add error messages where possible
_ idea: set frameCount to -1 when setup not run yet?
_ then set frameCount to 0 when setup() starts?
_ need to clean up the hints in the reference/source
_ exactly how should pixel filling work with single pixel strokes?
_ https://download.processing.org/bugzilla/1025.html (no gcode)
_ y2 position of rectangles not same as y2 position of lines
_ happens when the rectangle is flipped on the x or y axis
_ probably a hack that draws the "last" point differently
_ add inputPath() and outputPath() -> sketch folder or sd card
_ or should this just be a change to sketchPath() on Android?
_ also because input/output won't be different (since not data folder)
_ or should this be storagePath() etc?
_ PUtil -> move match(), lots of other non-gui functions into own class
_ and merge it in statically via the methods code
_ check for what else inside PApplet should be static
_ maybe catch RuntimeExceptions in the called sub-functions
_ that way more stuff can be static w/o losing useful error handling
_ (emitting errors when closest to source.. i.e. w/ the filename)
_ change how beginRecord() works.. passing around PApplet vs PGraphics is gross
_ have to pass PApplet just to make the rendering work to both renderers
_ should instead be a renderer that splits things out
_ wrap exceptions with die() and warn() methods
_ this way, people can make use of exceptions if they would rather
_ or shut them off if they don't want to
_ also need to explain exception handling in general
_ https://github.com/processing/processing/issues/222
_ bring PConstants back in line w/ previous 1.5 (can't renumber)
_ finish adding loadStrings(BufferedReader)
_ decide if we want to keep this (and/or others?)
_ port to android
_ deprecate the older splice() etc API inside PApplet?
_ add notes about the new shader setup
_ add reference/docs for urlEncode() and urlDecode()
_ add explanation to the reference about using beginRecord() with fonts
_ pdf.textMode(SHAPE)
_ also set the font *after* the record has started
_ maybe should instead make textMode(SHAPE) the norm?
_ and people can change it to textMode(MODEL) if they want?
_ https://download.processing.org/bugzilla/1535.html (no gcode)
_ explain the new PGL interface
_ decide how disconnectEvent should actually be handled (and name?)
_ was disconnect always there?
_ will need documentation
_ negative indices so that we can work relative to the end in data classes?
_ add requestFocus() method to PApplet (or surface?)
_ point() rendering differently in 2.0.3 and 2.1
_ https://github.com/processing/processing/issues/2278
_ internally, we probably have to call set() if it's a 1 pixel point
_ but that's going to be a mess.. need to first check the CTM
_ discussion from Jakub in the report
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
CORE / rendering/performance/threading
_ hint(DISABLE_LOAD_PIXELS) -> faster rendering in Java2D
_ problems with 2D rendering speed
_ volatile images
_ http://www.javalobby.org/forums/thread.jspa?threadID=16840&tstart=0
_ http://www.javalobby.org/forums/thread.jspa?threadID=16867&tstart=0
_ http://www.gamedev.net/page/resources/_/technical/general-programming/java-games-active-rendering-r2418
CORE / stop()
_ in PApplet.main(), windowClosing() should probably be calling 'exit()'
_ or rather, we should never call System.exit(0), ja?
_ dispose() method in PApplet should be empty so ppl can override
_ move that stuff to destroy()
_ pause()/resume() need to work on the desktop side as well
_ notify ddf when pause/resume implemented
_ stop() not called in 1.5
_ https://github.com/processing/processing/issues/675
_ noticed that dispose() is getting called. stop() isn't.
_ http://java.sun.com/docs/books/tutorial/deployment/applet/lifeCycle.html
_ static mode sketches seem to break ESC... noLoop() problem?
_ need to find another way to get ESC on static mode
_ b/c static mode sketches *do* finish because they have no draw()
_ sort out destroy(), stop(), pause() et al
_ ColorSelector should stop/pause when not visible
_ right now it's doing a low-level looping
_ start()/stop() perform like onPause()/onResume()
_ all of which call pause() and resume()
_ destroy() (from Applet) calls (our) dispose()
_ destroy() shouldn't call exit()... change from lonnen
_ calls ((PApplet)this).exit() instead of stop() (since stop is pause)
_ notes
_ exit() should do the actual exit
_ if inside draw, let it finish the loop
_ if not looping, need to do it immediately
_ does stop() unwind the thread, or does the thread unwind call stop?
_ browser will call start() and stop() methods
_ need to figure out start/stop signals coming from the browser
_ is it dispose/destroy?
_ when closing a sketch via the close box, make sure stop() getting called
_ test to see if it's working
_ what's up with stop() vs exit()?
_ need to get this straightened for p5 (i.e. bc has this problem)
_ make sure the main() doesn't exit until the applet has finished
_ i.e. problem with main calling itself multiple times in Alpheus
_ if exit() (or stop) is called, then System.exit() gets called,
_ even though the main() wants to keep going
_ hitting ESC in a running noLoop()ed sketch won't close the sketch?
_ noloop ref even says that redraw will be called on resize, make sure it is
_ focus not coming through, ESC no longer working(?)
_ hitting cmd-q when an applet is running quits p5 (on macosx)
_ but cmd-q when running externally is ok because it just quits
_ is there a way to catch cmd-q when running a sketch?
_ so that it could avoid quitting if the sketch hasn't been stopped
_ or if the sketch window is foremost
_ maybe a hack where a new menubar is added?
o destroy() removed, but bring back? is that better than dispose()?
_ destroy() only called dispose(), so no difference
_ Python Mode has a hook for when it's called
CORE / PFont and text()
_ finish PFont.getShape() implementation
_ needs to have a way to set width/height properly
_ draw(s) doesn't work on the returned PShape
_ y-location of frame might be negative, but that might be ok
_ right now, on Windows it moves it on-screen (b/c of previous bug reports)
_ may be cause of some of the display placement issues w/ multiple displays
_ seem to recall one of the bugs mentioning stacked displays
_ need to change to iterate through display rectangles
_ may be related to full-screen bug filed recently
_ when doing createFont, can we add it to the os fonts available?
_ font rotation (native font problem?) with natives?
_ https://github.com/processing/processing/issues/731
_ Text rotation, placement and font metrics incorrect when scaled
_ https://github.com/processing/processing/issues/2167
_ remove subsetting stuff from PFont?
_ or use hint(ENABLE_FONT_SUBSETTING)?
_ what's the difference with ascent on loadFont vs. createFont?
_ svg fonts
_ would be nifty if we could convert on the fly to ttf for speed...
_ https://github.com/processing/processing/issues/787
_ text position is quantized in JAVA2D
_ text placement is ugly, seems like fractional metrics problem
_ https://github.com/processing/processing/issues/138
_ text(char c) with char 0 and undefined should print nothing
_ perhaps also DEL or other nonprintables?
_ book example 25-03
_ accessors inside PFont need a lot of work
_ improve font metrics
_ http://java.sun.com/products/java-media/2D/reference/faqs/index.html#Q_How_do_I_obtain_font_metrics
_ font encoding issues
_ java seems to force straight windows encoding.. (problem for pi fonts)
_ opentype/cff fonts don't work with live loading from the app
_ many (all?) opentype fonts won't show up or aren't supported
_ this may be only cff fonts that have trouble
_ when encoding is not the standard encoding, problematic
_ so sonata otf and sonata don't seem to have any chars at all
_ text() with a z coordinate is now using translate, very slow
X also puts up a weird error message about translate() in 2D mode
_ make screen space fonts use get/set as well?
_ too much to debug on their own
_ unfortunately tint not set with setImpl, but...
_ not having kerning really blows
_ could this be pulled from the OpenType font stuff?
_ it could be placed at the end of the file
_ not having fractional widths on small fonts really blows
_ screen space text looks crappy
_ working with vector fonts?
_ need to be able to handle shapes within shapes (reverse winding)
_ ftgl: main code is in FTVectoriser
_ uses gluTessBeginContour and gluTessEndContour
_ and then does 5 step sizes for each curveto
_ show an error when using a font character that isn't available
_ maybe fall back on other characters instead?
_ some font weights cannot be specified/selected on OS X
_ https://github.com/processing/processing/issues/1727
CORE / PImage
_ TGA files writing strangely
_ https://github.com/processing/processing/issues/2096
_ loadPixels() implementation needs to be in PApplet, not PGraphics
_ this is a tricky thing to implement because of how OpenGL is handled
_ loadImage() should use the faster loading methods
_ hint(DISABLE_IMAGE_CACHING)
_ add a note to the loadImage() reference page
_ figure out why 1024x768 image takes 3.5 seconds to load
_ would using a BufferedImage work better?
_ is the image actually a BufferedImage so PixelGrabber is a waste?
_ deprecate the blend() function
_ move blending calculations from PImage into PGraphics
_ tricky because that means moving blend_resize() as well
_ and should that live in PGraphics or be its own class or ??
_ implement unified means to specify smoothing level for image scaling
_ https://github.com/processing/processing/issues/204
CORE / PGraphics
_ need to be able to call pixelDensity(2) before beginDraw()
_ add pixelDensity() method to PImage/PGraphics
_ pixelDensity(2) does: pixelWidth = width; width /= 2; pixelDensity = 2;
_ this works for both PGraphics and images (though they're a little backwards)
_ for PGraphics it comes early enough
_ should the re-alloc of the drawing surface happen in beginDraw()
_ that way it won't blit to the screen until we have a fresh redraw?
_ otherwise it'll also be resizing on another thread.. badness
_ how to allocation image object w/ createGraphics() (since no surface)
CORE / PShape
_ TRIANGLE_STRIP not working correctly with createShape() and default renderer
_ https://github.com/processing/processing/issues/4678
_ major refactoring for PShape/PShapeOpenGL
_ https://github.com/processing/processing/issues/1623
_ PShape should be cached as well
_ major surgery to put loadShape() back into PApplet/PGraphics
_ then have the OpenGL or Java2D versions as cached objects
_ PShape s = createShape(); / s.beginShape(QUADS);
_ keeping these public for now
_ get/setNormal
_ get/setTextureUV
_ get/setFill
_ get/setStroke
_ -> perhaps these go into their own section?
_ -> or have their own accessor that returns all params?
_ trying to remember why primitive was changed to kind? (better name?)
_ these aren't per-vertex:
_ get/setStrokeWeight
_ get/setAmbient
_ get/setEmissive
_ get/setShininess
_ boolean isGL() -> now removed
_ unapproved (made protected)
_ static shape copying methods
_ getTop, getBottom, etc
_ void solid(boolean)
_ void setParams()
_ void setPath()
_ colorCalc() methods added to PShape.. should just be used from PGraphics
_ loadShape() needs to live in PApplet
_ don't allow things inside begin/endShape() that aren't possible
_ better lockout inside beginShape() to keep other things from happening
_ don't allow you to draw stroked items unless stroke() is called
_ don't allow beginShape() if shape is already set
_ (otherwise will cause some very strange errors)
_ https://github.com/processing/processing/issues/174
_ make determination on shape(x,y,z,w,h,d) or no
_ PShape API to handle internal vertex stuff
_ add deconstruct() method for paths
_ toArray() and toVector()
_ setVertex(0, x, y), setVertex(0, x, y, z)
_ if PShape3D, then is it PShape2D? or do you handle both the same?
_ add methods to PShape to apply all transformations in the tree
_ we can do hit testing (at least in 2D) now that we rely on java2d
_ for subclasses, make it easy to grab the structure of vertices
_ actually, just use PShape internally and this will be easier
_ for PShape, need to be able to set the origin (flash people)
CORE / PShapeSVG
_ loadShape() problems with SVGs that have . starting a number in a path
_ https://github.com/processing/processing4/issues/518
_ implement support for SVG gradients from Inkscape
_ https://github.com/processing/processing/issues/1180
_ need to handle <!ENTITY tags in XML for SVG documents
_ get entity tags working in xml library for SVG
_ cover the svg changes in a future release
_ breaking up classes / figure out how to handle fonts subclass
_ when using get(), reset the bounds for the objects
_ otherwise it's always relative to the original document
_ support for text (shouldn't be too bad, use createFont)
_ implement text spans for svg output
_ add better support for attributes buried in styles (support ai9/10/11)
_ test what happens when transparency is used with gradient fill
_ look into transformation issues... guessing this is probably wrong
_ this may be what's throwing off the radial radius transform
_ check for any other pieces of missing path api
_ multiple sets of coordinates after a command not supported
_ i.e. M with several coords means moveto followed by many linetos
_ also curveto with multiple sets of points is ignored
_ document somehow.. svg viewer will be discontinued
_ http://www.adobe.com/svg/eol.html
_ PShape getVertex() not implemented properly for SVG files
_ https://github.com/processing/processing/issues/1596
OPENGL / Known Issues
_ window must close when using file dialogs with OpenGL on Windows
_ https://github.com/processing/processing/issues/3831
_ window loses focus after maximizing
_ https://github.com/processing/processing/issues/3339
OPENGL / Questions
_ option to disable OpenGL ES on Linux?
_ https://github.com/processing/processing/issues/4584
_ exitCalled() and exitActual made public by Andres, breaks Python
_ also not API we want to expose, so sort this out
_ or maybe we're fine b/c now FX2D needs it as well
_ when did setPath() sneak into PShape? API is nothing like anything else
_ probably from the material stuff, but we need to fix that
_ why is createShape() implemented 4x (for P2D, P3D, and 2x versions)?
_ shouldn't be static, run it from the renderer, that's point of createXxx()
_ public createShape() method that takes another shape as param?
_ should just be the constructor doing this, or copy()
OPENGL / Andres
_ textureWrap(CLAMP / REPEAT)
_ simple NPE in OpenGL causes really large, not useful, stack trace
_ why is initPrimarySurface() public?
_ why is setFramerate() public? (also should be setFrameRate or just frameRate)
_ where did hintEnabled() come from?
_ remove 'params' from createImage (is it on loadImage too?)
_ remove matrixMode(), add a projection() method
_ shared intf for 3D view data across PGraphicsOpenGL and PGraphicsAndroid3D
_ libraries have to do a lot of casting
_ opengl isn't drawing rectangles out to raw properly with fonts
_ when not in textMode(SHAPE) should have rects
_ InvScreenX, Y, Z to convert screen (mouse) coordinates to model coordinates
_ https://github.com/processing/processing/issues/1609
LIBRARIES / PDF
_ tint() not working in PDF (regression between 2.0.3 and 2.1)
_ https://github.com/processing/processing/issues/2428
_ Implement blendMode() for PDF
_ https://github.com/processing/processing/issues/5438
_ beginRecord() doesn't use current settings of the sketch
_ sometimes reported as a bug, but probably not a good way to
_ consistently carry these over
_ pdf sketches exiting before writing has finished
_ people have to call exit() (so that dispose() is called in particular)
_ when using noLoop() and the PDF renderer, sketch should exit gracefully
_ because isDisplayable() returns false, there's no coming back from noLoop
LIBRARIES / Video
_ remove dispose() being used in the Movie and Capture
_ added warning notes, but shouldn't be necessary
_ buffer sink methods in Movie and Capture
_ added warning to JavaDoc, but need proper API for it
_ 'newFrame' is 'available', and ready() is part of that
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
DATA / Misc
_ add indent= as option for XML save
_ add indent= as option for JSON save
_ not doing print() methods, since alternatives are more descriptive
_ println(obj) and obj.write(System.out) are both better
_ can we use String... for options? or does it screw up the method signature?
_ and would we have to always concatenate arrays to prepend extensions, etc
_ include Instant and Interval? (or just Time and TimeSpan)
_ it's going to be File or Reader (mostly BufferedReader) everywhere
_ though TableODS needs an InputStream...
_ and XML could use InputStream if we hope to be able to reflect doc encoding
_ ok, so File, Reader, and InputStream (where needed)
_ setMissingXxxx() -> should this live in PApplet? be static?
_ cons: static stinks, diff tables might use diff values
_ will also need an iterator for the Dict class ala Map.Entry
_ using Iterable for rows(), keys(), etc
_ generally more efficient for Table, but slower for FloatHash and IntHash
_ could use an int array instead, but a bit hokey in places
_ Iterable, Iterator, or [] returned for keys(), rows(), etc.
_ list, dict, json, table are each more efficient at different things
_ keys(), rows(), etc. should return something Iterable
_ whether that means an array or an actual Iterator or even a Set
_ that way we can do what's most efficient
_ then we add keyIterator() and others to handle the other case (deletion)
_ blogs.oracle.com/CoreJavaTechTips/entry/using_enhanced_for_loops_with
_ means that JSON.keys() -> JSON.keyIterator(), JSON.keySet() -> JSON.keys()
_ what should they all return?
_ remove -> true/false based on whether it found something?
_ remove all -> the number removed?
_ List: remove(), append(), index(), etc all use values
_ removeIndex(index) is the other
_ otherwise remove() would be the only one that dealt with indices
_ Dict will use remove(key), so using remove(index) as default
_ and removeValue(value) is probably used less
_ introduce remap() instead of map() (if not deprecate?)
_ key/valueIterator to get a version that can be removed in a loop
_ in Table, added an Iterator function
_ should keys() returns cropped internal array after all?
_ right now it's making a copy (which is safer, so folks don't modify)
_ but this means that we don't have a fast method for access
_ methods for max, min, index of max/min entries? valueIndex?
DATA / Table
_ function that will convert awful CSV to TSV.. or something else?
_ maybe to write binary instead? then read the binary file once it's ok?
_ if loading from a File object
_ (or PApplet is passed in and we can check online)
_ then check the (probable) size of the file before loading
_ no column max/min functions since it needs to be per-datatype
_ better to use float mx = max(float(getColumn(3)));
_ but what to do with null entries?
_ need a method to reset the row/column indices after add/remove
_ or just make sure that it's covered for all cases
_ prefixes like # as comments? easy to remove?
_ naming for these (or whether to include hash)
_ Table createSubset() -> leave out?
_ String[] getUnique(col) (SQL DISTINCT, sort --unique)
_ HashMap<String,Integer> getUniqueCount(col)
_ really need to get an option to grab matches based on a col
_ i.e. get unique tables based on a particular column
_ or, get uniques, then grab rows that match a name in a particular col
_ create table from TableRow iterator...allows for subset and find
_ downside is types are not included
_ getMaxFloat() (whole table) or getMaxFloat(col)
_ that's max(getFloatColumn(n))
_ also important b/c can leave out missing values
_ dictionary support
_ join tables together (static is kinda gross)
_ table.append(anotherTable)?
_ table.join(anotherTable)
_ getInt() on categorial to return index?
_ getCategories() and getCategory() methods to query names?
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
LATER / Optimize
_ put a wrapper around InputStream returned by createInput
_ that actually has some notion of the length of its input
_ that way, methods could use the information when reading
_ loadBytes() needs optimization
_ don't bother using a buffering stream, just handle internally. gah!
_ can loadBytes() be improved by querying file size first?
_ background
_ this would require a new version of createInput(), which would query
_ the URL (or file) for an actual file size. the size is not always
_ available, so it can't be relied upon, but would help in some cases.
_ loadBytes() is used for images.. ouch
_ might be worth doing a test to see if it actually would help at all
_ before rewriting all of createInput()
LATER (post 2.0)
_ fillMode(NONZERO) and fillMode(ODD) to replace solid(boolean)?
_ create PVec2D and PVec3D as separate classes
_ gui priorities
_ + Label
_ + Button
_ + Scrollbar/Slider
_ - Checkbox
_ - Radio
_ . List
_ . Textblock
_ \ Knob
_ \ Progress bar
_ \ Toggle
_ add shader support
_ createColor() instead of color()?
_ route all exceptions through PException and catch method
_ advanced users can override the method if they want
_ or you can set an option to have PExceptions be raised
_ decision: just copy & paste the serial/net code..
_ until we can find a more compelling example
_ actual shape api for things like rectangles and whatnot?
_ should we kill import xxxx syntax for libraries?
_ just give up and use a gui for it
_ cons: copy & paste breaks
_ pro: there's no guaranteed 1:1 between packages and single libraries
_ method of threading but queue an event to be run when safe
_ e.g. queueing items like mouse/keybd, but generic fxns
_ for begin/endRecord, use a piggyback mechanism
_ that way won't have to pass a PApplet around
_ this has a big impact on the SVG library
_ in fact, this maybe should be a library that does it
_ so that the file size can be much smaller
_ add setOutput() method across other renderers?
_ introduce calc()
_ semantics of this are just too tricky, especially when it's not clear
_ what's actually gained by the split--would have to do weird hacks
_ to get the accum buffer, etc. to work anyway
_ add some sort of unprojectX/Y/Z method (based on glu fxn)
_ http://processing.org/discourse/yabb_beta/YaBB.cgi?board=OpenGL;action=display;num=1176483247
_ add a timer(obj, "functionname", 45) method
_ this can be used to schedule something to happen at a specific time
_ or import the swing timer (for actionPerformed)
_ also add interval("functionname", 40)
_ should fill(c) instead be fillColor(c)?
_ should color(123, 4, 99) instead be createColor()?
_ rounding errors on color conversion
_ colorMode(RGB, 1.0); colorMode(255); println(red(color(0.5,1,1)));
_ will return 127, instead of 128.
_ gray that's greater than the colorMode() can produce strange colors
_ https://download.processing.org/bugzilla/432.html (no gcode)
_ http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1083650609
_ http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1082481891
_ add stroke() to type
_ more for doing outlines-only and that sort of business
_ gradients
_ use gradients in a class for the svg lib for now
_ don't add api to main p5 stuff (though maybe setPaint/noPaint api?)
_ gradient-painted lines and fills
_ java2d will do both line and fill, illusfarter only does fills
_ gradients not supported in java2d
_ https://download.processing.org/bugzilla/371.html (no gcode)
_ bspline or nurbs (later, want to do the 3D/arch stuff correctly)
_ non-homogenous coloring for curve vertices
_ consider bringing back text/image using cache/names
_ exactly how pixel-filling works for strokes
_ http://processing.org/bugs/bugzilla/1025.html
_ deprecate loadPixels for 2.0? need to move away from it
_ mostly just change the examples to not use loadPixels() anymore
_ put a Hash<Something> class in there
_ will this work to sort by the values?
_ there was another concern as well..
_ save() should probably come out of image, ja?
-13360
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -34,6 +34,7 @@ kotlinComposePlugin = { module = "org.jetbrains.kotlin.plugin.compose:org.jetbra
markdown = { module = "com.mikepenz:multiplatform-markdown-renderer-m2", version = "0.31.0" }
markdownJVM = { module = "com.mikepenz:multiplatform-markdown-renderer-jvm", version = "0.31.0" }
clikt = { module = "com.github.ajalt.clikt:clikt", version = "5.0.2" }
kotlinxSerializationJson = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version = "1.6.3" }
[plugins]
jetbrainsCompose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" }
-30
View File
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="generated"/>
<classpathentry kind="src" path="src"/>
<classpathentry combineaccessrules="false" kind="src" path="/processing4-app"/>
<classpathentry combineaccessrules="false" kind="src" path="/processing4-core"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/adoptopenjdk-11">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="mode/antlr-4.7.2-complete.jar"/>
<classpathentry kind="lib" path="mode/classpath-explorer-1.0.jar"/>
<classpathentry kind="lib" path="mode/com.ibm.icu.jar"/>
<classpathentry kind="lib" path="mode/jdtCompilerAdapter.jar"/>
<classpathentry kind="lib" path="mode/jsoup-1.7.1.jar"/>
<classpathentry kind="lib" path="mode/org.eclipse.core.contenttype.jar"/>
<classpathentry kind="lib" path="mode/org.eclipse.core.jobs.jar"/>
<classpathentry kind="lib" path="mode/org.eclipse.core.resources.jar"/>
<classpathentry kind="lib" path="mode/org.eclipse.core.runtime.jar"/>
<classpathentry kind="lib" path="mode/org.eclipse.equinox.common.jar"/>
<classpathentry kind="lib" path="mode/org.eclipse.equinox.preferences.jar"/>
<classpathentry kind="lib" path="mode/org.eclipse.jdt.core.jar"/>
<classpathentry kind="lib" path="mode/org.eclipse.osgi.jar"/>
<classpathentry kind="lib" path="mode/org.eclipse.text.jar"/>
<classpathentry kind="lib" path="mode/org.netbeans.swing.outline.jar"/>
<classpathentry kind="lib" path="test/lib/junit-4.13.2.jar"/>
<classpathentry kind="lib" path="test/lib/hamcrest-core-1.3.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="processing-java"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/processing-java/build.xml}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value=""/>
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
</launchConfiguration>
-4
View File
@@ -1,4 +0,0 @@
reference.zip
bin
bin-test
generated
-15
View File
@@ -1,15 +0,0 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=11
+1
View File
@@ -28,6 +28,7 @@ dependencies{
implementation(project(":app"))
implementation(project(":core"))
implementation(project(":java:preprocessor"))
implementation(project(":app:utils"))
implementation(libs.eclipseJDT)
implementation(libs.eclipseJDTCompiler)
+13
View File
@@ -503,6 +503,7 @@ size FUNCTION2 FloatList_size_
sort FUNCTION2 FloatList_sort_
sortReverse FUNCTION2 FloatList_sortReverse_
sub FUNCTION2 FloatList_sub_
toArray FUNCTION2 FloatList_toArray_
floor FUNCTION1 floor_
focused KEYWORD4 focused
frameCount KEYWORD4 frameCount
@@ -559,6 +560,7 @@ size FUNCTION2 IntList_size_
sort FUNCTION2 IntList_sort_
sortReverse FUNCTION2 IntList_sortReverse_
sub FUNCTION2 IntList_sub_
toArray FUNCTION2 IntList_toArray_
join FUNCTION1 join_
JSONArray KEYWORD5 JSONArray
append FUNCTION2 JSONArray_append_
@@ -579,6 +581,8 @@ setJSONArray FUNCTION2 JSONArray_setJSONArray_
setJSONObject FUNCTION2 JSONArray_setJSONObject_
setString FUNCTION2 JSONArray_setString_
size FUNCTION2 JSONArray_size_
toIntArray FUNCTION2 JSONArray_toIntArray_
toStringArray FUNCTION2 JSONArray_toStringArray_
JSONObject KEYWORD5 JSONObject
getBoolean FUNCTION2 JSONObject_getBoolean_
getFloat FUNCTION2 JSONObject_getFloat_
@@ -751,6 +755,7 @@ random2D FUNCTION2 PVector_random2D_
random3D FUNCTION2 PVector_random3D_
rotate FUNCTION2 PVector_rotate_
set FUNCTION2 PVector_set_
setHeading FUNCTION2 PVector_setHeading_
setMag FUNCTION2 PVector_setMag_
sub FUNCTION2 PVector_sub_
quad FUNCTION1 quad_
@@ -847,6 +852,7 @@ shuffle FUNCTION2 StringList_shuffle_
size FUNCTION2 StringList_size_
sort FUNCTION2 StringList_sort_
sortReverse FUNCTION2 StringList_sortReverse_
toArray FUNCTION2 StringList_toArray_
upper FUNCTION2 StringList_upper_
stroke FUNCTION1 stroke_
strokeCap FUNCTION1 strokeCap_
@@ -911,6 +917,13 @@ unbinary FUNCTION1 unbinary_
unhex FUNCTION1 unhex_
updatePixels FUNCTION1 updatePixels_
vertex FUNCTION1 vertex_
windowMove FUNCTION1 windowMove_
windowMoved FUNCTION1 windowMoved_
windowRatio FUNCTION1 windowRatio_
windowResizable FUNCTION1 windowResizable_
windowResize FUNCTION1 windowResize_
windowResized FUNCTION1 windowResized_
windowTitle FUNCTION1 windowTitle_
XML KEYWORD5 XML
addChild FUNCTION2 XML_addChild_
format FUNCTION2 XML_format_
-11
View File
@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/adoptopenjdk-11">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" kind="src" path="/processing4-core"/>
<classpathentry kind="output" path="bin"/>
</classpath>
-1
View File
@@ -1 +0,0 @@
bin
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
dxf.jar
-1
View File
@@ -1 +0,0 @@
io.jar

Some files were not shown because too many files have changed in this diff Show More