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 之上構建的有用的東西總是受歡迎的——作為庫。