resize method
Implementation
void resize(Vector2 size) {
double scale(LayerFill fill) {
return switch (fill) {
LayerFill.height => parallaxRenderer.image.height / size.y,
LayerFill.width => parallaxRenderer.image.width / size.x,
_ => _scale,
};
}
_scale = scale(parallaxRenderer.fill);
// The image size so that it fulfills the LayerFill parameter
_imageSize = parallaxRenderer.image.size / _scale;
// Number of images that can fit on the canvas plus one
// to have something to scroll to without leaving canvas empty
final count = Vector2.all(1) + (size.clone()..divide(_imageSize));
// Percentage of the image size that will overflow
final overflow = ((_imageSize.clone()..multiply(count)) - size)
..divide(_imageSize);
// Align image to correct side of the screen
final alignment = parallaxRenderer.alignment;
final marginX = alignment.x * overflow.x / 2 + overflow.x / 2;
final marginY = alignment.y * overflow.y / 2 + overflow.y / 2;
_scroll.setValues(marginX, marginY);
// Size of the area to paint the images on
final paintSize = count..multiply(_imageSize);
_paintArea = paintSize.toRect();
}