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
db8a94cc
Unverified
Commit
db8a94cc
authored
Nov 19, 2021
by
Aleksandr Veselov
Committed by
GitHub
Nov 19, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add support of `TextStyle::baselineShift` (#400)
parent
b0dfb83d
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
121 additions
and
5 deletions
+121
-5
TextStyle.kt
...mmonMain/kotlin/org/jetbrains/skia/paragraph/TextStyle.kt
+24
-2
TextStyleTest.kt
...est/kotlin/org/jetbrains/skiko/paragraph/TextStyleTest.kt
+9
-3
TextStyle.cc
skiko/src/jvmMain/cpp/common/paragraph/TextStyle.cc
+12
-0
TextStyleTest.kt
...est/kotlin/org/jetbrains/skiko/paragraph/TextStyleTest.kt
+64
-0
org_jetbrains_skiko_tests_org_jetbrains_skiko_paragraph_TextStyleTest_canApplyBaselineShift.png
...s_skiko_paragraph_TextStyleTest_canApplyBaselineShift.png
+0
-0
TextStyle.cc
skiko/src/nativeJsMain/cpp/paragraph/TextStyle.cc
+12
-0
No files found.
skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/TextStyle.kt
View file @
db8a94cc
package
org.jetbrains.skia.paragraph
import
org.jetbrains.skia.impl.Library.Companion.staticLoad
import
org.jetbrains.skia.*
import
org.jetbrains.skia.ExternalSymbolName
import
org.jetbrains.skia.impl.*
import
org.jetbrains.skia.impl.Library.Companion.staticLoad
class
TextStyle
internal
constructor
(
ptr
:
NativePointer
)
:
Managed
(
ptr
,
_FinalizerHolder
.
PTR
)
{
companion
object
{
...
...
@@ -286,6 +285,23 @@ class TextStyle internal constructor(ptr: NativePointer) : Managed(ptr, _Finaliz
return
this
}
var
baselineShift
:
Float
get
()
=
try
{
Stats
.
onNativeCall
()
TextStyle_nGetBaselineShift
(
_ptr
)
}
finally
{
reachabilityBarrier
(
this
)
}
set
(
value
)
{
setBaselineShift
(
value
)
}
fun
setBaselineShift
(
baselineShift
:
Float
):
TextStyle
{
Stats
.
onNativeCall
()
TextStyle_nSetBaselineShift
(
_ptr
,
baselineShift
)
return
this
}
var
wordSpacing
:
Float
get
()
=
try
{
Stats
.
onNativeCall
()
...
...
@@ -426,6 +442,12 @@ private external fun TextStyle_nGetHeight(ptr: NativePointer): Float
@ExternalSymbolName
(
"org_jetbrains_skia_paragraph_TextStyle__1nSetHeight"
)
private
external
fun
TextStyle_nSetHeight
(
ptr
:
NativePointer
,
override
:
Boolean
,
height
:
Float
)
@ExternalSymbolName
(
"org_jetbrains_skia_paragraph_TextStyle__1nGetBaselineShift"
)
private
external
fun
TextStyle_nGetBaselineShift
(
ptr
:
NativePointer
):
Float
@ExternalSymbolName
(
"org_jetbrains_skia_paragraph_TextStyle__1nSetBaselineShift"
)
private
external
fun
TextStyle_nSetBaselineShift
(
ptr
:
NativePointer
,
baselineShift
:
Float
)
@ExternalSymbolName
(
"org_jetbrains_skia_paragraph_TextStyle__1nAttributeEquals"
)
private
external
fun
_nAttributeEquals
(
ptr
:
NativePointer
,
attribute
:
Int
,
otherPtr
:
NativePointer
):
Boolean
...
...
skiko/src/commonTest/kotlin/org/jetbrains/skiko/paragraph/TextStyleTest.kt
View file @
db8a94cc
package
org.jetbrains.skiko.paragraph
import
org.jetbrains.skia.Color
import
org.jetbrains.skia.FontMetrics
import
org.jetbrains.skia.impl.use
import
org.jetbrains.skia.paragraph.DecorationLineStyle
import
org.jetbrains.skia.paragraph.DecorationStyle
import
org.jetbrains.skia.paragraph.TextStyle
import
org.jetbrains.skia.paragraph.TextStyleAttribute
import
org.jetbrains.skiko.tests.SkipJsTarget
import
org.jetbrains.skiko.tests.SkipNativeTarget
import
kotlin.test.*
class
TextStyleTest
{
...
...
@@ -99,4 +96,13 @@ class TextStyleTest {
}
}
@Test
fun
textStyleBaselineTest
()
{
TextStyle
().
use
{
textStyle
->
assertEquals
(
0.0f
,
textStyle
.
baselineShift
)
textStyle
.
baselineShift
=
4f
assertEquals
(
4f
,
textStyle
.
baselineShift
)
}
}
}
skiko/src/jvmMain/cpp/common/paragraph/TextStyle.cc
View file @
db8a94cc
...
...
@@ -235,6 +235,18 @@ extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_paragraph_TextStyleKt_
instance
->
setHeight
(
height
);
}
extern
"C"
JNIEXPORT
jfloat
JNICALL
Java_org_jetbrains_skia_paragraph_TextStyleKt_TextStyle_1nGetBaselineShift
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
TextStyle
*
instance
=
reinterpret_cast
<
TextStyle
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
return
instance
->
getBaselineShift
();
}
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_paragraph_TextStyleKt_TextStyle_1nSetBaselineShift
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
jfloat
baselineShift
)
{
TextStyle
*
instance
=
reinterpret_cast
<
TextStyle
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
instance
->
setBaselineShift
(
baselineShift
);
}
extern
"C"
JNIEXPORT
jfloat
JNICALL
Java_org_jetbrains_skia_paragraph_TextStyleKt__1nGetLetterSpacing
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
TextStyle
*
instance
=
reinterpret_cast
<
TextStyle
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
...
...
skiko/src/jvmTest/kotlin/org/jetbrains/skiko/paragraph/TextStyleTest.kt
0 → 100644
View file @
db8a94cc
package
org.jetbrains.skiko.tests.org.jetbrains.skiko.paragraph
import
org.jetbrains.skia.*
import
org.jetbrains.skia.paragraph.*
import
org.jetbrains.skia.tests.makeFromResource
import
org.jetbrains.skiko.OS
import
org.jetbrains.skiko.hostOs
import
org.jetbrains.skiko.tests.runTest
import
org.jetbrains.skiko.util.ScreenshotTestRule
import
org.junit.Rule
import
org.junit.Test
class
TextStyleTest
{
@get
:
Rule
val
screenshots
=
ScreenshotTestRule
()
@Test
fun
canApplyBaselineShift
()
=
runTest
{
if
(
hostOs
!=
OS
.
MacOS
)
{
return
@runTest
}
val
fontCollection
=
FontCollection
().
apply
{
setDefaultFontManager
(
TypefaceFontProvider
().
apply
{
val
inter
=
Typeface
.
makeFromResource
(
"./fonts/Inter-Hinted-Regular.ttf"
,
0
)
registerTypeface
(
inter
,
"Inter"
)
})
}
fun
buildTextStyle
(
baselineShift
:
Float
,
color
:
Int
=
Color
.
BLACK
)
=
TextStyle
().
apply
{
fontFamilies
=
arrayOf
(
"Inter"
)
fontSize
=
14.0f
this
.
color
=
color
this
.
baselineShift
=
baselineShift
}
val
paragraphStyle
=
ParagraphStyle
().
apply
{
height
=
40.0f
maxLinesCount
=
2
textStyle
=
buildTextStyle
(
0.0f
)
}
val
paragraph
=
ParagraphBuilder
(
paragraphStyle
,
fontCollection
).
run
{
val
text
=
"Hello "
addText
(
text
)
pushStyle
(
buildTextStyle
(
10.0f
,
Color
.
RED
))
addText
(
text
)
pushStyle
(
buildTextStyle
(-
10.0f
,
Color
.
GREEN
))
addText
(
text
)
build
()
}
val
image
=
with
(
Surface
.
makeRasterN32Premul
(
200
,
64
))
{
canvas
.
drawRect
(
Rect
(
0.0f
,
0.0f
,
width
.
toFloat
(),
height
.
toFloat
()),
Paint
().
apply
{
color
=
Color
.
WHITE
})
paragraph
.
layout
(
Float
.
POSITIVE_INFINITY
)
paragraph
.
paint
(
canvas
,
30.0f
,
20.0f
)
makeImageSnapshot
()
}
screenshots
.
assert
(
image
)
}
}
\ No newline at end of file
skiko/src/jvmTest/screenshots/org_jetbrains_skiko_tests_org_jetbrains_skiko_paragraph_TextStyleTest_canApplyBaselineShift.png
0 → 100644
View file @
db8a94cc
1.91 KB
skiko/src/nativeJsMain/cpp/paragraph/TextStyle.cc
View file @
db8a94cc
...
...
@@ -258,6 +258,18 @@ SKIKO_EXPORT void org_jetbrains_skia_paragraph_TextStyle__1nSetHeight
instance
->
setHeight
(
height
);
}
SKIKO_EXPORT
KFloat
org_jetbrains_skia_paragraph_TextStyle__1nGetBaselineShift
(
KNativePointer
ptr
)
{
TextStyle
*
instance
=
reinterpret_cast
<
TextStyle
*>
(
ptr
);
return
instance
->
getBaselineShift
();
}
SKIKO_EXPORT
void
org_jetbrains_skia_paragraph_TextStyle__1nSetBaselineShift
(
KNativePointer
ptr
,
KFloat
baselineShift
)
{
TextStyle
*
instance
=
reinterpret_cast
<
TextStyle
*>
(
ptr
);
instance
->
setBaselineShift
(
baselineShift
);
}
SKIKO_EXPORT
KFloat
org_jetbrains_skia_paragraph_TextStyle__1nGetLetterSpacing
(
KNativePointer
ptr
)
{
TextStyle
*
instance
=
reinterpret_cast
<
TextStyle
*>
(
ptr
);
...
...
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