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
2b7826d1
Unverified
Commit
2b7826d1
authored
Sep 09, 2022
by
dima.avdeev
Committed by
GitHub
Sep 09, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix text input in samples (#591)
parent
47c33a3e
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
100 additions
and
19 deletions
+100
-19
App.awt.kt
.../src/awtMain/kotlin/org/jetbrains/skiko/sample/App.awt.kt
+1
-1
AwtClocks.kt
...rc/awtMain/kotlin/org/jetbrains/skiko/sample/AwtClocks.kt
+21
-0
Clocks.kt
...rc/commonMain/kotlin/org/jetbrains/skiko/sample/Clocks.kt
+5
-11
IosClocks.kt
...rc/iosMain/kotlin/org/jetbrains/skiko/sample/IosClocks.kt
+25
-0
getSkikoViewContoller.kt
...otlin/org/jetbrains/skiko/sample/getSkikoViewContoller.kt
+1
-1
App.js.kt
...le/src/jsMain/kotlin/org/jetbrains/skiko/sample/App.js.kt
+2
-4
JsClocks.kt
.../src/jsMain/kotlin/org/jetbrains/skiko/sample/JsClocks.kt
+22
-0
App.macos.kt
.../macosMain/kotlin/org/jetbrains/skiko/sample/App.macos.kt
+1
-1
MacosClocks.kt
...acosMain/kotlin/org/jetbrains/skiko/sample/MacosClocks.kt
+18
-0
SkikoUIView.kt
skiko/src/iosMain/kotlin/org/jetbrains/skiko/SkikoUIView.kt
+4
-1
No files found.
samples/SkiaMultiplatformSample/src/awtMain/kotlin/org/jetbrains/skiko/sample/App.awt.kt
View file @
2b7826d1
...
@@ -7,7 +7,7 @@ import javax.swing.*
...
@@ -7,7 +7,7 @@ import javax.swing.*
fun
main
()
{
fun
main
()
{
val
skiaLayer
=
SkiaLayer
()
val
skiaLayer
=
SkiaLayer
()
skiaLayer
.
addView
(
GenericSkikoView
(
skiaLayer
,
Clocks
(
skiaLayer
)))
skiaLayer
.
addView
(
GenericSkikoView
(
skiaLayer
,
Awt
Clocks
(
skiaLayer
)))
SwingUtilities
.
invokeLater
{
SwingUtilities
.
invokeLater
{
val
window
=
JFrame
(
"Skiko example"
).
apply
{
val
window
=
JFrame
(
"Skiko example"
).
apply
{
defaultCloseOperation
=
WindowConstants
.
EXIT_ON_CLOSE
defaultCloseOperation
=
WindowConstants
.
EXIT_ON_CLOSE
...
...
samples/SkiaMultiplatformSample/src/awtMain/kotlin/org/jetbrains/skiko/sample/AwtClocks.kt
0 → 100644
View file @
2b7826d1
package
org.jetbrains.skiko.sample
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.SkikoInputEvent
class
AwtClocks
(
layer
:
SkiaLayer
)
:
Clocks
(
layer
)
{
override
var
inputText
:
String
=
"Hello, AwtClocks"
override
fun
handleBackspace
()
{
if
(
inputText
.
isNotEmpty
())
{
inputText
=
inputText
.
dropLast
(
1
)
}
}
override
fun
onInputEvent
(
event
:
SkikoInputEvent
)
{
if
(
event
.
input
!=
"\b"
)
{
inputText
+=
event
.
input
}
}
}
\ No newline at end of file
samples/SkiaMultiplatformSample/src/commonMain/kotlin/org/jetbrains/skiko/sample/Clocks.kt
View file @
2b7826d1
...
@@ -10,7 +10,7 @@ import kotlin.math.cos
...
@@ -10,7 +10,7 @@ import kotlin.math.cos
import
kotlin.math.sin
import
kotlin.math.sin
import
kotlin.math.PI
import
kotlin.math.PI
class
Clocks
(
private
val
layer
:
SkiaLayer
):
SkikoView
{
abstract
class
Clocks
(
private
val
layer
:
SkiaLayer
):
SkikoView
{
private
val
cursorManager
=
CursorManager
()
private
val
cursorManager
=
CursorManager
()
private
val
withFps
=
true
private
val
withFps
=
true
private
val
fpsCounter
=
FPSCounter
()
private
val
fpsCounter
=
FPSCounter
()
...
@@ -26,7 +26,9 @@ class Clocks(private val layer: SkiaLayer): SkikoView {
...
@@ -26,7 +26,9 @@ class Clocks(private val layer: SkiaLayer): SkikoView {
private
val
fontCollection
=
FontCollection
()
private
val
fontCollection
=
FontCollection
()
.
setDefaultFontManager
(
FontMgr
.
default
)
.
setDefaultFontManager
(
FontMgr
.
default
)
private
val
style
=
ParagraphStyle
()
private
val
style
=
ParagraphStyle
()
private
var
inputText
=
""
abstract
val
inputText
:
String
abstract
fun
handleBackspace
()
override
fun
onRender
(
canvas
:
Canvas
,
width
:
Int
,
height
:
Int
,
nanoTime
:
Long
)
{
override
fun
onRender
(
canvas
:
Canvas
,
width
:
Int
,
height
:
Int
,
nanoTime
:
Long
)
{
if
(
withFps
)
fpsCounter
.
tick
()
if
(
withFps
)
fpsCounter
.
tick
()
...
@@ -159,12 +161,6 @@ class Clocks(private val layer: SkiaLayer): SkikoView {
...
@@ -159,12 +161,6 @@ class Clocks(private val layer: SkiaLayer): SkikoView {
}
}
}
}
override
fun
onInputEvent
(
event
:
SkikoInputEvent
)
{
if
(
event
.
input
!=
"\b"
)
{
inputText
+=
event
.
input
}
}
override
fun
onKeyboardEvent
(
event
:
SkikoKeyboardEvent
)
{
override
fun
onKeyboardEvent
(
event
:
SkikoKeyboardEvent
)
{
if
(
event
.
kind
==
SkikoKeyboardEventKind
.
DOWN
)
{
if
(
event
.
kind
==
SkikoKeyboardEventKind
.
DOWN
)
{
when
(
event
.
key
)
{
when
(
event
.
key
)
{
...
@@ -200,9 +196,7 @@ class Clocks(private val layer: SkiaLayer): SkikoView {
...
@@ -200,9 +196,7 @@ class Clocks(private val layer: SkiaLayer): SkikoView {
SkikoKey
.
KEY_DOWN
->
yOffset
+=
5.0
SkikoKey
.
KEY_DOWN
->
yOffset
+=
5.0
SkikoKey
.
KEY_SPACE
->
{
reset
()
}
SkikoKey
.
KEY_SPACE
->
{
reset
()
}
SkikoKey
.
KEY_BACKSPACE
->
{
SkikoKey
.
KEY_BACKSPACE
->
{
if
(
inputText
.
isNotEmpty
())
{
handleBackspace
()
inputText
=
inputText
.
dropLast
(
1
)
}
}
}
else
->
{}
else
->
{}
}
}
...
...
samples/SkiaMultiplatformSample/src/iosMain/kotlin/org/jetbrains/skiko/sample/IosClocks.kt
0 → 100644
View file @
2b7826d1
package
org.jetbrains.skiko.sample
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.SkikoUIView
import
org.jetbrains.skiko.SkikoInput
class
IosClocks
(
layer
:
SkiaLayer
)
:
Clocks
(
layer
)
{
override
var
inputText
:
String
=
"Hello, IosClocks"
override
fun
handleBackspace
()
{
if
(
inputText
.
isNotEmpty
())
{
inputText
=
inputText
.
dropLast
(
1
)
}
}
override
val
input
:
SkikoInput
=
object
:
SkikoInput
by
SkikoInput
.
Empty
{
override
fun
insertText
(
text
:
String
)
{
inputText
+=
text
}
override
fun
deleteBackward
()
{
handleBackspace
()
}
}
}
samples/SkiaMultiplatformSample/src/iosMain/kotlin/org/jetbrains/skiko/sample/getSkikoViewContoller.kt
View file @
2b7826d1
...
@@ -6,7 +6,7 @@ import org.jetbrains.skiko.sample.*
...
@@ -6,7 +6,7 @@ import org.jetbrains.skiko.sample.*
import
platform.Foundation.*
import
platform.Foundation.*
import
platform.UIKit.*
import
platform.UIKit.*
fun
makeApp
(
skiaLayer
:
SkiaLayer
)
=
Clocks
(
skiaLayer
)
fun
makeApp
(
skiaLayer
:
SkiaLayer
)
=
Ios
Clocks
(
skiaLayer
)
fun
getSkikoViewContoller
():
UIViewController
=
SkikoViewController
(
fun
getSkikoViewContoller
():
UIViewController
=
SkikoViewController
(
SkikoUIView
(
SkikoUIView
(
...
...
samples/SkiaMultiplatformSample/src/jsMain/kotlin/org/jetbrains/skiko/sample/App.js.kt
View file @
2b7826d1
package
org.jetbrains.skiko.sample
package
org.jetbrains.skiko.sample
import
kotlinx.browser.document
import
kotlinx.browser.document
import
org.jetbrains.skiko.GenericSkikoView
import
org.jetbrains.skiko.*
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.onContentScaleChanged
import
org.jetbrains.skiko.wasm.onWasmReady
import
org.jetbrains.skiko.wasm.onWasmReady
import
org.w3c.dom.HTMLCanvasElement
import
org.w3c.dom.HTMLCanvasElement
...
@@ -11,7 +9,7 @@ fun main() {
...
@@ -11,7 +9,7 @@ fun main() {
onWasmReady
{
onWasmReady
{
val
skiaLayer
=
SkiaLayer
()
val
skiaLayer
=
SkiaLayer
()
onContentScaleChanged
=
{
scale
->
println
(
scale
)
}
onContentScaleChanged
=
{
scale
->
println
(
scale
)
}
val
game
=
Clocks
(
skiaLayer
)
val
game
=
Js
Clocks
(
skiaLayer
)
skiaLayer
.
skikoView
=
GenericSkikoView
(
skiaLayer
,
game
)
skiaLayer
.
skikoView
=
GenericSkikoView
(
skiaLayer
,
game
)
val
canvas
=
document
.
getElementById
(
"SkikoTarget"
)
as
HTMLCanvasElement
val
canvas
=
document
.
getElementById
(
"SkikoTarget"
)
as
HTMLCanvasElement
canvas
.
setAttribute
(
"tabindex"
,
"0"
)
canvas
.
setAttribute
(
"tabindex"
,
"0"
)
...
...
samples/SkiaMultiplatformSample/src/jsMain/kotlin/org/jetbrains/skiko/sample/JsClocks.kt
0 → 100644
View file @
2b7826d1
package
org.jetbrains.skiko.sample
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.SkikoInput
import
org.jetbrains.skiko.SkikoInputEvent
class
JsClocks
(
layer
:
SkiaLayer
)
:
Clocks
(
layer
)
{
override
var
inputText
:
String
=
"Hello, JsClocks"
override
fun
handleBackspace
()
{
if
(
inputText
.
isNotEmpty
())
{
inputText
=
inputText
.
dropLast
(
1
)
}
}
override
val
input
:
SkikoInput
=
object
:
SkikoInput
{
override
fun
onInputEvent
(
event
:
SkikoInputEvent
)
{
inputText
+=
event
.
input
}
}
}
samples/SkiaMultiplatformSample/src/macosMain/kotlin/org/jetbrains/skiko/sample/App.macos.kt
View file @
2b7826d1
...
@@ -7,7 +7,7 @@ import platform.Foundation.NSMakeRect
...
@@ -7,7 +7,7 @@ import platform.Foundation.NSMakeRect
import
platform.Foundation.NSSelectorFromString
import
platform.Foundation.NSSelectorFromString
import
platform.darwin.NSObject
import
platform.darwin.NSObject
fun
makeApp
(
skiaLayer
:
SkiaLayer
)
=
Clocks
(
skiaLayer
)
fun
makeApp
(
skiaLayer
:
SkiaLayer
)
=
Macos
Clocks
(
skiaLayer
)
fun
main
()
{
fun
main
()
{
val
app
=
NSApplication
.
sharedApplication
()
val
app
=
NSApplication
.
sharedApplication
()
...
...
samples/SkiaMultiplatformSample/src/macosMain/kotlin/org/jetbrains/skiko/sample/MacosClocks.kt
0 → 100644
View file @
2b7826d1
package
org.jetbrains.skiko.sample
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.SkikoInputEvent
class
MacosClocks
(
layer
:
SkiaLayer
):
Clocks
(
layer
)
{
override
var
inputText
:
String
=
""
override
fun
handleBackspace
()
{
if
(
inputText
.
isNotEmpty
())
{
inputText
=
inputText
.
dropLast
(
1
)
}
}
override
fun
onInputEvent
(
event
:
SkikoInputEvent
)
{
inputText
+=
event
.
input
}
}
skiko/src/iosMain/kotlin/org/jetbrains/skiko/SkikoUIView.kt
View file @
2b7826d1
...
@@ -250,8 +250,11 @@ class SkikoUIView : UIView, UIKeyInputProtocol, UITextInputProtocol, UITextPaste
...
@@ -250,8 +250,11 @@ class SkikoUIView : UIView, UIKeyInputProtocol, UITextInputProtocol, UITextPaste
)
)
}
}
/**
* Attention! position may be null
*/
override
fun
positionFromPosition
(
position
:
UITextPosition
,
offset
:
NSInteger
):
UITextPosition
?
{
override
fun
positionFromPosition
(
position
:
UITextPosition
,
offset
:
NSInteger
):
UITextPosition
?
{
val
p
=
(
position
as
IntermediateTextPosition
).
position
val
p
=
(
position
as
?
IntermediateTextPosition
)
?.
position
?:
return
null
val
endOfDocument
=
skiaLayer
?.
skikoView
?.
input
?.
endOfDocument
()
val
endOfDocument
=
skiaLayer
?.
skikoView
?.
input
?.
endOfDocument
()
return
if
(
endOfDocument
!=
null
)
{
return
if
(
endOfDocument
!=
null
)
{
IntermediateTextPosition
(
max
(
min
(
p
+
offset
,
endOfDocument
),
0
))
IntermediateTextPosition
(
max
(
min
(
p
+
offset
,
endOfDocument
),
0
))
...
...
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