La vallée mystérieuse — 7 of 14

Otto Grimwald

Release 1

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.]