Proyek Skija aktif terletak di HumbleUI/Skija
Skia adalah perpustakaan grafis 2D sumber terbuka yang menyediakan API umum yang bekerja di berbagai platform perangkat keras dan perangkat lunak.
Skija adalah binding Java berkualitas tinggi untuk Skia.
Karena Java tidak memiliki grafik 2D yang kuat dan modern — tetap saja!
Ada banyak kesempatan ketika Anda mungkin memerlukan grafis:
Penawaran yang ada adalah: Graphics2D dari AWT, GraphicsContext dari JavaFX. Mereka bagus, tapi mengecewakan.
Masuk Skia. Skia memiliki rekam jejak yang terbukti dalam proyek skala industri yang mengandalkannya untuk segala hal grafis: Google Chrome, Android, Flutter, Firefox Canvas, Xamarin, LibreOffice. Skia mengungguli semua toolkit Java2D yang ada di hampir semua benchmark, dan juga menyediakan:
Skija menghadirkan semua kekuatan ini ke ujung jari Anda, semudah menambahkan toples ke classpath.
Ada pengikatan yang dibuat secara otomatis untuk Skia, tetapi tampaknya tidak memiliki tingkat adopsi yang tinggi:
Proyek Skija memiliki tujuan untuk menyediakan API asli Java yang bagus dan alami untuk digunakan. Secara khusus:
Tujuan akhir Skija adalah merasa seperti perpustakaan Java dan tidak perlu memikirkan bagian asli sama sekali.
Compose untuk Desktop, toolkit UI deklaratif untuk Kotlin:
Skija Graphics2D, implementasi Java2D API:
Demo Robert Felker:
Video Harold:
Aplikasi demo Skija:
Alfa publik. Segalanya mungkin berubah tanpa pemberitahuan.
Perlu diketahui bahwa Skia diketahui cukup sering mengubah API-nya (setiap bulan). Skija akan melakukan yang terbaik untuk melindungi dari perubahan ini, namun terkadang hal ini tidak mungkin dilakukan (misalnya metode telah dihapus). Biasanya itu hanya hal tambahan, jangan terlalu khawatir.
Platform:
Bagian belakang:
Lebah:
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 ▓▓▓▓▓▓▓▓░░
Menggunakan Skija semudah menambahkan file jar.
Pakar:
< 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 >
Gradasi:
repositories {
maven {
url " https://packages.jetbrains.team/maven/p/skija/maven "
}
}
dependencies {
api " org.jetbrains.skija: ${ artifact } : ${ version } "
}
Ganti ${artifact}
dan ${version}
dengan:
Platform | ${artifact} | ${version} |
---|---|---|
macOS Intel | skija-macos-x64 | |
macOS M1 | skija-macos-arm64 | |
Linux | skija-linux | |
jendela | skija-windows |
Mulailah dengan membaca Memulai.
Dokumen API sedang dalam pengembangan — lihat kode sumber dan komentar JavaDoc.
Saya menemukan dokumentasi SkiaSharp sebagai sumber yang bagus tentang apa yang dapat dilakukan di Skia. Mereka juga memiliki contoh bagus dan penjelasan visual.
Jika Skija tidak memiliki dokumentasi untuk metode atau kelas tertentu, periksa kelas yang sama di Dokumentasi Skia. Mungkin saja kami belum memindahkannya ke Jawa. PR dipersilakan!
Terakhir, aplikasi demo LWJGL memiliki contoh sebagian besar API yang saat ini diterapkan.
Prasyarat: Git, CMake, Ninja, JDK 9+, $JAVA_HOME, Python 3.
Check-out:
git clone https://github.com/JetBrains/skija.git
cd skija
./script/build.py
Untuk mendesain kode:
security find-identity
export APPLE_CODESIGN_IDENTITY= " <...> "
./script/build.py
Untuk membuat Skia sendiri, lihat https://github.com/JetBrains/skia-build/
Contohnya memerlukan pembangunan Skija lokal (lihat Gedung Skija).
Lihat contoh/.
Kontribusi dipersilahkan!
Pastikan untuk membaca Konvensi Kode.
Ingat: tujuan Skija adalah memetakan Skia API sedekat mungkin.
Hal-hal ini mempunyai tempat di Skija:
Ini tidak:
Hal-hal berguna yang dibangun di atas Skia/Skija selalu diterima — sebagai perpustakaan.