Skip to content

Commit 3b4c901

Browse files
committed
up
1 parent ee0991e commit 3b4c901

File tree

2 files changed

+156
-1
lines changed

2 files changed

+156
-1
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ ext{
1616
kotlin = 'org.jetbrains.kotlin:kotlin'
1717
kotlin_version = '1.3.11'
1818
kotlintest_version = '3.1.11'
19-
gln_version = '8082ce6286faeb842813c86af4b46adc430c12dd'
19+
gln_version = 'b63b9fda85cda153b1c470fe291c2a0114cea06d'
2020
vkk_version = 'a0d037b48e'
2121
lwjgl_version = "3.2.1"
2222
lwjgl_natives = current() == WINDOWS ? "windows" : current() == LINUX ? "linux" : "macos"

src/main/kotlin/uno/awt/test.kt

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
package uno.awt
2+
3+
import gln.GL_COLOR_BUFFER_BIT
4+
import org.lwjgl.opengl.GL30C
5+
import java.awt.*
6+
import java.awt.event.KeyAdapter
7+
import java.awt.event.KeyEvent
8+
import javax.swing.*
9+
import java.awt.event.WindowAdapter
10+
import java.awt.event.WindowEvent
11+
import javax.swing.JPanel
12+
import kotlin.system.exitProcess
13+
import javax.swing.RepaintManager
14+
15+
16+
17+
18+
lateinit var test: Test
19+
20+
fun main() {
21+
test = Test()
22+
}
23+
24+
class Test : JFrame() {
25+
26+
lateinit var borderPanel: BorderPanel
27+
lateinit var centerPanel: CenterPanel
28+
var viewer: Viewer
29+
30+
init {
31+
JFrame.setDefaultLookAndFeelDecorated(false)
32+
isUndecorated = false
33+
34+
val rm = RepaintManager.currentManager(this)
35+
val b = rm.isDoubleBufferingEnabled()
36+
rm.setDoubleBufferingEnabled(false)
37+
38+
// Set Look & Feel
39+
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
40+
41+
initComponents()
42+
43+
addWindowListener(object : WindowAdapter() {
44+
override fun windowClosing(event: WindowEvent) = println("windowClosing")
45+
})
46+
47+
JPopupMenu.setDefaultLightWeightPopupEnabled(false)
48+
49+
viewer = Viewer().apply {
50+
isVisible = true
51+
size = Dimension(500,500)
52+
}
53+
centerPanel.add(viewer, BorderLayout.CENTER)
54+
55+
size = Dimension(500, 500)
56+
location = Point(100, 50)
57+
isVisible = true
58+
59+
60+
}
61+
62+
fun makeScreenShot(){
63+
viewer.renderImmediatly()
64+
System.err.println("1")
65+
viewer.renderImmediatly()
66+
System.err.println("2")
67+
viewer.renderImmediatly()
68+
System.err.println("3")
69+
70+
}
71+
72+
fun initComponents() {
73+
74+
borderPanel = BorderPanel().apply { size = Dimension(50, 50) }
75+
centerPanel = CenterPanel().apply {
76+
size = Dimension(50, 50)
77+
}
78+
79+
defaultCloseOperation = WindowConstants.DISPOSE_ON_CLOSE
80+
81+
centerPanel.layout = BorderLayout()
82+
borderPanel.add(centerPanel, BorderLayout.CENTER)
83+
84+
contentPane.add(borderPanel, BorderLayout.CENTER)
85+
86+
pack()
87+
88+
borderPanel.isVisible = true
89+
centerPanel.isVisible = true
90+
}
91+
92+
override fun paint(g: Graphics) {
93+
super.paint(g)
94+
println("[Test] paint")
95+
}
96+
}
97+
98+
class CenterPanel : JPanel() {
99+
override fun paint(g: Graphics) {
100+
super.paint(g)
101+
test.viewer.paint(g)
102+
println("[CenterPanel] paint")
103+
}
104+
}
105+
106+
class BorderPanel : JPanel() {
107+
override fun paint(g: Graphics) {
108+
super.paint(g)
109+
println("[BorderPanel] paint")
110+
}
111+
}
112+
113+
class Viewer : LwjglCanvas() {
114+
var count = 0;
115+
var halloCount = 0;
116+
init {
117+
animated = false
118+
focusTraversalKeysEnabled = false
119+
val rm = RepaintManager.currentManager(this)
120+
val b = rm.isDoubleBufferingEnabled()
121+
rm.setDoubleBufferingEnabled(false)
122+
123+
addKeyListener(object : KeyAdapter() {
124+
override fun keyPressed(e: KeyEvent) {
125+
println("keyPressed")
126+
if (e.keyCode == KeyEvent.VK_F10) {
127+
(test.centerPanel as JComponent).paintImmediately(0, 0, 500, 500)
128+
} else if (e.keyCode == KeyEvent.VK_F11){
129+
130+
test.makeScreenShot()
131+
132+
} else if (e.keyCode == KeyEvent.VK_ESCAPE)
133+
exitProcess(0)
134+
}
135+
})
136+
}
137+
138+
fun renderImmediatly(){
139+
val g = test.viewer.graphics;
140+
if(g != null) {
141+
halloCount++
142+
test.viewer.paint(g)
143+
144+
//g.clearRect(0,0,500,500)
145+
//g.drawString(" HALLO!"+ halloCount, 350, 250);
146+
g.dispose()
147+
}
148+
}
149+
150+
override fun render() {
151+
val time = System.currentTimeMillis()
152+
GL30C.glClearColor((time % 1000) / 1000f, 0.5f, 0f, 1f)
153+
GL30C.glClear(GL_COLOR_BUFFER_BIT.i)
154+
}
155+
}

0 commit comments

Comments
 (0)