File drops
OPENRNDR programs can listen to file drop events. File drop events are generated by a user dragging and releasing one or more file icons onto the program window.
fun main() = application {
program {
window.drop.listen {
println("${it.files.size} files dropped at ${it.position}")
}
}
}
The following program displays PNG, JPG or TIF images dropped onto its window. If several files are dropped at once, it displays the first of them that is an image.
fun main() = application {
program {
// Create a dummy image
var img = drawImage(16, 16) {}
window.drop.listen { dropped ->
val firstImage = dropped.files.firstOrNull {
File(it).extension.lowercase() in listOf("png", "jpg", "tif")
}
if (firstImage != null) {
// Call .destroy() to avoid leaking memory
img.destroy()
// Then load a new image into img
img = loadImage(firstImage)
}
}
extend {
drawer.imageFit(img, drawer.bounds, fitMethod = FitMethod.Contain)
}
}
}
By using drawer.imageFit the image is centered and made to fit the available window size.