Date: Tue, 6 May 1997 10:53:24 -0700 (PDT) From: KaRNaGE To: djgpp AT delorie DOT com Subject: Re: allegro: textout_centre() / gfx_mode_select() In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Precedence: bulk >Would this by any chance be in a mode-X resolution? >If so, you are either using an old version of Allegro, which had a bug w >solid text backgrounds in mode-X (upgrade to v2.2), or you are using a >customised proportional font (just yesterday I found a bug with regard t >solid text backgrounds with proportional fonts in mode-X :-) If this is >the case, edit modex.c and in the _x_draw_character() function, replace: no, i'm using 640x480 (autodetect, but this problem exist on other resolutions also) the thing that baffles me is, when i use the mouse and click 'ok' or just double click the resolution....the background and textcolor of the text are both the same...when i use the keyboard and just press enter...it works 100% fine....well here's the parts that you can look at...i'll explain it the best i can: /* ok first i initialize allegro like this */ allegro_init(); install_keyboard(); install_mouse(); install_timer(); initialise_joystick(); set_gui_color(); //just sets the palette, just used it from your ex?.c files set_gfx_mode(GFX_VGA, 320, 200, 0, 0); set_pallete(desktop_pallete); // set the palette /* VIDEO_MAX_? are just 'int' */ if (!gfx_mode_select(&video_card, &VIDEO_MAX_X, &VIDEO_MAX_Y)) { allegro_exit(); exit(1); } /* ok i do that first 'video_card' is type 'int' */ /* ... init all my 3d engine code / load .3ds mesh */ /* then i set the gmode */ if (set_gfx_mode(video_card, VIDEO_MAX_X, VIDEO_MAX_Y, 0, 0) != 0) { allegro_exit(); printf("Error setting graphics mode\n%s\n\n", allegro_error); exit(1); } /* BITMAP *vir_seg; .....load_texture loads a 128x128 texture (and sets the pallete */ vir_seg = create_bitmap(VIDEO_MAX_X, VIDEO_MAX_Y); load_texture("3d.dat", texture); /* then it goes into a main loop */ while(...) { clear(vir_seg); //clear dubble buffer .... ..... sprintf(sbuffer, "blah %3d", x_angle); textout_centre(vir_seg, font, sbuffer, SCREEN_W >> 1, SCREEN_H - 40, 255); /* unsigned char sbuffer[255] */ blit(vir_seg, screen, 0, 0, 0, 0, VIDEO_MAX_X, VIDEO_MAX_Y); vsync(); /* that's pretty mutch all you need to know i think...*/ } but the thing si it's probaly not the code...cuz it has to do with using the mouse or keyboard to pick the video mode....