insetChartMatrix function
Implementation
Matrix4 insetChartMatrix(Matrix4 preliminary, ILayoutData dimensions, ResolvedChartInsets insets) {
if (insets.isEmpty || dimensions.width <= 0.0 || dimensions.height <= 0.0) return preliminary;
final horizontal = insets.left + insets.right;
final vertical = insets.top + insets.bottom;
final collapseX = horizontal >= dimensions.width;
final collapseY = vertical >= dimensions.height;
final offsetX = collapseX ? dimensions.width * insets.left / horizontal : insets.left;
final offsetY = collapseY ? dimensions.height * insets.top / vertical : insets.top;
final scaleX = collapseX ? 0.0 : (dimensions.width - horizontal) / dimensions.width;
final scaleY = collapseY ? 0.0 : (dimensions.height - vertical) / dimensions.height;
return Matrix4.identity()
..translateByVector3(Vector3(offsetX, offsetY, 0.0))
..scaleByVector3(Vector3(scaleX, scaleY, 1.0))
..multiply(preliminary);
}