Compare commits

..

132 Commits

Author SHA1 Message Date
Edwin Jakobs
e79d83c017 Merge branch 'next-version' into feature-variants 2025-09-17 01:35:44 -07:00
Abe Pazos
2623633588 README.md: tweak Building Libraries section
s/convention/conventions/
2025-09-16 22:38:56 +02:00
Edwin Jakobs
46fb734771 Fixed mavenLocal configuration 2025-09-16 22:25:49 +02:00
Edwin Jakobs
0bdb818026 Fixed missing logger providers in demo 2025-09-16 22:12:54 +02:00
Edwin Jakobs
d334c11b6a Add main.output to demo.runtimeClasspath 2025-09-16 21:43:32 +02:00
Edwin Jakobs
7f8af578e6 Add main.output to demo.compileClasspath 2025-09-16 19:10:52 +02:00
Edwin Jakobs
6e328f3871 Clean up publish-library.gradle.kts 2025-09-15 20:51:01 +02:00
Edwin Jakobs
15ab357c05 Restore plugin setup 2025-09-15 20:49:52 +02:00
Edwin Jakobs
f8cc9b713e Add publish-library convention plugin 2025-09-15 20:49:05 +02:00
Edwin Jakobs
a0b7df5585 Configure group/name/version through gradle.properties 2025-09-15 12:16:25 +02:00
Edwin Jakobs
3144067340 Remove lingering import and ext.set() 2025-09-15 11:49:58 +02:00
Edwin Jakobs
a4525f9b16 Use jvmTarget, kotlinLanguage and kotlinApi from libs.versions.toml 2025-09-15 07:19:20 +02:00
Edwin Jakobs
84f00fa827 Make use of version catalogs and variants 2025-09-14 21:27:30 +02:00
Abe Pazos
e97ef57b78 Update README.md: change Java requirement 14 -> 17 2025-09-13 19:46:41 +02:00
Abe Pazos
2e760f9c53 Add link to wiki 2025-09-11 13:11:13 +02:00
Abe Pazos
3d6774275a Add link to wiki 2025-09-11 13:10:29 +02:00
Abe Pazos
b4242bc892 Upgrade to Kotlin 2.2.20 2025-09-11 11:49:41 +02:00
Abe Pazos
d38df2eed7 Enable orx-composition, orx-svg, orx-text-writer
They were part of openrndr and enabled by default in the past
2025-09-11 11:35:00 +02:00
Abe Pazos
622bfc5077 Merge branch 'next-version' ignoring changes in master
Includes openrndr and orx 0.4.5
2025-09-06 13:54:37 +02:00
Abe Pazos
c2756d2b9d Upgrade to openrndr/orx 0.4.5 2025-09-06 13:36:34 +02:00
Abe Pazos
3ed7c18932 build.gradle.kts: add orx-axidraw, reformatting 2025-09-03 11:11:35 +02:00
Abe Pazos
86c36a0f35 Update to openrndr and orx 0.4.5-alpha11 2025-09-03 11:04:20 +02:00
Abe Pazos
e6a9e319d9 Update to gradleup.shadow 9.1.0 2025-08-29 22:58:55 +02:00
Abe Pazos
a385ebb216 Update badges in README.md
Previous ones stopped working
2025-08-26 15:11:52 +02:00
Abe Pazos
e1d44de9a1 Update badges in README.md
Previous ones stopped working
2025-08-26 15:07:50 +02:00
Abe Pazos
8191515779 Update to openrndr and orx 0.4.5-alpha10 2025-08-22 14:05:10 +02:00
Abe Pazos
7597ac35e2 Update README.md
Simplify README by merging two sections
2025-08-22 12:03:35 +00:00
Abe Pazos
69f698df1f Update to kotlin 2.2.10, kotlinLogging 7.0.13, shadow 9.0.2
Replace com.github.johnrengelman.shadow with com.gradleup.shadow
2025-08-21 00:00:04 +02:00
Abe Pazos
f93a523115 Dependencies: update kotlinLogging to 7.0.11 2025-08-06 11:57:54 +02:00
Abe Pazos
8f08e44141 Add .lwjgl to .gitignore
For new users, it's confusing that IDEA suggests adding five extra files to git when they only edited one.
2025-07-30 08:41:40 +02:00
Abe Pazos
aa3e5e15ac Ignore .lwjgl in .gitignore
For new users, it's confusing that IDEA suggests adding five extra files to git when they only edited one.
2025-07-30 08:40:39 +02:00
Edwin Jakobs
de0ec94804 Upgrade to Gradle 8.14.3, Kotlin 2.2.0, kotlinx serialization 1.9.0 2025-07-09 21:38:54 +02:00
Abe Pazos
bf588e1baa Update Gradle to 8.14.2 2025-06-05 17:20:27 +02:00
Abe Pazos
ba99027329 Update Gradle to 8.14.1 2025-05-22 21:41:10 +02:00
Abe Pazos
5e6fbdd06a Update Kotlin to 2.1.21 2025-05-13 15:16:08 +03:00
Abe Pazos
cd5a98322b Fix deprecation warnings 2025-05-02 19:02:48 +03:00
Abe Pazos
fef8e76e52 Describe how to run the executable created by jpackage 2025-05-02 19:01:38 +03:00
Abe Pazos
315e788a32 Upgrade to Gradle 8.14 2025-04-25 23:55:14 +03:00
Abe Pazos
ca85dec73a Upgrade to openrndr/orx 0.4.5-alpha9, kotlin-logging 7.0.7 2025-04-22 12:10:27 +02:00
Abe Pazos
4247fd0989 Upgrade kotlinx.coroutines to 1.10.2 2025-04-11 11:57:11 +03:00
Abe Pazos
2d6963b627 Upgrade to kotlin-logging 7.0.6, kotlinx-serialization-core 1.8.1 2025-04-03 23:51:58 +08:00
Abe Pazos
72270a5421 Upgrade to kotlin 2.1.20 2025-03-20 22:16:28 +08:00
Abe Pazos
89aeaf68eb Upgrade to openrndr/orx 0.4.5-alpha8 2025-03-11 10:18:21 +08:00
Abe Pazos
b164dc2bc5 Upgrade kotlin-logging to 7.0.5 2025-03-09 20:35:09 +08:00
Abe Pazos
de3079cbee Upate to Gradle 8.13, slf4j 2.0.17 2025-02-26 02:07:26 +01:00
Abe Pazos
e57ba1bff7 Build on commit also for next-version 2025-02-16 23:15:28 +08:00
Abe Pazos
ce0877cdd1 Upgrade kotlin-logging to 7.0.4 2025-02-16 17:51:48 +08:00
Abe Pazos
fff6fcee83 Upgrade to openrndr and orx 0.4.5-alpha7 2025-02-04 13:11:29 +01:00
Abe Pazos
5ff7884bd5 Add orx-math
Note: not in any ORX alpha release at the time of writing,
only available when building your own orx SNAPSHOT.
2025-02-02 18:53:14 +01:00
Abe Pazos
bf7d308796 Revert dependency accidentally commented out 2025-02-02 18:43:28 +01:00
Abe Pazos
a21da71eb1 Upgrade to Gradle 8.12.1, Kotlin 2.1.10, Versions 0.52.0 2025-02-01 09:56:40 +01:00
Abe Pazos
dbe277002a Update kotlinx-serialization to 1.8.0 2025-01-06 17:17:21 +01:00
Abe Pazos
2a4d2142e0 Update kotlinx-coroutines-core to 1.10.1 2024-12-22 10:20:06 +01:00
Abe Pazos
7bc745fbed Update to Gradle 8.12 2024-12-20 17:54:44 +01:00
Abe Pazos
374cd51b8a Update kotlin-logging 7.0.0 -> 7.0.3 2024-12-03 10:33:52 +01:00
Abe Pazos
0ca9db90d0 Update to Kotlin 2.1.0 2024-11-27 16:38:18 +01:00
Abe Pazos
e7f3475de0 Update to Gradle 8.11.1 2024-11-25 08:06:42 +01:00
Abe Pazos
ef7cee01c7 Fix #53 - ffmpeg warnings after shadowJar 2024-11-21 11:19:30 +01:00
Abe Pazos
9e08c6cfb6 Fix #53 - ffmpeg warnings after shadowJar 2024-11-21 11:18:38 +01:00
Abe Pazos
1565ef12be Update README.md
Mention how to specify a main method to run after using shadowJar

Simplify the text.
2024-11-16 18:37:32 +01:00
Abe Pazos
de35f064d8 Update README.md
Mention how to specify a main method to run after using shadowJar

Simplify the text.
2024-11-16 17:24:36 +00:00
Abe Pazos
6e5fac82ac Ignore .kotlin folder 2024-11-14 15:14:58 +01:00
Abe Pazos
a9edf8d79f Add org.gradle.configuration-cache.parallel
to gradle.properties
2024-11-14 15:12:23 +01:00
Abe Pazos
418339fe4b Update to openrndr/orx 0.4.5-alpha6 2024-11-14 15:11:34 +01:00
Abe Pazos
aad6a8f576 Update to Gradle 8.11 2024-11-14 15:11:19 +01:00
Abe Pazos
4d65172d93 Upgrade .set() syntax to = in Gradle 2024-11-11 14:32:38 +01:00
Abe Pazos
b3f94abc82 Upgrade kotlin 2.0.20 to 2.0.21 2024-11-11 14:32:13 +01:00
Abe Pazos
e4dfb4aaed Replace gson with kotlinx.serialization 2024-11-11 14:31:46 +01:00
Abe Pazos
524635e1ad Revert accidentally pushed code
This reverts commit 3ef46bcc4e.
2024-10-31 08:02:36 +01:00
Abe Pazos
db5ea1cdd2 Update to Gradle 8.10.2 2024-10-30 21:43:46 +01:00
Abe Pazos
04139af57c Update to Gradle 8.10.2 2024-10-01 16:01:34 +02:00
Abe Pazos
c77fd4c99a Update to kotlinx-coroutines 1.9.0 2024-09-17 11:13:29 +02:00
Abe Pazos
3ef46bcc4e Add kinect test 2024-09-13 18:12:52 +02:00
Abe Pazos
1384143d6f Update to Gradle 8.10 2024-09-13 18:11:46 +02:00
Abe Pazos
6b14304c80 Update kotlin to 2.0.20 2024-09-01 19:18:04 +02:00
Abe Pazos
c6f608f880 Mention ORSL in the README 2024-08-15 16:24:44 +02:00
Abe Pazos
3bfb55041d Update orsl to 0.4.5-alpha5 2024-08-15 11:17:53 +02:00
Abe Pazos
91e953ab61 Update to Gradle 8.10 2024-08-15 10:53:09 +02:00
Abe Pazos
10ccb692c7 Update to Gradle 8.9 2024-08-12 19:29:46 +02:00
Abe Pazos
0edd57129a Update slf4j to 2.0.16 2024-08-10 14:47:06 +02:00
Abe Pazos
0278b7dc9e Update kotlin to 2.0.10, slf4j to 2.0.15 2024-08-08 17:22:08 +02:00
Abe Pazos
440d67654d Solve kotlinOptions deprecation warning 2024-07-30 17:19:55 +02:00
Abe Pazos
fa280af373 Update dependencies
openrndr = "0.4.5-alpha5"
orx = "0.4.5-alpha5"
orsl = "0.4.5-alpha3"

orsl was set to alpha4 which does not yet exist
2024-07-18 22:59:41 +02:00
Abe Pazos
0268725ead Update jackson 2.17.1 to 2.17.2 2024-07-16 15:25:21 +02:00
Abe Pazos
d8d9445062 Update Gradle 8.8 to 8.9 2024-07-16 15:24:58 +02:00
Abe Pazos
0ccab3a8bf Update kotlin-logging 6.0.9 -> 7.0.0 2024-06-15 13:01:14 +02:00
Abe Pazos
0282d5a0b5 Update GitHub actions 2024-06-15 11:13:31 +02:00
Abe Pazos
24e441189a Update openrndr/orx/orsl to 0.4.5-alpha4 2024-06-09 07:18:41 +02:00
Edwin Jakobs
d019406420 Upgrade to Gradle 8.8 2024-06-01 07:59:06 +02:00
Edwin Jakobs
3cdf6ea780 Upgrade to JDK 17 2024-06-01 07:55:38 +02:00
Abe Pazos
df784c99c1 Update to Kotlin 2.0.0 2024-05-27 22:42:21 +02:00
Abe Pazos
80078cc2cb Update kotlin-csv-jvm to 1.9.3 2024-05-16 16:11:28 +02:00
Abe Pazos
527b502e74 Update kotlinx-coroutines-core to 1.8.1 2024-05-13 13:46:26 +02:00
Abe Pazos
c4e5b3b1aa Update to kotlin 1.9.24 and jackson 2.17.1 2024-05-09 13:05:34 +02:00
Abe Pazos
5b2634fdd1 Update to 0.4.5-alpha3, remove openrndr-svg
Add orx-svg and orx-composition
2024-04-24 08:35:35 +02:00
Abe Pazos
8c2f9c0ec6 Update slf4j, jackson, kotlin-logging 2024-04-18 18:25:50 +02:00
Abe Pazos
dec0b36aaf Upgrade Gradle to 8.7, disable orx-svg, orx-composition
as they are not yet available in 0.4.5alpha2
2024-03-23 10:35:11 +01:00
Abe Pazos
cf4ebfc490 add new orx'es to build.gradle.kts 2024-03-18 13:07:33 +01:00
Abe Pazos
cc31b08b91 libs.versions.toml use openrndr/orx/orsl 0.4.5-alpha2 2024-03-17 20:45:53 +01:00
Abe Pazos
3a4d22d940 Update to log4j 2.23.1, jackson 2.16.2 2024-03-11 16:40:36 +01:00
Abe Pazos
b98a1068f7 Update kotlin to 1.9.23 2024-03-07 19:06:54 +01:00
Abe Pazos
b57fb1abc6 Update log4j and org.beryx.runtime dependencies 2024-02-22 17:29:52 +01:00
Abe Pazos
14630e3b5b Update slf4j and kotlinx-coroutines-core 2024-02-19 15:51:47 +01:00
Abe Pazos
638e579f3e Update to Gradle 8.6 2024-02-03 09:30:16 +01:00
Abe Pazos
9604de3243 update Gradle dependencies logging and versions 2024-01-29 17:48:02 +01:00
Edwin Jakobs
15fb5393e7 Add ORSL dependencies 2024-01-15 14:15:29 +01:00
Edwin Jakobs
c518834f71 Upgrade to kotlin-logging 6.0.2 2024-01-14 19:57:47 +01:00
Abe Pazos
a83e888dc3 Merge changes from next-version 2024-01-05 16:49:07 +01:00
Abe Pazos
498fd6773d Add orx-property-watchers, mention next-version branch 2024-01-05 16:37:29 +01:00
Abe Pazos
d5702db78f Update openrndr and orx to 0.4.4 2024-01-05 16:22:49 +01:00
Abe Pazos
d692d6998d Update dependencies 2024-01-02 11:16:47 +01:00
Abe Pazos
3db83af277 Add svg to media file scope 2024-01-02 11:16:30 +01:00
Abe Pazos
29db13e82a Update openrndr and orx to 0.4.4-alpha6 2023-12-08 10:49:11 +01:00
Abe Pazos
a3c9178d4d Update orx'es in build.gradle.kts 2023-12-08 10:48:00 +01:00
Abe Pazos
84f54b3f4e Add logging files to .gitignore 2023-12-08 10:47:07 +01:00
Abe Pazos
4c9e1c552f Fix markdown 2023-12-01 17:28:15 +01:00
Abe Pazos
e36cad040e Mention next-version branch in readme 2023-12-01 17:12:51 +01:00
Abe Pazos
ce3bf56b43 Update openrndr and orx dependencies to 0.4.4-alpha5 2023-12-01 17:11:57 +01:00
Abe Pazos
5ce3313da5 Update dependencies 2023-11-29 17:06:24 +01:00
Abe Pazos
9695d5e8af Update Gradle to 8.5 2023-11-29 16:28:12 +01:00
Kazik Pogoda
5242dae526 build: versions plugin added for routine checks of dependency updates, excluding unstable dependencies (#51) 2023-11-29 16:28:12 +01:00
Kazik Pogoda
d97e80c903 build: versions plugin added for routine checks of dependency updates, excluding unstable dependencies (#51) 2023-11-12 16:17:25 +01:00
Abe Pazos
adf88e1062 Update dependencies 2023-11-11 11:59:29 +01:00
Abe Pazos
eda66cc37a s/Images/Media/ (file scope), add audio and video file extensions 2023-10-06 18:08:56 +02:00
Abe Pazos
fa820c6d3c Fix Gradle deprecated $buildDir
And some whitespace
2023-10-06 18:08:07 +02:00
Abe Pazos
411b5f5b12 Update Gradle and Kotlin 2023-10-06 17:26:30 +02:00
Edwin Jakobs
2f2d279e24 Update configuration cache settings 2023-10-06 16:58:22 +02:00
Edwin Jakobs
a35675fd03 Upgrade to Gradle 8.3 2023-10-06 16:58:22 +02:00
Edwin Jakobs
2477ce7de8 Update configuration cache settings 2023-08-29 08:04:07 +02:00
Edwin Jakobs
0fd7a72d4f Upgrade to Gradle 8.3 2023-08-29 07:50:15 +02:00
Edwin Jakobs
f907422a5e Upgrade kotlinx coroutines to 1.7.1, kotlin-csv to 1.9.1 2023-06-24 07:51:19 +02:00
Edwin Jakobs
f3d8d0a3dc Upgrade openrndr/orx to 0.4.4-SNAPSHOT 2023-06-24 07:46:45 +02:00
19 changed files with 454 additions and 399 deletions

View File

@@ -3,13 +3,14 @@ on:
push: push:
branches: branches:
- master - master
- next-version
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/setup-java@v3 - uses: actions/setup-java@v4
with: with:
distribution: 'temurin' distribution: 'temurin'
java-version: '17' java-version: '17'

View File

@@ -23,10 +23,10 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Set up JDK 17 - name: Set up JDK 17
uses: actions/setup-java@v3 uses: actions/setup-java@v4
with: with:
distribution: 'temurin' distribution: 'temurin'
java-version: '17' java-version: '17'
@@ -48,7 +48,7 @@ jobs:
run: mv ./build/distributions/openrndr-application.zip ./build/distributions/openrndr-application-${{env.OR_TARGET_NAME}}.zip run: mv ./build/distributions/openrndr-application.zip ./build/distributions/openrndr-application-${{env.OR_TARGET_NAME}}.zip
- name: Create Release - name: Create Release
uses: ncipollo/release-action@v1.12.0 uses: ncipollo/release-action@v1.14.0
id: create_release id: create_release
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}

5
.gitignore vendored
View File

@@ -3,6 +3,11 @@ build
out out
.idea .idea
.gradle .gradle
.kotlin
.lwjgl
video/ video/
screenshots/ screenshots/
gui-parameters/ gui-parameters/
ffmpegOutput.txt
ShaderError.glsl

View File

@@ -7,62 +7,67 @@ go-to starting point for writing OPENRNDR-based software.
If you are looking at this from IntelliJ IDEA you can start by expanding the _project_ tab on the left. You will find a template program in `src/main/kotlin/TemplateProgram.kt` and a live-coding example in `src/main/kotlin/TemplateLiveProgram.kt`. If you are looking at this from IntelliJ IDEA you can start by expanding the _project_ tab on the left. You will find a template program in `src/main/kotlin/TemplateProgram.kt` and a live-coding example in `src/main/kotlin/TemplateLiveProgram.kt`.
You will find some [basic instructions](https://guide.openrndr.org/setUpYourFirstProgram.html) in the [OPENRNDR guide](https://guide.openrndr.org) You will find some [basic instructions](https://guide.openrndr.org/setUpYourFirstProgram.html) in the [OPENRNDR guide](https://guide.openrndr.org).
## Gradle tasks ## Gradle tasks
- `./gradlew run` runs the TemplateProgram (Use `gradlew.bat run` under Windows) - `./gradlew run` runs `TemplateProgram.kt` (Use `gradlew.bat run` under Windows)
- `./gradlew shadowJar` creates an executable platform specific jar file with all dependencies. Run the resulting program by typing `java -jar build/libs/openrndr-template-1.0.0-all.jar` in a terminal from the project root. - `./gradlew run -Popenrndr.application=MyProgramKt` runs `src/main/kotlin/myProgram.kt`
- `./gradlew jpackageZip` creates a zip with a stand-alone executable for the current platform (works with Java 14 only) - `./gradlew run -Popenrndr.application=foo.bar.MyProgramKt` runs `src/main/kotlin/foo/bar/myProgram.kt` (assuming `package foo.bar` is used in myProgram.kt)
- `./gradlew shadowJar` creates an executable platform specific jar file with all dependencies. Run the resulting program by typing `java -jar build/libs/openrndr-template-1.0.0-all.jar` in a terminal from the project root. If your project contains multiple `main` methods, specify which one to run with `java -cp build/libs/openrndr-template-1.0.0-all.jar MyProgramKt`, where `MyProgramKt` can also be `foo.bar.MyProgramKt` if it's in the package `foo.bar`.
- `./gradlew jpackageZip` creates a zip with a stand-alone executable for the current platform (requires Java 17 or newer). Run it like this: `cd build/jpackage/openrndr-application/ && bin/openrndr-application`.
- `./gradlew dependencyUpydates` checks whether any dependencies have newer versions.
## Tips and issues
See the [wiki](https://github.com/openrndr/openrndr-template/wiki)
## Cross builds ## Cross builds
To create a runnable jar for a platform different from your current platform, use `./gradlew jar -PtargetPlatform=<platform>`, where `<platform>` is either `windows`, `macos`, `linux-x64`, or `linux-arm64`. See the [wiki](https://github.com/openrndr/openrndr-template/wiki)
## Updating OPENRNDR, ORX and other dependencies ## Updating OPENRNDR, ORX and other dependencies
The openrndr-template depends on various packages including the core [openrndr](https://github.com/openrndr/openrndr/) and the [orx](https://github.com/openrndr/orx/) extensions. The version numbers of these dependencies are specified in your [libs.versions.toml](gradle/libs.versions.toml) file. If you want to learn about file format visit the [Gradle documentation](https://docs.gradle.org/current/userguide/platforms.html#sub:conventional-dependencies-toml) website. The openrndr-template depends on various packages including the core [openrndr](https://github.com/openrndr/openrndr/) and the [orx](https://github.com/openrndr/orx/) extensions and
provides the optional [orsl](https://github.com/openrndr/orsl/) shader helper modules.
The version numbers of these dependencies are specified in your [libs.versions.toml](gradle/libs.versions.toml) file.
Learn more about this file in the [Gradle documentation](https://docs.gradle.org/current/userguide/platforms.html#sub:conventional-dependencies-toml) website.
Newer versions of OPENRNDR and ORX bring useful features and bug fixes. The most recent versions are Newer versions bring useful features and bug fixes. The most recent versions are<br>
<br>![openrndr version](https://maven-badges.herokuapp.com/maven-central/org.openrndr/openrndr-application/badge.svg) for OPENRNDR. ![Maven Central Version](https://img.shields.io/maven-central/v/org.openrndr/openrndr-math-jvm?label=OPENRNDR&color=%23FFC0CB)
<br>![orx version](https://maven-badges.herokuapp.com/maven-central/org.openrndr.extra/orx-parameters-jvm/badge.svg) for ORX. ![Maven Central Version](https://img.shields.io/maven-central/v/org.openrndr.extra/orx-noise-jvm?label=ORX&color=%23FFC0CB)
![Maven Central Version](https://img.shields.io/maven-central/v/org.openrndr.orsl/orsl-shader-generator-jvm?label=ORSL&color=%23FFC0CB).
You can use those version numbers in your toml file. They can look like "0.4.3" or "0.4.3-alpha4". Use the complete string, as in: Switch to the [next-version branch](https://github.com/openrndr/openrndr-template/tree/next-version) or enter these versions manually in your toml file.
They can look like "0.4.3" or "0.4.3-alpha4". Use the complete string, as in:
openrndr = "0.4.3-alpha4" openrndr = "0.4.5-alpha5"
orx = "0.4.3-alpha4" orx = "0.4.5-alpha5"
orsl = "0.4.5-alpha5"
You can add other dependencies needed by your project to your [build.gradle.kts](build.gradle.kts) file, inside the `dependencies { }` block. You can add other dependencies needed by your project to your [build.gradle.kts](build.gradle.kts) file, inside the `dependencies { }` block.
Remember to reload the Gradle configuration after changing any dependencies. ⚠️ Remember to reload the Gradle configuration after changing any dependencies.
## Run other Kotlin programs from the command line
By default `./gradlew run` runs a program called `TemplateProgram.kt` but a different one can be provided as an argument:
To run `src/main/kotlin/myProgram.kt`
./gradlew run -Popenrndr.application=MyProgramKt
To run `src/main/kotlin/foo/bar/myProgram.kt` (assuming `package foo.bar` in myProgram.kt)
./gradlew run -Popenrndr.application=foo.bar.MyProgramKt
## Github Actions ## Github Actions
This repository contains a number of Github Actions under `./github/workflows`. This repository contains various Github Actions under `./github/workflows`:
[build-on-commit.yaml](.github/workflows/build-on-commit.yaml) runs a basic build on every commit, - [build-on-commit.yaml](.github/workflows/build-on-commit.yaml) runs a basic build on every commit,
which can help detect issues in the source code. which can help detect issues in the source code.
[publish-binaries.yaml](.github/workflows/publish-binaries.yaml) publishes binaries for Linux, Mac and Windows - [publish-binaries.yaml](.github/workflows/publish-binaries.yaml) publishes binaries for Linux, Mac and Windows
any time a commit is tagged with a version number like `v1.*`. any time a commit is tagged with a version number like `v1.*`. For example, we can create and push a tag with these git commands:
```
For example, we can create and push a tag with these git commands:
git tag -a v1.0.0 -m "v1.0.0" git tag -a v1.0.0 -m "v1.0.0"
git push origin v1.0.0 git push origin v1.0.0
```
The progress of the running actions can be followed under the Actions tab in GitHub. You can follow the progress of the action under the Actions tab in GitHub. Once complete, the executables will appear under the Releases section.
Once complete, the executables will be found under the Releases section.
## Building libraries
This template can be used to create a library with your classes and extensions and reuse them across projects or share them with other people.
To publish the project as a library, open [build.gradle.kts](build.gradle.kts) and replace the `conventions.distribute-application` plugin with `conventions.publish-library`.
This automatically sets up the `maven-publish` plugin, which adds the `publishToMavenLocal` task.
The plugin also adds a `demo` sourceSet with runtime dependencies set to go. Demos can be placed in `src/demo/kotlin` and started right away.

View File

@@ -1,329 +1,31 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar group = property("project.group") ?: error("project.group not set")
import org.gradle.internal.os.OperatingSystem version = property("project.version") ?: error("project.version not set")
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
group = "org.openrndr.template"
version = "1.0.0"
val applicationMainClass = "TemplateProgramKt"
/** ## additional ORX features to be added to this project */
val orxFeatures = setOf<String>(
// "orx-boofcv",
"orx-camera",
// "orx-chataigne",
"orx-color",
"orx-compositor",
// "orx-compute-graph",
// "orx-compute-graph-nodes",
// "orx-dnk3",
// "orx-easing",
// "orx-expression-evaluator",
// "orx-file-watcher",
"orx-fx",
// "orx-git-archiver",
// "orx-glslify",
// "orx-gradient-descent",
"orx-gui",
// "orx-hash-grid",
"orx-image-fit",
// "orx-integral-image",
// "orx-interval-tree",
// "orx-jumpflood",
// "orx-kdtree",
// "orx-keyframer",
// "orx-kinect-v1",
// "orx-kotlin-parser",
// "orx-marching-squares",
// "orx-mesh-generators",
// "orx-midi",
// "orx-minim",
"orx-no-clear",
"orx-noise",
// "orx-obj-loader",
"orx-olive",
// "orx-osc",
// "orx-palette",
"orx-panel",
// "orx-parameters",
// "orx-poisson-fill",
// "orx-quadtree",
// "orx-rabbit-control",
// "orx-realsense2",
// "orx-runway",
"orx-shade-styles",
// "orx-shader-phrases",
"orx-shapes",
// "orx-syphon",
// "orx-temporal-blur",
// "orx-tensorflow",
// "orx-time-operators",
// "orx-timer",
// "orx-triangulation",
// "orx-turtle",
"orx-video-profiles",
"orx-view-box",
)
/** ## additional ORML features to be added to this project */
val ormlFeatures = setOf<String>(
// "orml-blazepose",
// "orml-dbface",
// "orml-facemesh",
// "orml-image-classifier",
// "orml-psenet",
// "orml-ssd",
// "orml-style-transfer",
// "orml-super-resolution",
// "orml-u2net",
)
/** ## additional OPENRNDR features to be added to this project */
val openrndrFeatures = setOfNotNull(
if (DefaultNativePlatform("current").architecture.name != "arm-v8") "video" else null
)
/** ## configure the type of logging this project uses */
enum class Logging { NONE, SIMPLE, FULL }
val applicationLogging = Logging.FULL
// ------------------------------------------------------------------------------------------------------------------ //
@Suppress("DSL_SCOPE_VIOLATION")
plugins { plugins {
java alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.kotlin.jvm) id("conventions.kotlin-jvm")
alias(libs.plugins.shadow) id("conventions.openrndr-tasks")
alias(libs.plugins.runtime) id("conventions.distribute-application")
alias(libs.plugins.gitarchive.tomarkdown).apply(false)
}
repositories {
mavenCentral()
mavenLocal()
} }
dependencies { dependencies {
implementation(openrndr.application)
implementation(openrndr.draw)
runtimeOnly(openrndr.gl3)
// implementation(libs.jsoup) implementation(openrndr.dialogs)
// implementation(libs.gson) implementation(openrndr.orextensions)
// implementation(libs.csv)
implementation(openrndr.ffmpeg)
implementation(orx.bundles.basic)
implementation(orx.olive)
implementation(libs.kotlinx.coroutines.core) implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.serialization.core)
implementation(libs.kotlinx.serialization.json)
implementation(libs.slf4j.api) implementation(libs.slf4j.api)
implementation(libs.kotlin.logging) implementation(libs.kotlin.logging)
when (applicationLogging) { runtimeOnly(libs.bundles.logging.simple)
Logging.NONE -> {
runtimeOnly(libs.slf4j.nop)
}
Logging.SIMPLE -> {
runtimeOnly(libs.slf4j.simple)
}
Logging.FULL -> {
runtimeOnly(libs.log4j.slf4j2)
runtimeOnly(libs.log4j.core)
runtimeOnly(libs.jackson.databind)
runtimeOnly(libs.jackson.json)
}
}
implementation(kotlin("stdlib-jdk8"))
testImplementation(libs.junit) testImplementation(libs.junit)
} }
// ------------------------------------------------------------------------------------------------------------------ //
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = "11"
}
// ------------------------------------------------------------------------------------------------------------------ //
project.setProperty("mainClassName", applicationMainClass)
application {
if (hasProperty("openrndr.application")) {
mainClass.set("${property("openrndr.application")}")
}
}
tasks {
named<ShadowJar>("shadowJar") {
manifest {
attributes["Main-Class"] = applicationMainClass
attributes["Implementation-Version"] = project.version
}
minimize {
exclude(dependency("org.openrndr:openrndr-gl3:.*"))
exclude(dependency("org.jetbrains.kotlin:kotlin-reflect:.*"))
exclude(dependency("org.slf4j:slf4j-simple:.*"))
exclude(dependency("org.apache.logging.log4j:log4j-slf4j2-impl:.*"))
exclude(dependency("com.fasterxml.jackson.core:jackson-databind:.*"))
exclude(dependency("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:.*"))
}
}
named<org.beryx.runtime.JPackageTask>("jpackage") {
doLast {
val destPath = if(OperatingSystem.current().isMacOsX)
"build/jpackage/openrndr-application.app/Contents/Resources/data"
else
"build/jpackage/openrndr-application/data"
copy {
from("data") {
include("**/*")
}
into(destPath)
}
}
}
}
// ------------------------------------------------------------------------------------------------------------------ //
tasks.register<Zip>("jpackageZip") {
archiveFileName.set("openrndr-application.zip")
from("$buildDir/jpackage") {
include("**/*")
}
}
tasks.findByName("jpackageZip")?.dependsOn("jpackage")
// ------------------------------------------------------------------------------------------------------------------ //
runtime {
jpackage {
imageName = "openrndr-application"
skipInstaller = true
if (OperatingSystem.current().isMacOsX) {
jvmArgs.add("-XstartOnFirstThread")
jvmArgs.add("-Duser.dir=${"$"}APPDIR/../Resources")
}
}
options.set(listOf("--strip-debug", "--compress", "1", "--no-header-files", "--no-man-pages"))
modules.set(listOf("jdk.unsupported", "java.management", "java.desktop"))
}
// ------------------------------------------------------------------------------------------------------------------ //
tasks.register<org.openrndr.extra.gitarchiver.GitArchiveToMarkdown>("gitArchiveToMarkDown") {
historySize.set(20)
}
// ------------------------------------------------------------------------------------------------------------------ //
class Openrndr {
val openrndrVersion = libs.versions.openrndr.get()
val orxVersion = libs.versions.orx.get()
val ormlVersion = libs.versions.orml.get()
// choices are "orx-tensorflow-gpu", "orx-tensorflow"
val orxTensorflowBackend = "orx-tensorflow"
val currArch = DefaultNativePlatform("current").architecture.name
val currOs = OperatingSystem.current()
val os = if (project.hasProperty("targetPlatform")) {
val supportedPlatforms = setOf("windows", "macos", "linux-x64", "linux-arm64")
val platform: String = project.property("targetPlatform") as String
if (platform !in supportedPlatforms) {
throw IllegalArgumentException("target platform not supported: $platform")
} else {
platform
}
} else when {
currOs.isWindows -> "windows"
currOs.isMacOsX -> when (currArch) {
"aarch64", "arm-v8" -> "macos-arm64"
else -> "macos"
}
currOs.isLinux -> when (currArch) {
"x86-64" -> "linux-x64"
"aarch64" -> "linux-arm64"
else -> throw IllegalArgumentException("architecture not supported: $currArch")
}
else -> throw IllegalArgumentException("os not supported: ${currOs.name}")
}
fun orx(module: String) = "org.openrndr.extra:$module:$orxVersion"
fun orml(module: String) = "org.openrndr.orml:$module:$ormlVersion"
fun openrndr(module: String) = "org.openrndr:openrndr-$module:$openrndrVersion"
fun openrndrNatives(module: String) = "org.openrndr:openrndr-$module-natives-$os:$openrndrVersion"
fun orxNatives(module: String) = "org.openrndr.extra:$module-natives-$os:$orxVersion"
init {
dependencies {
runtimeOnly(openrndr("gl3"))
runtimeOnly(openrndrNatives("gl3"))
implementation(openrndr("openal"))
runtimeOnly(openrndrNatives("openal"))
implementation(openrndr("application"))
implementation(openrndr("svg"))
implementation(openrndr("animatable"))
implementation(openrndr("extensions"))
implementation(openrndr("filter"))
implementation(openrndr("dialogs"))
if ("video" in openrndrFeatures) {
implementation(openrndr("ffmpeg"))
runtimeOnly(openrndrNatives("ffmpeg"))
}
for (feature in orxFeatures) {
implementation(orx(feature))
}
for (feature in ormlFeatures) {
implementation(orml(feature))
}
if ("orx-tensorflow" in orxFeatures) runtimeOnly("org.openrndr.extra:$orxTensorflowBackend-natives-$os:$orxVersion")
if ("orx-kinect-v1" in orxFeatures) runtimeOnly(orxNatives("orx-kinect-v1"))
if ("orx-olive" in orxFeatures) implementation(libs.kotlin.script.runtime)
}
}
}
val openrndr = Openrndr()
if (properties["openrndr.tasks"] == "true") {
task("create executable jar for $applicationMainClass") {
group = " \uD83E\uDD8C OPENRNDR"
dependsOn("shadowJar")
}
task("run $applicationMainClass") {
group = " \uD83E\uDD8C OPENRNDR"
dependsOn("run")
}
task("create standalone executable for $applicationMainClass") {
group = " \uD83E\uDD8C OPENRNDR"
dependsOn("jpackageZip")
}
task("add IDE file scopes") {
group = " \uD83E\uDD8C OPENRNDR"
val scopesFolder = File("${project.projectDir}/.idea/scopes")
scopesFolder.mkdirs()
val files = listOf(
"Code" to "file:*.kt||file:*.frag||file:*.vert||file:*.glsl",
"Text" to "file:*.txt||file:*.md||file:*.xml||file:*.json",
"Gradle" to "file[*buildSrc*]:*/||file:*gradle.*||file:*.gradle||file:*/gradle-wrapper.properties||file:*.toml",
"Images" to "file:*.png||file:*.jpg||file:*.dds||file:*.exr"
)
files.forEach { (name, pattern) ->
val file = File(scopesFolder, "__$name.xml")
if (!file.exists()) {
file.writeText(
"""
<component name="DependencyValidationManager">
<scope name=" ★ $name" pattern="$pattern" />
</component>
""".trimIndent()
)
}
}
}
}

12
buildSrc/build.gradle.kts Normal file
View File

@@ -0,0 +1,12 @@
plugins {
`kotlin-dsl`
}
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
dependencies {
implementation(libs.findLibrary("shadow-gradle-plugin").get())
implementation(libs.findLibrary("runtime-gradle-plugin").get())
implementation(libs.findLibrary("kotlin-gradle-plugin").get())
implementation(libs.findLibrary("xversions-gradle-plugin").get())
}

View File

@@ -0,0 +1,39 @@
rootProject.name = "buildSrc"
dependencyResolutionManagement {
repositories {
mavenCentral()
gradlePluginPortal()
mavenLocal {
content {
includeGroup("org.openrndr")
includeGroup("org.openrndr.extra")
}
}
}
versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml"))
}
// We use a regex to get the openrndr/orx versions from the primary catalog as there is no public Gradle API to parse catalogs.
val orRegEx = Regex("^openrndr[ ]*=[ ]*(?:\\{[ ]*require[ ]*=[ ]*)?\"(.*)\"[ ]*(?:\\})?", RegexOption.MULTILINE)
val orxRegEx = Regex("^orx[ ]*=[ ]*(?:\\{[ ]*require[ ]*=[ ]*)?\"(.*)\"[ ]*(?:\\})?", RegexOption.MULTILINE)
val openrndrVersion = orRegEx.find(File(rootDir,"../gradle/libs.versions.toml").readText())?.groupValues?.get(1) ?: error("can't find openrndr version")
val orxVersion = orxRegEx.find(File(rootDir,"../gradle/libs.versions.toml").readText())?.groupValues?.get(1) ?: error("can't find orx version")
create("orx") {
from("org.openrndr.extra:orx-module-catalog:$orxVersion")
}
create("openrndr") {
from("org.openrndr:openrndr-module-catalog:$openrndrVersion")
}
}
}
pluginManagement {
repositories {
gradlePluginPortal()
}
}

View File

@@ -0,0 +1,73 @@
package conventions
import org.gradle.internal.os.OperatingSystem
import kotlin.collections.set
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
plugins {
id("com.gradleup.shadow")
id("org.beryx.runtime")
}
val applicationMainClass: String by properties
application {
mainClass = if (hasProperty("openrndr.application"))
"${property("openrndr.application")}"
else
applicationMainClass
}
tasks {
named<ShadowJar>("shadowJar") {
manifest {
attributes["Main-Class"] = applicationMainClass
attributes["Implementation-Version"] = project.version
}
minimize {
exclude(dependency("org.openrndr:openrndr-gl3:.*"))
exclude(dependency("org.jetbrains.kotlin:kotlin-reflect:.*"))
exclude(dependency("org.slf4j:slf4j-simple:.*"))
exclude(dependency("org.apache.logging.log4j:log4j-slf4j2-impl:.*"))
exclude(dependency("com.fasterxml.jackson.core:jackson-databind:.*"))
exclude(dependency("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:.*"))
exclude(dependency("org.bytedeco:.*"))
}
}
}
tasks {
named<org.beryx.runtime.JPackageTask>("jpackage") {
doLast {
val destPath = if (OperatingSystem.current().isMacOsX)
"build/jpackage/openrndr-application.app/Contents/Resources/data"
else
"build/jpackage/openrndr-application/data"
copy {
from("data") { include("**/*") }
into(destPath)
}
}
}
register<Zip>("jpackageZip") {
archiveFileName = "openrndr-application.zip"
from("${layout.buildDirectory.get()}/jpackage") {
include("**/*")
}
dependsOn("jpackage")
}
}
runtime {
jpackage {
imageName = "openrndr-application"
skipInstaller = true
if (OperatingSystem.current().isMacOsX) {
jvmArgs.add("-XstartOnFirstThread")
jvmArgs.add("-Duser.dir=${"$"}APPDIR/../Resources")
}
}
options = listOf("--strip-debug", "--compress", "1", "--no-header-files", "--no-man-pages")
modules = listOf("jdk.unsupported", "java.management", "java.desktop")
}

View File

@@ -0,0 +1,71 @@
package conventions
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
plugins {
java
kotlin("jvm")
id("com.github.ben-manes.versions")
}
repositories {
mavenCentral()
mavenLocal()
}
java {
targetCompatibility = JavaVersion.valueOf("VERSION_${libs.findVersion("jvmTarget").get().displayName}")
sourceCompatibility = JavaVersion.valueOf("VERSION_${libs.findVersion("jvmTarget").get().displayName}")
}
kotlin {
compilerOptions {
apiVersion.set(KotlinVersion.valueOf("KOTLIN_${libs.findVersion("kotlinApi").get().displayName.replace(".", "_")}"))
languageVersion.set(KotlinVersion.valueOf("KOTLIN_${libs.findVersion("kotlinLanguage").get().displayName.replace(".", "_")}"))
jvmTarget.set(JvmTarget.valueOf("JVM_${libs.findVersion("jvmTarget").get().displayName}"))
}
}
fun arch(arch: String = System.getProperty("os.arch")): String {
return when (arch) {
"x86-64", "x86_64", "amd64" -> "x86-64"
"arm64", "aarch64" -> "aarch64"
else -> error("unsupported arch $arch")
}
}
fun Project.addHostMachineAttributesToRuntimeConfigurations() {
val currentOperatingSystemName: String = DefaultNativePlatform.getCurrentOperatingSystem().toFamilyName()
val currentArchitectureName: String = arch()
configurations.matching {
it.name.endsWith("runtimeClasspath", ignoreCase = true)
}.configureEach {
attributes {
attribute(OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE, objects.named(currentOperatingSystemName))
attribute(MachineArchitecture.ARCHITECTURE_ATTRIBUTE, objects.named(currentArchitectureName))
}
}
}
addHostMachineAttributesToRuntimeConfigurations()
tasks {
dependencyUpdates {
gradleReleaseChannel = "current"
val nonStableKeywords = listOf("alpha", "beta", "rc")
fun isNonStable(version: String) = nonStableKeywords.any {
version.lowercase().contains(it)
}
rejectVersionIf {
isNonStable(candidate.version) && !isNonStable(currentVersion)
}
}
}

View File

@@ -0,0 +1,42 @@
package conventions
val applicationMainClass by properties
tasks.register("create executable jar for $applicationMainClass") {
group = " \uD83E\uDD8C OPENRNDR"
dependsOn("shadowJar")
}
tasks.register("run $applicationMainClass") {
group = " \uD83E\uDD8C OPENRNDR"
dependsOn("run")
}
tasks.register("create standalone executable for $applicationMainClass") {
group = " \uD83E\uDD8C OPENRNDR"
dependsOn("jpackageZip")
}
tasks.register("add IDE file scopes") {
group = " \uD83E\uDD8C OPENRNDR"
val scopesFolder = File("${project.projectDir}/.idea/scopes")
scopesFolder.mkdirs()
val files = listOf(
"Code" to "file:*.kt||file:*.frag||file:*.vert||file:*.glsl",
"Text" to "file:*.txt||file:*.md||file:*.xml||file:*.json",
"Gradle" to "file[*buildSrc*]:*/||file:*gradle.*||file:*.gradle||file:*/gradle-wrapper.properties||file:*.toml",
"Media" to "file:*.png||file:*.jpg||file:*.dds||file:*.exr||file:*.mp3||file:*.wav||file:*.mp4||file:*.mov||file:*.svg"
)
files.forEach { (name, pattern) ->
val file = File(scopesFolder, "__$name.xml")
if (!file.exists()) {
file.writeText(
"""
<component name="DependencyValidationManager">
<scope name=" ★ $name" pattern="$pattern" />
</component>
""".trimIndent()
)
}
}
}

View File

@@ -0,0 +1,37 @@
package conventions
import org.gradle.kotlin.dsl.java
import org.gradle.kotlin.dsl.kotlin
plugins {
java
kotlin("jvm")
`maven-publish`
}
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
val openrndr = extensions.getByType<VersionCatalogsExtension>().named("openrndr")
val demo = sourceSets.create("demo")
val main = sourceSets.getByName("main")
demo.compileClasspath += main.compileClasspath
demo.runtimeClasspath += main.runtimeClasspath
demo.compileClasspath += main.output
demo.runtimeClasspath += main.output
dependencies {
"demoRuntimeOnly"(openrndr.findLibrary("gl3").get())
}
publishing {
publications {
create<MavenPublication>("maven") {
from(components["java"])
groupId = property("project.group")?.toString() ?: error("project.group not set")
artifactId = property("project.name")?.toString() ?: error("project.name not set")
description = property("project.name")?.toString() ?: error("project.name not set")
version = property("project.version")?.toString() ?: error("project.version not set")
}
}
}

View File

@@ -1,4 +1,10 @@
project.name=openrndr-template
project.group=org.openrndr
project.version=1.0.0
applicationMainClass=TemplateProgramKt
openrndr.tasks=true openrndr.tasks=true
kotlin.code.style=official kotlin.code.style=official
org.gradle.unsafe.configuration-cache=false #org.gradle.configuration-cache=true
#org.gradle.configuration-cache.parallel=true
#org.gradle.configuration-cache.problems=warn

View File

@@ -1,12 +1,26 @@
[versions] [versions]
kotlin = "1.8.21" jvmTarget = "17"
openrndr = "0.4.3" kotlin = "2.2.10"
orx = "0.4.3" kotlinApi = "2.2"
kotlinLanguage = "2.2"
openrndr = "0.5.0-SNAPSHOT"
orx = "0.5.0-SNAPSHOT"
orsl = "0.4.5-alpha5"
orml = "0.4.1" orml = "0.4.1"
slf4j = "2.0.7" slf4j = "2.0.17"
log4j = "2.20.0" log4j = "2.23.1"
jackson = "2.14.2" jackson = "2.17.2"
junit = "4.13.2"
kotlinxCoroutines = "1.10.2"
kotlinxSerialization = "1.9.0"
kotlinLogging = "7.0.13"
kotlinCsvJvm = "1.9.3"
jsoup = "1.17.1"
shadow = "9.1.0"
runtime = "1.13.1"
versions = "0.52.0"
[libraries] [libraries]
kotlin-script-runtime = { group = "org.jetbrains.kotlin", name = "kotlin-script-runtime", version.ref = "kotlin" } kotlin-script-runtime = { group = "org.jetbrains.kotlin", name = "kotlin-script-runtime", version.ref = "kotlin" }
@@ -19,15 +33,27 @@ log4j-core = { group = "org.apache.logging.log4j", name = "log4j-core", version.
jackson-databind = { group = "com.fasterxml.jackson.core", name = "jackson-databind", version.ref = "jackson" } jackson-databind = { group = "com.fasterxml.jackson.core", name = "jackson-databind", version.ref = "jackson" }
jackson-json = { group = "com.fasterxml.jackson.dataformat", name = "jackson-dataformat-yaml", version.ref = "jackson" } jackson-json = { group = "com.fasterxml.jackson.dataformat", name = "jackson-dataformat-yaml", version.ref = "jackson" }
kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version = "1.6.4" } shadow-gradle-plugin = { group = "com.gradleup.shadow", name = "com.gradleup.shadow.gradle.plugin", version.ref = "shadow" }
kotlin-logging = { group = "io.github.microutils", name = "kotlin-logging", version = "3.0.5" } runtime-gradle-plugin = { group = "org.beryx.runtime", name = "org.beryx.runtime.gradle.plugin", version.ref = "runtime" }
junit = { group = "junit", name = "junit", version = "4.13.2" } kotlin-gradle-plugin = { group = "org.jetbrains.kotlin.jvm", name = "org.jetbrains.kotlin.jvm.gradle.plugin", version.ref = "kotlin" }
jsoup = { group = "org.jsoup", name = "jsoup", version = "1.16.1" } xversions-gradle-plugin = { group = "com.github.ben-manes.versions", name = "com.github.ben-manes.versions.gradle.plugin", version.ref = "versions" }
gson = { group = "com.google.code.gson", name = "gson", version = "2.10.1" } kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" }
csv = { group = "com.github.doyaaaaaken", name = "kotlin-csv-jvm", version = "1.9.0" } kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerialization" }
kotlinx-serialization-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-core", version.ref = "kotlinxSerialization" }
kotlin-logging = { group = "io.github.oshai", name = "kotlin-logging", version.ref = "kotlinLogging" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
jsoup = { group = "org.jsoup", name = "jsoup", version.ref = "jsoup" }
csv = { group = "com.github.doyaaaaaken", name = "kotlin-csv-jvm", version.ref = "kotlinCsvJvm" }
[plugins] [plugins]
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
shadow = { id = "com.github.johnrengelman.shadow", version = "7.1.2" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
runtime = { id = "org.beryx.runtime", version = "1.13.0" } shadow = { id = "com.gradleup.shadow", version.ref = "shadow" }
runtime = { id = "org.beryx.runtime", version.ref = "runtime" }
gitarchive-tomarkdown = { id = "org.openrndr.extra.gitarchiver.tomarkdown", version.ref = "orx" } gitarchive-tomarkdown = { id = "org.openrndr.extra.gitarchiver.tomarkdown", version.ref = "orx" }
versions = { id = "com.github.ben-manes.versions", version.ref = "versions" }
[bundles]
logging-none = ["slf4j-nop"]
logging-simple = ["slf4j-simple"]
loggin-full = ["log4j-slf4j2", "log4j-core", "jackson-databind", "jackson-json"]

Binary file not shown.

View File

@@ -1,6 +1,7 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000 networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

30
gradlew vendored
View File

@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
# SPDX-License-Identifier: Apache-2.0
#
############################################################################## ##############################################################################
# #
@@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop. # Darwin, MinGW, and NonStop.
# #
# (3) This script is generated from the Groovy template # (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project. # within the Gradle project.
# #
# You can find Gradle at https://github.com/gradle/gradle/. # You can find Gradle at https://github.com/gradle/gradle/.
@@ -83,7 +85,8 @@ done
# This is normally unused # This is normally unused
# shellcheck disable=SC2034 # shellcheck disable=SC2034
APP_BASE_NAME=${0##*/} APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum MAX_FD=maximum
@@ -111,7 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;; NONSTOP* ) nonstop=true ;;
esac esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM. # Determine the Java command to use to start the JVM.
@@ -130,18 +133,21 @@ location of your Java installation."
fi fi
else else
JAVACMD=java JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the Please set the JAVA_HOME variable in your environment to match the
location of your Java installation." location of your Java installation."
fi fi
fi
# Increase the maximum file descriptors if we can. # Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #( case $MAX_FD in #(
max*) max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045 # shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) || MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit" warn "Could not query maximum file descriptor limit"
esac esac
@@ -149,7 +155,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #( '' | soft) :;; #(
*) *)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045 # shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" || ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD" warn "Could not set maximum file descriptor limit to $MAX_FD"
esac esac
@@ -198,16 +204,16 @@ fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command; # Collect all arguments for the java command:
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# shell script including quotes and variable substitutions, so put them in # and any embedded shellness will be escaped.
# double quotes to make sure that they get re-expanded; and # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# * put everything else in single quotes, so that it's not re-expanded. # treated as '${Hostname}' itself on the command line.
set -- \ set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \ "-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \ -classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@" "$@"
# Stop when "xargs" is not available. # Stop when "xargs" is not available.

26
gradlew.bat vendored
View File

@@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and @rem See the License for the specific language governing permissions and
@rem limitations under the License. @rem limitations under the License.
@rem @rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off @if "%DEBUG%"=="" @echo off
@rem ########################################################################## @rem ##########################################################################
@@ -43,11 +45,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 %JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute if %ERRORLEVEL% equ 0 goto execute
echo. echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. echo location of your Java installation. 1>&2
goto fail goto fail
@@ -57,22 +59,22 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute if exist "%JAVA_EXE%" goto execute
echo. echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. echo location of your Java installation. 1>&2
goto fail goto fail
:execute :execute
@rem Setup the command line @rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar set CLASSPATH=
@rem Execute Gradle @rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end :end
@rem End local scope for the variables with windows NT shell @rem End local scope for the variables with windows NT shell

View File

@@ -1,4 +1,4 @@
rootProject.name = "openrndr-template" rootProject.name = extra["project.name"]?.toString() ?: error("project.name not set")
pluginManagement { pluginManagement {
repositories { repositories {
@@ -6,3 +6,30 @@ pluginManagement {
mavenLocal() mavenLocal()
} }
} }
dependencyResolutionManagement {
repositories {
mavenCentral()
mavenLocal {
content {
includeGroup("org.openrndr")
includeGroup("org.openrndr.extra")
}
}
}
versionCatalogs {
// We use a regex to get the openrndr/orx versions from the primary catalog as there is no public Gradle API to parse catalogs.
val orRegEx = Regex("^openrndr[ ]*=[ ]*(?:\\{[ ]*require[ ]*=[ ]*)?\"(.*)\"[ ]*(?:\\})?", RegexOption.MULTILINE)
val orxRegEx = Regex("^orx[ ]*=[ ]*(?:\\{[ ]*require[ ]*=[ ]*)?\"(.*)\"[ ]*(?:\\})?", RegexOption.MULTILINE)
val openrndrVersion = orRegEx.find(File(rootDir,"gradle/libs.versions.toml").readText())?.groupValues?.get(1) ?: error("can't find openrndr version")
val orxVersion = orxRegEx.find(File(rootDir,"gradle/libs.versions.toml").readText())?.groupValues?.get(1) ?: error("can't find orx version")
create("orx") {
from("org.openrndr.extra:orx-module-catalog:$orxVersion")
}
create("openrndr") {
from("org.openrndr:openrndr-module-catalog:$openrndrVersion")
}
}
}

View File

@@ -2,7 +2,7 @@ import org.openrndr.application
import org.openrndr.color.ColorRGBa import org.openrndr.color.ColorRGBa
import org.openrndr.draw.loadFont import org.openrndr.draw.loadFont
import org.openrndr.draw.loadImage import org.openrndr.draw.loadImage
import org.openrndr.draw.tint import org.openrndr.extra.color.colormatrix.tint
import kotlin.math.cos import kotlin.math.cos
import kotlin.math.sin import kotlin.math.sin