Chapter 6 - Flexible Windows (for Glulx only)
Include Flexible Windows by Jon Ingold.
The graphics-window is a graphics g-window spawned by the main-window.
The graphics-window has back-colour g-white.
The measurement of the graphics-window is 222.
The position of the graphics-window is g-placeabove.
The current image is a figure name variable.
When play begins:
open up the graphics-window;
depict the figure of intro.
carry out restarting the game:
shut down the graphics-window.
To depict (f - a figure-name):
now the current image is f;
follow the window-drawing rules for the graphics-window.
The border-measure of a bordered g-window is usually 0.
Include (-
! Doing scaling calculations in I6 lets us handle bigger numbers
[ GetImageSize curimg index result;
result = glk_image_get_info( ResourceIDsOfFigures-->curimg, gg_arguments, gg_arguments+WORDSIZE);
return gg_arguments-->index;
];
[ DrawScaled figure g w_total h_total graph_height graph_width w_offset h_offset;
graph_height = WindowSize(g, 1);
graph_width = gg_arguments-->0;
w_total = GetImageSize(figure, 0);
h_total = gg_arguments-->1;
if (graph_height - h_total < 0) ! if the image won't fit, find the scaling factor
{
w_total = (graph_height * w_total)/h_total;
h_total = graph_height;
}
if (graph_width - w_total < 0)
{
h_total = (graph_width * h_total)/w_total;
w_total = graph_width;
}
w_offset = (graph_width - w_total)/2; if (w_offset < 0) w_offset = 0;
h_offset = (graph_height - h_total)/2; if (h_offset < 0) h_offset = 0;
glk_image_draw_scaled(g.ref_number, ResourceIDsOfFigures-->figure, w_offset, h_offset, w_total, h_total);
];
-).
Window-drawing rule for the graphics-window (this is the draw scaled image rule):
if graphics-window is g-unpresent, rule fails;
clear the graphics-window;
draw scaled copy of current image in graphics-window.
To draw scaled copy of (f - a figure-name) in (g - a g-window):
(- DrawScaled({f}, {g}); -) .
[Include Graphical Window Sprites by Erik Temple.]
[Chapter 6 - Decoration (for Glulx only)
Include Glimmr Canvas-Based Drawing by Erik Temple.
Include Glimmr Graphic Hyperlinks by Erik Temple.
Include Glimmr Simple Graphics Window by Erik Temple.
When play begins:
open up the graphics-window.]