app: round layer bounds to global pixel grid when scaling image/group
Add gimp_item_scale_by_factors_with_origin(), which is an extension of gimp_item_scale_by_factors(), taking the input/output points of origin for the transformation (both of which are (0, 0) in the case of gimp_item_scale_by_factors()). Implement gimp_item_scale_by_factors() in terms of the new function, and Use the new function when scaling group layers, instead of manually calculating the children boundaries, so that the behavior is uniform across whole-image scaling and group-layer scaling. The new function rounds all four edges of the boundary to the image-global pixel grid, instead of only rounding the top/left edges to the global grid, and the bottom/right edges to the item- local grid. This preserves layer-adjacency when scaling.
Showing with 100 additions and 49 deletions