├── .github └── workflows │ └── maven.yml ├── .gitignore ├── .gitmodules ├── README.md ├── jitpack.yml ├── pom.xml └── test └── RuntimeTest.java /.github/workflows/maven.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | on: 3 | push: 4 | branches: 5 | - main 6 | pull_request: 7 | types: [opened, synchronize, reopened] 8 | 9 | permissions: 10 | contents: read 11 | pull-requests: read 12 | 13 | jobs: 14 | build: 15 | name: Build 16 | runs-on: ${{ matrix.os }} 17 | strategy: 18 | matrix: 19 | os: [ubuntu-latest, windows-latest, macos-latest] 20 | steps: 21 | - uses: actions/checkout@v4 22 | with: 23 | fetch-depth: 0 24 | timeout-minutes: 5 25 | 26 | - name: Set up JDK 17 27 | uses: actions/setup-java@v4 28 | with: 29 | distribution: 'temurin' 30 | java-version: '17' 31 | timeout-minutes: 5 32 | 33 | - name: Cache SonarCloud packages 34 | uses: actions/cache@v4 35 | with: 36 | path: ~/.sonar/cache 37 | key: ${{ runner.os }}-sonar-${{ hashFiles('**/*.xml') }} 38 | restore-keys: ${{ runner.os }}-sonar- 39 | timeout-minutes: 3 40 | 41 | - name: Cache Maven packages 42 | uses: actions/cache@v4 43 | with: 44 | path: ~/.m2 45 | key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} 46 | restore-keys: ${{ runner.os }}-m2- 47 | timeout-minutes: 3 48 | 49 | - name: Build and analyze 50 | env: 51 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 52 | SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} 53 | run: mvn -B -Puber-jar verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar 54 | timeout-minutes: 30 55 | 56 | - uses: actions/upload-artifact@v4 57 | with: 58 | name: core-${{ runner.os }} 59 | path: target/*.jar 60 | retention-days: 7 61 | timeout-minutes: 5 62 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | bin 2 | bin-test 3 | .idea 4 | 5 | /library/gluegen-rt*.jar 6 | /library/jogl-all*.jar 7 | 8 | core-sources.jar 9 | /target/ 10 | /.settings/ 11 | .project 12 | .classpath -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "processing4"] 2 | path = processing4 3 | url = https://github.com/processing/processing4.git 4 | [submodule "processing4-javafx"] 5 | path = processing4-javafx 6 | url = https://github.com/processing/processing4-javafx.git 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![](https://jitpack.io/v/micycle1/processing-core-4.svg)](https://jitpack.io/#micycle1/processing-core-4) 2 | 3 | # Processing Core (4.x) 4 | 5 | This is a mirror of the *core* library from [Processing 4](https://github.com/processing/processing4/), with the addition of a *pom.xml*, turning it into a standalone *Maven* artifact. 6 | 7 | It is hosted as a *Maven* dependency via [JitPack](https://jitpack.io/#micycle1/processing-core-4) (from this Github repository) so it can be referenced in your own *Maven* project (for when you want to use the Processing library outside of the Processing IDE). 8 | 9 | This mirror is not necessarily up to date with the latest Processing 4 release; it is currently based on Processing [**4.4.2**](https://github.com/processing/processing4/releases/tag/processing-1302-4.4.2). 10 | 11 | --- 12 | 13 | ## Usage in your Maven project 14 | 15 | ### Step 1. Add the *JitPack* repository to your pom.xml 16 | 17 | ``` 18 | 19 | 20 | jitpack.io 21 | https://jitpack.io 22 | 23 | 24 | ``` 25 | ### Step 2. Add the processing-core dependency 26 | 27 | ``` 28 | 29 | com.github.micycle1 30 | processing-core-4 31 | 4.4.2 32 | 33 | ``` 34 | 35 | ### **That's it!** 36 | 37 | Now you don't have to worry about adding core.jar, the JavaFX and JOGL & Gluegen dependencies to your project — this does it all! 38 | 39 | Note: core version 4.4.2 and onwards require Java 17+; prior versions require Java 11+. 40 | -------------------------------------------------------------------------------- /jitpack.yml: -------------------------------------------------------------------------------- 1 | jdk: 2 | - openjdk21 3 | install: 4 | - mvn wrapper:wrapper -Dmaven=3.9.7 5 | - ./mvnw install -DskipTests 6 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 4 | 4.0.0 5 | org.processing 6 | core 7 | 4.4.2 8 | Processing Core 9 | 10 | micycle1_processing-core-4 11 | micycle 12 | https://sonarcloud.io 13 | 14 | 15 | processing4\core\src 16 | processing4\core\test\ 17 | 18 | 19 | processing4\core\src 20 | 21 | **\processing\opengl\shaders\ 22 | **\processing\opengl\cursors\ 23 | **\processing\core\libDifferent.jnilib 24 | 25 | 26 | 27 | 28 | 29 | org.apache.maven.plugins 30 | maven-wrapper-plugin 31 | 3.2.0 32 | 33 | 3.9.7 34 | 35 | 36 | 37 | maven-compiler-plugin 38 | 3.13.0 39 | 40 | 17 41 | UTF-8 42 | 43 | font/** 44 | icon/** 45 | 46 | 47 | 48 | 49 | org.codehaus.mojo 50 | build-helper-maven-plugin 51 | 3.3.0 52 | 53 | 54 | add-source 55 | generate-sources 56 | 57 | add-source 58 | 59 | 60 | 61 | processing4-javafx/src/ 62 | processing4/java/libraries/dxf/src/ 63 | processing4/java/libraries/io/src/ 64 | processing4/java/libraries/net/src/ 65 | processing4/java/libraries/pdf/src/ 66 | processing4/java/libraries/svg/src/ 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | org.apache.maven.plugins 75 | maven-source-plugin 76 | 3.3.1 77 | 78 | 79 | attach-sources 80 | 81 | jar 82 | 83 | 84 | 85 | 86 | 87 | org.apache.maven.plugins 88 | maven-javadoc-plugin 89 | 3.4.1 90 | 91 | none 92 | 93 | 94 | 95 | attach-javadocs 96 | 97 | jar 98 | 99 | 100 | 101 | 102 | 103 | org.apache.maven.plugins 104 | maven-surefire-plugin 105 | 3.3.1 106 | 107 | 108 | 109 | 110 | 111 | uber-jar 112 | 113 | 114 | 115 | org.apache.maven.plugins 116 | maven-shade-plugin 117 | 3.4.1 118 | 119 | false 120 | true 121 | 122 | 123 | *:* 124 | 125 | META-INF/** 126 | **/*.png 127 | **/*.svg 128 | **/*.gif 129 | **/*.jpg 130 | **/*.properties 131 | 132 | 133 | 134 | 135 | 136 | 137 | package 138 | 139 | shade 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | jogamp 151 | jogamp 152 | https://jogamp.org/deployment/maven/ 153 | 154 | 155 | 156 | 157 | org.openjfx 158 | javafx-controls 159 | 24 160 | 161 | 162 | org.jogamp.jogl 163 | jogl-all-main 164 | 2.5.0 165 | 166 | 167 | org.jogamp.gluegen 168 | gluegen-rt-main 169 | 2.5.0 170 | 171 | 172 | org.apache.xmlgraphics 173 | batik-svggen 174 | 1.16 175 | 176 | 177 | org.apache.xmlgraphics 178 | batik-dom 179 | 1.16 180 | 181 | 182 | xml-apis 183 | xml-apis 184 | 185 | 186 | 187 | 188 | com.lowagie 189 | itext 190 | 2.1.7 191 | 192 | 193 | junit 194 | junit 195 | 4.13.2 196 | test 197 | 198 | 199 | 200 | -------------------------------------------------------------------------------- /test/RuntimeTest.java: -------------------------------------------------------------------------------- 1 | package test; 2 | 3 | import processing.core.PApplet; 4 | 5 | /** 6 | * A Processing sketch to be executed by github actions against the core.jar 7 | * built from the repository. This tests the .jar for runtime issues (such as 8 | * missing JOGL files, etc.). Github actions should run this against windows, 9 | * linux and mac. 10 | * 11 | * @author Michael Carleton 12 | * 13 | */ 14 | public class RuntimeTest extends PApplet { 15 | 16 | public static void main(String[] args) { 17 | PApplet.main(RuntimeTest.class); 18 | } 19 | 20 | @Override 21 | public void settings() { 22 | size(800, 800, P3D); 23 | } 24 | 25 | @Override 26 | public void setup() { 27 | background(255); 28 | } 29 | 30 | @Override 31 | public void draw() { 32 | ellipse(0, 0, width, height); 33 | } 34 | 35 | } 36 | --------------------------------------------------------------------------------