Merge pull request #12016 from tupaschoal/screen-coords-string

Make interfaces use ScreenCoordsXY instead of x-y
This commit is contained in:
Michael Steenbeek 2020-06-30 08:37:14 +02:00 committed by GitHub
commit 33e86ce0d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 43 additions and 42 deletions

View File

@ -624,7 +624,7 @@ static void widget_checkbox_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg
return; return;
auto [stringId, formatArgs] = widget_get_stringid_and_args(widget); auto [stringId, formatArgs] = widget_get_stringid_and_args(widget);
gfx_draw_string_left_centred(dpi, stringId, formatArgs, colour, l + 14, yMid); gfx_draw_string_left_centred(dpi, stringId, formatArgs, colour, { l + 14, yMid });
} }
/** /**

View File

@ -194,5 +194,5 @@ static void window_error_paint(rct_window* w, rct_drawpixelinfo* dpi)
l = w->windowPos.x + (w->width + 1) / 2 - 1; l = w->windowPos.x + (w->width + 1) / 2 - 1;
t = w->windowPos.y + 1; t = w->windowPos.y + 1;
draw_string_centred_raw(dpi, l, t, _window_error_num_lines, _window_error_text.data()); draw_string_centred_raw(dpi, { l, t }, _window_error_num_lines, _window_error_text.data());
} }

View File

@ -585,8 +585,7 @@ static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo* dpi, rc
auto screenCoords = w->windowPos + ScreenCoordsXY{ middleOutsetWidget->midX(), middleOutsetWidget->top + 11 }; auto screenCoords = w->windowPos + ScreenCoordsXY{ middleOutsetWidget->midX(), middleOutsetWidget->top + 11 };
width = middleOutsetWidget->width() - 62; width = middleOutsetWidget->width() - 62;
gfx_draw_string_centred_wrapped_partial( gfx_draw_string_centred_wrapped_partial(
dpi, screenCoords.x, screenCoords.y, width, COLOUR_BRIGHT_GREEN, STR_BOTTOM_TOOLBAR_NEWS_TEXT, &newsItemText, dpi, screenCoords, width, COLOUR_BRIGHT_GREEN, STR_BOTTOM_TOOLBAR_NEWS_TEXT, &newsItemText, newsItem->Ticks);
newsItem->Ticks);
screenCoords = w->windowPos screenCoords = w->windowPos
+ ScreenCoordsXY{ window_game_bottom_toolbar_widgets[WIDX_NEWS_SUBJECT].left, + ScreenCoordsXY{ window_game_bottom_toolbar_widgets[WIDX_NEWS_SUBJECT].left,

View File

@ -867,7 +867,7 @@ static void window_new_ride_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, i
imageId++; imageId++;
} }
gfx_draw_sprite_raw_masked(dpi, x + 2, y + 2, SPR_NEW_RIDE_MASK, imageId); gfx_draw_sprite_raw_masked(dpi, { x + 2, y + 2 }, SPR_NEW_RIDE_MASK, imageId);
// Next position // Next position
x += 116; x += 116;

View File

@ -211,5 +211,5 @@ static void window_tooltip_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Text // Text
left = w->windowPos.x + ((w->width + 1) / 2) - 1; left = w->windowPos.x + ((w->width + 1) / 2) - 1;
top = w->windowPos.y + 1; top = w->windowPos.y + 1;
draw_string_centred_raw(dpi, left, top, _tooltipNumLines, _tooltipText); draw_string_centred_raw(dpi, { left, top }, _tooltipNumLines, _tooltipText);
} }

View File

@ -245,13 +245,13 @@ int32_t gfx_wrap_string(utf8* text, int32_t width, int32_t* outNumLines, int32_t
* Draws text that is left aligned and vertically centred. * Draws text that is left aligned and vertically centred.
*/ */
void gfx_draw_string_left_centred( void gfx_draw_string_left_centred(
rct_drawpixelinfo* dpi, rct_string_id format, void* args, int32_t colour, int32_t x, int32_t y) rct_drawpixelinfo* dpi, rct_string_id format, void* args, int32_t colour, const ScreenCoordsXY& coords)
{ {
gCurrentFontSpriteBase = FONT_SPRITE_BASE_MEDIUM; gCurrentFontSpriteBase = FONT_SPRITE_BASE_MEDIUM;
char* buffer = gCommonStringFormatBuffer; char* buffer = gCommonStringFormatBuffer;
format_string(buffer, 256, format, args); format_string(buffer, 256, format, args);
int32_t height = string_get_height_raw(buffer); int32_t height = string_get_height_raw(buffer);
gfx_draw_string(dpi, buffer, colour, { x, y - (height / 2) }); gfx_draw_string(dpi, buffer, colour, coords - ScreenCoordsXY{ 0, (height / 2) });
} }
/** /**
@ -309,12 +309,12 @@ static void colour_char_window(uint8_t colour, const uint16_t* current_font_flag
* text : esi * text : esi
* dpi : edi * dpi : edi
*/ */
void draw_string_centred_raw(rct_drawpixelinfo* dpi, int32_t x, int32_t y, int32_t numLines, char* text) void draw_string_centred_raw(rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t numLines, char* text)
{ {
ScreenCoordsXY screenCoords(dpi->x, dpi->y); ScreenCoordsXY screenCoords(dpi->x, dpi->y);
gCurrentFontSpriteBase = FONT_SPRITE_BASE_MEDIUM; gCurrentFontSpriteBase = FONT_SPRITE_BASE_MEDIUM;
gfx_draw_string(dpi, "", COLOUR_BLACK, screenCoords); gfx_draw_string(dpi, "", COLOUR_BLACK, screenCoords);
screenCoords = { x, y }; screenCoords = coords;
gCurrentFontFlags = 0; gCurrentFontFlags = 0;
for (int32_t i = 0; i <= numLines; i++) for (int32_t i = 0; i <= numLines; i++)
@ -421,7 +421,7 @@ int32_t string_get_height_raw(char* buffer)
* ticks : ebp >> 16 * ticks : ebp >> 16
*/ */
void gfx_draw_string_centred_wrapped_partial( void gfx_draw_string_centred_wrapped_partial(
rct_drawpixelinfo* dpi, int32_t x, int32_t y, int32_t width, int32_t colour, rct_string_id format, void* args, rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, int32_t colour, rct_string_id format, void* args,
int32_t ticks) int32_t ticks)
{ {
int32_t numLines, fontSpriteBase, lineHeight, lineY; int32_t numLines, fontSpriteBase, lineHeight, lineY;
@ -440,7 +440,7 @@ void gfx_draw_string_centred_wrapped_partial(
int32_t numCharactersToDraw = ticks; int32_t numCharactersToDraw = ticks;
gCurrentFontFlags = 0; gCurrentFontFlags = 0;
lineY = y - ((numLines * lineHeight) / 2); lineY = coords.y - ((numLines * lineHeight) / 2);
for (int32_t line = 0; line <= numLines; line++) for (int32_t line = 0; line <= numLines; line++)
{ {
int32_t halfWidth = gfx_get_string_width(buffer) / 2; int32_t halfWidth = gfx_get_string_width(buffer) / 2;
@ -462,7 +462,7 @@ void gfx_draw_string_centred_wrapped_partial(
ch = nextCh; ch = nextCh;
} }
screenCoords = { x - halfWidth, lineY }; screenCoords = { coords.x - halfWidth, lineY };
gfx_draw_string(dpi, buffer, TEXT_COLOUR_254, screenCoords); gfx_draw_string(dpi, buffer, TEXT_COLOUR_254, screenCoords);
if (numCharactersDrawn > numCharactersToDraw) if (numCharactersDrawn > numCharactersToDraw)
@ -496,15 +496,14 @@ static void ttf_draw_character_sprite(rct_drawpixelinfo* dpi, int32_t codepoint,
if (!(info->flags & TEXT_DRAW_FLAG_NO_DRAW)) if (!(info->flags & TEXT_DRAW_FLAG_NO_DRAW))
{ {
int32_t x = info->x; auto screenCoords = ScreenCoordsXY{ info->x, info->y };
int32_t y = info->y;
if (info->flags & TEXT_DRAW_FLAG_Y_OFFSET_EFFECT) if (info->flags & TEXT_DRAW_FLAG_Y_OFFSET_EFFECT)
{ {
y += *info->y_offset++; screenCoords.y += *info->y_offset++;
} }
PaletteMap paletteMap(info->palette); PaletteMap paletteMap(info->palette);
gfx_draw_glyph(dpi, sprite, x, y, paletteMap); gfx_draw_glyph(dpi, sprite, screenCoords, paletteMap);
} }
info->x += characterWidth; info->x += characterWidth;
@ -934,7 +933,7 @@ static void ttf_process_initial_colour(int32_t colour, text_draw_info* info)
} }
} }
void ttf_draw_string(rct_drawpixelinfo* dpi, const_utf8string text, int32_t colour, int32_t x, int32_t y) void ttf_draw_string(rct_drawpixelinfo* dpi, const_utf8string text, int32_t colour, const ScreenCoordsXY& coords)
{ {
if (text == nullptr) if (text == nullptr)
return; return;
@ -942,10 +941,10 @@ void ttf_draw_string(rct_drawpixelinfo* dpi, const_utf8string text, int32_t colo
text_draw_info info; text_draw_info info;
info.font_sprite_base = gCurrentFontSpriteBase; info.font_sprite_base = gCurrentFontSpriteBase;
info.flags = gCurrentFontFlags; info.flags = gCurrentFontFlags;
info.startX = x; info.startX = coords.x;
info.startY = x; info.startY = coords.y;
info.x = x; info.x = coords.x;
info.y = y; info.y = coords.y;
if (LocalisationService_UseTrueTypeFont()) if (LocalisationService_UseTrueTypeFont())
{ {
@ -992,16 +991,16 @@ static int32_t ttf_get_string_width(const utf8* text)
* rct2: 0x00682F28 * rct2: 0x00682F28
*/ */
void gfx_draw_string_with_y_offsets( void gfx_draw_string_with_y_offsets(
rct_drawpixelinfo* dpi, const utf8* text, int32_t colour, int32_t x, int32_t y, const int8_t* yOffsets, rct_drawpixelinfo* dpi, const utf8* text, int32_t colour, const ScreenCoordsXY& coords, const int8_t* yOffsets,
bool forceSpriteFont) bool forceSpriteFont)
{ {
text_draw_info info; text_draw_info info;
info.font_sprite_base = gCurrentFontSpriteBase; info.font_sprite_base = gCurrentFontSpriteBase;
info.flags = gCurrentFontFlags; info.flags = gCurrentFontFlags;
info.startX = x; info.startX = coords.x;
info.startY = x; info.startY = coords.y;
info.x = x; info.x = coords.x;
info.y = y; info.y = coords.y;
info.y_offset = yOffsets; info.y_offset = yOffsets;
info.flags |= TEXT_DRAW_FLAG_Y_OFFSET_EFFECT; info.flags |= TEXT_DRAW_FLAG_Y_OFFSET_EFFECT;

View File

@ -630,8 +630,10 @@ void FASTCALL gfx_sprite_to_buffer(DrawSpriteArgs& args);
void FASTCALL gfx_bmp_sprite_to_buffer(DrawSpriteArgs& args); void FASTCALL gfx_bmp_sprite_to_buffer(DrawSpriteArgs& args);
void FASTCALL gfx_rle_sprite_to_buffer(DrawSpriteArgs& args); void FASTCALL gfx_rle_sprite_to_buffer(DrawSpriteArgs& args);
void FASTCALL gfx_draw_sprite(rct_drawpixelinfo* dpi, int32_t image_id, const ScreenCoordsXY& coords, uint32_t tertiary_colour); void FASTCALL gfx_draw_sprite(rct_drawpixelinfo* dpi, int32_t image_id, const ScreenCoordsXY& coords, uint32_t tertiary_colour);
void FASTCALL gfx_draw_glyph(rct_drawpixelinfo* dpi, int32_t image_id, int32_t x, int32_t y, const PaletteMap& paletteMap); void FASTCALL
void FASTCALL gfx_draw_sprite_raw_masked(rct_drawpixelinfo* dpi, int32_t x, int32_t y, int32_t maskImage, int32_t colourImage); gfx_draw_glyph(rct_drawpixelinfo* dpi, int32_t image_id, const ScreenCoordsXY& coords, const PaletteMap& paletteMap);
void FASTCALL
gfx_draw_sprite_raw_masked(rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t maskImage, int32_t colourImage);
void FASTCALL gfx_draw_sprite_solid(rct_drawpixelinfo* dpi, int32_t image, const ScreenCoordsXY& coords, uint8_t colour); void FASTCALL gfx_draw_sprite_solid(rct_drawpixelinfo* dpi, int32_t image, const ScreenCoordsXY& coords, uint8_t colour);
void FASTCALL gfx_draw_sprite_software(rct_drawpixelinfo* dpi, ImageId imageId, const ScreenCoordsXY& spriteCoords); void FASTCALL gfx_draw_sprite_software(rct_drawpixelinfo* dpi, ImageId imageId, const ScreenCoordsXY& spriteCoords);
@ -670,13 +672,13 @@ int32_t gfx_draw_string_centred_wrapped(
rct_drawpixelinfo* dpi, void* args, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, uint8_t colour); rct_drawpixelinfo* dpi, void* args, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, uint8_t colour);
void gfx_draw_string_left_centred( void gfx_draw_string_left_centred(
rct_drawpixelinfo* dpi, rct_string_id format, void* args, int32_t colour, int32_t x, int32_t y); rct_drawpixelinfo* dpi, rct_string_id format, void* args, int32_t colour, const ScreenCoordsXY& coords);
void draw_string_centred_raw(rct_drawpixelinfo* dpi, int32_t x, int32_t y, int32_t numLines, char* text); void draw_string_centred_raw(rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t numLines, char* text);
void gfx_draw_string_centred_wrapped_partial( void gfx_draw_string_centred_wrapped_partial(
rct_drawpixelinfo* dpi, int32_t x, int32_t y, int32_t width, int32_t colour, rct_string_id format, void* args, rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, int32_t colour, rct_string_id format, void* args,
int32_t ticks); int32_t ticks);
void gfx_draw_string_with_y_offsets( void gfx_draw_string_with_y_offsets(
rct_drawpixelinfo* dpi, const utf8* text, int32_t colour, int32_t x, int32_t y, const int8_t* yOffsets, rct_drawpixelinfo* dpi, const utf8* text, int32_t colour, const ScreenCoordsXY& coords, const int8_t* yOffsets,
bool forceSpriteFont); bool forceSpriteFont);
int32_t gfx_wrap_string(char* buffer, int32_t width, int32_t* num_lines, int32_t* font_height); int32_t gfx_wrap_string(char* buffer, int32_t width, int32_t* num_lines, int32_t* font_height);
@ -685,7 +687,7 @@ int32_t gfx_get_string_width_new_lined(char* buffer);
int32_t string_get_height_raw(char* buffer); int32_t string_get_height_raw(char* buffer);
int32_t gfx_clip_string(char* buffer, int32_t width); int32_t gfx_clip_string(char* buffer, int32_t width);
void shorten_path(utf8* buffer, size_t bufferSize, const utf8* path, int32_t availableWidth); void shorten_path(utf8* buffer, size_t bufferSize, const utf8* path, int32_t availableWidth);
void ttf_draw_string(rct_drawpixelinfo* dpi, const_utf8string text, int32_t colour, int32_t x, int32_t y); void ttf_draw_string(rct_drawpixelinfo* dpi, const_utf8string text, int32_t colour, const ScreenCoordsXY& coords);
// scrolling text // scrolling text
void scrolling_text_initialise_bitmaps(); void scrolling_text_initialise_bitmaps();

View File

@ -254,23 +254,24 @@ void FASTCALL gfx_draw_sprite(rct_drawpixelinfo* dpi, int32_t image, const Scree
} }
} }
void FASTCALL gfx_draw_glyph(rct_drawpixelinfo* dpi, int32_t image, int32_t x, int32_t y, const PaletteMap& paletteMap) void FASTCALL gfx_draw_glyph(rct_drawpixelinfo* dpi, int32_t image, const ScreenCoordsXY& coords, const PaletteMap& paletteMap)
{ {
auto drawingEngine = dpi->DrawingEngine; auto drawingEngine = dpi->DrawingEngine;
if (drawingEngine != nullptr) if (drawingEngine != nullptr)
{ {
IDrawingContext* dc = drawingEngine->GetDrawingContext(dpi); IDrawingContext* dc = drawingEngine->GetDrawingContext(dpi);
dc->DrawGlyph(image, x, y, paletteMap); dc->DrawGlyph(image, coords.x, coords.y, paletteMap);
} }
} }
void FASTCALL gfx_draw_sprite_raw_masked(rct_drawpixelinfo* dpi, int32_t x, int32_t y, int32_t maskImage, int32_t colourImage) void FASTCALL
gfx_draw_sprite_raw_masked(rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t maskImage, int32_t colourImage)
{ {
auto drawingEngine = dpi->DrawingEngine; auto drawingEngine = dpi->DrawingEngine;
if (drawingEngine != nullptr) if (drawingEngine != nullptr)
{ {
IDrawingContext* dc = drawingEngine->GetDrawingContext(dpi); IDrawingContext* dc = drawingEngine->GetDrawingContext(dpi);
dc->DrawSpriteRawMasked(x, y, maskImage, colourImage); dc->DrawSpriteRawMasked(coords.x, coords.y, maskImage, colourImage);
} }
} }

View File

@ -93,7 +93,7 @@ static void DrawText(rct_drawpixelinfo* dpi, int32_t x, int32_t y, TextPaint* pa
break; break;
} }
ttf_draw_string(dpi, text, paint->Colour, x, y); ttf_draw_string(dpi, text, paint->Colour, { x, y });
if (paint->UnderlineText) if (paint->UnderlineText)
{ {

View File

@ -528,7 +528,7 @@ static void paint_attached_ps(rct_drawpixelinfo* dpi, paint_struct* ps, uint32_t
uint32_t imageId = paint_ps_colourify_image(attached_ps->image_id, ps->sprite_type, viewFlags); uint32_t imageId = paint_ps_colourify_image(attached_ps->image_id, ps->sprite_type, viewFlags);
if (attached_ps->flags & PAINT_STRUCT_FLAG_IS_MASKED) if (attached_ps->flags & PAINT_STRUCT_FLAG_IS_MASKED)
{ {
gfx_draw_sprite_raw_masked(dpi, screenCoords.x, screenCoords.y, imageId, attached_ps->colour_image_id); gfx_draw_sprite_raw_masked(dpi, screenCoords, imageId, attached_ps->colour_image_id);
} }
else else
{ {
@ -633,7 +633,7 @@ static void paint_ps_image(rct_drawpixelinfo* dpi, paint_struct* ps, uint32_t im
{ {
if (ps->flags & PAINT_STRUCT_FLAG_IS_MASKED) if (ps->flags & PAINT_STRUCT_FLAG_IS_MASKED)
{ {
return gfx_draw_sprite_raw_masked(dpi, x, y, imageId, ps->colour_image_id); return gfx_draw_sprite_raw_masked(dpi, { x, y }, imageId, ps->colour_image_id);
} }
gfx_draw_sprite(dpi, imageId, { x, y }, ps->tertiary_colour); gfx_draw_sprite(dpi, imageId, { x, y }, ps->tertiary_colour);
@ -1153,6 +1153,6 @@ void paint_draw_money_structs(rct_drawpixelinfo* dpi, paint_string_struct* ps)
} }
gfx_draw_string_with_y_offsets( gfx_draw_string_with_y_offsets(
&dpi2, buffer, COLOUR_BLACK, ps->x, ps->y, reinterpret_cast<int8_t*>(ps->y_offsets), forceSpriteFont); &dpi2, buffer, COLOUR_BLACK, { ps->x, ps->y }, reinterpret_cast<int8_t*>(ps->y_offsets), forceSpriteFont);
} while ((ps = ps->next) != nullptr); } while ((ps = ps->next) != nullptr);
} }