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;
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;
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 };
width = middleOutsetWidget->width() - 62;
gfx_draw_string_centred_wrapped_partial(
dpi, screenCoords.x, screenCoords.y, width, COLOUR_BRIGHT_GREEN, STR_BOTTOM_TOOLBAR_NEWS_TEXT, &newsItemText,
newsItem->Ticks);
dpi, screenCoords, width, COLOUR_BRIGHT_GREEN, STR_BOTTOM_TOOLBAR_NEWS_TEXT, &newsItemText, newsItem->Ticks);
screenCoords = w->windowPos
+ 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++;
}
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
x += 116;

View File

@ -211,5 +211,5 @@ static void window_tooltip_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Text
left = w->windowPos.x + ((w->width + 1) / 2) - 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.
*/
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;
char* buffer = gCommonStringFormatBuffer;
format_string(buffer, 256, format, args);
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
* 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);
gCurrentFontSpriteBase = FONT_SPRITE_BASE_MEDIUM;
gfx_draw_string(dpi, "", COLOUR_BLACK, screenCoords);
screenCoords = { x, y };
screenCoords = coords;
gCurrentFontFlags = 0;
for (int32_t i = 0; i <= numLines; i++)
@ -421,7 +421,7 @@ int32_t string_get_height_raw(char* buffer)
* ticks : ebp >> 16
*/
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 numLines, fontSpriteBase, lineHeight, lineY;
@ -440,7 +440,7 @@ void gfx_draw_string_centred_wrapped_partial(
int32_t numCharactersToDraw = ticks;
gCurrentFontFlags = 0;
lineY = y - ((numLines * lineHeight) / 2);
lineY = coords.y - ((numLines * lineHeight) / 2);
for (int32_t line = 0; line <= numLines; line++)
{
int32_t halfWidth = gfx_get_string_width(buffer) / 2;
@ -462,7 +462,7 @@ void gfx_draw_string_centred_wrapped_partial(
ch = nextCh;
}
screenCoords = { x - halfWidth, lineY };
screenCoords = { coords.x - halfWidth, lineY };
gfx_draw_string(dpi, buffer, TEXT_COLOUR_254, screenCoords);
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))
{
int32_t x = info->x;
int32_t y = info->y;
auto screenCoords = ScreenCoordsXY{ info->x, info->y };
if (info->flags & TEXT_DRAW_FLAG_Y_OFFSET_EFFECT)
{
y += *info->y_offset++;
screenCoords.y += *info->y_offset++;
}
PaletteMap paletteMap(info->palette);
gfx_draw_glyph(dpi, sprite, x, y, paletteMap);
gfx_draw_glyph(dpi, sprite, screenCoords, paletteMap);
}
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)
return;
@ -942,10 +941,10 @@ void ttf_draw_string(rct_drawpixelinfo* dpi, const_utf8string text, int32_t colo
text_draw_info info;
info.font_sprite_base = gCurrentFontSpriteBase;
info.flags = gCurrentFontFlags;
info.startX = x;
info.startY = x;
info.x = x;
info.y = y;
info.startX = coords.x;
info.startY = coords.y;
info.x = coords.x;
info.y = coords.y;
if (LocalisationService_UseTrueTypeFont())
{
@ -992,16 +991,16 @@ static int32_t ttf_get_string_width(const utf8* text)
* rct2: 0x00682F28
*/
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)
{
text_draw_info info;
info.font_sprite_base = gCurrentFontSpriteBase;
info.flags = gCurrentFontFlags;
info.startX = x;
info.startY = x;
info.x = x;
info.y = y;
info.startX = coords.x;
info.startY = coords.y;
info.x = coords.x;
info.y = coords.y;
info.y_offset = yOffsets;
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_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_glyph(rct_drawpixelinfo* dpi, int32_t image_id, int32_t x, int32_t y, const PaletteMap& 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_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_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);
void gfx_draw_string_left_centred(
rct_drawpixelinfo* dpi, rct_string_id format, void* args, int32_t colour, int32_t x, int32_t y);
void draw_string_centred_raw(rct_drawpixelinfo* dpi, int32_t x, int32_t y, int32_t numLines, char* text);
rct_drawpixelinfo* dpi, rct_string_id format, void* args, int32_t colour, const ScreenCoordsXY& coords);
void draw_string_centred_raw(rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t numLines, char* text);
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);
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);
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 gfx_clip_string(char* buffer, int32_t width);
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
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;
if (drawingEngine != nullptr)
{
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;
if (drawingEngine != nullptr)
{
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;
}
ttf_draw_string(dpi, text, paint->Colour, x, y);
ttf_draw_string(dpi, text, paint->Colour, { x, y });
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);
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
{
@ -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)
{
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);
@ -1153,6 +1153,6 @@ void paint_draw_money_structs(rct_drawpixelinfo* dpi, paint_string_struct* ps)
}
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);
}