├── .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/#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 |
--------------------------------------------------------------------------------