Active Skija 项目位于 HumbleUI/Skija
Skia是一个开源 2D 图形库,提供可跨各种硬件和软件平台工作的通用 API。
Skija是 Skia 的高质量 Java 绑定。
因为 Java 仍然没有强大且现代的 2D 图形!
在很多情况下您可能需要图形:
现有产品有:AWT 的 Graphics2D、JavaFX 的 GraphicsContext。他们很好,但令人印象深刻。
输入斯基亚。 Skia 拥有可靠的工业规模项目记录,依赖它来处理所有图形:Google Chrome、Android、Flutter、Firefox Canvas、Xamarin、LibreOffice。 Skia 在几乎所有基准测试中都优于所有现有的 Java2D 工具包,并且还提供:
Skija 将所有这些功能带到您的指尖,就像将 jar 添加到类路径一样简单。
存在自动生成的 Skia 绑定,但似乎采用率不高:
Skija 项目的目标是提供易于使用的出色 Java 原生 API。尤其:
Skija 的最终目标是感觉就像一个 Java 库,而根本不必考虑本机部分。
Compose for Desktop,Kotlin 声明式 UI 工具包:
Skija Graphics2D,Java2D API 的实现:
罗伯特·费尔克演示:
哈罗德视频:
Skija 演示应用程序:
公共阿尔法。情况可能会发生变化,恕不另行通知。
请注意,Skia 经常(每月)更改其 API。 Skija 将尽最大努力防止这些更改,但有时可能是不可能的(例如方法被删除)。一般情况下都是辅助性的东西,不用太担心。
平台:
后端:
蜜蜂:
Bitmap ▓▓▓▓▓▓▓▓▓▓ Paint ▓▓▓▓▓▓▓▓▓▓
Canvas ▓▓▓▓▓▓▓▓░░ Path ▓▓▓▓▓▓▓▓▓▓
Codec ▓▓▓▓░░░░░░ PathEffects ▓▓▓▓▓▓▓▓▓▓
Color ▓░░░░░░░░░ PathMeasure ▓▓▓▓▓▓▓▓▓▓
ColorFilter ▓▓▓▓▓▓▓▓▓▓ PaintFilterCanvas ▓▓▓▓▓▓▓▓▓▓
ColorInfo ▓▓▓▓▓▓▓▓▓▓ Picture ▓▓▓▓▓▓▓▓▓░
ColorSpace ▓▓▓▓░░░░░░ PictureRecorder ▓▓▓▓▓▓▓▓▓▓
Data ▓▓▓▓▓▓▓▓▓░ PixelRef ▓▓▓▓▓▓▓▓▓▓
Drawable ▓▓▓▓▓▓▓▓░░ Pixmap ▓▓▓▓▓▓▓▓▓▓
Flattenable ░░░░░░░░░░ Region ▓▓▓▓▓▓▓▓▓▓
Font ▓▓▓▓▓▓▓▓▓▓ RuntimeEffect ▓▓▓▓▓░░░░░
FontData ░░░░░░░░░░ ScalerContext ░░░░░░░░░░
FontManager ▓▓▓▓▓▓▓▓▓░ Shader ▓▓▓▓▓▓▓▓▓▓
FontStyle ▓▓▓▓▓▓▓▓▓▓ ShadowUtils ▓▓▓▓▓▓▓▓▓▓
FontStyleSet ▓▓▓▓▓▓▓▓▓▓ Stream ░░░░░░░░░░
Image ▓▓░░░░░░░░ String ▓░░░░░░░░░
ImageFilters ▓▓▓▓▓▓▓▓▓▓ Surface ▓░░░░░░░░░
ImageInfo ▓▓▓▓▓▓▓▓▓▓ TextBlob ▓▓▓▓▓▓▓▓▓▓
MaskFilter ▓▓▓▓▓▓▓▓▓▓ TextBlobBuilder ▓▓▓▓▓▓▓▓▓▓
Matrix33 ▓▓▓░░░░░░░ Typeface ▓▓▓▓▓▓▓▓░░
Matrix44 ▓▓▓░░░░░░░ WStream ▓▓░░░░░░░░
Shaper: Paragraph:
BiDiRunIterator ▓▓▓▓▓▓▓▓▓▓ FontCollection ▓▓▓▓▓▓▓▓▓▓
FontMgrRunIterator ▓▓▓▓▓▓▓▓▓▓ LineMetrics ▓▓▓▓▓▓▓▓▓░
FontRunIterator ▓▓▓▓▓▓▓▓▓▓ Paragraph ▓▓▓▓▓▓▓▓▓▓
HbIcuScriptRunIter ▓▓▓▓▓▓▓▓▓▓ ParagraphCache ▓▓▓▓▓▓▓▓▓▓
IcuBidiRunIterator ▓▓▓▓▓▓▓▓▓▓ ParagraphStyle ▓▓▓▓▓▓▓▓▓▓
LanguageRunIterator ▓▓▓▓▓▓▓▓▓▓ ParagraphBuilder ▓▓▓▓▓▓▓▓▓▓
RunHandler ▓▓▓▓▓▓▓▓▓▓ TextStyle ▓▓▓▓▓▓▓▓▓▓
RunInfo ▓▓▓▓▓▓▓▓▓▓ TypefaceFontProvider ▓▓▓▓▓▓▓▓▓▓
ScriptRunIterator ▓▓▓▓▓▓▓▓▓▓
Shaper ▓▓▓▓▓▓▓▓▓▓
TextBlobBldRunHndlr ▓▓▓▓▓▓▓▓▓▓
SVG:
SVGDOM ▓▓▓▓▓▓▓▓░░
SVGCanvas ▓▓▓▓▓▓▓▓▓▓
SVGSVG ▓▓▓▓▓▓▓▓░░
使用 Skija 就像添加 jar 文件一样简单。
行家:
< repositories >
< repository >
< id >space-maven</ id >
< url >https://packages.jetbrains.team/maven/p/skija/maven</ url >
</ repository >
</ repositories >
< dependencies >
< dependency >
< groupId >org.jetbrains.skija</ groupId >
< artifactId >skija-${platform}</ artifactId >
< version >${version}</ version >
</ dependency >
</ dependencies >
摇篮:
repositories {
maven {
url " https://packages.jetbrains.team/maven/p/skija/maven "
}
}
dependencies {
api " org.jetbrains.skija: ${ artifact } : ${ version } "
}
将${artifact}
和${version}
替换为:
平台 | ${artifact} | ${version} |
---|---|---|
macOS 英特尔 | skija-macos-x64 | |
macOS M1 | skija-macos-arm64 | |
Linux | skija-linux | |
视窗 | skija-windows |
请阅读入门指南开始使用。
API 文档正在开发中 — 请参阅源代码和 JavaDoc 注释。
我发现 SkiaSharp 文档是关于 Skia 中可以做什么的优秀资源。他们也有很好的例子和直观的解释。
如果 Skija 缺少特定方法或类的文档,请检查 Skiia 文档中的同一类。可能我们还没有将其转移到 Java。欢迎 PR!
最后,LWJGL 演示应用程序提供了当前实现的大多数 API 的示例。
先决条件:Git、CMake、Ninja、JDK 9+、$JAVA_HOME、Python 3。
查看:
git clone https://github.com/JetBrains/skija.git
cd skija
./script/build.py
协同设计:
security find-identity
export APPLE_CODESIGN_IDENTITY= " <...> "
./script/build.py
要构建 Skia 本身,请参阅 https://github.com/JetBrains/skia-build/
示例需要本地构建 Skija(请参阅构建 Skija)。
请参阅示例/。
欢迎贡献!
请务必阅读代码约定。
请记住:Skija 的目标是尽可能接近地映射 Skia API。
这些东西在 Skija 中占有一席之地:
这些不:
在 Skia/Skija 之上构建的有用的东西总是受欢迎的——作为库。