jsyphon
This commit is contained in:
committed by
edwin
parent
bb7439db54
commit
31b79685eb
62
orx-syphon/src/main/kotlin/jsyphon/JSyphonClient.kt
Normal file
62
orx-syphon/src/main/kotlin/jsyphon/JSyphonClient.kt
Normal file
@@ -0,0 +1,62 @@
|
||||
package jsyphon
|
||||
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
class JSyphonClient // public API
|
||||
{
|
||||
private var ptr: Long = 0
|
||||
|
||||
companion object {
|
||||
init {
|
||||
System.load(File("orx-syphon/src/main/kotlin/jsyphon/libJSyphon.jnilib").absolutePath)
|
||||
}
|
||||
}
|
||||
|
||||
fun init() {
|
||||
ptr = init(null)
|
||||
}
|
||||
|
||||
fun setApplicationName(appName: String?) {
|
||||
setApplicationName(ptr, appName)
|
||||
}
|
||||
|
||||
fun setServerName(serverName: String?) {
|
||||
setServerName(ptr, serverName)
|
||||
}
|
||||
|
||||
val isValid: Boolean
|
||||
get() = isValid(ptr)
|
||||
|
||||
fun newFrameImageForContext(): JSyphonImage {
|
||||
val dict = newFrameDataForContext()
|
||||
val name = dict["name"] as Long?
|
||||
val width = dict["width"] as Double?
|
||||
val height = dict["height"] as Double?
|
||||
return JSyphonImage(name!!.toInt(), width!!.toInt(), height!!.toInt())
|
||||
}
|
||||
|
||||
// Native method declarations
|
||||
external fun init(options: HashMap<String?, Any?>?): Long
|
||||
external fun setApplicationName(ptr: Long, appName: String?)
|
||||
external fun setServerName(ptr: Long, serverName: String?)
|
||||
external fun isValid(ptr: Long): Boolean
|
||||
|
||||
@JvmOverloads
|
||||
external fun serverDescription(ptr: Long = this.ptr): HashMap<String?, String?>?
|
||||
|
||||
@JvmOverloads
|
||||
external fun hasNewFrame(ptr: Long = this.ptr): Boolean
|
||||
|
||||
@JvmOverloads
|
||||
external fun newFrameDataForContext(ptr: Long = this.ptr): HashMap<String, Any>
|
||||
|
||||
@JvmOverloads
|
||||
external fun stop(ptr: Long = this.ptr) // public JSyphonImage newFrameImageForContext() {
|
||||
// HashMap<String, Object> dict = newFrameDataForContext();
|
||||
// Long name = (Long)dict.get("name");
|
||||
// Double width = (Double)dict.get("width");
|
||||
// Double height = (Double)dict.get("height");
|
||||
// return new JSyphonImage(name.intValue(), width.intValue(), height.intValue());
|
||||
// }
|
||||
}
|
||||
15
orx-syphon/src/main/kotlin/jsyphon/JSyphonImage.kt
Normal file
15
orx-syphon/src/main/kotlin/jsyphon/JSyphonImage.kt
Normal file
@@ -0,0 +1,15 @@
|
||||
package jsyphon
|
||||
|
||||
class JSyphonImage(private val name: Int, private val width: Int, private val height: Int) {
|
||||
fun textureName(): Int {
|
||||
return name
|
||||
}
|
||||
|
||||
fun textureWidth(): Int {
|
||||
return width
|
||||
}
|
||||
|
||||
fun textureHeight(): Int {
|
||||
return height
|
||||
}
|
||||
}
|
||||
150
orx-syphon/src/main/kotlin/jsyphon/JSyphonServer.kt
Normal file
150
orx-syphon/src/main/kotlin/jsyphon/JSyphonServer.kt
Normal file
@@ -0,0 +1,150 @@
|
||||
package jsyphon
|
||||
|
||||
import java.io.File
|
||||
|
||||
/*
|
||||
JSyphonServer.java -
|
||||
Copyright 2011 -Skye Book (sbook) & Anton Marini (vade)
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
class JSyphonServer // Public API
|
||||
{
|
||||
private var ptr: Long = 0
|
||||
|
||||
companion object {
|
||||
init {
|
||||
System.load(File("orx-syphon/src/main/kotlin/jsyphon/libJSyphon.jnilib").absolutePath)
|
||||
}
|
||||
}
|
||||
|
||||
fun initWithName(name: String) {
|
||||
ptr = initWithName(name, null)
|
||||
}
|
||||
|
||||
val name: String
|
||||
get() = getName(ptr)
|
||||
|
||||
fun hasClients(): Boolean = hasClients(ptr)
|
||||
|
||||
fun publishFrameTexture(
|
||||
texID: Int,
|
||||
texTarget: Int,
|
||||
posX: Int,
|
||||
posY: Int,
|
||||
width: Int,
|
||||
height: Int,
|
||||
sizeX: Int,
|
||||
sizeY: Int,
|
||||
isFlipped: Boolean
|
||||
) {
|
||||
publishFrameTexture(ptr, texID, texTarget, posX, posY, width, height, sizeX, sizeY, isFlipped)
|
||||
}
|
||||
|
||||
fun publishFrameTexture(
|
||||
texID: Int,
|
||||
texTarget: Int,
|
||||
rect: NSRect,
|
||||
size: NSSize,
|
||||
isFlipped: Boolean
|
||||
) {
|
||||
publishFrameTexture(
|
||||
ptr,
|
||||
texID,
|
||||
texTarget,
|
||||
rect.origin.x,
|
||||
rect.origin.y,
|
||||
rect.size.x,
|
||||
rect.size.y,
|
||||
size.x,
|
||||
size.y,
|
||||
isFlipped
|
||||
)
|
||||
}
|
||||
|
||||
fun bindToDrawFrameOfSize(size: NSSize): Boolean =
|
||||
bindToDrawFrameOfSize(ptr, size.x, size.y)
|
||||
|
||||
fun bindToDrawFrameOfSize(sizeX: Int, sizeY: Int): Boolean =
|
||||
bindToDrawFrameOfSize(ptr, sizeX, sizeY)
|
||||
|
||||
fun unbindAndPublish() {
|
||||
unbindAndPublish(ptr)
|
||||
}
|
||||
|
||||
fun stop() {
|
||||
stop(ptr)
|
||||
}
|
||||
|
||||
// Native method declarations
|
||||
private external fun initWithName(
|
||||
name: String,
|
||||
options: HashMap<String, Any>?
|
||||
): Long
|
||||
|
||||
private external fun getName(ptr: Long): String
|
||||
private external fun hasClients(ptr: Long): Boolean
|
||||
private external fun publishFrameTexture(
|
||||
ptr: Long,
|
||||
texID: Int,
|
||||
texTarget: Int,
|
||||
posX: Int,
|
||||
posY: Int,
|
||||
width: Int,
|
||||
height: Int,
|
||||
sizeX: Int,
|
||||
sizeY: Int,
|
||||
isFlipped: Boolean
|
||||
)
|
||||
|
||||
private fun publishFrameTexture(
|
||||
ptr: Long,
|
||||
texID: Int,
|
||||
texTarget: Int,
|
||||
rect: NSRect,
|
||||
size: NSSize,
|
||||
isFlipped: Boolean
|
||||
) {
|
||||
publishFrameTexture(
|
||||
ptr,
|
||||
texID,
|
||||
texTarget,
|
||||
rect.origin.x,
|
||||
rect.origin.y,
|
||||
rect.size.x,
|
||||
rect.size.y,
|
||||
size.x,
|
||||
size.y,
|
||||
isFlipped
|
||||
)
|
||||
}
|
||||
|
||||
private fun bindToDrawFrameOfSize(ptr: Long, size: NSSize): Boolean {
|
||||
return bindToDrawFrameOfSize(ptr, size.x, size.y)
|
||||
}
|
||||
|
||||
private external fun bindToDrawFrameOfSize(ptr: Long, sizeX: Int, sizeY: Int): Boolean
|
||||
private external fun unbindAndPublish(ptr: Long)
|
||||
private external fun stop(ptr: Long)
|
||||
}
|
||||
14
orx-syphon/src/main/kotlin/jsyphon/JSyphonServerList.kt
Normal file
14
orx-syphon/src/main/kotlin/jsyphon/JSyphonServerList.kt
Normal file
@@ -0,0 +1,14 @@
|
||||
package jsyphon
|
||||
|
||||
import java.io.File
|
||||
import java.util.ArrayList
|
||||
import java.util.HashMap
|
||||
|
||||
object JSyphonServerList {
|
||||
val list: ArrayList<HashMap<String?, String?>?>?
|
||||
external get
|
||||
|
||||
init {
|
||||
System.load(File("orx-syphon/src/main/kotlin/jsyphon/libJSyphon.jnilib").absolutePath)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user