// Ported from georust/geo
// https://github.com/georust/geo/blob/main/geo/src/algorithm/scale.rs

///|
/// Scale a geometry by `(xfact, yfact)` around `origin`.
pub fn scale_geometry_around(
  g : @type.Geometry,
  xfact : Double,
  yfact : Double,
  origin : @type.Coord,
) -> @type.Geometry {
  let to_origin = AffineTransform::translate_xy(-origin.x(), -origin.y())
  let scaling = AffineTransform::scale_xy(xfact, yfact)
  let from_origin = AffineTransform::translate_xy(origin.x(), origin.y())
  to_origin.compose(scaling).compose(from_origin).transform(g)
}

///|
/// Uniform scale around the origin.
pub fn scale_geometry(g : @type.Geometry, factor : Double) -> @type.Geometry {
  AffineTransform::scale_xy(factor, factor).transform(g)
}