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
01c2b449
Commit
01c2b449
authored
Dec 21, 2020
by
Roman Sedaikin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added interface ClipRectangle.
parent
2ec24c22
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
52 additions
and
14 deletions
+52
-14
SwingSkia.kt
...jectSample/src/main/kotlin/SkijaInjectSample/SwingSkia.kt
+14
-3
ClipRectangle.kt
...o/src/jvmMain/kotlin/org/jetbrains/skiko/ClipRectangle.kt
+21
-0
SkiaLayer.kt
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/SkiaLayer.kt
+6
-6
SkiaPanel.kt
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/SkiaPanel.kt
+1
-1
drawlayer.m
skiko/src/jvmMain/objectiveC/macos/drawlayer.m
+10
-4
No files found.
samples/SkijaInjectSample/src/main/kotlin/SkijaInjectSample/SwingSkia.kt
View file @
01c2b449
package
SkijaInjectSample
package
SkijaInjectSample
import
java.awt.BorderLayout
import
java.awt.Color
import
java.awt.Color
import
java.awt.Dimension
import
java.awt.Dimension
import
java.awt.BorderLayout
import
java.awt.event.ComponentAdapter
import
java.awt.event.ComponentEvent
import
java.awt.event.KeyEvent
import
java.awt.event.KeyEvent
import
java.awt.event.MouseEvent
import
java.awt.event.MouseEvent
import
java.awt.event.MouseMotionAdapter
import
java.awt.event.MouseMotionAdapter
...
@@ -14,6 +16,7 @@ import javax.swing.event.MouseInputAdapter
...
@@ -14,6 +16,7 @@ import javax.swing.event.MouseInputAdapter
import
javax.swing.WindowConstants
import
javax.swing.WindowConstants
import
org.jetbrains.skiko.SkiaPanel
import
org.jetbrains.skiko.SkiaPanel
fun
Button
(
text
:
String
):
JButton
{
fun
Button
(
text
:
String
):
JButton
{
val
btn
=
JButton
(
text
)
val
btn
=
JButton
(
text
)
btn
.
setPreferredSize
(
Dimension
(
100
,
100
))
btn
.
setPreferredSize
(
Dimension
(
100
,
100
))
...
@@ -36,12 +39,10 @@ fun SwingSkia() {
...
@@ -36,12 +39,10 @@ fun SwingSkia() {
val
btnPanelOK
=
JPanel
()
val
btnPanelOK
=
JPanel
()
btnPanelOK
.
setLayout
(
BorderLayout
(
0
,
0
))
btnPanelOK
.
setLayout
(
BorderLayout
(
0
,
0
))
btnPanelOK
.
setBounds
(
50
,
50
,
200
,
40
)
btnPanelOK
.
setBackground
(
Color
.
white
)
btnPanelOK
.
setBackground
(
Color
.
white
)
btnPanelOK
.
add
(
JButton
(
"OK"
))
btnPanelOK
.
add
(
JButton
(
"OK"
))
val
btnCancel
=
JButton
(
"Cancel"
)
val
btnCancel
=
JButton
(
"Cancel"
)
btnCancel
.
setBounds
(
300
,
50
,
200
,
40
)
panel
.
add
(
btnPanelOK
)
panel
.
add
(
btnPanelOK
)
panel
.
add
(
btnCancel
)
panel
.
add
(
btnCancel
)
...
@@ -52,6 +53,16 @@ fun SwingSkia() {
...
@@ -52,6 +53,16 @@ fun SwingSkia() {
var
mouseX
=
0
var
mouseX
=
0
var
mouseY
=
0
var
mouseY
=
0
panel
.
addComponentListener
(
object
:
ComponentAdapter
()
{
override
fun
componentResized
(
e
:
ComponentEvent
)
{
btnPanelOK
.
setBounds
(
panel
.
width
-
200
,
panel
.
height
-
100
,
200
,
40
)
btnCancel
.
setBounds
(
panel
.
width
-
200
,
panel
.
height
-
50
,
200
,
40
)
panel
.
invalidate
()
panel
.
validate
()
panel
.
repaint
()
}
})
panel
.
layer
.
renderer
=
Renderer
{
renderer
,
w
,
h
->
displayScene
(
renderer
,
w
,
h
,
mouseX
,
mouseY
,
state
)
}
panel
.
layer
.
renderer
=
Renderer
{
renderer
,
w
,
h
->
displayScene
(
renderer
,
w
,
h
,
mouseX
,
mouseY
,
state
)
}
panel
.
layer
.
addMouseMotionListener
(
object
:
MouseMotionAdapter
()
{
panel
.
layer
.
addMouseMotionListener
(
object
:
MouseMotionAdapter
()
{
...
...
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/ClipRectangle.kt
0 → 100644
View file @
01c2b449
package
org.jetbrains.skiko
import
java.awt.Component
interface
ClipRectangle
{
val
x
:
Float
val
y
:
Float
val
width
:
Float
val
height
:
Float
}
class
ClipComponent
(
val
component
:
Component
)
:
ClipRectangle
{
override
val
x
:
Float
get
()
=
component
.
x
.
toFloat
()
override
val
y
:
Float
get
()
=
component
.
y
.
toFloat
()
override
val
width
:
Float
get
()
=
component
.
width
.
toFloat
()
override
val
height
:
Float
get
()
=
component
.
height
.
toFloat
()
}
\ No newline at end of file
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/SkiaLayer.kt
View file @
01c2b449
...
@@ -36,7 +36,7 @@ open class SkiaLayer() : HardwareLayer() {
...
@@ -36,7 +36,7 @@ open class SkiaLayer() : HardwareLayer() {
open
val
api
:
GraphicsApi
=
GraphicsApi
.
OPENGL
open
val
api
:
GraphicsApi
=
GraphicsApi
.
OPENGL
var
renderer
:
SkiaRenderer
?
=
null
var
renderer
:
SkiaRenderer
?
=
null
val
clipComponets
=
mutableListOf
<
C
omponent
>()
val
clipComponets
=
mutableListOf
<
C
lipRectangle
>()
private
val
skijaState
=
SkijaState
()
private
val
skijaState
=
SkijaState
()
protected
var
inited
:
Boolean
=
false
protected
var
inited
:
Boolean
=
false
...
@@ -77,14 +77,14 @@ open class SkiaLayer() : HardwareLayer() {
...
@@ -77,14 +77,14 @@ open class SkiaLayer() : HardwareLayer() {
}
}
}
}
private
fun
clipRectBy
(
component
:
Component
)
{
private
fun
clipRectBy
(
rectangle
:
ClipRectangle
)
{
skijaState
.
apply
{
skijaState
.
apply
{
canvas
!!
.
clipRect
(
canvas
!!
.
clipRect
(
Rect
.
makeLTRB
(
Rect
.
makeLTRB
(
component
.
x
.
toFloat
()
,
rectangle
.
x
,
component
.
y
.
toFloat
()
,
rectangle
.
y
,
component
.
x
.
toFloat
()
+
component
.
width
.
toFloat
()
,
rectangle
.
x
+
rectangle
.
width
,
component
.
y
.
toFloat
()
+
component
.
height
.
toFloat
()
rectangle
.
y
+
rectangle
.
height
),
),
ClipMode
.
DIFFERENCE
,
ClipMode
.
DIFFERENCE
,
true
true
...
...
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/SkiaPanel.kt
View file @
01c2b449
...
@@ -16,7 +16,7 @@ open class SkiaPanel: JLayeredPane {
...
@@ -16,7 +16,7 @@ open class SkiaPanel: JLayeredPane {
}
}
override
fun
add
(
component
:
Component
):
Component
{
override
fun
add
(
component
:
Component
):
Component
{
layer
.
clipComponets
.
add
(
component
)
layer
.
clipComponets
.
add
(
ClipComponent
(
component
)
)
return
super
.
add
(
component
,
Integer
.
valueOf
(
0
))
return
super
.
add
(
component
,
Integer
.
valueOf
(
0
))
}
}
...
...
skiko/src/jvmMain/objectiveC/macos/drawlayer.m
View file @
01c2b449
...
@@ -284,9 +284,6 @@ JNIEXPORT void JNICALL Java_org_jetbrains_skiko_HardwareLayer_updateLayer(JNIEnv
...
@@ -284,9 +284,6 @@ JNIEXPORT void JNICALL Java_org_jetbrains_skiko_HardwareLayer_updateLayer(JNIEnv
dsi_mac
=
(
__bridge
NSObject
<
JAWT_SurfaceLayers
>
*
)
dsi
->
platformInfo
;
dsi_mac
=
(
__bridge
NSObject
<
JAWT_SurfaceLayers
>
*
)
dsi
->
platformInfo
;
LayerHandler
*
layersSet
=
[[
LayerHandler
alloc
]
init
];
LayerHandler
*
layersSet
=
[[
LayerHandler
alloc
]
init
];
lockLayers
();
[
layerStorage
addObject
:
layersSet
];
unlockLayers
();
layersSet
.
container
=
[
dsi_mac
windowLayer
];
layersSet
.
container
=
[
dsi_mac
windowLayer
];
[
layersSet
.
container
removeAllAnimations
];
[
layersSet
.
container
removeAllAnimations
];
...
@@ -319,12 +316,21 @@ JNIEXPORT void JNICALL Java_org_jetbrains_skiko_HardwareLayer_updateLayer(JNIEnv
...
@@ -319,12 +316,21 @@ JNIEXPORT void JNICALL Java_org_jetbrains_skiko_HardwareLayer_updateLayer(JNIEnv
}
}
for
(
LayerHandler
*
value
in
layerStorage
)
for
(
LayerHandler
*
value
in
layerStorage
)
{
{
if
(
layersSet
.
container
==
value
.
container
)
{
layersSet
.
window
=
value
.
window
;
}
[
windows
removeObject
:
value
.
window
];
[
windows
removeObject
:
value
.
window
];
}
}
if
(
layersSet
.
window
==
NULL
)
{
layersSet
.
window
=
[
windows
firstObject
];
layersSet
.
window
=
[
windows
firstObject
];
}
}
}
}
[
layerStorage
addObject
:
layersSet
];
}
ds
->
FreeDrawingSurfaceInfo
(
dsi
);
ds
->
FreeDrawingSurfaceInfo
(
dsi
);
ds
->
Unlock
(
ds
);
ds
->
Unlock
(
ds
);
awt
.
FreeDrawingSurface
(
ds
);
awt
.
FreeDrawingSurface
(
ds
);
...
...
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