/* * viewport.h * * Written by * Andreas Boose * Ettore Perazzoli * * This file is part of VICE, the Versatile Commodore Emulator. * See README for copyright notice. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA. * */ #ifndef _VIEWPORT_H #define _VIEWPORT_H #include "types.h" /* A simple convenience type for defining rectangular areas. */ struct rectangle_s { unsigned int width; unsigned int height; }; typedef struct rectangle_s rectangle_t; /* A simple convenience type for defining screen positions. */ struct position_s { unsigned int x; unsigned int y; }; typedef struct position_s position_t; struct viewport_s { /* Title for the viewport. FIXME: Duplicated info from the canvas? */ char *title; /* Offset of the screen on the window. */ unsigned int x_offset, y_offset; /* First and last lines shown in the output window. */ unsigned int first_line, last_line; /* First pixel in one line of the frame buffer to be shown on the output window. */ unsigned int first_x; /* Only display canvas if this flag is set. */ int update_canvas; }; typedef struct viewport_s viewport_t; struct geometry_s { /* Total size of the screen, including borders and unused areas. (SCREEN_WIDTH, SCREEN_HEIGHT) */ rectangle_t screen_size; /* Size of the graphics area (i.e. excluding borders and unused areas. (SCREEN_XPIX, SCREEN_YPIX) */ rectangle_t gfx_size; /* Size of the text area. (SCREEN_TEXTCOLS) */ rectangle_t text_size; /* Position of the graphics area. (SCREEN_BORDERWIDTH, SCREEN_BORDERHEIGHT) */ position_t gfx_position; /* If nonzero, `gfx_position' is expected to be moved around when poking to the chip registers. */ int gfx_area_moves; /* FIXME: Bad names. */ unsigned int first_displayed_line, last_displayed_line; unsigned int extra_offscreen_border_left; unsigned int extra_offscreen_border_right; }; typedef struct geometry_s geometry_t; #endif