# Graphical Window Sprites

## version 1 by Erik Temple

Part 2 - Backgrounds and Scaling

Grid-background is a truth state that varies. Grid-background is usually false. The grid-x is a number that varies. The grid-y is a number that varies. Grid-x is 0. Grid-y is 0.

The window x-scaling factor is a real number that varies. The window y-scaling factor is a real number that varies. The window-scaling factor is a real number that varies. The window-scaling factor is 1.0000.

The window x-offset is a number that varies. The window y-offset is a number that varies.

Background-width is a number that varies. Background-height is a number that varies.

To determine the scaling and offset factors:
let x-win be current graphics window width [defined by Simple Graphical Window] as a fixed point number;
let y-win be current graphics window height [defined by Simple Graphical Window] as a fixed point number;
if grid-background is false:
change grid-x to the image-width of the currently shown picture;
change grid-y to the image-height of the currently shown picture;
let x-bkgd be grid-x;
let y-bkgd be grid-y;
if x-bkgd < 1:
say "***Debug msg: No background defined.";
rule fails;
change the window x-scaling factor to x-win real divided by x-bkgd;
change the window y-scaling factor to y-win real divided by y-bkgd;
if the window x-scaling factor is real greater than the window y-scaling factor:
change the window-scaling factor to the window y-scaling factor;
otherwise:
change the window-scaling factor to the window x-scaling factor;
change background-width to the window-scaling factor real times the x-bkgd as an integer;
change background-height to the window-scaling factor real times the y-bkgd as an integer;
change window x-offset to the current graphics window width minus background-width divided by 2;
change window y-offset to the current graphics window height minus background-height divided by 2.

To determine the offset factor:
if grid-background is false:
change grid-x to the image-width of the currently shown picture;
change grid-y to the image-height of the currently shown picture;
change background-width to grid-x;
change background-height to grid-y;
if background-width < 1:
say "***Debug msg: No background defined.";
rule fails;
change window x-offset to the current graphics window width minus background-width divided by 2;
change window y-offset to the current graphics window height minus background-height divided by 2.

To decide which real number is (N - a number) scaled by (R - a real number):
Let temp be N as a fixed point number;
let temp be temp real times R;
decide on temp.

To decide which real number is (N - a real number) scaled by (R - a real number):
Let temp be N real times R;
decide on temp.

To decide what number is the image-width of (img - a figure-name):
(- FindImageWidth({img}); -)

To decide what number is the image-height of (img - a figure-name):
(- FindImageHeight({img}); -)