Skip to content

Technical details

Ruben Van Boxem edited this page Jul 20, 2017 · 1 revision

This wiki currently onyl contains work-in-progress technical details.

For more information about the project, please see the README.md file in the main repository

Platform abstraction

All drawing is handled by the Skia library, which either uses CPU and a memory buffer or a more complicated hardware backend such as OpenGL. Both need some glue to connect Skia's result to what is shown on screen. This glue is contained in the visual implementations in the gui library. Events are handled by the events components, and the native windows/views are handled by the window components:

  • window: implementations for XCB, XLib, Win32, AppKit, UIKit.
  • visual: implementations for XCB, Win32, GLX, EGL, WGL, CGL.
  • events: implementations for XCB, Win32, AppKit, UIKit.

These are combined in a way transparent to the user of the library. Every application should be independent of the underlying abstraction, and the functional result should be identical. Obviously some differences with respect to font rendering, performance, and slight visual differences might appear, but if these become noticeable, SkUI aims to decrease the difference between them.

It goes without saying that not all of these can be freely combined. Besides the availability of the underlying library or framework, some combinations are just not compatible. The tables below show the compatibility between various window, events, and visual combinations.

Clone this wiki locally