diff --git a/common/editor/autosave.cpp b/common/editor/autosave.cpp index 477039945..c312145d6 100644 --- a/common/editor/autosave.cpp +++ b/common/editor/autosave.cpp @@ -122,7 +122,7 @@ static void print_clock() gr_get_string_size(*grd_curcanv->cv_font, message.data(), &w, &h, nullptr); const uint8_t color = CGREY; gr_rect(*grd_curcanv, 700, 0, 799, h + 1, color); - gr_string(700, 0, message.data()); + gr_string(*grd_curcanv, 700, 0, message.data()); gr_set_fontcolor( CBLACK, CWHITE ); } diff --git a/common/include/fwd-gr.h b/common/include/fwd-gr.h index 9fc32e048..8700c32e9 100644 --- a/common/include/fwd-gr.h +++ b/common/include/fwd-gr.h @@ -272,15 +272,15 @@ namespace dcx { void gr_remap_color_fonts(); void gr_set_curfont(const grs_font *); void gr_set_fontcolor(int fg_color, int bg_color); -void gr_string(int x, int y, const char *s); void gr_string(grs_canvas &, int x, int y, const char *s, int w, int h); -void gr_ustring(int x, int y, const char *s); -template -void gr_printt(int x, int y, const char *format, ...) __attribute_format_printf(3, 4); +void gr_string(grs_canvas &, int x, int y, const char *s); +void gr_ustring(grs_canvas &, int x, int y, const char *s); +template +void gr_printt(grs_canvas &, int x, int y, const char *format, ...) __attribute_format_printf(4, 5); #define gr_printfs(...) gr_printt(__VA_ARGS__) #define gr_printfus(...) gr_printt(__VA_ARGS__) -#define gr_printf(A1,A2,F,...) dxx_call_printf_checked(gr_printfs,gr_string,(A1,A2),(F),##__VA_ARGS__) -#define gr_uprintf(A1,A2,F,...) dxx_call_printf_checked(gr_printfus,gr_ustring,(A1,A2),(F),##__VA_ARGS__) +#define gr_printf(A1,A2,F,...) dxx_call_printf_checked(gr_printfs,gr_string,(*grd_curcanv,A1,A2),(F),##__VA_ARGS__) +#define gr_uprintf(A1,A2,F,...) dxx_call_printf_checked(gr_printfus,gr_ustring,(*grd_curcanv,A1,A2),(F),##__VA_ARGS__) std::pair gr_get_string_wrap(const char *s, unsigned limit); void gr_get_string_size(const grs_font &, const char *s, int *string_width, int *string_height, int *average_width); diff --git a/common/ui/checkbox.cpp b/common/ui/checkbox.cpp index 5aff0914b..0268940f7 100644 --- a/common/ui/checkbox.cpp +++ b/common/ui/checkbox.cpp @@ -64,7 +64,7 @@ void ui_draw_checkbox( UI_DIALOG *dlg, UI_GADGET_CHECKBOX * checkbox ) ui_string_centered( Middle(checkbox->width)+1, Middle(checkbox->height)+1, " " ); } - gr_ustring(checkbox->width+4, 2, checkbox->text.get()); + gr_ustring(*grd_curcanv, checkbox->width + 4, 2, checkbox->text.get()); } } diff --git a/common/ui/dialog.cpp b/common/ui/dialog.cpp index 3b4104d5d..83f1c983f 100644 --- a/common/ui/dialog.cpp +++ b/common/ui/dialog.cpp @@ -475,7 +475,7 @@ void (ui_dprintf_at)( UI_DIALOG * dlg, short x, short y, const char * format, .. void ui_dputs_at( UI_DIALOG * dlg, short x, short y, const char * buffer ) { ui_dialog_set_current_canvas( dlg ); - gr_string( x, y, buffer ); + gr_string(*grd_curcanv, x, y, buffer); } } diff --git a/common/ui/icon.cpp b/common/ui/icon.cpp index 4d0b926bc..e5aa627c5 100644 --- a/common/ui/icon.cpp +++ b/common/ui/icon.cpp @@ -79,7 +79,7 @@ void ui_draw_icon( UI_GADGET_ICON * icon ) } gr_set_fontcolor( CBLACK, -1 ); - gr_ustring(x, y, icon->text.get()); + gr_ustring(*grd_curcanv, x, y, icon->text.get()); } } diff --git a/common/ui/keypad.cpp b/common/ui/keypad.cpp index 9ab339168..d5144a8fe 100644 --- a/common/ui/keypad.cpp +++ b/common/ui/keypad.cpp @@ -276,7 +276,7 @@ void ui_pad_draw(UI_DIALOG *dlg, int x, int y) const uint8_t color = CWHITE; gr_urect(*grd_curcanv, desc_x, desc_y, desc_x+ 56*4-1, desc_y+15, color); gr_set_fontcolor( CBLACK, CWHITE ); - gr_ustring(desc_x, desc_y, KeyPad[active_pad]->description.data()); + gr_ustring(*grd_curcanv, desc_x, desc_y, KeyPad[active_pad]->description.data()); } static void ui_pad_set_active( int n ) diff --git a/common/ui/menubar.cpp b/common/ui/menubar.cpp index 8cbbe6b53..f37c4741a 100644 --- a/common/ui/menubar.cpp +++ b/common/ui/menubar.cpp @@ -110,14 +110,14 @@ static void item_show( MENU * menu, int n ) if ( menu != &Menu[0] ) { if ( menu->Active) - gr_ustring(item->x+1, item->y+1, item->Text.get()); + gr_ustring(*grd_curcanv, item->x + 1, item->y + 1, item->Text.get()); else - gr_ustring(item->x+1, item->y+1, item->InactiveText.get()); + gr_ustring(*grd_curcanv, item->x + 1, item->y + 1, item->InactiveText.get()); } else { if ( menu->Active) - gr_ustring(item->x, item->y, item->Text.get()); + gr_ustring(*grd_curcanv, item->x, item->y, item->Text.get()); else - gr_ustring(item->x, item->y, item->InactiveText.get()); + gr_ustring(*grd_curcanv, item->x, item->y, item->InactiveText.get()); } } diff --git a/common/ui/radio.cpp b/common/ui/radio.cpp index 81fb9fd5a..a4e99604d 100644 --- a/common/ui/radio.cpp +++ b/common/ui/radio.cpp @@ -68,8 +68,7 @@ void ui_draw_radio( UI_DIALOG *dlg, UI_GADGET_RADIO * radio ) else ui_string_centered(Middle(radio->width) + 1, Middle(radio->height) + 1, " "); } - - gr_ustring(radio->width+4, 2, radio->text.get()); + gr_ustring(*grd_curcanv, radio->width + 4, 2, radio->text.get()); } } diff --git a/common/ui/uidraw.cpp b/common/ui/uidraw.cpp index d1b4d2cfe..e116e71bf 100644 --- a/common/ui/uidraw.cpp +++ b/common/ui/uidraw.cpp @@ -43,8 +43,7 @@ void ui_string_centered( short x, short y, const char * s ) //baseline = height-grd_curcanv->cv_font->ft_baseline; - gr_ustring(x-((width-1)/2), y-((height-1)/2), s ); - + gr_ustring(*grd_curcanv, x - ((width - 1) / 2), y - ((height - 1) / 2), s); } diff --git a/d2x-rebirth/main/escort.cpp b/d2x-rebirth/main/escort.cpp index e75084951..367d56656 100644 --- a/d2x-rebirth/main/escort.cpp +++ b/d2x-rebirth/main/escort.cpp @@ -1836,7 +1836,7 @@ void show_escort_menu(const array &amsg) nm_draw_background(x-BORDERX,y-BORDERY,x+w+BORDERX,y+h+BORDERY); - gr_ustring( x, y, msg ); + gr_ustring(*grd_curcanv, x, y, msg); reset_cockpit(); } diff --git a/d2x-rebirth/main/movie.cpp b/d2x-rebirth/main/movie.cpp index 8537d173d..b2a5708bc 100644 --- a/d2x-rebirth/main/movie.cpp +++ b/d2x-rebirth/main/movie.cpp @@ -307,7 +307,7 @@ static window_event_result show_pause_message(window *, const d_event &event, co gr_set_fontcolor( 255, -1 ); - gr_ustring( 0x8000, y, msg ); + gr_ustring(*grd_curcanv, 0x8000, y, msg); break; } @@ -669,7 +669,7 @@ static void draw_subtitles(int frame_num) range_for (const auto &t, partial_range(active_subtitles, num_active_subtitles)) if (t != -1) { - gr_string(0x8000, y, Subtitles[t].msg); + gr_string(*grd_curcanv, 0x8000, y, Subtitles[t].msg); y += line_spacing; } } diff --git a/similar/2d/font.cpp b/similar/2d/font.cpp index b13a0d3cf..7243fd6c2 100644 --- a/similar/2d/font.cpp +++ b/similar/2d/font.cpp @@ -689,11 +689,11 @@ static int gr_internal_color_string(grs_canvas &canvas, const int x, const int y } #endif //OGL -void gr_string(const int x, const int y, const char *const s) +void gr_string(grs_canvas &canvas, const int x, const int y, const char *const s) { int w, h; - gr_get_string_size(*grd_curcanv->cv_font, s, &w, &h, nullptr); - gr_string(*grd_curcanv, x, y, s, w, h); + gr_get_string_size(*canvas.cv_font, s, &w, &h, nullptr); + gr_string(canvas, x, y, s, w, h); } static void gr_ustring_mono(grs_canvas &canvas, const int x, const int y, const char *const s) @@ -757,21 +757,21 @@ void gr_string(grs_canvas &canvas, const int x, const int y, const char *const s gr_internal_string_clipped(*grd_curcanv, x, y, s); } -void gr_ustring(int x, int y, const char *s ) +void gr_ustring(grs_canvas &canvas, const int x, const int y, const char *const s) { #if DXX_USE_OGL - if (TYPE==bm_mode::ogl) + if (canvas.cv_bitmap.get_type() == bm_mode::ogl) { - ogl_internal_string(*grd_curcanv, x, y, s); + ogl_internal_string(canvas, x, y, s); return; } #endif - if (grd_curcanv->cv_font->ft_flags & FT_COLOR) { - gr_internal_color_string(*grd_curcanv, x, y, s); + if (canvas.cv_font->ft_flags & FT_COLOR) { + gr_internal_color_string(canvas, x, y, s); } else - gr_ustring_mono(*grd_curcanv, x, y, s); + gr_ustring_mono(canvas, x, y, s); } void gr_get_string_size(const grs_font &cv_font, const char *s, int *const string_width, int *const string_height, int *const average_width) @@ -832,8 +832,8 @@ std::pair gr_get_string_wrap(const char *s, unsigned lim return {s, static_cast(string_width_f)}; } -template -void (gr_printt)(int x, int y, const char *format, ...) +template +void (gr_printt)(grs_canvas &canvas, const int x, const int y, const char *const format, ...) { char buffer[1000]; va_list args; @@ -841,11 +841,11 @@ void (gr_printt)(int x, int y, const char *format, ...) va_start(args, format ); vsnprintf(buffer, sizeof(buffer), format, args); va_end(args); - F(x, y, buffer); + F(canvas, x, y, buffer); } -template void gr_printt(int, int, const char *, ...); -template void gr_printt(int, int, const char *, ...); +template void gr_printt(grs_canvas &, int, int, const char *, ...); +template void gr_printt(grs_canvas &, int, int, const char *, ...); void gr_close_font(std::unique_ptr font) { diff --git a/similar/editor/meddraw.cpp b/similar/editor/meddraw.cpp index fe768606e..940317a45 100644 --- a/similar/editor/meddraw.cpp +++ b/similar/editor/meddraw.cpp @@ -815,20 +815,20 @@ void draw_world(grs_canvas *screen_canvas,editor_view *v,const vsegptridx_t mine // Label the window gr_set_fontcolor((v==current_view)?CRED:CWHITE, -1 ); if ( screen_canvas == LargeViewBox->canvas.get() ) { - gr_ustring( 5, 5, "USER VIEW" ); + gr_ustring(*grd_curcanv, 5, 5, "USER VIEW"); switch (Large_view_index) { - case 0: gr_ustring( 85, 5, "-- TOP"); break; - case 1: gr_ustring( 85, 5, "-- FRONT"); break; - case 2: gr_ustring( 85, 5, "-- RIGHT"); break; + case 0: gr_ustring(*grd_curcanv, 85, 5, "-- TOP"); break; + case 1: gr_ustring(*grd_curcanv, 85, 5, "-- FRONT"); break; + case 2: gr_ustring(*grd_curcanv, 85, 5, "-- RIGHT"); break; } } else #if ORTHO_VIEWS else if ( screen_canvas == TopViewBox->canvas ) - gr_ustring( 5, 5, "TOP" ); + gr_ustring(*grd_curcanv, 5, 5, "TOP"); else if ( screen_canvas == FrontViewBox->canvas ) - gr_ustring( 5, 5, "FRONT" ); + gr_ustring(*grd_curcanv, 5, 5, "FRONT"); else if ( screen_canvas == RightViewBox->canvas ) - gr_ustring( 5, 5, "RIGHT" ); + gr_ustring(*grd_curcanv, 5, 5, "RIGHT"); #else Error("Ortho views have been removed, what gives?\n"); #endif diff --git a/similar/editor/texpage.cpp b/similar/editor/texpage.cpp index fbbc61cc2..c98f0760d 100644 --- a/similar/editor/texpage.cpp +++ b/similar/editor/texpage.cpp @@ -83,7 +83,7 @@ static void texpage_print_name(d_fname name) name.back() = 0; gr_set_current_canvas( TmapnameCanvas ); - gr_string( 0, 0, name ); + gr_string(*grd_curcanv, 0, 0, name); } //Redraw the list of textures, based on TexturePage diff --git a/similar/main/automap.cpp b/similar/main/automap.cpp index c6627cb83..de3348fa1 100644 --- a/similar/main/automap.cpp +++ b/similar/main/automap.cpp @@ -519,7 +519,7 @@ static void name_frame(automap *am) else name_level = Current_level_name; - gr_string((SWIDTH/64),(SHEIGHT/48),name_level); + gr_string(*grd_curcanv, (SWIDTH/64),(SHEIGHT/48),name_level); #elif defined(DXX_BUILD_DESCENT_II) char name_level_right[128]; if (Current_level_num > 0) @@ -533,7 +533,7 @@ static void name_frame(automap *am) else snprintf(name_level_right, sizeof(name_level_right), " %s", current_level_name); - gr_string((SWIDTH/64),(SHEIGHT/48),name_level_left); + gr_string(*grd_curcanv, (SWIDTH / 64), (SHEIGHT / 48), name_level_left); int wr,h; gr_get_string_size(*grd_curcanv->cv_font, name_level_right, &wr, &h, nullptr); gr_string(*grd_curcanv, grd_curcanv->cv_bitmap.bm_w-wr-(SWIDTH/64),(SHEIGHT/48),name_level_right, wr, h); @@ -635,7 +635,7 @@ static void draw_automap(automap *am) else #endif x = SWIDTH / 8, y = SHEIGHT / 16; - gr_string(x, y, TXT_AUTOMAP); + gr_string(*grd_curcanv, x, y, TXT_AUTOMAP); } gr_set_curfont(GAME_FONT); gr_set_fontcolor(BM_XRGB(20, 20, 20), -1); @@ -668,9 +668,9 @@ static void draw_automap(automap *am) y1 = SHEIGHT / 1.083; y2 = SHEIGHT / 1.043; #endif - gr_string(x, y0, TXT_TURN_SHIP); - gr_string(x, y1, s1); - gr_string(x, y2, s2); + gr_string(*grd_curcanv, x, y0, TXT_TURN_SHIP); + gr_string(*grd_curcanv, x, y1, s1); + gr_string(*grd_curcanv, x, y2, s2); } gr_set_current_canvas(&am->automap_view); diff --git a/similar/main/console.cpp b/similar/main/console.cpp index 73f8165a6..5297e8b54 100644 --- a/similar/main/console.cpp +++ b/similar/main/console.cpp @@ -191,7 +191,7 @@ static void con_draw(void) gr_rect(*grd_curcanv, 0, 0, SWIDTH, line_spacing, color); gr_set_fontcolor(BM_XRGB(255,255,255),-1); gr_printf(fspacx1, fspacy1, "%s LOG", DESCENT_VERSION); - gr_string(SWIDTH - fspacx(110), fspacy1, "PAGE-UP/DOWN TO SCROLL"); + gr_string(*grd_curcanv, SWIDTH - fspacx(110), fspacy1, "PAGE-UP/DOWN TO SCROLL"); } static window_event_result con_handler(window *wind,const d_event &event, const unused_window_userdata_t *) diff --git a/similar/main/credits.cpp b/similar/main/credits.cpp index 133311952..56f9d0b09 100644 --- a/similar/main/credits.cpp +++ b/similar/main/credits.cpp @@ -205,7 +205,7 @@ static window_event_result credits_handler(window *, const d_event &event, credi const auto tempp = strchr( s, '\t' ); if ( !tempp ) { // Wacky Fast Credits thing - gr_string( 0x8000, y, s ); + gr_string(*grd_curcanv, 0x8000, y, s); } } diff --git a/similar/main/gamecntl.cpp b/similar/main/gamecntl.cpp index b8d6050a8..567bd7523 100644 --- a/similar/main/gamecntl.cpp +++ b/similar/main/gamecntl.cpp @@ -525,7 +525,7 @@ static int HandleDemoKey(int key) gr_set_current_canvas(NULL); render_frame(0); gr_set_curfont(MEDIUM2_FONT); - gr_string(SWIDTH-FSPACX(92),SHEIGHT-LINE_SPACING,"DXX-Rebirth\n"); + gr_string(*grd_curcanv, SWIDTH - FSPACX(92), SHEIGHT - LINE_SPACING, "DXX-Rebirth\n"); gr_flip(); save_screen_shot(0); } @@ -705,7 +705,7 @@ static window_event_result HandleSystemKey(int key) gr_set_current_canvas(NULL); render_frame(0); gr_set_curfont(MEDIUM2_FONT); - gr_string(SWIDTH-FSPACX(92),SHEIGHT-LINE_SPACING,"DXX-Rebirth\n"); + gr_string(*grd_curcanv, SWIDTH - FSPACX(92), SHEIGHT - LINE_SPACING, "DXX-Rebirth\n"); gr_flip(); save_screen_shot(0); } diff --git a/similar/main/gamerend.cpp b/similar/main/gamerend.cpp index 35c62f041..a362cf3df 100644 --- a/similar/main/gamerend.cpp +++ b/similar/main/gamerend.cpp @@ -156,7 +156,7 @@ static void show_netplayerinfo() // general game information const auto &&line_spacing = LINE_SPACING; y += line_spacing; - gr_string(0x8000,y,Netgame.game_name.data()); + gr_string(*grd_curcanv, 0x8000, y, Netgame.game_name.data()); y += line_spacing; gr_printf(0x8000, y, "%s - lvl: %i", Netgame.mission_title.data(), Netgame.levelnum); @@ -177,13 +177,13 @@ static void show_netplayerinfo() // player information (name, kills, ping, game efficiency) y += line_spacing * 2; - gr_string(x,y,"player"); - gr_string(x + fspacx8 * 7, y, ((Game_mode & GM_MULTI_COOP) + gr_string(*grd_curcanv, x, y, "player"); + gr_string(*grd_curcanv, x + fspacx8 * 7, y, ((Game_mode & GM_MULTI_COOP) ? "score" - : (gr_string(x + fspacx8 * 12, y, "deaths"), "kills") + : (gr_string(*grd_curcanv, x + fspacx8 * 12, y, "deaths"), "kills") )); - gr_string(x + fspacx8 * 18, y, "ping"); - gr_string(x + fspacx8 * 23, y, "efficiency"); + gr_string(*grd_curcanv, x + fspacx8 * 18, y, "ping"); + gr_string(*grd_curcanv, x + fspacx8 * 23, y, "efficiency"); // process players table for (uint_fast32_t i = 0; i < MAX_PLAYERS; i++) @@ -218,8 +218,8 @@ static void show_netplayerinfo() if (Game_mode & GM_TEAM) { gr_set_fontcolor(255,-1); - gr_string(x,y,"team"); - gr_string(x + fspacx8 * 8, y, "score"); + gr_string(*grd_curcanv, x, y, "team"); + gr_string(*grd_curcanv, x + fspacx8 * 8, y, "score"); y += line_spacing; gr_set_fontcolor(BM_XRGB(player_rgb[0].r,player_rgb[0].g,player_rgb[0].b),-1 ); gr_printf(x,y,"%s:",static_cast(Netgame.team_name[0])); @@ -241,7 +241,7 @@ static void show_netplayerinfo() if (game_mode_hoard()) { if (PhallicMan==-1) - gr_string(0x8000,y,"There is no record yet for this level."); + gr_string(*grd_curcanv, 0x8000, y, "There is no record yet for this level."); else gr_printf(0x8000,y,"%s has the record at %d points.", static_cast(Players[PhallicMan].callsign), PhallicLimit); } @@ -262,7 +262,7 @@ static void show_netplayerinfo() if (eff<60) gr_printf(0x8000,y,"is %s your ranking.",eff_strings[eff/10]); else - gr_string(0x8000,y,"is serving you well."); + gr_string(*grd_curcanv, 0x8000, y, "is serving you well."); y += line_spacing; gr_printf(0x8000,y,"your rank is: %s",RankStrings[GetMyNetRanking()]); } @@ -732,7 +732,7 @@ void game_render_frame_mono() gr_set_curfont( GAME_FONT ); gr_set_fontcolor( BM_XRGB(27,0,0), -1 ); - gr_string(0x8000, FSPACY(1), "Guided Missile View"); + gr_string(*grd_curcanv, 0x8000, FSPACY(1), "Guided Missile View"); auto &player_info = get_local_plrobj().ctype.player_info; show_reticle(player_info, RET_TYPE_CROSS_V1, 0); diff --git a/similar/main/gauges.cpp b/similar/main/gauges.cpp index f47458283..5a48d98a7 100644 --- a/similar/main/gauges.cpp +++ b/similar/main/gauges.cpp @@ -880,7 +880,7 @@ static void hud_show_homing_warning(const int homing_object_dist) if (GameTime64 & 0x4000) { gr_set_curfont( GAME_FONT ); gr_set_fontcolor(BM_XRGB(0,31,0),-1 ); - gr_string(0x8000, grd_curcanv->cv_bitmap.bm_h-LINE_SPACING,TXT_LOCK); + gr_string(*grd_curcanv, 0x8000, grd_curcanv->cv_bitmap.bm_h - LINE_SPACING,TXT_LOCK); } } } @@ -1562,7 +1562,7 @@ static void hud_show_cloak_invuln(const player_flags player_flags, const fix64 c if (cloak_invul_timer) gr_printf(fspacx1, y, "%s: %lu", txt, static_cast(effect_end / F1_0)); else - gr_string(fspacx1, y, txt); + gr_string(*grd_curcanv, fspacx1, y, txt); }; if (player_flags & PLAYER_FLAGS_CLOAKED) @@ -2220,7 +2220,7 @@ static void draw_weapon_info_sub(const player_info &player_info, const int info_ { gr_set_fontcolor(BM_XRGB(0,20,0),-1 ); - gr_string(text_x,text_y,name); + gr_string(*grd_curcanv, text_x, text_y, name); // For laser, show level and quadness #if defined(DXX_BUILD_DESCENT_I) @@ -2232,7 +2232,7 @@ static void draw_weapon_info_sub(const player_info &player_info, const int info_ const auto &&line_spacing = LINE_SPACING; gr_printf(text_x, text_y + line_spacing, "%s: %i", TXT_LVL, player_info.laser_level + 1); if (player_info.powerup_flags & PLAYER_FLAGS_QUAD_LASERS) - gr_string(text_x, text_y + (line_spacing * 2), TXT_QUAD); + gr_string(*grd_curcanv, text_x, text_y + (line_spacing * 2), TXT_QUAD); } } } @@ -3314,7 +3314,7 @@ void draw_hud(const object &plrobj) HUD_render_message_frame(); gr_set_curfont( GAME_FONT ); gr_set_fontcolor(BM_XRGB(0,31,0),-1 ); - gr_string(0x8000,GHEIGHT-LINE_SPACING,TXT_REAR_VIEW); + gr_string(*grd_curcanv, 0x8000, GHEIGHT - LINE_SPACING, TXT_REAR_VIEW); } } } @@ -3522,7 +3522,7 @@ void do_cockpit_window_view(const int win, const vobjptr_t viewer, const int rea if (Color_0_31_0 == -1) Color_0_31_0 = BM_XRGB(0,31,0); gr_set_fontcolor(Color_0_31_0, -1); - gr_string(0x8000,FSPACY(1),label); + gr_string(*grd_curcanv, 0x8000, FSPACY(1), label); } if (user == WBU_GUIDED) diff --git a/similar/main/hud.cpp b/similar/main/hud.cpp index c9672e841..9b52baa2a 100644 --- a/similar/main/hud.cpp +++ b/similar/main/hud.cpp @@ -119,7 +119,7 @@ void HUD_render_message_frame() for (; i != e; ++i ) { gr_set_fontcolor( HUD_color, -1); - gr_string(0x8000,y, &i->message[0] ); + gr_string(*grd_curcanv, 0x8000, y, &i->message[0]); y += line_spacing; } } @@ -268,6 +268,6 @@ void player_dead_message(void) if (HUD_color == -1) HUD_color = BM_XRGB(0,28,0); gr_set_fontcolor( HUD_color, -1); - gr_string(0x8000, GHEIGHT - LINE_SPACING, PlayerCfg.RespawnMode == RespawnPress::Any ? TXT_PRESS_ANY_KEY : "Press fire key or button to continue..."); + gr_string(*grd_curcanv, 0x8000, GHEIGHT - LINE_SPACING, PlayerCfg.RespawnMode == RespawnPress::Any ? TXT_PRESS_ANY_KEY : "Press fire key or button to continue..."); } } diff --git a/similar/main/kconfig.cpp b/similar/main/kconfig.cpp index 8a57b9a6d..0704def20 100644 --- a/similar/main/kconfig.cpp +++ b/similar/main/kconfig.cpp @@ -890,11 +890,11 @@ static void kconfig_draw(kc_menu *menu) gr_set_curfont(MEDIUM3_FONT); Assert(!strchr( menu->title, '\n' )); - gr_string(0x8000, fspacy(8), menu->title); + gr_string(*grd_curcanv, 0x8000, fspacy(8), menu->title); gr_set_curfont(GAME_FONT); gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); - gr_string(0x8000, fspacy(21), "Enter changes, ctrl-d deletes, ctrl-r resets defaults, ESC exits"); + gr_string(*grd_curcanv, 0x8000, fspacy(21), "Enter changes, ctrl-d deletes, ctrl-r resets defaults, ESC exits"); gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); if ( menu->items == kc_keyboard ) @@ -924,11 +924,11 @@ static void kconfig_draw(kc_menu *menu) { gr_set_fontcolor( BM_XRGB(31,27,6), -1 ); #if DXX_MAX_BUTTONS_PER_JOYSTICK || DXX_MAX_HATS_PER_JOYSTICK - gr_string(0x8000, fspacy(30), TXT_BUTTONS); + gr_string(*grd_curcanv, 0x8000, fspacy(30), TXT_BUTTONS); #endif #if DXX_MAX_AXES_PER_JOYSTICK const auto &&fspacy145 = fspacy(145); - gr_string(0x8000, fspacy(137), TXT_AXES); + gr_string(*grd_curcanv, 0x8000, fspacy(137), TXT_AXES); gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); kc_gr_2y_string(TXT_AXIS, fspacy145, fspacx(81), fspacx(230)); kc_gr_2y_string(TXT_INVERT, fspacy145, fspacx(111), fspacx(260)); @@ -961,8 +961,8 @@ static void kconfig_draw(kc_menu *menu) else if ( menu->items == kc_mouse ) { gr_set_fontcolor( BM_XRGB(31,27,6), -1 ); - gr_string(0x8000, fspacy(35), TXT_BUTTONS); - gr_string(0x8000, fspacy(137), TXT_AXES); + gr_string(*grd_curcanv, 0x8000, fspacy(35), TXT_BUTTONS); + gr_string(*grd_curcanv, 0x8000, fspacy(137), TXT_AXES); gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); const auto &&fspacy145 = fspacy(145); kc_gr_2y_string(TXT_AXIS, fspacy145, fspacx( 87), fspacx(242)); @@ -973,11 +973,11 @@ static void kconfig_draw(kc_menu *menu) gr_set_fontcolor( BM_XRGB(31,27,6), -1 ); const auto &&fspacy60 = fspacy(60); - gr_string(fspacx(152), fspacy60, "KEYBOARD"); + gr_string(*grd_curcanv, fspacx(152), fspacy60, "KEYBOARD"); #if DXX_MAX_BUTTONS_PER_JOYSTICK || DXX_MAX_HATS_PER_JOYSTICK - gr_string(fspacx(210), fspacy60, "JOYSTICK"); + gr_string(*grd_curcanv, fspacx(210), fspacy60, "JOYSTICK"); #endif - gr_string(fspacx(273), fspacy60, "MOUSE"); + gr_string(*grd_curcanv, fspacx(273), fspacy60, "MOUSE"); } unsigned citem = menu->citem; @@ -1023,7 +1023,7 @@ static void kconfig_draw(kc_menu *menu) break; } if (s) - gr_string(0x8000, fspacy(INFO_Y), s); + gr_string(*grd_curcanv, 0x8000, fspacy(INFO_Y), s); kc_drawquestion( menu, &menu->items[menu->citem] ); } @@ -1364,7 +1364,7 @@ static void kc_drawinput(const kc_item &item, kc_mitem& mitem, int is_current, c else r = 15 * 2, g = 15 * 2, b = 24 * 2; gr_set_fontcolor(gr_find_closest_color(r, g, b), -1); - gr_string(fspacx(item.x), fspacy(item.y), label); + gr_string(*grd_curcanv, fspacx(item.x), fspacy(item.y), label); } btext = get_item_text(item, mitem, buf); diff --git a/similar/main/kmatrix.cpp b/similar/main/kmatrix.cpp index 201e1b139..de2fda3a4 100644 --- a/similar/main/kmatrix.cpp +++ b/similar/main/kmatrix.cpp @@ -75,7 +75,7 @@ static void kmatrix_draw_item(int i, playernum_array_t &sorted) y = FSPACY(50+i*9); const auto &&fspacx = FSPACX(); - gr_string(fspacx(CENTERING_OFFSET(N_players)), y, static_cast(Players[sorted[i]].callsign)); + gr_string(*grd_curcanv, fspacx(CENTERING_OFFSET(N_players)), y, static_cast(Players[sorted[i]].callsign)); const auto &&rgb10 = BM_XRGB(10, 10, 10); const auto &&rgb25 = BM_XRGB(25, 25, 25); @@ -89,7 +89,7 @@ static void kmatrix_draw_item(int i, playernum_array_t &sorted) if (kmij == 0) { gr_set_fontcolor(rgb10, -1); - gr_string(x, y, "0"); + gr_string(*grd_curcanv, x, y, "0"); } else { @@ -145,7 +145,7 @@ static void kmatrix_draw_names(playernum_array_t &sorted) x = fspacx(72 + CENTERING_OFFSET(N_players) + N_players * 25); gr_set_fontcolor(rgb31, -1); - gr_string(x, fspacy(40), "K/E"); + gr_string(*grd_curcanv, x, fspacy(40), "K/E"); } static void kmatrix_draw_coop_names(playernum_array_t &) @@ -153,8 +153,8 @@ static void kmatrix_draw_coop_names(playernum_array_t &) gr_set_fontcolor( BM_XRGB(63,31,31),-1 ); const auto &&fspacy40 = FSPACY(40); const auto centerscreen = CENTERSCREEN; - gr_string(centerscreen, fspacy40, "SCORE"); - gr_string(centerscreen + FSPACX(50), fspacy40, "DEATHS"); + gr_string(*grd_curcanv, centerscreen, fspacy40, "SCORE"); + gr_string(*grd_curcanv, centerscreen + FSPACX(50), fspacy40, "DEATHS"); } static void kmatrix_status_msg (fix time, int reactor) @@ -207,7 +207,7 @@ static void kmatrix_redraw(kmatrix_screen *km) : #endif TXT_KILL_MATRIX_TITLE; - gr_string(0x8000, FSPACY(10), title); + gr_string(*grd_curcanv, 0x8000, FSPACY(10), title); gr_set_curfont(GAME_FONT); multi_get_kill_list(sorted); @@ -237,7 +237,7 @@ static void kmatrix_redraw_coop() multi_sort_kill_list(); gr_set_curfont(MEDIUM3_FONT); - gr_string( 0x8000, FSPACY(10), "COOPERATIVE SUMMARY"); + gr_string(*grd_curcanv, 0x8000, FSPACY(10), "COOPERATIVE SUMMARY"); gr_set_curfont(GAME_FONT); multi_get_kill_list(sorted); kmatrix_draw_coop_names(sorted); @@ -264,7 +264,7 @@ static void kmatrix_redraw_coop() gr_set_fontcolor(gr_find_closest_color(r, g, b), -1); const auto &&y = fspacy(50 + i * 9); - gr_string(x_callsign, y, static_cast(plr.callsign)); + gr_string(*grd_curcanv, x_callsign, y, static_cast(plr.callsign)); gr_set_fontcolor(rgb60_40_10, -1); auto &player_info = vcobjptr(plr.objnum)->ctype.player_info; gr_printf(x_centerscreen, y, "%d", player_info.mission.score); diff --git a/similar/main/menu.cpp b/similar/main/menu.cpp index 5248ac439..84e6be84a 100644 --- a/similar/main/menu.cpp +++ b/similar/main/menu.cpp @@ -458,9 +458,9 @@ static void draw_copyright() gr_set_curfont(GAME_FONT); gr_set_fontcolor(BM_XRGB(6,6,6),-1); const auto &&line_spacing = LINE_SPACING; - gr_string(0x8000, SHEIGHT - line_spacing, TXT_COPYRIGHT); + gr_string(*grd_curcanv, 0x8000, SHEIGHT - line_spacing, TXT_COPYRIGHT); gr_set_fontcolor( BM_XRGB(25,0,0), -1); - gr_string(0x8000, SHEIGHT - (line_spacing * 2), DESCENT_VERSION); + gr_string(*grd_curcanv, 0x8000, SHEIGHT - (line_spacing * 2), DESCENT_VERSION); } namespace dsx { diff --git a/similar/main/net_udp.cpp b/similar/main/net_udp.cpp index 91bda7a90..ecdd8258b 100644 --- a/similar/main/net_udp.cpp +++ b/similar/main/net_udp.cpp @@ -248,7 +248,7 @@ class basic_show_rule_label public: static void show_item(int x1, int y, const char *label, int /* x2 */, const char * /* value */) { - gr_string(x1, y, label); + gr_string(*grd_curcanv, x1, y, label); } }; @@ -257,7 +257,7 @@ class basic_show_rule_value public: static void show_item(int /* x1 */, int y, const char * /*label */, int x2, const char *value) { - gr_string(x2, y, value); + gr_string(*grd_curcanv, x2, y, value); } }; diff --git a/similar/main/newmenu.cpp b/similar/main/newmenu.cpp index 8b95a2ea3..2a16ee9d5 100644 --- a/similar/main/newmenu.cpp +++ b/similar/main/newmenu.cpp @@ -258,7 +258,7 @@ static void nm_string( int w1,int x, int y, const char * s, int tabs_flag) } } else - gr_string(x, y, s2.get()); + gr_string(*grd_curcanv, x, y, s2.get()); if (!tabs_flag && p && (w1>0) ) { int w, h; @@ -283,7 +283,7 @@ static void nm_string_slider( int w1,int x, int y, char * s ) s1 = p+1; } - gr_string( x, y, s ); + gr_string(*grd_curcanv, x, y, s); if (p) { int w, h; @@ -353,7 +353,7 @@ static void nm_string_inputbox( int w, int x, int y, const char * text, int curr nm_string_black( w, x, y, text ); if ( current && timer_query() & 0x8000 ) - gr_string( x+w1, y, CURSOR_STRING ); + gr_string(*grd_curcanv, x+w1, y, CURSOR_STRING); } static void draw_item( newmenu_item *item, int is_current, int tiny, int tabs_flag, int scroll_offset ) @@ -1472,7 +1472,7 @@ static window_event_result newmenu_draw(window *wind, newmenu *menu) if ( menu->subtitle ) { gr_set_curfont(MEDIUM3_FONT); gr_set_fontcolor( BM_XRGB(21,21,21), -1 ); - gr_string( 0x8000, ty+th, menu->subtitle ); + gr_string(*grd_curcanv, 0x8000, ty + th, menu->subtitle); } gr_set_curfont(menu->tiny_mode?GAME_FONT:MEDIUM1_FONT); @@ -1493,12 +1493,12 @@ static window_event_result newmenu_draw(window *wind, newmenu *menu) const auto &&fspacx = FSPACX(); sx = BORDERX - fspacx(12); - gr_string(sx, sy, menu->scroll_offset ? UP_ARROW_MARKER : " "); + gr_string(*grd_curcanv, sx, sy, menu->scroll_offset ? UP_ARROW_MARKER : " "); sy = menu->items[menu->scroll_offset + menu->max_displayable - 1].y - (line_spacing * menu->scroll_offset); sx = BORDERX - fspacx(12); - gr_string(sx, sy, (menu->scroll_offset + menu->max_displayable < menu->nitems) ? DOWN_ARROW_MARKER : " "); + gr_string(*grd_curcanv, sx, sy, (menu->scroll_offset + menu->max_displayable < menu->nitems) ? DOWN_ARROW_MARKER : " "); } { @@ -1956,7 +1956,7 @@ static window_event_result listbox_draw(window *, listbox *lb) gr_set_current_canvas(NULL); nm_draw_background( lb->box_x-BORDERX,lb->box_y-lb->title_height-BORDERY,lb->box_x+lb->box_w+BORDERX,lb->box_y+lb->height+BORDERY ); gr_set_curfont(MEDIUM3_FONT); - gr_string( 0x8000, lb->box_y - lb->title_height, lb->title ); + gr_string(*grd_curcanv, 0x8000, lb->box_y - lb->title_height, lb->title); const auto &&line_spacing = LINE_SPACING; for (i=lb->first_item; ifirst_item+LB_ITEMS_ON_SCREEN; i++ ) { @@ -2017,7 +2017,7 @@ static window_event_result listbox_draw(window *, listbox *lb) { showstr = lb->item[i]; } - gr_string(lb->box_x + fspacx(5), y, showstr); + gr_string(*grd_curcanv, lb->box_x + fspacx(5), y, showstr); } } diff --git a/similar/main/scores.cpp b/similar/main/scores.cpp index d1255d801..b825cfcfe 100644 --- a/similar/main/scores.cpp +++ b/similar/main/scores.cpp @@ -315,14 +315,14 @@ static void scores_draw_item( int i, stats_info * stats ) const auto &&fspacx66 = fspacx(66); const auto &&fspacy_y = FSPACY(y); if (strlen(stats->name)==0) { - gr_string(fspacx66, fspacy_y, TXT_EMPTY); + gr_string(*grd_curcanv, fspacx66, fspacy_y, TXT_EMPTY); return; } - gr_string(fspacx66, fspacy_y, stats->name); + gr_string(*grd_curcanv, fspacx66, fspacy_y, stats->name); int_to_string(stats->score, buffer); scores_rputs( 149, y, buffer ); - gr_string(fspacx(166), fspacy_y, MENU_DIFFICULTY_TEXT(stats->diff_level)); + gr_string(*grd_curcanv, fspacx(166), fspacy_y, MENU_DIFFICULTY_TEXT(stats->diff_level)); if ( (stats->starting_level > 0 ) && (stats->ending_level > 0 )) scores_rprintf( 232, y, "%d-%d", stats->starting_level, stats->ending_level ); @@ -407,17 +407,17 @@ static window_event_result scores_handler(window *wind,const d_event &event, sco gr_set_current_canvas(window_get_canvas(*wind)); gr_set_curfont(MEDIUM3_FONT); - gr_string(0x8000, fspacy(15), TXT_HIGH_SCORES); + gr_string(*grd_curcanv, 0x8000, fspacy(15), TXT_HIGH_SCORES); gr_set_curfont(GAME_FONT); gr_set_fontcolor( BM_XRGB(31,26,5), -1 ); - gr_string(fspacx( 71), fspacy(50), TXT_NAME); - gr_string(fspacx(122), fspacy(50), TXT_SCORE); - gr_string(fspacx(167), fspacy(50), TXT_SKILL); - gr_string(fspacx(210), fspacy(50), TXT_LEVELS); - gr_string(fspacx(253), fspacy(50), TXT_TIME); + gr_string(*grd_curcanv, fspacx( 71), fspacy(50), TXT_NAME); + gr_string(*grd_curcanv, fspacx(122), fspacy(50), TXT_SCORE); + gr_string(*grd_curcanv, fspacx(167), fspacy(50), TXT_SKILL); + gr_string(*grd_curcanv, fspacx(210), fspacy(50), TXT_LEVELS); + gr_string(*grd_curcanv, fspacx(253), fspacy(50), TXT_TIME); if ( menu->citem < 0 ) - gr_string(0x8000, fspacy(175), TXT_PRESS_CTRL_R); + gr_string(*grd_curcanv, 0x8000, fspacy(175), TXT_PRESS_CTRL_R); gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); diff --git a/similar/main/titles.cpp b/similar/main/titles.cpp index c83781358..7353be4b5 100644 --- a/similar/main/titles.cpp +++ b/similar/main/titles.cpp @@ -987,7 +987,7 @@ static void redraw_messagestream(const msgstream &stream, unsigned &lastcolor) lastcolor = stream.color; gr_set_fontcolor(stream.color,-1); } - gr_string(stream.x+1,stream.y,msgbuf); + gr_string(*grd_curcanv, stream.x + 1, stream.y, msgbuf); } static void flash_cursor(briefing *br, int cursor_flag) @@ -997,7 +997,7 @@ static void flash_cursor(briefing *br, int cursor_flag) gr_set_fontcolor((timer_query() % (F1_0 / 2)) > F1_0 / 4 ? Briefing_text_colors[Current_color] : Erase_color, -1); - gr_string(br->text_x, br->text_y, "_" ); + gr_string(*grd_curcanv, br->text_x, br->text_y, "_"); } #define EXIT_DOOR_MAX 14 @@ -1549,7 +1549,7 @@ static window_event_result briefing_handler(window *, const d_event &event, brie if (br->new_page || br->new_screen) flash_cursor(br, br->flashing_cursor); else if (br->flashing_cursor) - gr_string(br->text_x, br->text_y, "_"); + gr_string(*grd_curcanv, br->text_x, br->text_y, "_"); break; case EVENT_WINDOW_CLOSE: