nkeynes@31: /** nkeynes@65: * $Id: video.c,v 1.3 2006-01-03 12:21:45 nkeynes Exp $ nkeynes@31: * nkeynes@31: * The PC side of the video support (responsible for actually displaying / nkeynes@31: * rendering frames) nkeynes@31: * nkeynes@31: * Copyright (c) 2005 Nathan Keynes. nkeynes@31: * nkeynes@31: * This program is free software; you can redistribute it and/or modify nkeynes@31: * it under the terms of the GNU General Public License as published by nkeynes@31: * the Free Software Foundation; either version 2 of the License, or nkeynes@31: * (at your option) any later version. nkeynes@31: * nkeynes@31: * This program is distributed in the hope that it will be useful, nkeynes@31: * but WITHOUT ANY WARRANTY; without even the implied warranty of nkeynes@31: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nkeynes@31: * GNU General Public License for more details. nkeynes@31: */ nkeynes@31: nkeynes@1: #include nkeynes@65: #include nkeynes@1: nkeynes@1: GdkImage *img; nkeynes@1: GtkWindow *video_win; nkeynes@1: GtkWidget *video_area; nkeynes@1: char *video_data; nkeynes@65: uint32_t video_width = 640; nkeynes@65: uint32_t video_height = 480; nkeynes@65: uint32_t video_frame_count = 0; nkeynes@1: nkeynes@1: void video_open( void ) nkeynes@1: { nkeynes@1: img = gdk_image_new( GDK_IMAGE_FASTEST, gdk_visual_get_system(), nkeynes@1: 640, 480 ); nkeynes@1: video_win = GTK_WINDOW(gtk_window_new( GTK_WINDOW_TOPLEVEL )); nkeynes@1: video_area = gtk_image_new_from_image(img, NULL); nkeynes@1: gtk_widget_show( video_area ); nkeynes@1: gtk_container_add( GTK_CONTAINER(video_win), video_area ); nkeynes@1: video_data = img->mem; nkeynes@1: nkeynes@1: gtk_window_set_title( video_win, "DreamOn! - Emulation Window" ); nkeynes@1: gtk_window_set_policy( video_win, FALSE, FALSE, FALSE ); nkeynes@1: gtk_window_set_default_size( video_win, 640, 480 ); nkeynes@1: nkeynes@1: gtk_widget_show( GTK_WIDGET(video_win) ); nkeynes@1: } nkeynes@1: nkeynes@65: /** nkeynes@65: * Fill the entire frame with the specified colour (00RRGGBB) nkeynes@65: */ nkeynes@65: void video_fill( uint32_t colour ) nkeynes@65: { nkeynes@65: char *p = video_data; nkeynes@65: int i; nkeynes@65: for( i=0; i>16) & 0xFF; nkeynes@65: *p++ = (colour>>8) & 0xFF; nkeynes@65: *p++ = (colour) & 0xFF; nkeynes@65: } nkeynes@65: } nkeynes@65: nkeynes@1: void video_update_frame( void ) nkeynes@1: { nkeynes@65: video_frame_count++; nkeynes@1: gtk_widget_queue_draw( video_area ); nkeynes@1: } nkeynes@1: nkeynes@1: void video_update_size( int hres, int vres, int colmode ) nkeynes@1: { nkeynes@1: /* do something intelligent */ nkeynes@1: }