Skip to content

Commit 1616270

Browse files
authored
Merge branch 'master' into fix/midiTransceiverFailsOnVeryShortMessages
2 parents 29d122e + df4c6fa commit 1616270

802 files changed

Lines changed: 33861 additions & 9511 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ jobs:
2020
with:
2121
path: ./orx
2222

23-
- name: Validate Gradle wrapper
24-
uses: gradle/actions/wrapper-validation@v3
25-
2623
- name: Checkout OPENRNDR repository
2724
uses: actions/checkout@v4
2825
with:
@@ -40,8 +37,10 @@ jobs:
4037
- uses: actions/setup-java@v4
4138
with:
4239
distribution: temurin
43-
java-version: 17
44-
cache: gradle
40+
java-version: 21
41+
42+
- name: Setup Gradle
43+
uses: gradle/actions/setup-gradle@v4
4544

4645
- name: Build OPENRNDR
4746
working-directory: ./openrndr

.github/workflows/generate-screenshots.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ jobs:
1616
with:
1717
path: ./orx
1818

19-
- name: Validate Gradle wrapper
20-
uses: gradle/actions/wrapper-validation@v3
21-
2219
- name: Checkout OPENRNDR repository
2320
uses: actions/checkout@v4
2421
with:
@@ -37,7 +34,9 @@ jobs:
3734
with:
3835
distribution: temurin
3936
java-version: 21
40-
cache: gradle
37+
38+
- name: Setup Gradle
39+
uses: gradle/actions/setup-gradle@v4
4140

4241
- name: Build OPENRNDR
4342
working-directory: ./openrndr
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: Release API docs
2+
on:
3+
push:
4+
branches: [ master ]
5+
6+
defaults:
7+
run:
8+
working-directory: ./orx
9+
10+
jobs:
11+
release_apidocs:
12+
if: github.repository == 'openrndr/orx'
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Checkout current repository
16+
uses: actions/checkout@v4
17+
with:
18+
path: ./orx
19+
fetch-depth: 0
20+
21+
- name: Checkout OPENRNDR repository
22+
uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 0
25+
repository: openrndr/openrndr
26+
path: ./openrndr
27+
ref: master
28+
29+
- name: Test glxinfo
30+
run: |
31+
sudo apt-get update
32+
sudo apt-get install -y mesa-utils xvfb
33+
xvfb-run glxinfo
34+
35+
- uses: actions/setup-java@v4
36+
with:
37+
distribution: temurin
38+
java-version: 21
39+
40+
- name: Setup Gradle
41+
uses: gradle/actions/setup-gradle@v4
42+
43+
- name: Build OPENRNDR
44+
working-directory: ./openrndr
45+
run: ./gradlew publishToMavenLocal snapshot
46+
47+
- name: Build apidocs
48+
run: ./gradlew :dokkaGenerate -Dorg.gradle.jvmargs=-Xmx1536M
49+
50+
- name: Publish to gh-pages
51+
run: |
52+
git worktree add --detach docs-temp
53+
cd docs-temp
54+
git checkout --orphan gh-pages
55+
git reset HEAD -- .
56+
git clean -df
57+
mv ../build/dokka/html/* .
58+
cp ../dokka/styles/* styles/
59+
echo orx.openrndr.org > CNAME
60+
git status
61+
git config --global user.email "actions@openrndr.org"
62+
git config --global user.name "OPENRNDR Actions"
63+
git add .
64+
git commit -m "Add automatically generated API docs"
65+
git push origin gh-pages --force

.github/workflows/release-candidate-to-maven-central.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
echo "${{secrets.SIGNING_SECRET_KEY_RING_FILE}}" > ~/.gradle/secring.gpg.b64
2020
base64 -d ~/.gradle/secring.gpg.b64 > ~/.gradle/secring.gpg
2121
- name: Publish
22-
run: ./gradlew publishToSonatype -Prelease.useLastTag=true -Psigning.keyId=${{secrets.SIGNING_KEY_ID}} -Psigning.password=openrndr -Psigning.secretKeyRingFile=$(echo ~/.gradle/secring.gpg)
22+
run: ./gradlew publishAggregationToCentralPortal -Prelease.useLastTag=true -Psigning.keyId=${{secrets.SIGNING_KEY_ID}} -Psigning.password=openrndr -Psigning.secretKeyRingFile=$(echo ~/.gradle/secring.gpg)
2323
env:
2424
OSSRH_USERNAME: ${{secrets.OSSRH_USERNAME}}
2525
OSSRH_PASSWORD: ${{secrets.OSSRH_PASSWORD}}

.github/workflows/release-to-maven-central.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
echo "${{secrets.SIGNING_SECRET_KEY_RING_FILE}}" > ~/.gradle/secring.gpg.b64
2222
base64 -d ~/.gradle/secring.gpg.b64 > ~/.gradle/secring.gpg
2323
- name: Publish
24-
run: ./gradlew publishToSonatype -Prelease.useLastTag=true -Psigning.keyId=${{secrets.SIGNING_KEY_ID}} -Psigning.password=openrndr -Psigning.secretKeyRingFile=$(echo ~/.gradle/secring.gpg)
24+
run: ./gradlew publishAggregationToCentralPortal -Prelease.useLastTag=true -Psigning.keyId=${{secrets.SIGNING_KEY_ID}} -Psigning.password=openrndr -Psigning.secretKeyRingFile=$(echo ~/.gradle/secring.gpg)
2525
env:
2626
OSSRH_USERNAME: ${{secrets.OSSRH_USERNAME}}
2727
OSSRH_PASSWORD: ${{secrets.OSSRH_PASSWORD}}

CNAME

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
orx.openrndr.org

CONTRIBUTING.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ orx-magic/
5757
```
5858
Note that inside `src` only `commonMain` is required.
5959

60+
6061
## ORX README.md
6162

6263
Assuming you are creating an orx called `magic`, the readme should be formatted as follows:
@@ -88,6 +89,7 @@ Main content describing the usage of orx-magic goes here
8889
This is specially useful for orx'es that produce graphical output, but less so for orx'es that interface
8990
with hardware (like `orx-midi`).
9091

92+
9193
## ORX build.gradle.kts
9294

9395
ORX `build.gradle.kts` files declare their dependencies and most follow the same structure.
@@ -107,6 +109,36 @@ See an [example](https://github.com/openrndr/orx/blob/master/orx-jvm/orx-dnk3/bu
107109

108110
The multiplatform build files may have blocks like `commonMain`, `commonTest`, `jvmTest`, `jvmDemo`, etc. to specify the dependencies for each case. See an [example](https://github.com/openrndr/orx/blob/master/orx-color/build.gradle.kts).
109111

112+
113+
## I want to contribute to the documentation
114+
115+
There are various places where you can contribute without writing code. It will be greatly
116+
appreciated by others trying to learn about OPENRNDR.
117+
118+
### Guide
119+
120+
The [guide](https://guide.openrndr.org/) is the first contact with OPENRNDR for most users.
121+
[Learn how to work on the guide](https://github.com/openrndr/openrndr-guide/blob/dev/contributing.md).
122+
123+
### ORX API page
124+
125+
The [ORX API page](https://orx.openrndr.org/) needs some love too. The content is automatically
126+
extracted from comments written in ORX's source code. It goes like this:
127+
128+
1. Fork the [ORX repo](https://github.com/openrndr/orx/), then clone your fork (so you
129+
have a copy on your computer) and get familiar with OPENRNDR and ORX.
130+
2. Find an undocumented section at https://orx.openrndr.org you want to explain.
131+
3. Find the corresponding Kotlin file in your cloned repo and add missing comments. Read about
132+
the [suggested style](https://developers.google.com/style).
133+
4. Generate the API website locally to verify your changes look correct by running the following
134+
command: `./gradlew dokkaGenerate -Dorg.gradle.jvmargs=-Xmx1536M`. This will create the
135+
html documentation under `build/dokka/html/`.
136+
5. Open the `build/dokka/html/index.html` in your web browser. If something looks off
137+
tweak your comments. Note: the sidebar will be empty unless viewed through a web server.
138+
You can launch one by running `python3 -m http.server --bind 127.0.0.1` in the html folder.
139+
7. To continue improving the API go back to step 3, otherwise send a Pull Requests from your fork.
140+
141+
110142
## Demos
111143

112144
ORX'es often include a `jvmDemo` folder. This folder should contain small programs demonstrating

README.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
# ORX (OPENRNDR EXTRA)
22

3-
[![Download](https://maven-badges.herokuapp.com/maven-central/org.openrndr.extra/orx-parameters-jvm/badge.svg)](https://mvnrepository.com/artifact/org.openrndr.extra)
3+
[![ORX maven badge](https://img.shields.io/maven-central/v/org.openrndr.extra/orx-noise-jvm?style=flat&color=%23FFC0CB
4+
)](https://mvnrepository.com/artifact/org.openrndr.extra)
45

56
A growing library of assorted data structures, algorithms and utilities to
6-
complement [OPENRNDR](https://github.com/openrndr/openrndr).
7+
complement [OPENRNDR](https://github.com/openrndr/openrndr).
8+
Multiplatform, unless they deal with hardware or depend on binary libraries. Those are JVM-only.
9+
10+
## Usage
11+
12+
To make use of these extensions clone the [OPENRNDR template](https://github.com/openrndr/openrndr-template), uncomment the ones you need in its [build.gradle.kts](https://github.com/openrndr/openrndr-template/blob/master/build.gradle.kts) file, and reload Gradle. Cloning this repo is optional but useful to run the demos in each ORX folder, to study the source code, and to contribute to existing or new ORX'es.
713

814
<!-- __orxListBegin__ -->
915

@@ -15,8 +21,6 @@ complement [OPENRNDR](https://github.com/openrndr/openrndr).
1521
| [`orx-color`](orx-color/) | Color spaces, palettes, histograms, named colors. |
1622
| [`orx-composition`](orx-composition/) | Shape composition library |
1723
| [`orx-compositor`](orx-compositor/) | Toolkit to make composite (layered) images using blend modes and filters. |
18-
| [`orx-compute-graph`](orx-compute-graph/) | A graph for computation. |
19-
| [`orx-compute-graph-nodes`](orx-compute-graph-nodes/) | A collection of nodes that can be used with `orx-compute-graph`. |
2024
| [`orx-delegate-magic`](orx-delegate-magic/) | Collection of magical property delegators. For tracking variable change or interpolate towards the value of a variable. |
2125
| [`orx-easing`](orx-easing/) | Easing functions for smooth animation or non-linear interpolation. |
2226
| [`orx-envelopes`](orx-envelopes/) | ADSR (Attack, Decay, Sustain, Release) envelopes and tools. |
@@ -33,10 +37,12 @@ complement [OPENRNDR](https://github.com/openrndr/openrndr).
3337
| [`orx-jumpflood`](orx-jumpflood/) | Calculates distance or direction fields from an image. GPU accelerated, 2D. Results are provided as an image. |
3438
| [`orx-kdtree`](orx-kdtree/) | Fast search of points closest to the queried point in a data set. 2D, 3D and 4D. |
3539
| [`orx-marching-squares`](orx-marching-squares/) | Tools for extracting contours from functions |
40+
| [`orx-math`](orx-math/) | Mathematical utilities <!-- __demos__ --> ## Demos ### linearrange/DemoLinearRange02 |
3641
| [`orx-mesh-generators`](orx-mesh-generators/) | 3D-mesh generating functions and DSL. |
42+
| [`orx-mesh-noise`](orx-mesh-noise/) | Generate random samples on the surface of a mesh <!-- __demos__ --> ## Demos ### DemoMeshNoise01 |
3743
| [`orx-no-clear`](orx-no-clear/) | Provides the classical "draw-without-clearing-the-screen" functionality. |
3844
| [`orx-noise`](orx-noise/) | Randomness for every type of person: Perlin, uniform, value, simplex, fractal and many other types of noise. |
39-
| [`orx-obj-loader`](orx-obj-loader/) | Simple loader for Wavefront .obj 3D mesh files. |
45+
| [`orx-obj-loader`](orx-obj-loader/) | Simple loader and saver for Wavefront .obj 3D mesh files. |
4046
| [`orx-palette`](orx-palette/) | Provides hundreds of color palettes. |
4147
| [`orx-parameters`](orx-parameters/) | Provides annotations and tools for turning Kotlin properties into introspectable parameters. Used by [`orx-gui`](../orx-jvm/orx-gui/README.md) to automatically generate user interfaces. |
4248
| [`orx-property-watchers`](orx-property-watchers/) | Tools for setting up property watcher based pipelines |
@@ -46,6 +52,7 @@ complement [OPENRNDR](https://github.com/openrndr/openrndr).
4652
| [`orx-shapes`](orx-shapes/) | Collection of 2D shape generators and modifiers. |
4753
| [`orx-svg`](orx-svg/) | SVG reader and writer library. |
4854
| [`orx-temporal-blur`](orx-temporal-blur/) | Post-processing temporal-blur video effect. CPU intense, therefore not intended for use with the `ScreenRecorder` extension or other real-time uses. |
55+
| [`orx-text-on-contour`](orx-text-on-contour/) | Writing texts on contours. |
4956
| [`orx-text-writer`](orx-text-writer/) | Writing texts with layouts |
5057
| [`orx-time-operators`](orx-time-operators/) | A collection of time-sensitive functions aimed at controlling raw data over-time, such as Envelope and LFO. |
5158
| [`orx-timer`](orx-timer/) | Simple timer functionality providing `repeat`, to run code with a given interval and `timeOut`, to run code once after a given delay. |
@@ -73,8 +80,8 @@ complement [OPENRNDR](https://github.com/openrndr/openrndr).
7380
| [`orx-osc`](orx-jvm/orx-osc/) | Open Sound Control makes it possible to send and receive messages from other OSC enabled programs in the same or a different computer. Used to create multi-application or multi-device software. |
7481
| [`orx-panel`](orx-jvm/orx-panel/) | The OPENRNDR UI toolkit. Provides buttons, sliders, text, a color picker and much more. HTML/CSS-like. |
7582
| [`orx-poisson-fill`](orx-jvm/orx-poisson-fill/) | Post processing effect that fills transparent parts of the image interpolating the edge pixel colors. GPU-based. |
83+
| [`orx-processing`](orx-jvm/orx-processing/) | orx-processing is a module designed to facilitate seamless type conversions between Processing's types and OPENRNDR's types. It provides utilities and methods that allow developers to integrate the two graphics frameworks effectively by bridging the gap between their respective data structures. |
7684
| [`orx-rabbit-control`](orx-jvm/orx-rabbit-control/) | Creates a web-based remote UI to control your OPENRNDR program from a mobile device or a different computer. Alternative to `orx-gui`. |
77-
| [`orx-runway`](orx-jvm/orx-runway/) | Interfaces with the RunwayML machine learning library that provides features like motion capture, image synthesis, object recognition, style transfer and more. More info at [runwayml.com](https://runwayml.com/). |
7885
| [`orx-syphon`](orx-jvm/orx-syphon/) | Send frames to- and from OPENRNDR to other applications in real time using _Syphon_ for Mac. |
7986
| [`orx-video-profiles`](orx-jvm/orx-video-profiles/) | GIF, H265, PNG, Prores, TIFF and Webp `VideoWriterProfile`s for `ScreenRecorder` and `VideoWriter`. |
8087
<!-- __orxListEnd__ -->

build.gradle

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
plugins {
22
alias(libs.plugins.nebula.release)
3-
alias(libs.plugins.gradle.nexus.publish)
3+
//alias(libs.plugins.gradle.nexus.publish)
4+
id("com.gradleup.nmcp.aggregation").version("1.1.0")
5+
46
id("org.openrndr.extra.convention.dokka")
57
}
68

79
repositories {
810
mavenCentral()
911
}
1012

11-
task buildMainReadme {
13+
tasks.register('buildMainReadme') {
1214
doFirst {
1315
def subProjects = project.subprojects
1416
//.findAll { !it.name.contains("kinect-common") && !it.name.contains
@@ -37,7 +39,7 @@ task buildMainReadme {
3739
// Skip the hash character from the headline, then start
3840
// on the next line and continue until the next empty line.
3941
// Don't fall into Windows line breaks.
40-
def descriptionRx = ~/(?s)\#.*?\n(.+?)\n\r?\n/
42+
def descriptionRx = ~/(?s)#.*?\n(.+?)\n\r?\n/
4143
// Note: the readme needs an empty line after the description
4244

4345
def orxMultiplatform = []
@@ -89,17 +91,28 @@ task buildMainReadme {
8991
}
9092
}
9193
group = "org.openrndr.extra"
94+
nmcpAggregation {
95+
centralPortal {
96+
username.set(findProperty("ossrhUsername") ?: System.getenv("OSSRH_USERNAME"))
97+
password.set(findProperty("ossrhPassword") ?: System.getenv("OSSRH_PASSWORD"))
9298

93-
nexusPublishing {
94-
repositories {
95-
sonatype {
96-
username.set(findProperty("ossrhUsername") ?: System.getenv("OSSRH_USERNAME"))
97-
password.set(findProperty("ossrhPassword") ?: System.getenv("OSSRH_PASSWORD"))
98-
nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/"))
99-
snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots"))
100-
}
99+
// publish manually from the portal
100+
publishingType = "USER_MANAGED"
101101
}
102+
103+
// Publish all projects that apply the 'maven-publish' plugin
104+
publishAllProjectsProbablyBreakingProjectIsolation()
102105
}
106+
//nexusPublishing {
107+
// repositories {
108+
// sonatype {
109+
// username.set(findProperty("ossrhUsername") ?: System.getenv("OSSRH_USERNAME"))
110+
// password.set(findProperty("ossrhPassword") ?: System.getenv("OSSRH_PASSWORD"))
111+
// nexusUrl.set(uri("https://ossrh-staging-api.central.sonatype.com/service/local/"))
112+
// snapshotRepositoryUrl.set(uri("https://central.sonatype.com/repository/maven-snapshots/"))
113+
// }
114+
// }
115+
//}
103116

104117
subprojects {
105118
// Equivalent Kotlin is: tasks.register<DependencyReportTask>("dependenciesAll") { ...
@@ -109,6 +122,20 @@ subprojects {
109122
}
110123
}
111124

125+
dependencies {
126+
subprojects.findAll {
127+
it.name.startsWith("orx-")
128+
}.each { subproject ->
129+
dokka(project(subproject.path))
130+
}
131+
}
132+
class SleepTask extends DefaultTask {
133+
@TaskAction
134+
void action() {
135+
sleep(60 * 5 * 1000)
136+
}
137+
}
138+
tasks.register("sleep", SleepTask)
112139
gradle.buildFinished {
113140
println("\n")
114141
println("orx = \"${version}\"")

buildSrc/build.gradle.kts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,9 @@ dependencies {
1818
"preloadImplementation"(libs.openrndr.application)
1919
"preloadImplementation"(libs.openrndr.extensions)
2020
}
21-
21+
kotlin {
22+
compilerOptions {
23+
freeCompilerArgs.add("-Xskip-metadata-version-check")
24+
}
25+
}
2226
tasks.getByName("compileKotlin").dependsOn("compilePreloadKotlin")

0 commit comments

Comments
 (0)