O projeto Active Skija está localizado em HumbleUI/Skija
Skia é uma biblioteca gráfica 2D de código aberto que fornece APIs comuns que funcionam em uma variedade de plataformas de hardware e software.
Skija é uma ligação Java de alta qualidade para Skia.
Porque Java não possui gráficos 2D poderosos e modernos - ainda assim!
Há muitas ocasiões em que você pode precisar de gráficos:
As ofertas existentes são: Graphics2D da AWT, GraphicsContext da JavaFX. Eles são bons, mas nada assombrosos.
Entra Skia. Skia tem um histórico comprovado de projetos em escala industrial que dependem dele para todos os aspectos gráficos: Google Chrome, Android, Flutter, Firefox Canvas, Xamarin, LibreOffice. Skia supera todos os kits de ferramentas Java2D existentes em quase todos os benchmarks e também fornece:
Skija traz todo esse poder para a ponta dos seus dedos, tão simples quanto adicionar um jarro ao classpath.
Existem ligações geradas automaticamente para Skia, mas não parecem ter alta adoção:
O projeto Skija tem como objetivo fornecer uma excelente API nativa de Java que seja natural de usar. Em particular:
O objetivo final do Skija é se sentir como uma biblioteca Java e não ter que pensar na parte nativa.
Compose for Desktop, kit de ferramentas de UI declarativa para Kotlin:
Skija Graphics2D, uma implementação da API Java2D:
Demonstrações de Robert Felker:
Vídeos de Haroldo:
Aplicativo de demonstração Skija:
Alfa público. As coisas podem mudar sem aviso prévio.
Observe que Skia é conhecido por alterar sua API com bastante frequência (mensalmente). Skija fará o possível para se proteger dessas alterações, mas às vezes isso pode ser impossível (por exemplo, o método foi removido). Normalmente é algo auxiliar, não se preocupe muito.
Plataformas:
Back-ends:
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 o Skija é tão simples quanto adicionar um arquivo 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 >
Gradil:
repositories {
maven {
url " https://packages.jetbrains.team/maven/p/skija/maven "
}
}
dependencies {
api " org.jetbrains.skija: ${ artifact } : ${ version } "
}
Substitua ${artifact}
e ${version}
por:
Plataforma | ${artifact} | ${version} |
---|---|---|
MacOS Intel | skija-macos-x64 | |
macOS M1 | skija-macos-arm64 | |
Linux | skija-linux | |
Windows | skija-windows |
Comece lendo Primeiros passos.
Os documentos da API estão em desenvolvimento – consulte o código-fonte e os comentários do JavaDoc.
Achei a documentação do SkiaSharp um excelente recurso sobre o que pode ser feito no Skia. Eles também têm bons exemplos e explicações visuais.
Se Skija não tiver documentação para um método ou classe específico, verifique a mesma classe na documentação do Skia. Pode ser que ainda não tenhamos mudado para Java. PRs são bem-vindos!
Por fim, o aplicativo de demonstração LWJGL possui exemplos da maioria das APIs implementadas atualmente.
Pré-requisitos: Git, CMake, Ninja, JDK 9+, $JAVA_HOME, Python 3.
Confira:
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 o próprio Skia, consulte https://github.com/JetBrains/skia-build/
Os exemplos requerem construção local de Skija (consulte Construindo Skija).
Veja exemplos/.
Contribuições são bem-vindas!
Certifique-se de ler as convenções de código.
Lembre-se: o objetivo do Skija é mapear a API Skia o mais próximo possível.
Essas coisas têm um lugar em Skija:
Estes não:
Coisas úteis construídas em cima do Skia/Skija são sempre bem-vindas – como bibliotecas.