アクティブな Skija プロジェクトは HumbleUI/Skija にあります
Skia は、さまざまなハードウェアおよびソフトウェア プラットフォームで動作する共通 API を提供するオープン ソース 2D グラフィックス ライブラリです。
Skija は、Skia 用の高品質な Java バインディングです。
なぜなら、Java には強力で最新の 2D グラフィックスがないからです。
グラフィックスが必要になる場合は数多くあります。
既存の製品は、AWT の Graphics2D、JavaFX の GraphicsContext です。それらは良いものですが、圧倒的ではありません。
スキアに入ります。 Skia には、Google Chrome、Android、Flutter、Firefox Canvas、Xamarin、LibreOffice など、あらゆるグラフィックスで Skia を利用した産業規模のプロジェクトの実績があります。 Skia は、ほぼすべてのベンチマークで既存のすべての Java2D ツールキットを上回るパフォーマンスを示し、さらに以下を提供します。
Skija は、jar をクラスパスに追加するだけで、このすべての機能を指先で実現します。
Skia 用に自動生成されたバインディングは存在しますが、あまり普及していないようです。
Skija プロジェクトには、自然に使用できる優れた Java ネイティブ API を提供するという目標があります。特に:
Skija の最終目標は、ネイティブ部分についてまったく考慮する必要がなく、Java ライブラリのように感じられるようにすることです。
Compose for Desktop、Kotlin 用の宣言型 UI ツールキット:
Skija Graphics2D、Java2D API の実装:
ロバート・フェルカーのデモ:
ハロルドのビデオ:
Skija デモ アプリ:
パブリックアルファ。予告なく変更される場合があります。
Skia は API を頻繁に (毎月) 変更することが知られていることに注意してください。 Skija はこれらの変更から保護するために最善を尽くしますが、場合によっては不可能な場合もあります (メソッドが削除されたなど)。通常は補助的なものですが、あまり心配しないでください。
プラットフォーム:
バックエンド:
API:
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 に特定のメソッドまたはクラスのドキュメントがない場合は、代わりに Skia ドキュメントで同じクラスを確認してください。まだ 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 をできるだけ近くにマップすることです。
スキヤには次のようなものがあります。
これらは次のことを行いません。
Skia/Skija 上に構築された便利なものは、ライブラリとしていつでも歓迎されます。