Example #1
0
void z_draw_picture (void)
{
    zword pic = zargs[0];

    zword y = zargs[1];
    zword x = zargs[2];

    int i;

    flush_buffer ();

    if (y == 0)                 /* use cursor line if y-coordinate is 0 */
        y = cwp->y_cursor;
    if (x == 0)                 /* use cursor column if x-coordinate is 0 */
        x = cwp->x_cursor;

    y += cwp->y_pos - 1;
    x += cwp->x_pos - 1;

    /* The following is necessary to make Amiga and Macintosh story
       files work with MCGA graphics files.  Some screen-filling
       pictures of the original Amiga release like the borders of
       Zork Zero were split into several MCGA pictures (left, right
       and top borders).  We pretend this has not happened. */

    for (i = 0; mapper[i].story_id != UNKNOWN; i++)

        if (story_id == mapper[i].story_id && pic == mapper[i].pic) {

            int height1, width1;
            int height2, width2;

            int delta = 0;

            os_picture_data (pic, &height1, &width1);
            os_picture_data (mapper[i].pic2, &height2, &width2);

            if (story_id == ARTHUR && pic == 54)
                delta = h_screen_width / 160;

            os_draw_picture (mapper[i].pic1, y + height1, x + delta);
            os_draw_picture (mapper[i].pic2, y + height1, x + width1 - width2 - delta);

        }

    os_draw_picture (pic, y, x);

    if (story_id == SHOGUN)

        if (pic == 3) {

            int height, width;

            os_picture_data (59, &height, &width);
            os_draw_picture (59, y, h_screen_width - width + 1);

        }

}/* z_draw_picture */
Example #2
0
void GlkInterface::showBeyondZorkTitle() {
	uint winW, winH, imgW, imgH;
	winid_t win = glk_window_open(0, 0, 0, wintype_Graphics, 0);
	glk_window_get_size(win, &winW, &winH);

	if (os_picture_data(1, &imgW, &imgH)) {
		os_draw_picture(1, win, Common::Rect(0, 0, winW, winH));
		_events->waitForPress();
	}

	glk_window_close(win, nullptr);
}