From 04cf74e969a9aba2df3ded5a6a79ad10452218b1 Mon Sep 17 00:00:00 2001 From: Edwin Jakobs Date: Fri, 21 Feb 2020 09:25:29 +0100 Subject: [PATCH] [orx-syphon] Undo refactoring, update Syphon/JSyphon native libraries --- .../src/main/kotlin/SyphonClient.kt | 4 +- .../src/main/kotlin/SyphonServer.kt | 4 +- .../src/main/kotlin/jsyphon/JSyphonClient.kt | 2 +- .../src/main/kotlin/jsyphon/JSyphonImage.kt | 2 +- .../src/main/kotlin/jsyphon/JSyphonNative.kt | 2 +- .../src/main/kotlin/jsyphon/JSyphonServer.kt | 2 +- .../main/kotlin/jsyphon/JSyphonServerList.kt | 2 +- .../src/main/kotlin/jsyphon/Util.kt | 2 +- .../src/main/resources/jsyphon-natives/Syphon | Bin 183824 -> 184672 bytes .../jsyphon-natives/libJSyphon.jnilib | Bin 73264 -> 74112 bytes .../src/test/kotlin/ClientExample.kt | 3 +- .../kotlin/ClientExampleSpecificServer.kt | 50 ++++++------ .../src/test/kotlin/ServerExample.kt | 3 +- .../ServerExampleAlternateRenderTarget.kt | 72 +++++++++--------- 14 files changed, 75 insertions(+), 73 deletions(-) mode change 100755 => 100644 orx-jvm/orx-syphon/src/main/resources/jsyphon-natives/Syphon mode change 100755 => 100644 orx-jvm/orx-syphon/src/main/resources/jsyphon-natives/libJSyphon.jnilib diff --git a/orx-jvm/orx-syphon/src/main/kotlin/SyphonClient.kt b/orx-jvm/orx-syphon/src/main/kotlin/SyphonClient.kt index 5bb23729..50556af8 100644 --- a/orx-jvm/orx-syphon/src/main/kotlin/SyphonClient.kt +++ b/orx-jvm/orx-syphon/src/main/kotlin/SyphonClient.kt @@ -1,11 +1,11 @@ -package org.openrndr.extra.syphon +package jsyphon import org.openrndr.Extension import org.openrndr.Program import org.openrndr.draw.* -import org.openrndr.extra.syphon.jsyphon.JSyphonClient + import org.openrndr.internal.gl3.ColorBufferGL3 import org.openrndr.internal.gl3.TextureStorageModeGL diff --git a/orx-jvm/orx-syphon/src/main/kotlin/SyphonServer.kt b/orx-jvm/orx-syphon/src/main/kotlin/SyphonServer.kt index dc41df83..5902614f 100644 --- a/orx-jvm/orx-syphon/src/main/kotlin/SyphonServer.kt +++ b/orx-jvm/orx-syphon/src/main/kotlin/SyphonServer.kt @@ -1,4 +1,4 @@ -package org.openrndr.extra.syphon +package jsyphon @@ -7,7 +7,7 @@ import org.openrndr.Program import org.openrndr.draw.Drawer import org.openrndr.draw.RenderTarget import org.openrndr.draw.renderTarget -import org.openrndr.extra.syphon.jsyphon.JSyphonServer + import org.openrndr.internal.gl3.ColorBufferGL3 diff --git a/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonClient.kt b/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonClient.kt index 5cca11aa..1b57e8d9 100644 --- a/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonClient.kt +++ b/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonClient.kt @@ -1,4 +1,4 @@ -package org.openrndr.extra.syphon.jsyphon + package jsyphon import java.io.File import java.util.* diff --git a/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonImage.kt b/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonImage.kt index feddc76d..d994a30f 100644 --- a/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonImage.kt +++ b/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonImage.kt @@ -1,4 +1,4 @@ -package org.openrndr.extra.syphon.jsyphon +package jsyphon class JSyphonImage(private val name: Int, private val width: Int, private val height: Int) { fun textureName(): Int { diff --git a/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonNative.kt b/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonNative.kt index e6134407..7902db60 100644 --- a/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonNative.kt +++ b/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonNative.kt @@ -1,4 +1,4 @@ -package org.openrndr.extra.syphon.jsyphon +package jsyphon import org.openrndr.platform.Platform import org.openrndr.platform.PlatformType diff --git a/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonServer.kt b/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonServer.kt index 3f967e29..65a2f7e6 100644 --- a/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonServer.kt +++ b/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonServer.kt @@ -1,4 +1,4 @@ -package org.openrndr.extra.syphon.jsyphon +package jsyphon /* JSyphonServer.java - Copyright 2011 -Skye Book (sbook) & Anton Marini (vade) diff --git a/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonServerList.kt b/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonServerList.kt index bef9df31..0ef8d24c 100644 --- a/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonServerList.kt +++ b/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/JSyphonServerList.kt @@ -1,4 +1,4 @@ -package org.openrndr.extra.syphon.jsyphon +package jsyphon import java.io.File import java.util.ArrayList import java.util.HashMap diff --git a/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/Util.kt b/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/Util.kt index f59061bb..69b33d48 100644 --- a/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/Util.kt +++ b/orx-jvm/orx-syphon/src/main/kotlin/jsyphon/Util.kt @@ -1,4 +1,4 @@ -package org.openrndr.extra.syphon.jsyphon +package jsyphon class NSSize (var x: Int, var y: Int) class NSPoint(var x: Int, var y: Int) diff --git a/orx-jvm/orx-syphon/src/main/resources/jsyphon-natives/Syphon b/orx-jvm/orx-syphon/src/main/resources/jsyphon-natives/Syphon old mode 100755 new mode 100644 index 7cf6833fb067fa092adc0f37bcac7e3a31b2a38f..9b3c2b66ae93181472a85a791bef69ef57e022f6 GIT binary patch delta 10341 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 diff --git a/orx-jvm/orx-syphon/src/main/resources/jsyphon-natives/libJSyphon.jnilib b/orx-jvm/orx-syphon/src/main/resources/jsyphon-natives/libJSyphon.jnilib old mode 100755 new mode 100644 index 062c85fd8d417751790f00377ccce1c47bcc2dca..971fc8e8779d84ef17ef212f31c451a7ded9924b GIT binary patch delta 10354 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 T-ngjs_xvZ$(wiq<|EL52aAH0U delta 400 zcmZoT%(7t*%Z7=Zf)f}Z07@J5ZC=E=iiPQe*XD`;%J?=Pk!jlI#Nxrgz`z1g$DqT& zz`(@7z<7ayL4bjQf$SQVgGTd#kxN(nJ*J}{yDj^ zTT$Vk!-Xc{gFXC5`PR>0)47zR(Y-Wp569786y(|$L5Lu-Yach M@b7`r