void z_scroll_window (void) { zword win = winarg0 (); zword y, x; flush_buffer (); /* Use the correct set of colours when scrolling the window */ if (win != cwin && h_interpreter_number != INTERP_AMIGA) os_set_colour (lo (wp[win].colour), hi (wp[win].colour)); y = wp[win].y_pos; x = wp[win].x_pos; os_scroll_area (y, x, y + wp[win].y_size - 1, x + wp[win].x_size - 1, (short) zargs[1]); if (win != cwin && h_interpreter_number != INTERP_AMIGA) os_set_colour (lo (cwp->colour), hi (cwp->colour)); }/* z_scroll_window */
void z_window_style (void) { zword win = winarg0 (); zword flags = zargs[1]; flush_buffer (); /* Supply default arguments */ if (zargc < 3) zargs[2] = 0; /* Set window style */ switch (zargs[2]) { case 0: wp[win].attribute = flags; break; case 1: wp[win].attribute |= flags; break; case 2: wp[win].attribute &= ~flags; break; case 3: wp[win].attribute ^= flags; break; } if (cwin == win) update_attributes (); }/* z_window_style */
void z_scroll_window (void) { zword win = winarg0 (); zword y, x; flush_buffer (); /* Use the correct set of colours when scrolling the window */ if (win != cwin && !amiga_screen_model ()) os_set_colour (lo (wp[win].colour), hi (wp[win].colour)); y = wp[win].y_pos; x = wp[win].x_pos; os_scroll_area (y, x, y + wp[win].y_size - 1, x + wp[win].x_size - 1, (short) zargs[1]); if (win != cwin && !amiga_screen_model ()) os_set_colour (lo (cwp->colour), hi (cwp->colour)); }/* z_scroll_window */
/* * z_put_wind_prop, set the value of a window property. * * zargs[0] = window (-3 is the current one) * zargs[1] = number of window property to set * zargs[2] = value to set window property to * */ void z_put_wind_prop (void) { flush_buffer (); if (zargs[1] >= 16) runtime_error (ERR_ILL_WIN_PROP); ((zword *) (wp + winarg0 ())) [zargs[1]] = zargs[2]; }/* z_put_wind_prop */
/* * z_get_wind_prop, store the value of a window property. * * zargs[0] = window (-3 is the current one) * zargs[1] = number of window property to be stored * */ void z_get_wind_prop (void) { flush_buffer (); if (zargs[1] >= 16) runtime_error (ERR_ILL_WIN_PROP); store (((zword *) (wp + winarg0 ())) [zargs[1]]); }/* z_get_wind_prop */
/* * z_erase_window, erase a window or the screen to background colour. * * zargs[0] = window (-3 current, -2 screen, -1 screen & unsplit) * */ void z_erase_window (void) { flush_buffer (); if ((short) zargs[0] == -1 || (short) zargs[0] == -2) erase_screen (zargs[0]); else erase_window (winarg0 ()); }/* z_erase_window */
void z_move_window (void) { zword win = winarg0 (); flush_buffer (); wp[win].y_pos = zargs[1]; wp[win].x_pos = zargs[2]; if (win == cwin) update_cursor (); }/* z_move_window */
void z_window_size (void) { zword win = winarg0 (); flush_buffer (); wp[win].y_size = zargs[1]; wp[win].x_size = zargs[2]; /* Keep the cursor within the window */ if (wp[win].y_cursor > zargs[1] || wp[win].x_cursor > zargs[2]) reset_cursor (win); }/* z_window_size */
void z_get_wind_prop (void) { flush_buffer (); if (zargs[1] < 16) store (((zword *) (wp + winarg0 ())) [zargs[1]]); else if (zargs[1] == 16) store (os_to_true_colour (lo (wp [winarg0 ()].colour))); else if (zargs[1] == 17) { zword bg = hi (wp [winarg0 ()].colour); if (bg == TRANSPARENT_COLOUR) store ((zword) -4); else store (os_to_true_colour (bg)); } else runtime_error (ERR_ILL_WIN_PROP); }/* z_get_wind_prop */
void z_set_window (void) { set_window (winarg0 ()); }/* z_set_window */
void z_mouse_window (void) { mwin = ((short) zargs[0] == -1) ? -1 : winarg0 (); }/* z_mouse_window */