El proyecto Active Skija está ubicado en HumbleUI/Skija
Skia es una biblioteca de gráficos 2D de código abierto que proporciona API comunes que funcionan en una variedad de plataformas de hardware y software.
Skija es un enlace Java de alta calidad para Skia.
Porque Java no tiene gráficos 2D potentes y modernos, ¡todavía!
Hay muchas ocasiones en las que es posible que necesites gráficos:
Las ofertas existentes son: Graphics2D de AWT, GraphicsContext de JavaFX. Son buenos, pero decepcionantes.
Entra Skiá. Skia tiene un historial comprobado de proyectos a escala industrial que confían en él para todo lo relacionado con gráficos: Google Chrome, Android, Flutter, Firefox Canvas, Xamarin, LibreOffice. Skia supera a todos los kits de herramientas Java2D existentes en casi todos los puntos de referencia y también proporciona:
Skija pone todo este poder en la punta de tus dedos, tan simple como agregar un frasco a classpath.
Existen enlaces generados automáticamente para Skia, pero no parecen tener una gran adopción:
El proyecto Skija tiene como objetivo proporcionar una excelente API nativa de Java que sea natural de usar. En particular:
El objetivo final de Skija es sentirse como una biblioteca Java y no tener que pensar en absoluto en la parte nativa.
Compose for Desktop, kit de herramientas de interfaz de usuario declarativa para Kotlin:
Skija Graphics2D, una implementación de la API Java2D:
Demostraciones de Robert Felker:
Vídeos de Harold:
Aplicación de demostración Skija:
Alfa público. Las cosas pueden cambiar sin previo aviso.
Tenga en cuenta que se sabe que Skia cambia su API con bastante frecuencia (mensualmente). Skija hará todo lo posible para protegerse de estos cambios, pero a veces puede ser imposible (por ejemplo, se eliminó el método). Normalmente son cosas auxiliares, no te preocupes demasiado.
Plataformas:
Servidores:
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 ▓▓▓▓▓▓▓▓░░
Usar Skija es tan simple como agregar un archivo jar.
experto:
< 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 >
Gradle:
repositories {
maven {
url " https://packages.jetbrains.team/maven/p/skija/maven "
}
}
dependencies {
api " org.jetbrains.skija: ${ artifact } : ${ version } "
}
Reemplace ${artifact}
y ${version}
con:
Plataforma | ${artifact} | ${version} |
---|---|---|
MacOS Intel | skija-macos-x64 | |
macOS M1 | skija-macos-arm64 | |
linux | skija-linux | |
ventanas | skija-windows |
Comience leyendo Primeros pasos.
Los documentos API están en desarrollo: consulte el código fuente y los comentarios de JavaDoc.
La documentación de SkiaSharp me pareció un recurso excelente sobre lo que se puede hacer en Skia. También tienen buenos ejemplos y explicaciones visuales.
Si a Skija le falta documentación para un método o clase en particular, consulte la misma clase en la documentación de Skia. Es posible que aún no lo hayamos trasladado a Java. ¡Los relaciones públicas son bienvenidos!
Finalmente, la aplicación de demostración LWJGL tiene ejemplos de la mayoría de las API que están implementadas actualmente.
Requisitos previos: Git, CMake, Ninja, JDK 9+, $JAVA_HOME, Python 3.
Verificar:
git clone https://github.com/JetBrains/skija.git
cd skija
./script/build.py
Para codificar:
security find-identity
export APPLE_CODESIGN_IDENTITY= " <...> "
./script/build.py
Para construir Skia, consulte https://github.com/JetBrains/skia-build/
Los ejemplos requieren la construcción local de Skija (ver Construcción de Skija).
Ver ejemplos/.
¡Las contribuciones son bienvenidas!
Asegúrese de leer las convenciones del código.
Recuerde: el objetivo de Skija es mapear la API de Skia lo más cerca posible.
Estas cosas tienen un lugar en Skija:
Estos no:
Las cosas útiles construidas sobre Skia/Skija siempre son bienvenidas, como bibliotecas.