OLD | NEW |
(Empty) | |
| 1 SKY SDK |
| 2 ======== |
| 3 |
| 4 Sky and Sky's SDK are designed as layered frameworks, where each layer |
| 5 depends on the ones below it but could be replaced wholesale. |
| 6 |
| 7 The bottom-most layer is the Sky Platform, which is exposed to Dart |
| 8 code as various ```dart:``` packages, including ```dart:sky```. |
| 9 |
| 10 The [base/](base/) directory contains libraries that extend these core |
| 11 APIs to provide base classes for tree structures |
| 12 ([base/node.dart](base/node.dart)), hit testing |
| 13 ([base/hit_test.dart](base/hit_test.dart)), debugging |
| 14 ([base/debug.dart](base/debug.dart)), and task scheduling |
| 15 ([base/scheduler.dart](base/scheduler.dart)). |
| 16 |
| 17 Above this are the files in the [painting/](painting/) directory, |
| 18 which provide APIs related to drawing graphics, and in the |
| 19 [animation/](animation/) directory, which provide core primitives for |
| 20 animating values. |
| 21 |
| 22 Layout primitives are provided in the next layer, found in the |
| 23 [rendering/](rendering/) directory. They use ```dart:sky``` and the |
| 24 APIs exposed in painting/ to provide a retained-mode layout and |
| 25 rendering model for applications or documents. |
| 26 |
| 27 Widgets are provided by the files in the [widgets/](widgets/) |
| 28 directory, using a reactive framework. They use data given in the |
| 29 [theme/](theme/) directory to select styles consistent with Material |
| 30 Design. |
| 31 |
| 32 Text input widgets are layered on this mechanism and can be found in |
| 33 the [editing/](editing/) directory. |
| 34 |
| 35 Alongside the above is the [mojo/](mojo/) directory, which contains |
| 36 anything that uses the Mojo IPC mechanism, typically as part of |
| 37 wrapping host operating system features. Some of those Host APIs are |
| 38 implemented in the host system's preferred language. |
| 39 |
| 40 Here is a diagram summarising all this: |
| 41 |
| 42 ``` |
| 43 +-----------------------------+ ------ |
| 44 | YOUR APP | |
| 45 | +--------------------+--+ |
| 46 | | [editing/](editing/) | | |
| 47 | +--+-------------------++ | |
| 48 | | [widgets/](widgets/) ([theme/](theme/)) | | |
| 49 | ++---------------------++ | Dart |
| 50 | | [rendering/](rendering/) | | |
| 51 +-+---------+------------+ | |
| 52 | [painting/](painting/) | [animation/](animation/) | | |
| 53 +---------------+--------+ | |
| 54 | [base/](base/) | [mojo/](mojo/) | |
| 55 +------------+--+-+----+------+ ------- |
| 56 | dart:sky | | | Host | |
| 57 +--------+---+ | | APIs | C++ |
| 58 | Skia | [Dart](https://api.dartlang.org/) | +------+ ObjC |
| 59 +--------+--------+ | Java |
| 60 | Mojo | |
| 61 +-----------------------------+ ------- |
| 62 | Host Operating System | C/C++ |
| 63 +-----------------------------+ ------- |
| 64 ``` |
| 65 |
| 66 TODO(ianh): document dart:sky and the Host APIs somewhere |
OLD | NEW |