Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
Signed-off-by: Anagnostakis Ioannis <[email protected]>
  • Loading branch information
rizitis committed Feb 6, 2025
1 parent 3103140 commit 79c7a8c
Show file tree
Hide file tree
Showing 2 changed files with 118 additions and 16 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@


If you want to build your own: https://skia.org/docs/user/build/

For how and when use statics, read https://github.com/rizitis/skia/blob/main/static-libs/README.md
132 changes: 116 additions & 16 deletions static-libs/README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,123 @@

Whether you need libdng_sdk.a, libpathkit.a, libpiex.a, libskcms.a, and libwuffs.a depends on your specific use case with Skia. Here's a brief explanation of what each of these libraries is typically used for:
These libraries are essential building blocks for Skia and related projects. Depending on your application's needs—whether it’s handling advanced text rendering, GPU acceleration, raw image formats, or color management—these libraries can be included or excluded accordingly. For a simple graphics application, you might only need libskia.a, but for more advanced use cases, you may need to include many of the others listed here:

libdng_sdk.a:
Purpose: This is a static library related to the DNG (Digital Negative) SDK. It is used for handling DNG files, which are a type of raw image format.
Need: If your application needs to work with DNG files or if Skia’s functionality you’re using relies on this SDK, you’ll need this library. Otherwise, it might not be necessary.
liballocator_shim.a

libpathkit.a:
Purpose: This library is related to PathKit, which is used for path manipulation and text layout. It is often used in graphics and text rendering.
Need: If your application involves complex text layout or path operations, this library is important. For basic graphics operations, it might not be essential.
Purpose: Provides memory allocation utilities, specifically a shim to customize or wrap standard memory allocation mechanisms.
Use Case: May be used for memory management optimizations or to interface with custom memory allocators in Skia.

libpiex.a:
Purpose: This is a static library for handling various image formats, such as JPEG or PNG.
Need: If your application needs to support multiple image formats or if Skia relies on this library for image decoding/encoding, you should keep it. Otherwise, it may not be needed for simpler use cases.
liballocator_base.a

libskcms.a:
Purpose: This library is for color management. It handles color profiles and conversions.
Need: If your application requires precise color management (e.g., working with ICC profiles or color transformations), this library is important. For basic graphics tasks, it may not be required.
Purpose: Core allocator library.
Use Case: Used for efficient memory allocation within Skia. It provides base-level memory management functionality.

libwuffs.a:
Purpose: Wuffs is a library for decoding and encoding image formats like PNG, JPEG, and more. It's a performant library for handling image formats.
Need: If your application requires decoding/encoding of various image formats and relies on Wuffs, you’ll need this library. Otherwise, it might not be necessary.
libcompression_utils_portable.a

Purpose: Utilities for compression algorithms.
Use Case: Typically used for data compression and decompression tasks. Can be useful for handling compressed image formats or other data types.

libdawn_proc_static.a

Purpose: Static library for Dawn, a cross-platform graphics API.
Use Case: Needed for graphics applications using Dawn for GPU acceleration, particularly with WebGPU.

libpathkit.a

Purpose: Provides tools for path manipulation and layout.
Use Case: Essential for text and graphics rendering that requires advanced path operations like text shaping or vector drawing.

libskcms.a

Purpose: Color management, including handling ICC profiles and color space conversions.
Use Case: Critical for applications requiring color precision, such as digital imaging or printing workflows.

libskottie.a

Purpose: A library for rendering animation data in the Lottie JSON format.
Use Case: Used in apps that need to display animations, such as UI animation or interactive media.

libskparagraph.a

Purpose: Provides functionality for advanced text layout and paragraph formatting.
Use Case: Useful for applications that need to render complex text with proper layout (e.g., word wrapping, multi-line support).

libskshaper.a

Purpose: Text shaping for rendering complex scripts and languages.
Use Case: Essential for supporting languages that require advanced text shaping (like Arabic, Indic languages, etc.).

libspvtools.a

Purpose: Tools for processing SPIR-V, a binary intermediate language for shaders.
Use Case: Useful for graphics applications that require shader compilation and optimization with Vulkan or OpenGL.

libspvtools_reduce.a

Purpose: A library for reducing SPIR-V shaders.
Use Case: Used to minimize shaders or remove unnecessary code to improve shader efficiency.

libutils.a

Purpose: A collection of utility functions for general-purpose use.
Use Case: Provides basic utilities that assist with other components in Skia or related projects.

libbentleyottmann.a

Purpose: Implements the Bentley-Ottmann algorithm for computing the intersection of line segments.
Use Case: Useful for geometric operations and computational geometry tasks like polygon clipping or finding intersections in vector graphics.

libdawn_native_static.a

Purpose: Native static library for Dawn, a low-level graphics API.
Use Case: Provides the foundational GPU capabilities for WebGPU. Used in applications requiring modern, high-performance GPU acceleration.

libdng_sdk.a

Purpose: SDK for handling DNG (Digital Negative) files.
Use Case: Required for applications that need to handle raw images in DNG format, often used in photography and image processing.

libpiex.a

Purpose: A library for handling various image formats, such as JPEG and PNG.
Use Case: Needed for image decoding/encoding operations across multiple formats, useful in applications dealing with image file formats.

libskia.a

Purpose: The core Skia graphics library.
Use Case: Provides the core functionality for rendering graphics, including 2D vector graphics, text rendering, and image manipulation.

libskresources.a

Purpose: Manages Skia resources such as fonts, images, and other assets.
Use Case: Important for applications that require resource management, including loading and managing graphic assets.

libskunicode_core.a

Purpose: Core utilities for Unicode text processing.
Use Case: Essential for working with text in multiple languages, providing Unicode handling capabilities for rendering and manipulation.

libskunicode_icu.a

Purpose: Unicode and text processing library, using ICU (International Components for Unicode).
Use Case: Provides advanced support for internationalization and localization, especially in multi-language or global applications.

libspvtools_link.a

Purpose: A library for linking SPIR-V shaders.
Use Case: Used for compiling and linking shaders into executable forms in graphics programming with Vulkan.

libspvtools_opt.a

Purpose: Optimizes SPIR-V shaders.
Use Case: Used in graphics applications to optimize shader code for better performance.

libsvg.a

Purpose: Handles Scalable Vector Graphics (SVG) files.
Use Case: If your application involves SVG rendering (e.g., web browsers or vector graphic viewers), this library is useful.

libwuffs.a

Purpose: A performant library for image decoding/encoding.
Use Case: A high-performance option for handling image formats such as PNG, JPEG, and others.

0 comments on commit 79c7a8c

Please sign in to comment.