mirror of
https://github.com/brl/mutter.git
synced 2024-11-21 23:50:41 -05:00
2406f225a9
ClutterActor is a particularly heavy user of matrices, and switching to graphene_matrix_* APIs means we had to change the order of operations due to left-hand vs right-hand differences. When applying the actor transform, there are 2 main branches that can be followed: the default transforms, and when a custom transform is set. To facilitate review, here's the table that I've made to guide myself: +--------------- Case 1: Default Transforms --------------+ | CoglMatrix | graphene_matrix_t | +----------------------------+----------------------------+ | multiply (child transform) | translate (-pivot) | | translate (allocation)¹ | rotate_x (angle) | | translate (pivot)¹ | rotate_y (angle) | | translate (translation)¹ | rotate_z (angle) | | scale (sx, sy, sz) | scale (sx, sy, sz) | | rotate_z (angle) | translate (translation)¹ | | rotate_y (angle) | translate (pivot)¹ | | rotate_x (angle) | translate (allocation)¹ | | translate (-pivot) | multiply (child transform) | +----------------------------+----------------------------+ ¹ - these 3 translations are simplified as a single call to translate(allocation + pivot + translation) +---------------- Case 2: Custom Transform ---------------+ | CoglMatrix | graphene_matrix_t | +----------------------------+----------------------------+ | multiply (child transform) | translate (-pivot) | | translate (allocation)² | multiply (transform) | | translate (pivot)² | translate (pivot)² | | multiply (transform) | translate (allocation)² | | translate (-pivot) | multiply (child transform) | +----------------------------+----------------------------+ ² - likewise, these 2 translations are simplified as a single call to translate(allocation + pivot) https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1439 |
||
---|---|---|
.. | ||
clutter | ||
.gitignore | ||
meson.build |