โครงการ Active Skija ตั้งอยู่ที่ HumbleUI/Skija
Skia เป็นไลบรารีกราฟิก 2D แบบโอเพ่นซอร์สซึ่งมี API ทั่วไปที่ทำงานบนแพลตฟอร์มฮาร์ดแวร์และซอฟต์แวร์ที่หลากหลาย
Skija เป็นการผูก Java คุณภาพสูงสำหรับ Skia
เพราะ Java ไม่มีกราฟิก 2D ที่ทรงพลังและทันสมัย — ถึงกระนั้น!
มีหลายครั้งที่คุณอาจต้องการกราฟิก:
ข้อเสนอที่มีอยู่ ได้แก่: Graphics2D จาก AWT, GraphicsContext จาก JavaFX พวกเขาดีแต่ก็น้อยใจ
เข้าสเกีย.. Skia มีประวัติที่พิสูจน์แล้วในโครงการระดับอุตสาหกรรมโดยอาศัยโครงการนี้สำหรับกราฟิกทุกประเภท: Google Chrome, Android, Flutter, Firefox Canvas, Xamarin, LibreOffice Skia มีประสิทธิภาพเหนือกว่าชุดเครื่องมือ Java2D ที่มีอยู่ทั้งหมดในเกือบทุกการวัดประสิทธิภาพ และยังให้:
Skija นำพลังทั้งหมดนี้มาสู่ปลายนิ้วของคุณ ง่ายๆ เพียงเติมขวดโหลลงใน classpath
มีการผูกข้อมูลที่สร้างขึ้นโดยอัตโนมัติสำหรับ Skia แต่ดูเหมือนว่าจะไม่มีการนำไปใช้งานสูง:
โปรเจ็กต์ Skija มีเป้าหมายในการจัดหา Java-native API ที่ยอดเยี่ยมซึ่งใช้งานได้ตามธรรมชาติ โดยเฉพาะ:
เป้าหมายสูงสุดสำหรับ Skija คือการรู้สึกเหมือนเป็นไลบรารี Java และไม่ต้องคิดถึงส่วนดั้งเดิมเลย
เขียนสำหรับเดสก์ท็อป ชุดเครื่องมือ UI ที่ประกาศสำหรับ Kotlin:
Skija Graphics2D การใช้งาน Java2D API:
การสาธิตของ Robert Felker:
วิดีโอของแฮโรลด์:
แอปสาธิต Skija:
อัลฟ่าสาธารณะ สิ่งต่าง ๆ อาจเปลี่ยนแปลงได้โดยไม่ต้องแจ้งให้ทราบล่วงหน้า
โปรดทราบว่า Skia เป็นที่รู้กันว่าเปลี่ยน API ค่อนข้างบ่อย (ทุกเดือน) Skija จะพยายามอย่างเต็มที่เพื่อปกป้องจากการเปลี่ยนแปลงเหล่านี้ แต่บางครั้งก็อาจเป็นไปไม่ได้ (เช่น ลบวิธีการออก) ปกติมันเป็นของเสริมครับ อย่ากังวลมาก
แพลตฟอร์ม:
แบ็กเอนด์:
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 ▓▓▓▓▓▓▓▓░░
การใช้ 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 | |
แมคโอเอส M1 | skija-macos-arm64 | |
ลินุกซ์ | skija-linux | |
หน้าต่าง | skija-windows |
เริ่มต้นด้วยการอ่านการเริ่มต้นใช้งาน
เอกสาร API อยู่ระหว่างการพัฒนา — ศึกษาซอร์สโค้ดและความคิดเห็น JavaDoc
ฉันพบว่าเอกสารของ SkiaSharp เป็นแหล่งข้อมูลที่ดีเยี่ยมเกี่ยวกับสิ่งที่สามารถทำได้ใน Skia พวกเขามีตัวอย่างที่ดีและคำอธิบายด้วยภาพด้วย
หาก Skija ไม่มีเอกสารประกอบสำหรับวิธีการหรือคลาสเฉพาะ ให้ตรวจสอบคลาสเดียวกันใน Skia Documentation แทน อาจเป็นไปได้ว่าเรายังไม่ได้ย้ายไปยัง 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)
ดูตัวอย่าง/.
ยินดีบริจาค!
อย่าลืมอ่าน Code Conventions
ข้อควรจำ: เป้าหมายของ Skija คือการทำแผนที่ Skia API ให้ใกล้เคียงที่สุด
สิ่งเหล่านี้มีสถานที่ใน Skija:
สิ่งเหล่านี้ไม่:
เรายินดีต้อนรับสิ่งที่เป็นประโยชน์ที่สร้างขึ้นจาก Skia/Skija เสมอ — ในฐานะห้องสมุด