This also fixes the C++ side to give the right baseline information. Previously it was giving the baseline distance for the font, but not for the actual laid-out text. I considered also providing a "defaultBaseline" accessor that returns the distance for the actual dominant baseline, but it turns out right now we never decide the baseline is ideographic. We always use the alphabetic baseline. We should probably fix that... R=eseidel@chromium.org Review URL: https://codereview.chromium.org/1200233002.
SKY SDK
Sky and Sky's SDK are designed as layered frameworks, where each layer depends on the ones below it but could be replaced wholesale.
The bottom-most layer is the Sky Platform, which is exposed to Dart
code as various dart: packages,
including dart:sky.
The base/ directory contains libraries that extend these core APIs to provide base classes for tree structures (base/node.dart), hit testing (base/hit_test.dart), debugging (base/debug.dart), and task scheduling (base/scheduler.dart).
Above this are the files in the painting/ directory, which provide APIs related to drawing graphics, and in the animation/ directory, which provide core primitives for animating values.
Layout primitives are provided in the next layer, found in the
rendering/ directory. They use dart:sky and the
APIs exposed in painting/ to provide a retained-mode layout and
rendering model for applications or documents.
Widgets are provided by the files in the widgets/ directory, using a reactive framework. They use data given in the theme/ directory to select styles consistent with Material Design.
Text input widgets are layered on this mechanism and can be found in the editing/ directory.
Alongside the above is the mojo/ directory, which contains anything that uses the Mojo IPC mechanism, typically as part of wrapping host operating system features. Some of those Host APIs are implemented in the host system's preferred language.
Here is a diagram summarising all this:
+-----------------------------+ ------
| YOUR APP |
| +--------------------+--+
| | editing/ | |
| +--+-------------------++ |
| | widgets/ (theme/) | |
| ++---------------------++ | Dart
| | rendering/ | |
+-+---------+------------+ |
| painting/ | animation/ | |
+---------------+--------+ |
| base/ | mojo/ |
+------------+--+-+----+------+ -------
| dart:sky | | | Host |
+--------+---+ | | APIs | C++
| Skia | Dart | +------+ ObjC
+--------+--------+ | Java
| Mojo |
+-----------------------------+ -------
| Host Operating System | C/C++
+-----------------------------+ -------
TODO(ianh): document dart:sky and the Host APIs somewhere