Added width and height arguments to ji_set_screen() function.

This commit is contained in:
David Capello 2010-07-26 00:20:17 -03:00
parent 74962ece67
commit 017dca6425
5 changed files with 25 additions and 15 deletions

View File

@ -157,7 +157,7 @@ JWidget jmanager_new()
if (!default_manager) { if (!default_manager) {
if (!ji_screen) if (!ji_screen)
ji_set_screen(screen); ji_set_screen(screen, SCREEN_W, SCREEN_H);
/* hook the window close message */ /* hook the window close message */
want_close_stage = STAGE_NORMAL; want_close_stage = STAGE_NORMAL;

View File

@ -49,6 +49,8 @@
BITMAP *ji_screen = NULL; BITMAP *ji_screen = NULL;
JRegion ji_dirty_region = NULL; JRegion ji_dirty_region = NULL;
int ji_screen_w = 0;
int ji_screen_h = 0;
/* Global timer. */ /* Global timer. */
@ -108,7 +110,7 @@ static void set_cursor(BITMAP *bmp, int x, int y)
int _ji_system_init() int _ji_system_init()
{ {
/* Update screen pointer. */ /* Update screen pointer. */
ji_set_screen(screen); ji_set_screen(screen, SCREEN_W, SCREEN_H);
/* Install timer related stuff. */ /* Install timer related stuff. */
LOCK_VARIABLE(ji_clock); LOCK_VARIABLE(ji_clock);
@ -129,17 +131,19 @@ int _ji_system_init()
void _ji_system_exit() void _ji_system_exit()
{ {
ji_set_screen(NULL); ji_set_screen(NULL, 0, 0);
remove_int(clock_inc); remove_int(clock_inc);
} }
void ji_set_screen(BITMAP *bmp) void ji_set_screen(BITMAP *bmp, int width, int height)
{ {
int cursor = jmouse_get_cursor(); /* get mouse cursor */ int cursor = jmouse_get_cursor(); /* get mouse cursor */
jmouse_set_cursor(JI_CURSOR_NULL); jmouse_set_cursor(JI_CURSOR_NULL);
ji_screen = bmp; ji_screen = bmp;
ji_screen_w = width;
ji_screen_h = height;
if (ji_screen != NULL) { if (ji_screen != NULL) {
JWidget manager = ji_get_default_manager(); JWidget manager = ji_get_default_manager();

View File

@ -39,13 +39,15 @@ struct BITMAP;
/***********************************************************************/ /***********************************************************************/
/* screen related */ /* screen related */
#define JI_SCREEN_W ((ji_screen == screen) ? SCREEN_W: ji_screen->w) #define JI_SCREEN_W ji_screen_w
#define JI_SCREEN_H ((ji_screen == screen) ? SCREEN_H: ji_screen->h) #define JI_SCREEN_H ji_screen_h
extern struct BITMAP *ji_screen; extern struct BITMAP *ji_screen;
extern JRegion ji_dirty_region; extern JRegion ji_dirty_region;
extern int ji_screen_w;
extern int ji_screen_h;
void ji_set_screen(struct BITMAP *bmp); void ji_set_screen(BITMAP *bmp, int width, int height);
void ji_add_dirty_rect(JRect rect); void ji_add_dirty_rect(JRect rect);
void ji_add_dirty_region(JRegion region); void ji_add_dirty_region(JRegion region);

View File

@ -359,7 +359,7 @@ void exit_module_gui()
if (double_buffering) { if (double_buffering) {
BITMAP *old_bmp = ji_screen; BITMAP *old_bmp = ji_screen;
ji_set_screen(screen); ji_set_screen(screen, SCREEN_W, SCREEN_H);
if (ji_screen_created) if (ji_screen_created)
destroy_bitmap(old_bmp); destroy_bitmap(old_bmp);
@ -526,7 +526,7 @@ void gui_flip_screen()
} }
else { else {
stretch_blit(ji_screen, screen, stretch_blit(ji_screen, screen,
0, 0, ji_screen->w, ji_screen->h, 0, 0, JI_SCREEN_W, JI_SCREEN_H,
0, 0, SCREEN_W, SCREEN_H); 0, 0, SCREEN_W, SCREEN_H);
} }
} }
@ -566,15 +566,19 @@ void gui_setup_screen(bool reload_font)
// Is double buffering active? // Is double buffering active?
if (double_buffering) { if (double_buffering) {
BITMAP *old_bmp = ji_screen; BITMAP *old_bmp = ji_screen;
ji_set_screen(create_bitmap(SCREEN_W / screen_scaling, int new_w = SCREEN_W / screen_scaling;
SCREEN_H / screen_scaling)); int new_h = SCREEN_H / screen_scaling;
BITMAP *new_bmp = create_bitmap(new_w, new_h);
ji_set_screen(new_bmp, new_w, new_h);
if (ji_screen_created) if (ji_screen_created)
destroy_bitmap(old_bmp); destroy_bitmap(old_bmp);
ji_screen_created = true; ji_screen_created = true;
} }
else { else {
ji_set_screen(screen); ji_set_screen(screen, SCREEN_W, SCREEN_H);
ji_screen_created = false; ji_screen_created = false;
} }

View File

@ -211,7 +211,7 @@ void play_game()
bmp2 = create_bitmap(SCREEN_W, SCREEN_H); bmp2 = create_bitmap(SCREEN_W, SCREEN_H);
/* set Jinete output screen bitmap */ /* set Jinete output screen bitmap */
ji_set_screen(bmp); ji_set_screen(bmp, bmp->w, bmp->h);
show_mouse(NULL); show_mouse(NULL);
/* init game state */ /* init game state */
@ -236,7 +236,7 @@ void play_game()
if (jwidget_pick(manager, mouse_x, mouse_y) == manager) { if (jwidget_pick(manager, mouse_x, mouse_y) == manager) {
if (!trans_mode) { if (!trans_mode) {
trans_mode = true; trans_mode = true;
ji_set_screen(bmp2); ji_set_screen(bmp2, bmp2->w, bmp2->h);
show_mouse(NULL); show_mouse(NULL);
} }
} }
@ -264,7 +264,7 @@ void play_game()
show_mouse(NULL); show_mouse(NULL);
} }
ji_set_screen(screen); ji_set_screen(screen, SCREEN_W, SCREEN_H);
destroy_bitmap(bmp); destroy_bitmap(bmp);
destroy_bitmap(bmp2); destroy_bitmap(bmp2);
} }