Hixie 41c3e58e27 Use the baseline information exposed by C++ to pipe baseline data through RenderBox.
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.
2015-06-24 17:01:14 -07:00
..
2015-06-18 22:29:04 -07:00

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