Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
skiko
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liuqiang
skiko
Commits
ce81afca
Unverified
Commit
ce81afca
authored
Dec 02, 2021
by
Nikolay Igotti
Committed by
GitHub
Dec 02, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Simplify JS rendering. (#419)
parent
f0454b49
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
127 additions
and
129 deletions
+127
-129
CanvasRenderer.kt
...o/src/jsMain/kotlin/org/jetbrains/skiko/CanvasRenderer.kt
+11
-13
SkiaLayer.js.kt
skiko/src/jsMain/kotlin/org/jetbrains/skiko/SkiaLayer.js.kt
+1
-115
SkikoKey.js.kt
skiko/src/jsMain/kotlin/org/jetbrains/skiko/SkikoKey.js.kt
+114
-0
SystemTheme.js.kt
...o/src/jsMain/kotlin/org/jetbrains/skiko/SystemTheme.js.kt
+1
-1
No files found.
skiko/src/jsMain/kotlin/org/jetbrains/skiko/
wasm/api/
CanvasRenderer.kt
→
skiko/src/jsMain/kotlin/org/jetbrains/skiko/CanvasRenderer.kt
View file @
ce81afca
package
org.jetbrains.skiko
.wasm.api
package
org.jetbrains.skiko
import
kotlinx.browser.window
import
kotlinx.browser.window
import
org.jetbrains.skia.BackendRenderTarget
import
org.jetbrains.skia.BackendRenderTarget
...
@@ -12,16 +12,6 @@ import org.jetbrains.skiko.wasm.CreateWebGLContext
...
@@ -12,16 +12,6 @@ import org.jetbrains.skiko.wasm.CreateWebGLContext
import
org.jetbrains.skiko.wasm.GL
import
org.jetbrains.skiko.wasm.GL
import
org.w3c.dom.HTMLCanvasElement
import
org.w3c.dom.HTMLCanvasElement
fun
Surface
.
Companion
.
createFromGL
(
context
:
DirectContext
,
width
:
Int
,
height
:
Int
)
=
makeFromBackendRenderTarget
(
context
,
BackendRenderTarget
.
makeGL
(
width
,
height
,
1
,
8
,
0
,
0
x8058
),
SurfaceOrigin
.
BOTTOM_LEFT
,
SurfaceColorFormat
.
RGBA_8888
,
ColorSpace
.
sRGB
)
abstract
class
CanvasRenderer
constructor
(
htmlCanvas
:
HTMLCanvasElement
,
val
width
:
Int
,
val
height
:
Int
)
{
abstract
class
CanvasRenderer
constructor
(
htmlCanvas
:
HTMLCanvasElement
,
val
width
:
Int
,
val
height
:
Int
)
{
constructor
(
canvas
:
HTMLCanvasElement
):
this
(
canvas
,
canvas
.
width
,
canvas
.
height
)
constructor
(
canvas
:
HTMLCanvasElement
):
this
(
canvas
,
canvas
.
width
,
canvas
.
height
)
private
val
contextPointer
=
CreateWebGLContext
(
htmlCanvas
)
private
val
contextPointer
=
CreateWebGLContext
(
htmlCanvas
)
...
@@ -30,13 +20,21 @@ abstract class CanvasRenderer constructor(htmlCanvas: HTMLCanvasElement, val wid
...
@@ -30,13 +20,21 @@ abstract class CanvasRenderer constructor(htmlCanvas: HTMLCanvasElement, val wid
GL
.
makeContextCurrent
(
contextPointer
)
GL
.
makeContextCurrent
(
contextPointer
)
}
}
private
val
context
=
DirectContext
.
makeGL
()
private
val
context
=
DirectContext
.
makeGL
()
private
val
surface
=
Surface
.
createFromGL
(
context
,
width
,
height
)
private
val
surface
=
Surface
.
makeFromBackendRenderTarget
(
context
,
BackendRenderTarget
.
makeGL
(
width
,
height
,
1
,
8
,
0
,
0
x8058
),
SurfaceOrigin
.
BOTTOM_LEFT
,
SurfaceColorFormat
.
RGBA_8888
,
ColorSpace
.
sRGB
)
val
canvas
:
Canvas
val
canvas
:
Canvas
get
()
=
surface
.
canvas
get
()
=
surface
.
canvas
abstract
fun
drawFrame
(
currentTimestamp
:
Double
)
abstract
fun
drawFrame
(
currentTimestamp
:
Double
)
fun
draw
()
{
fun
needRe
draw
()
{
window
.
requestAnimationFrame
{
timestamp
->
window
.
requestAnimationFrame
{
timestamp
->
GL
.
makeContextCurrent
(
contextPointer
)
GL
.
makeContextCurrent
(
contextPointer
)
canvas
.
clear
(-
1
)
canvas
.
clear
(-
1
)
...
...
skiko/src/jsMain/kotlin/org/jetbrains/skiko/SkiaLayer.js.kt
View file @
ce81afca
package
org.jetbrains.skiko
package
org.jetbrains.skiko
import
org.jetbrains.skiko.wasm.api.CanvasRenderer
import
org.w3c.dom.HTMLCanvasElement
import
org.w3c.dom.HTMLCanvasElement
import
org.w3c.dom.events.InputEvent
import
org.w3c.dom.events.InputEvent
import
org.w3c.dom.events.KeyboardEvent
import
org.w3c.dom.events.KeyboardEvent
...
@@ -25,7 +24,7 @@ actual open class SkiaLayer {
...
@@ -25,7 +24,7 @@ actual open class SkiaLayer {
}
}
actual
fun
needRedraw
()
{
actual
fun
needRedraw
()
{
state
?.
draw
()
state
?.
needRe
draw
()
}
}
actual
var
skikoView
:
SkikoView
?
=
null
actual
var
skikoView
:
SkikoView
?
=
null
...
@@ -85,7 +84,6 @@ actual open class SkiaLayer {
...
@@ -85,7 +84,6 @@ actual open class SkiaLayer {
})
})
}
}
}
}
private
var
ticking
=
false
actual
typealias
SkikoGesturePlatformEvent
=
Any
actual
typealias
SkikoGesturePlatformEvent
=
Any
actual
typealias
SkikoPlatformInputEvent
=
InputEvent
actual
typealias
SkikoPlatformInputEvent
=
InputEvent
...
@@ -93,116 +91,4 @@ actual typealias SkikoPlatformKeyboardEvent = KeyboardEvent
...
@@ -93,116 +91,4 @@ actual typealias SkikoPlatformKeyboardEvent = KeyboardEvent
// MouseEvent is base class of PointerEvent
// MouseEvent is base class of PointerEvent
actual
typealias
SkikoPlatformPointerEvent
=
MouseEvent
actual
typealias
SkikoPlatformPointerEvent
=
MouseEvent
actual
enum
class
SkikoKey
(
val
value
:
Int
)
{
KEY_UNKNOWN
(-
1
),
KEY_A
(
65
),
KEY_S
(
83
),
KEY_D
(
68
),
KEY_F
(
70
),
KEY_H
(
72
),
KEY_G
(
71
),
KEY_Z
(
90
),
KEY_X
(
88
),
KEY_C
(
67
),
KEY_V
(
86
),
KEY_B
(
66
),
KEY_Q
(
81
),
KEY_W
(
87
),
KEY_E
(
69
),
KEY_R
(
82
),
KEY_Y
(
89
),
KEY_T
(
54
),
KEY_U
(
85
),
KEY_I
(
73
),
KEY_P
(
80
),
KEY_L
(
76
),
KEY_J
(
74
),
KEY_K
(
75
),
KEY_N
(
78
),
KEY_M
(
77
),
KEY_O
(
79
),
KEY_1
(
49
),
KEY_2
(
50
),
KEY_3
(
51
),
KEY_4
(
52
),
KEY_5
(
53
),
KEY_6
(
54
),
KEY_7
(
55
),
KEY_8
(
56
),
KEY_9
(
57
),
KEY_0
(
48
),
KEY_CLOSE_BRACKET
(
221
),
KEY_OPEN_BRACKET
(
219
),
KEY_QUOTE
(
222
),
KEY_SEMICOLON
(
59
),
KEY_SLASH
(
191
),
KEY_COMMA
(
188
),
KEY_BACKSLASH
(
220
),
KEY_PERIOD
(
190
),
KEY_BACK_QUOTE
(
192
),
KEY_EQUALS
(
61
),
KEY_MINUS
(
173
),
KEY_ENTER
(
13
),
KEY_ESCAPE
(
27
),
KEY_TAB
(
9
),
KEY_BACKSPACE
(
8
),
KEY_SPACE
(
32
),
KEY_CAPSLOCK
(
20
),
KEY_LEFT_META
(
224
),
KEY_LEFT_SHIFT
(
16
),
KEY_LEFT_ALT
(
18
),
KEY_LEFT_CONTROL
(
17
),
KEY_RIGHT_META
(
0
x80000000
.
toInt
()
or
224
),
KEY_RIGHT_SHIFT
(
0
x80000000
.
toInt
()
or
16
),
KEY_RIGHT_ALT
(
225
),
KEY_RIGHT_CONTROL
(
0
x80000000
.
toInt
()
or
17
),
KEY_UP
(
38
),
KEY_DOWN
(
40
),
KEY_LEFT
(
37
),
KEY_RIGHT
(
39
),
KEY_F1
(
112
),
KEY_F2
(
113
),
KEY_F3
(
114
),
KEY_F4
(
115
),
KEY_F5
(
116
),
KEY_F6
(
117
),
KEY_F7
(
118
),
KEY_F8
(
119
),
KEY_F9
(
120
),
KEY_F10
(
121
),
KEY_F11
(
122
),
KEY_F12
(
123
),
KEY_PRINTSCEEN
(
44
),
KEY_SCROLL_LOCK
(
145
),
KEY_PAUSE
(
19
),
KEY_INSERT
(
45
),
KEY_HOME
(
36
),
KEY_PGUP
(
33
),
KEY_DELETE
(
46
),
KEY_END
(
35
),
KEY_PGDOWN
(
34
),
KEY_NUM_LOCK
(
144
),
KEY_NUMPAD_0
(
96
),
KEY_NUMPAD_1
(
97
),
KEY_NUMPAD_2
(
98
),
KEY_NUMPAD_3
(
99
),
KEY_NUMPAD_4
(
100
),
KEY_NUMPAD_5
(
101
),
KEY_NUMPAD_6
(
102
),
KEY_NUMPAD_7
(
103
),
KEY_NUMPAD_8
(
104
),
KEY_NUMPAD_9
(
105
),
KEY_NUMPAD_ENTER
(
14
),
KEY_NUMPAD_ADD
(
107
),
KEY_NUMPAD_SUBTRACT
(
109
),
KEY_NUMPAD_MULTIPLY
(
106
),
KEY_NUMPAD_DIVIDE
(
111
),
KEY_NUMPAD_DECIMAC
(
110
);
companion
object
{
fun
valueOf
(
value
:
Int
):
SkikoKey
{
val
key
=
SkikoKey
.
values
().
firstOrNull
{
it
.
value
==
value
}
return
if
(
key
==
null
)
SkikoKey
.
KEY_UNKNOWN
else
key
}
}
}
skiko/src/jsMain/kotlin/org/jetbrains/skiko/SkikoKey.js.kt
0 → 100644
View file @
ce81afca
package
org.jetbrains.skiko
actual
enum
class
SkikoKey
(
val
value
:
Int
)
{
KEY_UNKNOWN
(-
1
),
KEY_A
(
65
),
KEY_S
(
83
),
KEY_D
(
68
),
KEY_F
(
70
),
KEY_H
(
72
),
KEY_G
(
71
),
KEY_Z
(
90
),
KEY_X
(
88
),
KEY_C
(
67
),
KEY_V
(
86
),
KEY_B
(
66
),
KEY_Q
(
81
),
KEY_W
(
87
),
KEY_E
(
69
),
KEY_R
(
82
),
KEY_Y
(
89
),
KEY_T
(
54
),
KEY_U
(
85
),
KEY_I
(
73
),
KEY_P
(
80
),
KEY_L
(
76
),
KEY_J
(
74
),
KEY_K
(
75
),
KEY_N
(
78
),
KEY_M
(
77
),
KEY_O
(
79
),
KEY_1
(
49
),
KEY_2
(
50
),
KEY_3
(
51
),
KEY_4
(
52
),
KEY_5
(
53
),
KEY_6
(
54
),
KEY_7
(
55
),
KEY_8
(
56
),
KEY_9
(
57
),
KEY_0
(
48
),
KEY_CLOSE_BRACKET
(
221
),
KEY_OPEN_BRACKET
(
219
),
KEY_QUOTE
(
222
),
KEY_SEMICOLON
(
59
),
KEY_SLASH
(
191
),
KEY_COMMA
(
188
),
KEY_BACKSLASH
(
220
),
KEY_PERIOD
(
190
),
KEY_BACK_QUOTE
(
192
),
KEY_EQUALS
(
61
),
KEY_MINUS
(
173
),
KEY_ENTER
(
13
),
KEY_ESCAPE
(
27
),
KEY_TAB
(
9
),
KEY_BACKSPACE
(
8
),
KEY_SPACE
(
32
),
KEY_CAPSLOCK
(
20
),
KEY_LEFT_META
(
224
),
KEY_LEFT_SHIFT
(
16
),
KEY_LEFT_ALT
(
18
),
KEY_LEFT_CONTROL
(
17
),
KEY_RIGHT_META
(
0
x80000000
.
toInt
()
or
224
),
KEY_RIGHT_SHIFT
(
0
x80000000
.
toInt
()
or
16
),
KEY_RIGHT_ALT
(
225
),
KEY_RIGHT_CONTROL
(
0
x80000000
.
toInt
()
or
17
),
KEY_UP
(
38
),
KEY_DOWN
(
40
),
KEY_LEFT
(
37
),
KEY_RIGHT
(
39
),
KEY_F1
(
112
),
KEY_F2
(
113
),
KEY_F3
(
114
),
KEY_F4
(
115
),
KEY_F5
(
116
),
KEY_F6
(
117
),
KEY_F7
(
118
),
KEY_F8
(
119
),
KEY_F9
(
120
),
KEY_F10
(
121
),
KEY_F11
(
122
),
KEY_F12
(
123
),
KEY_PRINTSCEEN
(
44
),
KEY_SCROLL_LOCK
(
145
),
KEY_PAUSE
(
19
),
KEY_INSERT
(
45
),
KEY_HOME
(
36
),
KEY_PGUP
(
33
),
KEY_DELETE
(
46
),
KEY_END
(
35
),
KEY_PGDOWN
(
34
),
KEY_NUM_LOCK
(
144
),
KEY_NUMPAD_0
(
96
),
KEY_NUMPAD_1
(
97
),
KEY_NUMPAD_2
(
98
),
KEY_NUMPAD_3
(
99
),
KEY_NUMPAD_4
(
100
),
KEY_NUMPAD_5
(
101
),
KEY_NUMPAD_6
(
102
),
KEY_NUMPAD_7
(
103
),
KEY_NUMPAD_8
(
104
),
KEY_NUMPAD_9
(
105
),
KEY_NUMPAD_ENTER
(
14
),
KEY_NUMPAD_ADD
(
107
),
KEY_NUMPAD_SUBTRACT
(
109
),
KEY_NUMPAD_MULTIPLY
(
106
),
KEY_NUMPAD_DIVIDE
(
111
),
KEY_NUMPAD_DECIMAC
(
110
);
companion
object
{
fun
valueOf
(
value
:
Int
):
SkikoKey
{
return
values
().
firstOrNull
{
it
.
value
==
value
}
?:
KEY_UNKNOWN
}
}
}
\ No newline at end of file
skiko/src/jsMain/kotlin/org/jetbrains/skiko/SystemTheme.js.kt
View file @
ce81afca
...
@@ -2,4 +2,4 @@ package org.jetbrains.skiko
...
@@ -2,4 +2,4 @@ package org.jetbrains.skiko
val
currentSystemTheme
:
SystemTheme
val
currentSystemTheme
:
SystemTheme
// TODO: getting actual OS system theme
// TODO: getting actual OS system theme
get
()
=
SystemTheme
.
LIGHT
get
()
=
SystemTheme
.
UNKNOWN
\ No newline at end of file
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment