Active 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는 거의 모든 벤치마크에서 기존의 모든 Java2D 툴킷보다 성능이 뛰어나며 다음도 제공합니다.
Skija는 클래스 경로에 병을 추가하는 것만큼 간단하게 이 모든 기능을 손가락 끝으로 가져옵니다.
Skia에 대해 자동으로 생성된 바인딩이 존재하지만 채택률이 높지 않은 것 같습니다.
Skija 프로젝트는 자연스럽게 사용할 수 있는 훌륭한 Java 네이티브 API를 제공하는 것을 목표로 합니다. 특히:
Skija의 궁극적인 목표는 Java 라이브러리처럼 느껴지고 네이티브 부분에 대해 전혀 생각할 필요가 없는 것입니다.
데스크톱용 Compose, Kotlin용 선언적 UI 도구 키트:
Java2D API 구현인 Skija Graphics2D:
로버트 펠커 데모:
해럴드 동영상:
Skija 데모 앱:
공개 알파. 상황은 예고 없이 변경될 수 있습니다.
Skia는 API를 매우 자주(매월) 변경하는 것으로 알려져 있습니다. Skija는 이러한 변경으로부터 보호하기 위해 최선을 다할 것이지만 때로는 불가능할 수도 있습니다(예: 방법이 제거됨). 일반적으로 보조적인 내용이므로 너무 걱정하지 마십시오.
플랫폼:
백엔드:
아피스:
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 | |
맥OS M1 | skija-macos-arm64 | |
리눅스 | 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를 최대한 가깝게 매핑하는 것입니다.
Skija에는 다음과 같은 것들이 있습니다.
다음은 그렇지 않습니다.
Skia/Skija 위에 구축된 유용한 것들은 라이브러리로서 언제나 환영합니다.