Le projet Active Skija est situé à HumbleUI/Skija
Skia est une bibliothèque graphique 2D open source qui fournit des API communes fonctionnant sur diverses plates-formes matérielles et logicielles.
Skija est une liaison Java de haute qualité pour Skia.
Parce que Java n'a pas encore de graphismes 2D puissants et modernes !
Il existe de nombreuses occasions où vous pourriez avoir besoin de graphiques :
Les offres existantes sont : Graphics2D d'AWT, GraphicsContext de JavaFX. Ils sont bons, mais décevants.
Entre Skia. Skia a fait ses preuves en matière de projets à l'échelle industrielle qui s'appuient sur lui pour tout ce qui concerne le graphisme : Google Chrome, Android, Flutter, Firefox Canvas, Xamarin, LibreOffice. Skia surpasse tous les kits d'outils Java2D existants dans presque tous les benchmarks et fournit également :
Skija met toute cette puissance au bout de vos doigts, aussi simple que d'ajouter un pot au classpath.
Des liaisons générées automatiquement pour Skia existent, mais ne semblent pas être très adoptées :
Le projet Skija a pour objectif de fournir une excellente API Java native dont l'utilisation est naturelle. En particulier:
Le but ultime de Skija est de se sentir comme une bibliothèque Java et de ne pas avoir à penser du tout à la partie native.
Compose for Desktop, boîte à outils d'interface utilisateur déclarative pour Kotlin :
Skija Graphics2D, une implémentation de l'API Java2D :
Démonstrations de Robert Felker :
Vidéos d'Harold :
Application de démonstration Skija :
Alpha publique. Les choses peuvent changer sans préavis.
Attention, Skia est connu pour changer son API assez souvent (mensuellement). Skija fera de son mieux pour se protéger de ces changements, mais parfois cela peut s'avérer impossible (par exemple, la méthode a été supprimée). Normalement, ce sont des trucs auxiliaires, ne vous inquiétez pas trop.
Plateformes :
Backends :
Apis:
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 ▓▓▓▓▓▓▓▓░░
Utiliser Skija est aussi simple que d’ajouter un fichier jar.
Maven :
< 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 >
Graduation :
repositories {
maven {
url " https://packages.jetbrains.team/maven/p/skija/maven "
}
}
dependencies {
api " org.jetbrains.skija: ${ artifact } : ${ version } "
}
Remplacez ${artifact}
et ${version}
par :
Plate-forme | ${artifact} | ${version} |
---|---|---|
macOS Intel | skija-macos-x64 | |
macOS M1 | skija-macos-arm64 | |
Linux | skija-linux | |
Fenêtres | skija-windows |
Commencez par lire Mise en route.
Les documents API sont en cours de développement : consultez le code source et les commentaires JavaDoc.
J'ai trouvé la documentation SkiaSharp comme une excellente ressource sur ce qui peut être fait dans Skia. Ils ont également de jolis exemples et des explications visuelles.
S'il manque à Skija une documentation pour une méthode ou une classe particulière, vérifiez plutôt la même classe dans la documentation Skia. Il se peut que nous ne l'ayons pas encore migré vers Java. Les PR sont les bienvenus !
Enfin, l'application de démonstration LWJGL contient des exemples de la plupart des API actuellement implémentées.
Prérequis : Git, CMake, Ninja, JDK 9+, $JAVA_HOME, Python 3.
Vérifier:
git clone https://github.com/JetBrains/skija.git
cd skija
./script/build.py
Pour coder :
security find-identity
export APPLE_CODESIGN_IDENTITY= " <...> "
./script/build.py
Pour créer Skia lui-même, voir https://github.com/JetBrains/skia-build/
Les exemples nécessitent une construction locale de Skija (voir Construction de Skija).
Voir exemples/.
Les contributions sont les bienvenues !
Assurez-vous de lire les conventions du code.
N'oubliez pas : l'objectif de Skija est de cartographier l'API Skia le plus fidèlement possible.
Ces choses ont leur place à Skija :
Ceux-ci ne :
Les éléments utiles construits sur Skia/Skija sont toujours les bienvenus – en tant que bibliothèques.