Skip to content

Commit 806fd6f

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 560cea9 + 86ee602 commit 806fd6f

File tree

3 files changed

+28
-10
lines changed

3 files changed

+28
-10
lines changed

src/main/kotlin/uno/glfw/GlfwWindow.kt

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import org.lwjgl.opengl.GLUtil
1919
import org.lwjgl.system.Callback
2020
import org.lwjgl.system.MemoryUtil.*
2121
import org.lwjgl.vulkan.VkInstance
22+
import uno.kotlin.first
23+
import uno.kotlin.getOrfirst
2224
import java.nio.ByteBuffer
2325
import java.nio.FloatBuffer
2426

@@ -255,10 +257,12 @@ open class GlfwWindow(var handle: GlfwWindowHandle) {
255257

256258
// ------------------- Callbacks -------------------
257259

260+
val defaultKey = "0 - default"
258261

259262
var charCallback: CharCallbackT? = null
263+
get() = charCallbacks.getOrfirst(defaultKey)
260264
set(value) {
261-
charCallbacks["0 - default"] = value
265+
charCallbacks[defaultKey] = value
262266
field = value
263267
}
264268

@@ -267,8 +271,9 @@ open class GlfwWindow(var handle: GlfwWindowHandle) {
267271

268272

269273
var cursorPosCallback: CursorPosCallbackT? = null
274+
get() = cursorPosCallbacks.getOrfirst(defaultKey)
270275
set(value) {
271-
cursorPosCallbacks["0 - default"] = value
276+
cursorPosCallbacks[defaultKey] = value
272277
field = value
273278
}
274279

@@ -277,53 +282,59 @@ open class GlfwWindow(var handle: GlfwWindowHandle) {
277282

278283

279284
var framebufferSizeCallback: FramebufferSizeCallbackT? = null
285+
get() = framebufferSizeCallbacks.getOrfirst(defaultKey)
280286
set(value) {
281-
framebufferSizeCallbacks["0 - default"] = value
287+
framebufferSizeCallbacks[defaultKey] = value
282288
field = value
283289
}
284290
val framebufferSizeCallbacks = sortedMapOf<String, FramebufferSizeCallbackT>()
285291
val nFramebufferSizeCallback = GLFWFramebufferSizeCallbackI { _, width, height -> framebufferSizeCallbacks.values.forEach { it(Vec2i(width, height)) } }
286292

287293

288294
var keyCallback: KeyCallbackT? = null
295+
get() = keyCallbacks.getOrfirst(defaultKey)
289296
set(value) {
290-
keyCallbacks["0 - default"] = value
297+
keyCallbacks[defaultKey] = value
291298
field = value
292299
}
293300
val keyCallbacks = sortedMapOf<String, KeyCallbackT>()
294301
val nKeyCallback = GLFWKeyCallbackI { _, key, scanCode, action, mods -> keyCallbacks.values.forEach { it(key, scanCode, action, mods) } }
295302

296303

297304
var mouseButtonCallback: MouseButtonCallbackT? = null
305+
get() = mouseButtonCallbacks.getOrfirst(defaultKey)
298306
set(value) {
299-
mouseButtonCallbacks["0 - default"] = value
307+
mouseButtonCallbacks[defaultKey] = value
300308
field = value
301309
}
302310
val mouseButtonCallbacks = sortedMapOf<String, MouseButtonCallbackT>()
303311
val nMouseButtonCallback = GLFWMouseButtonCallbackI { _, button, action, mods -> mouseButtonCallbacks.values.forEach { it(button, action, mods) } }
304312

305313

306314
var scrollCallback: ScrollCallbackT? = null
315+
get() = scrollCallbacks.getOrfirst(defaultKey)
307316
set(value) {
308-
scrollCallbacks["0 - default"] = value
317+
scrollCallbacks[defaultKey] = value
309318
field = value
310319
}
311320
val scrollCallbacks = sortedMapOf<String, ScrollCallbackT>()
312321
val nScrollCallback = GLFWScrollCallbackI { _, xOffset, yOffset -> scrollCallbacks.values.forEach { it(Vec2d(xOffset, yOffset)) } }
313322

314323

315324
var windowCloseCallback: WindowCloseCallbackT? = null
325+
get() = windowCloseCallbacks.getOrfirst(defaultKey)
316326
set(value) {
317-
windowCloseCallbacks["0 - default"] = value
327+
windowCloseCallbacks[defaultKey] = value
318328
field = value
319329
}
320330
val windowCloseCallbacks = sortedMapOf<String, WindowCloseCallbackT>()
321331
val nWindowCloseCallback = GLFWWindowCloseCallbackI { windowCloseCallbacks.values.forEach { it() } }
322332

323333

324334
var windowContentScaleCallback: WindowContentScaleCallbackT? = null
335+
get() = windowContentScaleCallbacks.getOrfirst(defaultKey)
325336
set(value) {
326-
windowContentScaleCallbacks["0 - default"] = value
337+
windowContentScaleCallbacks[defaultKey] = value
327338
field = value
328339
}
329340
val windowContentScaleCallbacks = sortedMapOf<String, WindowContentScaleCallbackT>()

src/main/kotlin/uno/glfw/glfw.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import org.lwjgl.system.MemoryUtil.*
1414
import org.lwjgl.system.Platform
1515
import org.lwjgl.vulkan.VkInstance
1616
import uno.glfw.windowHint.Profile
17+
import uno.kotlin.parseInt
1718
import vkk.VK_CHECK_RESULT
1819
import vkk.VkSurfaceKHR
1920
import vkk.adr
@@ -38,7 +39,9 @@ object glfw {
3839
init(installDefaultErrorCallback)
3940
windowHint {
4041
context.version = version
41-
windowHint.profile = profile
42+
val v = version[0].parseInt() * 10 + version[1].parseInt()
43+
if(v >= 32) // The concept of a core profile does not exist prior to OpenGL 3.2
44+
windowHint.profile = profile
4245
}
4346
}
4447

src/main/kotlin/uno/kotlin/util.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package uno.kotlin
33
import java.awt.event.KeyEvent
44
import java.io.File
55
import java.lang.Appendable
6+
import java.util.*
67

78
/**
89
* Created by GBarbieri on 30.03.2017.
@@ -54,4 +55,7 @@ infix operator fun <T>StringBuilder.plusAssign(element: T) {
5455
append(element)
5556
}
5657

57-
fun <T>treeSetOf() = java.util.TreeSet<T>()
58+
fun <T>treeSetOf() = java.util.TreeSet<T>()
59+
60+
fun <K, V>SortedMap<K, V>.getOrfirst(key: K): V? = get(key) ?: first
61+
val <K, V>SortedMap<K, V>.first: V? get() = get(firstKey())

0 commit comments

Comments
 (0)