|
|
| version 1.7, 2007/01/23 15:48:20 | version 1.11, 2011/01/15 16:01:53 |
|---|---|
| Line 33 | Line 33 |
| #include "palettes.h" | #include "palettes.h" |
| #include "scrndraw.h" | #include "scrndraw.h" |
| #include "toolkit.h" | |
| #include "scrnmng.h" | #include "scrnmng.h" |
| #include "mousemng.h" | |
| #include "soundmng.h" | |
| #include "gtk2/xnp2.h" | #include "gtk2/xnp2.h" |
| #include "gtk2/gtk_drawmng.h" | #include "gtk2/gtk_drawmng.h" |
| Line 54 typedef struct { | Line 58 typedef struct { |
| RECT_T rect; /* drawarea に描画するサイズ */ | RECT_T rect; /* drawarea に描画するサイズ */ |
| /* toolkit depend */ | /* toolkit depend */ |
| GdkPixbuf *drawsurf; | |
| GdkPixbuf *backsurf; | GdkPixbuf *backsurf; |
| GdkPixbuf *surface; | GdkPixbuf *surface; |
| double ratio_w, ratio_h; | double ratio_w, ratio_h; |
| Line 71 typedef struct { | Line 76 typedef struct { |
| static SCRNMNG scrnmng; | static SCRNMNG scrnmng; |
| static DRAWMNG drawmng; | static DRAWMNG drawmng; |
| static SCRNSTAT scrnstat; | static SCRNSTAT scrnstat = { 640, 400, 1, SCREEN_DEFMUL }; |
| static SCRNSURF scrnsurf; | static SCRNSURF scrnsurf; |
| static int real_fullscreen; | static int real_fullscreen; |
| Line 411 scrnmng_create(UINT8 mode) | Line 416 scrnmng_create(UINT8 mode) |
| gdk_pixbuf_fill(drawmng.surface, 0); | gdk_pixbuf_fill(drawmng.surface, 0); |
| if (mode & SCRNMODE_FULLSCREEN) { | if (mode & SCRNMODE_FULLSCREEN) { |
| drawmng.drawsurf = | |
| real_fullscreen ? drawmng.backsurf : drawmng.surface; | |
| xmenu_hide(); | xmenu_hide(); |
| if (real_fullscreen) { | gtk_window_fullscreen_mode(main_window); |
| gtk_window_fullscreen_mode(main_window); | |
| } else { | |
| gtk_window_fullscreen(GTK_WINDOW(main_window)); | |
| } | |
| } else { | } else { |
| if (real_fullscreen) { | drawmng.drawsurf = (scrnstat.multiple == SCREEN_DEFMUL) |
| gtk_window_restore_mode(main_window); | ? drawmng.backsurf : drawmng.surface; |
| } else { | gtk_window_restore_mode(main_window); |
| gtk_window_unfullscreen(GTK_WINDOW(main_window)); | |
| } | |
| xmenu_show(); | xmenu_show(); |
| } | } |
| Line 445 scrnmng_destroy(void) | Line 446 scrnmng_destroy(void) |
| } | } |
| } | } |
| void | |
| scrnmng_fullscreen(int onoff) | |
| { | |
| if (onoff) { | |
| gtk_window_fullscreen_mode(main_window); | |
| } else { | |
| gtk_window_restore_mode(main_window); | |
| } | |
| } | |
| RGB16 | RGB16 |
| scrnmng_makepal16(RGB32 pal32) | scrnmng_makepal16(RGB32 pal32) |
| { | { |
| Line 456 void | Line 468 void |
| scrnmng_setwidth(int posx, int width) | scrnmng_setwidth(int posx, int width) |
| { | { |
| UNUSED(posx); | |
| scrnstat.width = width; | scrnstat.width = width; |
| renewal_client_size(); | renewal_client_size(); |
| } | } |
| Line 466 void | Line 476 void |
| scrnmng_setheight(int posy, int height) | scrnmng_setheight(int posy, int height) |
| { | { |
| UNUSED(posy); | |
| scrnstat.height = height; | scrnstat.height = height; |
| renewal_client_size(); | renewal_client_size(); |
| } | } |
| Line 487 scrnmng_setmultiple(int multiple) | Line 495 scrnmng_setmultiple(int multiple) |
| if (scrnstat.multiple != multiple) { | if (scrnstat.multiple != multiple) { |
| scrnstat.multiple = multiple; | scrnstat.multiple = multiple; |
| renewal_client_size(); | if (!(drawmng.scrnmode & SCRNMODE_FULLSCREEN)) { |
| soundmng_stop(); | |
| mouse_running(MOUSE_STOP); | |
| scrnmng_destroy(); | |
| if (scrnmng_create(scrnmode) != SUCCESS) { | |
| toolkit_widget_quit(); | |
| return; | |
| } | |
| renewal_client_size(); | |
| scrndraw_redraw(); | |
| mouse_running(MOUSE_CONT); | |
| soundmng_play(); | |
| } | |
| } | } |
| } | } |
| Line 518 void | Line 538 void |
| scrnmng_surfunlock(const SCRNSURF *surf) | scrnmng_surfunlock(const SCRNSURF *surf) |
| { | { |
| UNUSED(surf); | if (drawmng.drawsurf == drawmng.surface) { |
| if (((drawmng.scrnmode & SCRNMODE_FULLSCREEN) && real_fullscreen) | |
| && !(drawmng.scrnmode & SCRNMODE_FULLSCREEN) && (scrnstat.multiple == SCREEN_DEFMUL)) { | |
| /* Nothing to do */ | |
| } else { | |
| gdk_pixbuf_scale(drawmng.backsurf, drawmng.surface, | gdk_pixbuf_scale(drawmng.backsurf, drawmng.surface, |
| 0, 0, drawmng.rect.right, drawmng.rect.bottom, | 0, 0, drawmng.rect.right, drawmng.rect.bottom, |
| 0, 0, drawmng.ratio_w, drawmng.ratio_h, | 0, 0, drawmng.ratio_w, drawmng.ratio_h, |
| Line 537 void | Line 552 void |
| scrnmng_update(void) | scrnmng_update(void) |
| { | { |
| GdkDrawable *d = drawarea->window; | GdkDrawable *d = drawarea->window; |
| GdkGC *gc = drawarea->style->fg_gc[GTK_WIDGET_STATE(drawarea)]; | GdkGC *gc = drawarea->style->fg_gc[gtk_widget_get_state(drawarea)]; |
| if (scrnmng.palchanged) { | if (scrnmng.palchanged) { |
| scrnmng.palchanged = FALSE; | scrnmng.palchanged = FALSE; |
| Line 563 scrnmng_update(void) | Line 578 scrnmng_update(void) |
| } | } |
| } | } |
| if (((drawmng.scrnmode & SCRNMODE_FULLSCREEN) && real_fullscreen) | gdk_draw_pixbuf(d, gc, drawmng.drawsurf, |
| && !(drawmng.scrnmode & SCRNMODE_FULLSCREEN) && (scrnstat.multiple == SCREEN_DEFMUL)) { | 0, 0, |
| gdk_draw_pixbuf(d, gc, drawmng.backsurf, | drawmng.scrn.left, drawmng.scrn.top, |
| 0, 0, | drawmng.rect.right, drawmng.rect.bottom, |
| drawmng.scrn.left, drawmng.scrn.top, | GDK_RGB_DITHER_NORMAL, 0, 0); |
| drawmng.rect.right, drawmng.rect.bottom, | |
| GDK_RGB_DITHER_NORMAL, 0, 0); | |
| } else { | |
| gdk_draw_pixbuf(d, gc, drawmng.surface, | |
| 0, 0, | |
| drawmng.scrn.left, drawmng.scrn.top, | |
| drawmng.rect.right, drawmng.rect.bottom, | |
| GDK_RGB_DITHER_NORMAL, 0, 0); | |
| } | |
| drawmng.drawing = FALSE; | drawmng.drawing = FALSE; |
| } | } |