snes9x/gtk/src/gtk_s9xwindow.h

108 lines
3.6 KiB
C
Raw Normal View History

/*****************************************************************************\
Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
This file is licensed under the Snes9x License.
For further information, consult the LICENSE file in the root directory.
\*****************************************************************************/
2010-09-25 17:46:12 +02:00
#ifndef __GTK_S9XWINDOW_H
#define __GTK_S9XWINDOW_H
#include "gtk_2_3_compat.h"
2010-09-25 17:46:12 +02:00
#include "port.h"
2010-09-26 11:19:15 +02:00
#include "gtk_builder_window.h"
#include "gtk_config.h"
2010-09-25 17:46:12 +02:00
2010-09-26 11:19:15 +02:00
class Snes9xWindow : public GtkBuilderWindow
2010-09-25 17:46:12 +02:00
{
public:
Snes9xWindow (Snes9xConfig *config);
/* Pause related functions */
void pause_from_focus_change ();
void unpause_from_focus_change ();
void focus_notify (bool state);
void pause_from_user ();
void unpause_from_user ();
bool is_paused ();
void propagate_pause_state ();
2010-09-25 17:46:12 +02:00
/* Fullscreen functions */
void enter_fullscreen_mode ();
void leave_fullscreen_mode ();
void toggle_fullscreen_mode ();
void finish_fullscreen ();
2010-09-25 17:46:12 +02:00
/* Cursor modifying functions */
void show_mouse_cursor ();
void hide_mouse_cursor ();
2018-11-08 21:23:37 +01:00
void toggle_grab_mouse ();
void center_mouse ();
2010-09-25 17:46:12 +02:00
/* Rom-related functions */
void open_rom_dialog ();
void save_state_dialog ();
void load_state_dialog ();
void configure_widgets ();
void save_spc_dialog ();
bool try_open_rom (const char *filename);
2010-09-25 17:46:12 +02:00
const char *open_movie_dialog (bool readonly);
void movie_seek_dialog ();
void open_multicart_dialog ();
void show_rom_info ();
2010-09-25 17:46:12 +02:00
/* GTK-base-related functions */
void show ();
2010-09-25 17:46:12 +02:00
void show_status_message (const char *message);
void update_statusbar ();
void toggle_statusbar ();
2010-09-25 17:46:12 +02:00
void set_menu_item_selected (const char *name);
void set_mouseable_area (int x, int y, int width, int height);
void set_menu_item_accel_to_binding (const char *name,
const char *binding);
void reset_screensaver ();
void update_accels ();
void toggle_ui ();
2014-03-29 11:48:35 +01:00
void resize_to_multiple (int factor);
2010-09-25 17:46:12 +02:00
void resize_viewport (int width, int height);
void expose ();
double get_refresh_rate ();
int get_auto_input_rate ();
2010-09-25 17:46:12 +02:00
cairo_t *get_cairo ();
void release_cairo ();
2017-12-07 19:24:29 +01:00
2010-09-25 17:46:12 +02:00
Snes9xConfig *config;
int user_pause, sys_pause;
2010-09-25 17:46:12 +02:00
int last_width, last_height;
int mouse_region_x, mouse_region_y;
int mouse_region_width, mouse_region_height;
int nfs_width, nfs_height, nfs_x, nfs_y;
int fullscreen_state;
int maximized_state;
bool focused;
bool paused_from_focus_loss;
2010-09-25 17:46:12 +02:00
uint16 mouse_loc_x, mouse_loc_y;
2018-11-08 21:23:37 +01:00
uint16 mouse_reported_x, mouse_reported_y;
bool mouse_grabbed;
2010-09-25 17:46:12 +02:00
GdkPixbuf *icon, *splash;
2010-09-26 11:19:15 +02:00
GdkCursor *default_cursor, *empty_cursor;
2010-09-25 17:46:12 +02:00
GtkDrawingArea *drawing_area;
GtkWidget *recent_menu;
2017-12-07 19:24:29 +01:00
cairo_t *cr;
bool cairo_owned;
#if GTK_MAJOR_VERSION >= 3
2017-12-07 19:24:29 +01:00
GdkDrawingContext *gdk_drawing_context;
cairo_region_t *cairo_region;
#endif
2010-09-25 17:46:12 +02:00
};
typedef struct gtk_splash_t {
unsigned int width;
unsigned int height;
unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */
unsigned char pixel_data[256 * 224 * 3 + 1];
} gtk_splash_t;
2010-09-25 17:46:12 +02:00
#endif /* __GTK_S9XWINDOW_H */