예제 #1
0
파일: screen.c 프로젝트: Hoffa/nFrotz
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 */
예제 #2
0
파일: screen.c 프로젝트: Hoffa/nFrotz
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 */
예제 #3
0
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 */
예제 #4
0
파일: screen.c 프로젝트: BAM-X/frotz
/*
 * 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 */
예제 #5
0
파일: screen.c 프로젝트: BAM-X/frotz
/*
 * 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 */
예제 #6
0
파일: screen.c 프로젝트: BAM-X/frotz
/*
 * 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 */
예제 #7
0
파일: screen.c 프로젝트: Hoffa/nFrotz
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 */
예제 #8
0
파일: screen.c 프로젝트: Hoffa/nFrotz
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 */
예제 #9
0
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 */
예제 #10
0
파일: screen.c 프로젝트: Hoffa/nFrotz
void z_set_window (void)
{

    set_window (winarg0 ());

}/* z_set_window */
예제 #11
0
파일: screen.c 프로젝트: Hoffa/nFrotz
void z_mouse_window (void)
{

    mwin = ((short) zargs[0] == -1) ? -1 : winarg0 ();

}/* z_mouse_window */