Introduce widget::width and widget::height helper functions (#12053)

This commit is contained in:
Aaron van Geffen 2020-06-25 03:44:00 +02:00 committed by GitHub
parent 14a07359b3
commit 681b8d7938
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
47 changed files with 247 additions and 272 deletions

View File

@ -208,7 +208,7 @@ static void input_scroll_drag_continue(const ScreenCoordsXY& screenCoords, rct_w
if (scroll->flags & HSCROLLBAR_VISIBLE)
{
int16_t size = widget->right - widget->left - 1;
int16_t size = widget->width() - 1;
if (scroll->flags & VSCROLLBAR_VISIBLE)
size -= 11;
size = std::max(0, scroll->h_right - size);
@ -217,7 +217,7 @@ static void input_scroll_drag_continue(const ScreenCoordsXY& screenCoords, rct_w
if (scroll->flags & VSCROLLBAR_VISIBLE)
{
int16_t size = widget->bottom - widget->top - 1;
int16_t size = widget->height() - 1;
if (scroll->flags & HSCROLLBAR_VISIBLE)
size -= 11;
size = std::max(0, scroll->v_bottom - size);
@ -618,7 +618,7 @@ static void input_scroll_begin(rct_window* w, rct_widgetindex widgetIndex, const
rct_widget* widg = &w->widgets[widgetIndex];
rct_scroll* scroll = &w->scrolls[scroll_id];
int32_t widget_width = widg->right - widg->left - 1;
int32_t widget_width = widg->width() - 1;
if (scroll->flags & VSCROLLBAR_VISIBLE)
widget_width -= SCROLLBAR_WIDTH + 1;
int32_t widget_content_width = std::max(scroll->h_right - widget_width, 0);
@ -740,7 +740,7 @@ static void input_scroll_part_update_hthumb(rct_window* w, rct_widgetindex widge
int32_t newLeft;
newLeft = w->scrolls[scroll_id].h_right;
newLeft *= x;
x = widget->right - widget->left - 21;
x = widget->width() - 21;
if (w->scrolls[scroll_id].flags & VSCROLLBAR_VISIBLE)
x -= SCROLLBAR_WIDTH + 1;
newLeft /= x;
@ -750,7 +750,7 @@ static void input_scroll_part_update_hthumb(rct_window* w, rct_widgetindex widge
newLeft += x;
if (newLeft < 0)
newLeft = 0;
x = widget->right - widget->left - 1;
x = widget->width() - 1;
if (w->scrolls[scroll_id].flags & VSCROLLBAR_VISIBLE)
x -= SCROLLBAR_WIDTH + 1;
x *= -1;
@ -779,7 +779,7 @@ static void input_scroll_part_update_vthumb(rct_window* w, rct_widgetindex widge
int32_t newTop;
newTop = w->scrolls[scroll_id].v_bottom;
newTop *= y;
y = widget->bottom - widget->top - 21;
y = widget->height() - 21;
if (w->scrolls[scroll_id].flags & HSCROLLBAR_VISIBLE)
y -= SCROLLBAR_WIDTH + 1;
newTop /= y;
@ -789,7 +789,7 @@ static void input_scroll_part_update_vthumb(rct_window* w, rct_widgetindex widge
newTop += y;
if (newTop < 0)
newTop = 0;
y = widget->bottom - widget->top - 1;
y = widget->height() - 1;
if (w->scrolls[scroll_id].flags & HSCROLLBAR_VISIBLE)
y -= SCROLLBAR_WIDTH + 1;
y *= -1;
@ -833,7 +833,7 @@ static void input_scroll_part_update_hright(rct_window* w, rct_widgetindex widge
{
w->scrolls[scroll_id].flags |= HSCROLLBAR_RIGHT_PRESSED;
w->scrolls[scroll_id].h_left += 3;
int32_t newLeft = widget->right - widget->left - 1;
int32_t newLeft = widget->width() - 1;
if (w->scrolls[scroll_id].flags & VSCROLLBAR_VISIBLE)
newLeft -= SCROLLBAR_WIDTH + 1;
newLeft *= -1;
@ -876,7 +876,7 @@ static void input_scroll_part_update_vbottom(rct_window* w, rct_widgetindex widg
{
w->scrolls[scroll_id].flags |= VSCROLLBAR_DOWN_PRESSED;
w->scrolls[scroll_id].v_top += 3;
int32_t newTop = widget->bottom - widget->top - 1;
int32_t newTop = widget->height() - 1;
if (w->scrolls[scroll_id].flags & HSCROLLBAR_VISIBLE)
newTop -= SCROLLBAR_WIDTH + 1;
newTop *= -1;

View File

@ -83,8 +83,8 @@ void land_tool_show_surface_style_dropdown(rct_window* w, rct_widget* widget, ui
uint32_t surfaceCount = itemIndex;
window_dropdown_show_image(
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top, w->colours[2], 0,
surfaceCount, 47, 36, dropdown_get_appropriate_image_dropdown_items_per_row(surfaceCount));
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->height(), w->colours[2], 0, surfaceCount, 47, 36,
dropdown_get_appropriate_image_dropdown_items_per_row(surfaceCount));
gDropdownDefaultIndex = defaultIndex;
}
@ -113,8 +113,8 @@ void land_tool_show_edge_style_dropdown(rct_window* w, rct_widget* widget, uint8
auto itemsPerRow = dropdown_get_appropriate_image_dropdown_items_per_row(edgeCount);
window_dropdown_show_image(
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top, w->colours[2], 0, edgeCount,
47, 36, itemsPerRow);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->height(), w->colours[2], 0, edgeCount, 47, 36,
itemsPerRow);
gDropdownDefaultIndex = defaultIndex;
}

View File

@ -346,7 +346,7 @@ static void widget_text_centred(rct_drawpixelinfo* dpi, rct_window* w, rct_widge
if (widget->type == WWT_BUTTON || widget->type == WWT_TABLE_HEADER)
{
int32_t height = (widget->bottom - widget->top);
int32_t height = widget->height();
if (height >= 10)
topLeft.y += std::max<int32_t>(widget->top, widget->top + (height / 2) - 5);
else
@ -363,7 +363,7 @@ static void widget_text_centred(rct_drawpixelinfo* dpi, rct_window* w, rct_widge
formatArgs = &widget->string;
}
gfx_draw_string_centred_clipped(
dpi, stringId, formatArgs, colour, { (topLeft.x + r + 1) / 2 - 1, topLeft.y }, widget->right - widget->left - 2);
dpi, stringId, formatArgs, colour, { (topLeft.x + r + 1) / 2 - 1, topLeft.y }, widget->width() - 2);
}
/**
@ -391,7 +391,7 @@ static void widget_text(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetindex w
if (widget->type == WWT_BUTTON || widget->type == WWT_DROPDOWN || widget->type == WWT_SPINNER
|| widget->type == WWT_TABLE_HEADER)
{
int32_t height = (widget->bottom - widget->top);
int32_t height = widget->height();
if (height >= 10)
t = w->windowPos.y + std::max<int32_t>(widget->top, widget->top + (height / 2) - 5);
else
@ -548,7 +548,7 @@ static void widget_caption_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widge
return;
topLeft = w->windowPos + ScreenCoordsXY{ widget->left + 2, widget->top + 1 };
int32_t width = widget->right - widget->left - 4;
int32_t width = widget->width() - 4;
if ((widget + 1)->type == WWT_CLOSEBOX)
{
width -= 10;
@ -595,7 +595,7 @@ static void widget_closebox_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg
if (widget_is_disabled(w, widgetIndex))
colour |= COLOUR_FLAG_INSET;
gfx_draw_string_centred_clipped(dpi, widget->text, gCommonFormatArgs, colour, topLeft, widget->right - widget->left - 2);
gfx_draw_string_centred_clipped(dpi, widget->text, gCommonFormatArgs, colour, topLeft, widget->width() - 2);
}
/**

View File

@ -366,7 +366,7 @@ static void window_scroll_wheel_input(rct_window* w, int32_t scrollIndex, int32_
if (scroll->flags & VSCROLLBAR_VISIBLE)
{
int32_t size = widget->bottom - widget->top - 1;
int32_t size = widget->height() - 1;
if (scroll->flags & HSCROLLBAR_VISIBLE)
size -= 11;
size = std::max(0, scroll->v_bottom - size);
@ -374,7 +374,7 @@ static void window_scroll_wheel_input(rct_window* w, int32_t scrollIndex, int32_
}
else
{
int32_t size = widget->right - widget->left - 1;
int32_t size = widget->width() - 1;
if (scroll->flags & VSCROLLBAR_VISIBLE)
size -= 11;
size = std::max(0, scroll->h_right - size);

View File

@ -529,8 +529,8 @@ namespace OpenRCT2::Ui::Windows
std::memcpy(&gDropdownItemsArgs[i], &sz, sizeof(const char*));
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[widget->colour], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1,
w->colours[widget->colour], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->width() - 3);
}
else if (widgetDesc->Type == "spinner")
{
@ -669,8 +669,8 @@ namespace OpenRCT2::Ui::Windows
if (widget->type == WWT_SCROLL)
{
auto& listView = info.ListViews[scrollIndex];
auto width = widget->right - widget->left + 1 - 2;
auto height = widget->bottom - widget->top + 1 - 2;
auto width = widget->width() + 1 - 2;
auto height = widget->height() + 1 - 2;
if (listView.GetScrollbars() == ScrollbarType::Horizontal || listView.GetScrollbars() == ScrollbarType::Both)
{
height -= SCROLLBAR_WIDTH + 1;
@ -755,8 +755,8 @@ namespace OpenRCT2::Ui::Windows
{
auto left = w->windowPos.x + viewportWidget->left + 1;
auto top = w->windowPos.y + viewportWidget->top + 1;
auto width = (viewportWidget->right - viewportWidget->left) - 1;
auto height = (viewportWidget->bottom - viewportWidget->top) - 1;
auto width = viewportWidget->width() - 1;
auto height = viewportWidget->height() - 1;
auto viewport = w->viewport;
if (viewport == nullptr)
{

View File

@ -201,7 +201,7 @@ namespace OpenRCT2::Scripting
auto widget = GetWidget();
if (widget != nullptr)
{
return widget->right - widget->left;
return widget->width();
}
return 0;
}
@ -244,7 +244,7 @@ namespace OpenRCT2::Scripting
auto widget = GetWidget();
if (widget != nullptr)
{
return widget->bottom - widget->top;
return widget->height();
}
return 0;
}

View File

@ -153,9 +153,8 @@ rct_window* window_banner_open(rct_windownumber number)
// Create viewport
viewportWidget = &window_banner_widgets[WIDX_VIEWPORT];
viewport_create(
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
(viewportWidget->right - viewportWidget->left) - 2, (viewportWidget->bottom - viewportWidget->top) - 2, 0,
{ bannerViewPos, view_z }, 0, SPRITE_INDEX_NULL);
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 }, viewportWidget->width() - 2,
viewportWidget->height() - 2, 0, { bannerViewPos, view_z }, 0, SPRITE_INDEX_NULL);
w->viewport->flags = gConfigGeneral.always_show_gridlines ? VIEWPORT_FLAG_GRIDLINES : 0;
w->Invalidate();
@ -235,8 +234,8 @@ static void window_banner_mousedown(rct_window* w, rct_widgetindex widgetIndex,
widget--;
window_dropdown_show_text_custom_width(
{ widget->left + w->windowPos.x, widget->top + w->windowPos.y }, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 13, widget->right - widget->left - 3);
{ widget->left + w->windowPos.x, widget->top + w->windowPos.y }, widget->height() + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, 13, widget->width() - 3);
dropdown_set_checked(banner->text_colour - 1, true);
break;
@ -348,9 +347,8 @@ static void window_banner_viewport_rotate(rct_window* w)
// Create viewport
rct_widget* viewportWidget = &window_banner_widgets[WIDX_VIEWPORT];
viewport_create(
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
(viewportWidget->right - viewportWidget->left) - 1, (viewportWidget->bottom - viewportWidget->top) - 1, 0,
bannerViewPos, 0, SPRITE_INDEX_NULL);
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 }, (viewportWidget->width()) - 1,
(viewportWidget->height()) - 1, 0, bannerViewPos, 0, SPRITE_INDEX_NULL);
if (w->viewport != nullptr)
w->viewport->flags = gConfigGeneral.always_show_gridlines ? VIEWPORT_FLAG_GRIDLINES : 0;

View File

@ -736,9 +736,8 @@ static void window_cheats_misc_mousedown(rct_window* w, rct_widgetindex widgetIn
gDropdownItemsArgs[i] = WeatherTypes[i];
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 6,
dropdownWidget->right - dropdownWidget->left - 3);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 6, dropdownWidget->width() - 3);
currentWeather = gClimateCurrent.Weather;
dropdown_set_checked(currentWeather, true);
@ -757,9 +756,8 @@ static void window_cheats_misc_mousedown(rct_window* w, rct_widgetindex widgetIn
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 3,
dropdownWidget->right - dropdownWidget->left - 3);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 3, dropdownWidget->width() - 3);
dropdown_set_checked(_selectedStaffSpeed, true);
}
}

View File

@ -140,8 +140,8 @@ static void custom_currency_window_mousedown(rct_window* w, rct_widgetindex widg
gDropdownItemsArgs[1] = STR_SUFFIX;
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 2, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, 2, widget->width() - 3);
if (CurrencyDescriptors[CURRENCY_CUSTOM].affix_unicode == CURRENCY_PREFIX)
{

View File

@ -460,7 +460,7 @@ void window_dropdown_show_colour(rct_window* w, rct_widget* widget, uint8_t drop
// Show dropdown
window_dropdown_show_image(
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, dropdownColour,
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->height() + 1, dropdownColour,
DROPDOWN_FLAG_STAY_OPEN, COLOUR_COUNT, 12, 12, _appropriateImageDropdownItemsPerRow[COLOUR_COUNT]);
gDropdownIsColour = true;

View File

@ -596,8 +596,8 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo
{
rct_drawpixelinfo clipDPI;
screenPos = w->windowPos + ScreenCoordsXY{ widget->left + 1, widget->top + 1 };
width = widget->right - widget->left - 1;
int32_t height = widget->bottom - widget->top - 1;
width = widget->width() - 1;
int32_t height = widget->height() - 1;
if (clip_drawpixelinfo(&clipDPI, dpi, screenPos.x, screenPos.y, width, height))
{
object_draw_preview(object, &clipDPI, width, height);
@ -628,7 +628,7 @@ static void window_editor_inventions_list_scrollpaint(rct_window* w, rct_drawpix
uint8_t paletteIndex = ColourMapA[w->colours[1]].mid_light;
gfx_clear(dpi, paletteIndex);
int16_t boxWidth = (w->widgets[WIDX_RESEARCH_ORDER_SCROLL].right - w->widgets[WIDX_RESEARCH_ORDER_SCROLL].left);
int16_t boxWidth = w->widgets[WIDX_RESEARCH_ORDER_SCROLL].width();
int16_t columnSplitOffset = boxWidth / 2;
int32_t itemY = -SCROLLABLE_ROW_HEIGHT;

View File

@ -609,7 +609,7 @@ void window_editor_object_selection_mousedown(rct_window* w, rct_widgetindex wid
}
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1,
w->colours[widget->colour], DROPDOWN_FLAG_STAY_OPEN, _numSourceGameItems + numSelectionItems);
for (int32_t i = 0; i < _numSourceGameItems; i++)
@ -916,7 +916,7 @@ static void window_editor_object_selection_invalidate(rct_window* w)
for (int32_t i = WIDX_FILTER_RIDE_TAB_ALL; i <= WIDX_FILTER_RIDE_TAB_STALL; i++)
w->widgets[i].type = WWT_TAB;
int32_t width_limit = (w->widgets[WIDX_LIST].right - w->widgets[WIDX_LIST].left - 15) / 2;
int32_t width_limit = (w->widgets[WIDX_LIST].width() - 15) / 2;
w->widgets[WIDX_LIST_SORT_TYPE].type = WWT_TABLE_HEADER;
w->widgets[WIDX_LIST_SORT_TYPE].top = w->widgets[WIDX_FILTER_TEXT_BOX].bottom + 3;
@ -1027,8 +1027,7 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
stringId = _listSortType == RIDE_SORT_TYPE ? static_cast<rct_string_id>(_listSortDescending ? STR_DOWN : STR_UP)
: STR_NONE;
auto screenPos = w->windowPos + ScreenCoordsXY{ widget->left + 1, widget->top + 1 };
gfx_draw_string_left_clipped(
dpi, STR_OBJECTS_SORT_TYPE, &stringId, w->colours[1], screenPos, widget->right - widget->left);
gfx_draw_string_left_clipped(dpi, STR_OBJECTS_SORT_TYPE, &stringId, w->colours[1], screenPos, widget->width());
}
widget = &w->widgets[WIDX_LIST_SORT_RIDE];
if (widget->type != WWT_EMPTY)
@ -1036,8 +1035,7 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
stringId = _listSortType == RIDE_SORT_RIDE ? static_cast<rct_string_id>(_listSortDescending ? STR_DOWN : STR_UP)
: STR_NONE;
auto screenPos = w->windowPos + ScreenCoordsXY{ widget->left + 1, widget->top + 1 };
gfx_draw_string_left_clipped(
dpi, STR_OBJECTS_SORT_RIDE, &stringId, w->colours[1], screenPos, widget->right - widget->left);
gfx_draw_string_left_clipped(dpi, STR_OBJECTS_SORT_RIDE, &stringId, w->colours[1], screenPos, widget->width());
}
if (w->selected_list_item == -1 || _loadedObject == nullptr)
@ -1050,8 +1048,8 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
{
rct_drawpixelinfo clipDPI;
auto screenPos = w->windowPos + ScreenCoordsXY{ widget->left + 1, widget->top + 1 };
width = widget->right - widget->left - 1;
int32_t height = widget->bottom - widget->top - 1;
width = widget->width() - 1;
int32_t height = widget->height() - 1;
if (clip_drawpixelinfo(&clipDPI, dpi, screenPos.x, screenPos.y, width, height))
{
object_draw_preview(_loadedObject, &clipDPI, width, height);
@ -1168,7 +1166,7 @@ static void window_editor_object_selection_scrollpaint(rct_window* w, rct_drawpi
gCurrentFontSpriteBase = FONT_SPRITE_BASE_MEDIUM;
}
int32_t width_limit = w->widgets[WIDX_LIST].right - w->widgets[WIDX_LIST].left - screenCoords.x;
int32_t width_limit = w->widgets[WIDX_LIST].width() - screenCoords.x;
if (ridePage)
{

View File

@ -486,9 +486,8 @@ static void window_editor_objective_options_show_objective_dropdown(rct_window*
numItems++;
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
dropdownWidget->right - dropdownWidget->left - 3);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, dropdownWidget->width() - 3);
objectiveType = gScenarioObjectiveType;
for (int32_t j = 0; j < numItems; j++)
@ -514,9 +513,8 @@ static void window_editor_objective_options_show_category_dropdown(rct_window* w
gDropdownItemsArgs[i] = ScenarioCategoryStringIds[i];
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 5,
dropdownWidget->right - dropdownWidget->left - 3);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 5, dropdownWidget->width() - 3);
dropdown_set_checked(gS6Info.category, true);
}

View File

@ -548,9 +548,8 @@ static void window_editor_scenario_options_show_climate_dropdown(rct_window* w)
gDropdownItemsArgs[i] = ClimateNames[i];
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, CLIMATE_COUNT,
dropdownWidget->right - dropdownWidget->left - 3);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, CLIMATE_COUNT, dropdownWidget->width() - 3);
dropdown_set_checked(gClimate, true);
}
@ -1240,9 +1239,8 @@ static void window_editor_scenario_options_park_mousedown(rct_window* w, rct_wid
gDropdownItemsArgs[2] = STR_PAID_ENTRY_PAID_RIDES;
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top - 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 3,
dropdownWidget->right - dropdownWidget->left - 3);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() - 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 3, dropdownWidget->width() - 3);
if (gParkFlags & PARK_FLAGS_UNLOCK_ALL_PRICES)
dropdown_set_checked(2, true);

View File

@ -620,7 +620,7 @@ static void window_finances_summary_scrollgetsize(rct_window* w, int32_t scrollI
static void window_finances_summary_invertscroll(rct_window* w)
{
rct_widget summary = w->widgets[WIDX_SUMMARY_SCROLL];
w->scrolls[0].h_left = std::max(0, w->scrolls[0].h_right - ((summary.right - summary.left) - 2));
w->scrolls[0].h_left = std::max(0, w->scrolls[0].h_right - (summary.width() - 2));
widget_scroll_update_thumbs(w, WIDX_SUMMARY_SCROLL);
}
@ -727,7 +727,7 @@ static void window_finances_summary_scrollpaint(rct_window* w, rct_drawpixelinfo
auto screenCoords = ScreenCoordsXY{ 0, TABLE_CELL_HEIGHT + 2 };
rct_widget self = w->widgets[WIDX_SUMMARY_SCROLL];
int32_t row_width = std::max<uint16_t>(w->scrolls[0].h_right, self.right - self.left);
int32_t row_width = std::max<uint16_t>(w->scrolls[0].h_right, self.width());
// Expenditure / Income row labels
for (int32_t i = 0; i < static_cast<int32_t>(ExpenditureType::Count); i++)
@ -1326,9 +1326,8 @@ static void window_finances_research_mousedown(rct_window* w, rct_widgetindex wi
gDropdownItemsArgs[i] = ResearchFundingLevelNames[i];
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4,
dropdownWidget->right - dropdownWidget->left - 3);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4, dropdownWidget->width() - 3);
int32_t currentResearchLevel = gResearchFundingLevel;
dropdown_set_checked(currentResearchLevel, true);

View File

@ -685,8 +685,8 @@ static void window_footpath_show_footpath_types_dialog(rct_window* w, rct_widget
auto itemsPerRow = dropdown_get_appropriate_image_dropdown_items_per_row(numPathTypes);
window_dropdown_show_image(
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
numPathTypes, 47, 36, itemsPerRow);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->height() + 1, w->colours[1], 0, numPathTypes, 47,
36, itemsPerRow);
}
/**

View File

@ -585,7 +585,7 @@ static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo* dpi, rc
utf8* newsItemText = newsItem->Text;
auto screenCoords = w->windowPos
+ ScreenCoordsXY{ (middleOutsetWidget->left + middleOutsetWidget->right) / 2, middleOutsetWidget->top + 11 };
width = middleOutsetWidget->right - middleOutsetWidget->left - 62;
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);
@ -690,7 +690,7 @@ static void window_game_bottom_toolbar_draw_middle_panel(rct_drawpixelinfo* dpi,
ScreenCoordsXY middleWidgetCoords(
w->windowPos.x + (middleOutsetWidget->left + middleOutsetWidget->right) / 2,
w->windowPos.y + middleOutsetWidget->top + line_height + 1);
int32_t width = middleOutsetWidget->right - middleOutsetWidget->left - 62;
int32_t width = middleOutsetWidget->width() - 62;
// Check if there is a map tooltip to draw
rct_string_id stringId;

View File

@ -829,8 +829,8 @@ void window_guest_viewport_init(rct_window* w)
{
auto view_widget = &w->widgets[WIDX_VIEWPORT];
auto screenPos = ScreenCoordsXY{ view_widget->left + 1 + w->windowPos.x, view_widget->top + 1 + w->windowPos.y };
int32_t width = view_widget->right - view_widget->left - 1;
int32_t height = view_widget->bottom - view_widget->top - 1;
int32_t width = view_widget->width() - 1;
int32_t height = view_widget->height() - 1;
viewport_create(
w, screenPos, width, height, 0,
@ -858,8 +858,8 @@ static void window_guest_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dp
return;
rct_widget* widget = &w->widgets[WIDX_TAB_1];
int32_t width = widget->right - widget->left - 1;
int32_t height = widget->bottom - widget->top - 1;
int32_t width = widget->width() - 1;
int32_t height = widget->height() - 1;
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left + 1, widget->top + 1 };
if (w->page == WINDOW_GUEST_OVERVIEW)
height++;
@ -1083,15 +1083,15 @@ void window_guest_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
peep->FormatActionTo(ft);
rct_widget* widget = &w->widgets[WIDX_ACTION_LBL];
auto screenPos = w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->top - 1 };
int32_t width = widget->right - widget->left;
int32_t width = widget->width();
gfx_draw_string_centred_clipped(dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, screenPos, width);
// Draw the marquee thought
widget = &w->widgets[WIDX_MARQUEE];
width = widget->right - widget->left - 3;
width = widget->width() - 3;
int32_t left = widget->left + 2 + w->windowPos.x;
int32_t top = widget->top + w->windowPos.y;
int32_t height = widget->bottom - widget->top;
int32_t height = widget->height();
rct_drawpixelinfo dpi_marquee;
if (!clip_drawpixelinfo(&dpi_marquee, dpi, left, top, width, height))
{
@ -1117,7 +1117,7 @@ void window_guest_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
return;
}
screenPos.x = widget->right - widget->left - w->list_information_type;
screenPos.x = widget->width() - w->list_information_type;
peep_thought_set_format_args(&peep->Thoughts[i]);
gfx_draw_string_left(&dpi_marquee, STR_WINDOW_COLOUR_2_STRINGID, gCommonFormatArgs, COLOUR_BLACK, { screenPos.x, 0 });
}
@ -2072,7 +2072,7 @@ void window_guest_inventory_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
rct_widget* pageBackgroundWidget = &window_guest_inventory_widgets[WIDX_PAGE_BACKGROUND];
auto screenCoords = w->windowPos + ScreenCoordsXY{ pageBackgroundWidget->left + 4, pageBackgroundWidget->top + 2 };
int32_t itemNameWidth = pageBackgroundWidget->right - pageBackgroundWidget->left - 8;
int32_t itemNameWidth = pageBackgroundWidget->width() - 8;
int32_t maxY = w->windowPos.y + w->height - 22;
int32_t numItems = 0;

View File

@ -445,8 +445,8 @@ static void window_guest_list_mousedown(rct_window* w, rct_widgetindex widgetInd
widget = &w->widgets[widgetIndex - 1];
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, _window_guest_list_num_pages, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, _window_guest_list_num_pages, widget->width() - 3);
for (i = 0; i < _window_guest_list_num_pages; i++)
{
@ -467,8 +467,8 @@ static void window_guest_list_mousedown(rct_window* w, rct_widgetindex widgetInd
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 2, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, 2, widget->width() - 3);
dropdown_set_checked(_window_guest_list_selected_view, true);
break;

View File

@ -749,7 +749,7 @@ static void window_loadsave_paint(rct_window* w, rct_drawpixelinfo* dpi)
static void window_loadsave_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t scrollIndex)
{
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light);
const int32_t listWidth = w->widgets[WIDX_SCROLL].right - w->widgets[WIDX_SCROLL].left;
const int32_t listWidth = w->widgets[WIDX_SCROLL].width();
const int32_t dateAnchor = w->widgets[WIDX_SORT_DATE].left + maxDateWidth + DATE_TIME_GAP;
for (int32_t i = 0; i < w->no_list_items; i++)
@ -781,7 +781,7 @@ static void window_loadsave_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, i
auto ft = Formatter::Common();
ft.Add<rct_string_id>(STR_STRING);
ft.Add<char*>(_listItems[i].name.c_str());
int32_t max_file_width = w->widgets[WIDX_SORT_NAME].right - w->widgets[WIDX_SORT_NAME].left - 10;
int32_t max_file_width = w->widgets[WIDX_SORT_NAME].width() - 10;
gfx_draw_string_left_clipped(dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, { 10, y }, max_file_width);
// Print formatted modified date, if this is a file

View File

@ -938,8 +938,8 @@ static void window_map_centre_on_view_point()
// calculate width and height of minimap
ax = w_map->widgets[WIDX_MAP].right - w_map->widgets[WIDX_MAP].left - 11;
bx = w_map->widgets[WIDX_MAP].bottom - w_map->widgets[WIDX_MAP].top - 11;
ax = w_map->widgets[WIDX_MAP].width() - 11;
bx = w_map->widgets[WIDX_MAP].height() - 11;
bp = ax;
di = bx;

View File

@ -367,8 +367,8 @@ static void window_multiplayer_groups_show_group_dropdown(rct_window* w, rct_wid
numItems = network_get_num_groups();
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, 0, numItems, widget->right - dropdownWidget->left);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, 0, numItems, widget->right - dropdownWidget->left);
for (i = 0; i < network_get_num_groups(); i++)
{
@ -916,8 +916,7 @@ static void window_multiplayer_groups_paint(rct_window* w, rct_drawpixelinfo* dp
ft.Add<const char*>(buffer);
gfx_draw_string_centred_clipped(
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK,
w->windowPos + ScreenCoordsXY{ (widget->left + widget->right - 11) / 2, widget->top },
widget->right - widget->left - 8);
w->windowPos + ScreenCoordsXY{ (widget->left + widget->right - 11) / 2, widget->top }, widget->width() - 8);
}
auto screenPos = w->windowPos
@ -944,8 +943,7 @@ static void window_multiplayer_groups_paint(rct_window* w, rct_drawpixelinfo* dp
ft.Add<const char*>(buffer);
gfx_draw_string_centred_clipped(
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK,
w->windowPos + ScreenCoordsXY{ (widget->left + widget->right - 11) / 2, widget->top },
widget->right - widget->left - 8);
w->windowPos + ScreenCoordsXY{ (widget->left + widget->right - 11) / 2, widget->top }, widget->width() - 8);
}
}

View File

@ -249,8 +249,8 @@ static void window_new_campaign_mousedown(rct_window* w, rct_widgetindex widgetI
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
dropdownWidget->right - dropdownWidget->left - 3);
dropdownWidget->height() + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
dropdownWidget->width() - 3);
}
}
else
@ -279,8 +279,8 @@ static void window_new_campaign_mousedown(rct_window* w, rct_widgetindex widgetI
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
dropdownWidget->right - dropdownWidget->left - 3);
dropdownWidget->height() + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
dropdownWidget->width() - 3);
}
break;
// In RCT2, the maximum was 6 weeks

View File

@ -104,7 +104,7 @@ rct_window* window_news_open()
int32_t height = 0;
window_get_scroll_size(window, 0, &width, &height);
widget = &window_news_widgets[WIDX_SCROLL];
window->scrolls[0].v_top = std::max(0, height - (widget->bottom - widget->top - 1));
window->scrolls[0].v_top = std::max(0, height - (widget->height() - 1));
widget_scroll_update_thumbs(window, WIDX_SCROLL);
return window;

View File

@ -574,7 +574,7 @@ static void window_object_load_error_paint(rct_window* w, rct_drawpixelinfo* dpi
static void window_object_load_error_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t scrollIndex)
{
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light);
const int32_t list_width = w->widgets[WIDX_SCROLL].right - w->widgets[WIDX_SCROLL].left;
const int32_t list_width = w->widgets[WIDX_SCROLL].width();
for (int32_t i = 0; i < w->no_list_items; i++)
{

View File

@ -1223,8 +1223,8 @@ static void window_options_mousedown(rct_window* w, rct_widgetindex widgetIndex,
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, num_items, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, num_items, widget->width() - 3);
dropdown_set_checked(static_cast<int32_t>(theme_manager_get_active_available_theme_index()), true);
widget_invalidate(w, WIDX_THEMES_DROPDOWN);
@ -1244,8 +1244,8 @@ static void window_options_mousedown(rct_window* w, rct_widgetindex widgetIndex,
}
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[1], DROPDOWN_FLAG_STAY_OPEN, num_items);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1],
DROPDOWN_FLAG_STAY_OPEN, num_items);
dropdown_set_checked(static_cast<int32_t>(title_get_current_sequence()), true);
break;
@ -1258,8 +1258,8 @@ static void window_options_mousedown(rct_window* w, rct_widgetindex widgetIndex,
gDropdownItemsArgs[1] = STR_OPTIONS_SCENARIO_ORIGIN;
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, num_items, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, num_items, widget->width() - 3);
dropdown_set_checked(gConfigGeneral.scenario_select_mode, true);
break;
@ -1577,7 +1577,7 @@ static void initialize_scroll_position(rct_window* w, rct_widgetindex widget_ind
rct_widget* widget = &window_options_audio_widgets[widget_index];
rct_scroll* scroll = &w->scrolls[scroll_id];
int widget_size = scroll->h_right - (widget->right - widget->left - 1);
int widget_size = scroll->h_right - (widget->width() - 1);
scroll->h_left = ceil(volume / 100.0f * widget_size);
widget_scroll_update_thumbs(w, widget_index);
@ -1918,7 +1918,7 @@ static void window_options_invalidate(rct_window* w)
static uint8_t get_scroll_percentage(rct_widget* widget, rct_scroll* scroll)
{
uint8_t width = widget->right - widget->left - 1;
uint8_t width = widget->width() - 1;
return static_cast<float>(scroll->h_left) / (scroll->h_right - width) * 100;
}
@ -2099,8 +2099,8 @@ static void window_options_paint(rct_window* w, rct_drawpixelinfo* dpi)
static void window_options_show_dropdown(rct_window* w, rct_widget* widget, int32_t num_items)
{
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, num_items, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, num_items, widget->width() - 3);
}
static void window_options_update_height_markers()

View File

@ -699,8 +699,7 @@ static void window_park_entrance_mousedown(rct_window* w, rct_widgetindex widget
gDropdownItemsArgs[0] = STR_CLOSE_PARK;
gDropdownItemsArgs[1] = STR_OPEN_PARK;
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1, w->colours[1], 0,
2);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0, 2);
if (park_is_open())
{
@ -877,8 +876,7 @@ static void window_park_entrance_paint(rct_window* w, rct_drawpixelinfo* dpi)
labelWidget = &window_park_entrance_widgets[WIDX_STATUS];
gfx_draw_string_centred_clipped(
dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK,
w->windowPos + ScreenCoordsXY{ (labelWidget->left + labelWidget->right) / 2, labelWidget->top },
labelWidget->right - labelWidget->left);
w->windowPos + ScreenCoordsXY{ (labelWidget->left + labelWidget->right) / 2, labelWidget->top }, labelWidget->width());
}
/**
@ -935,8 +933,8 @@ static void window_park_init_viewport(rct_window* w)
rct_widget* viewportWidget = &window_park_entrance_widgets[WIDX_VIEWPORT];
viewport_create(
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
(viewportWidget->right - viewportWidget->left) - 1, (viewportWidget->bottom - viewportWidget->top) - 1, 0,
{ x, y, z }, w->viewport_focus_sprite.type & VIEWPORT_FOCUS_TYPE_MASK, SPRITE_INDEX_NULL);
viewportWidget->width() - 1, viewportWidget->height() - 1, 0, { x, y, z },
w->viewport_focus_sprite.type & VIEWPORT_FOCUS_TYPE_MASK, SPRITE_INDEX_NULL);
w->flags |= (1 << 2);
w->Invalidate();
}

View File

@ -239,8 +239,8 @@ static void window_player_overview_show_group_dropdown(rct_window* w, rct_widget
numItems = network_get_num_groups();
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, 0, numItems, widget->right - dropdownWidget->left);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, 0, numItems, widget->right - dropdownWidget->left);
for (i = 0; i < network_get_num_groups(); i++)
{
@ -379,8 +379,7 @@ void window_player_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
gfx_draw_string_centred_clipped(
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK,
w->windowPos + ScreenCoordsXY{ (widget->left + widget->right - 11) / 2, widget->top },
widget->right - widget->left - 8);
w->windowPos + ScreenCoordsXY{ (widget->left + widget->right - 11) / 2, widget->top }, widget->width() - 8);
}
// Draw ping
@ -448,7 +447,7 @@ void window_player_overview_invalidate(rct_window* w)
w->widgets[WIDX_VIEWPORT].right = w->width - 26;
w->widgets[WIDX_VIEWPORT].bottom = w->height - 14;
int32_t groupDropdownWidth = w->widgets[WIDX_GROUP].right - w->widgets[WIDX_GROUP].left;
int32_t groupDropdownWidth = w->widgets[WIDX_GROUP].width();
w->widgets[WIDX_GROUP].left = (w->width - groupDropdownWidth) / 2;
w->widgets[WIDX_GROUP].right = w->widgets[WIDX_GROUP].left + groupDropdownWidth;
w->widgets[WIDX_GROUP_DROPDOWN].left = w->widgets[WIDX_GROUP].right - 10;
@ -462,8 +461,8 @@ void window_player_overview_invalidate(rct_window* w)
rct_widget* viewportWidget = &window_player_overview_widgets[WIDX_VIEWPORT];
viewport->pos = w->windowPos + ScreenCoordsXY{ viewportWidget->left, viewportWidget->top };
viewport->width = viewportWidget->right - viewportWidget->left;
viewport->height = viewportWidget->bottom - viewportWidget->top;
viewport->width = viewportWidget->width();
viewport->height = viewportWidget->height();
viewport->view_width = viewport->width * viewport->zoom;
viewport->view_height = viewport->height * viewport->zoom;
}

View File

@ -503,9 +503,8 @@ static void window_research_funding_mousedown(rct_window* w, rct_widgetindex wid
gDropdownItemsArgs[i] = ResearchFundingLevelNames[i];
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4,
dropdownWidget->right - dropdownWidget->left - 3);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4, dropdownWidget->width() - 3);
int32_t currentResearchLevel = gResearchFundingLevel;
dropdown_set_checked(currentResearchLevel, true);

View File

@ -1325,7 +1325,7 @@ static void window_ride_draw_tab_vehicle(rct_drawpixelinfo* dpi, rct_window* w)
return;
}
screenCoords = ScreenCoordsXY{ (widget->right - widget->left) / 2, (widget->bottom - widget->top) - 12 };
screenCoords = ScreenCoordsXY{ widget->width() / 2, widget->height() - 12 };
auto ride = get_ride(w->number);
if (ride == nullptr)
@ -1974,8 +1974,8 @@ static void window_ride_init_viewport(rct_window* w)
rct_widget* view_widget = &w->widgets[WIDX_VIEWPORT];
auto screenPos = w->windowPos + ScreenCoordsXY{ view_widget->left + 1, view_widget->top + 1 };
int32_t width = view_widget->right - view_widget->left - 1;
int32_t height = view_widget->bottom - view_widget->top - 1;
int32_t width = view_widget->width() - 1;
int32_t height = view_widget->height() - 1;
viewport_create(
w, screenPos, width, height, focus.coordinate.zoom,
{ focus.coordinate.x, focus.coordinate.y & VIEWPORT_FOCUS_Y_MASK, focus.coordinate.z },
@ -2138,8 +2138,8 @@ static void window_ride_show_view_dropdown(rct_window* w, rct_widget* widget)
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, 0, numItems, widget->right - dropdownWidget->left);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, 0, numItems, widget->right - dropdownWidget->left);
// First item
gDropdownItemsFormat[0] = STR_DROPDOWN_MENU_LABEL;
@ -2253,8 +2253,7 @@ static void window_ride_show_open_dropdown(rct_window* w, rct_widget* widget)
window_ride_set_dropdown(info, RIDE_STATUS_TESTING, STR_TEST_RIDE);
window_ride_set_dropdown(info, RIDE_STATUS_OPEN, STR_OPEN_RIDE);
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1, w->colours[1], 0,
info.NumItems);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0, info.NumItems);
dropdown_set_checked(info.CheckedIndex, true);
gDropdownDefaultIndex = info.DefaultIndex;
}
@ -2324,8 +2323,8 @@ static void window_ride_show_ride_type_dropdown(rct_window* w, rct_widget* widge
rct_widget* dropdownWidget = widget - 1;
window_dropdown_show_text(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], DROPDOWN_FLAG_STAY_OPEN, RIDE_TYPE_COUNT);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], DROPDOWN_FLAG_STAY_OPEN, RIDE_TYPE_COUNT);
// Find the current ride type in the ordered list.
uint8_t pos = 0;
@ -2433,9 +2432,8 @@ static void window_ride_show_vehicle_type_dropdown(rct_window* w, rct_widget* wi
rct_widget* dropdownWidget = widget - 1;
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
widget->right - dropdownWidget->left);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - dropdownWidget->left);
// Find the current vehicle type in the ordered list.
uint8_t pos = 0;
@ -2952,7 +2950,7 @@ static void window_ride_main_paint(rct_window* w, rct_drawpixelinfo* dpi)
rct_string_id ride_status = window_ride_get_status(w, gCommonFormatArgs);
gfx_draw_string_centred_clipped(
dpi, ride_status, gCommonFormatArgs, COLOUR_BLACK,
w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->top }, widget->right - widget->left);
w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->top }, widget->width());
}
#pragma endregion
@ -3255,8 +3253,8 @@ static void window_ride_vehicle_scrollpaint(rct_window* w, rct_drawpixelinfo* dp
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width, dpi->y + dpi->height, PALETTE_INDEX_12);
rct_widget* widget = &window_ride_vehicle_widgets[WIDX_VEHICLE_TRAINS_PREVIEW];
int32_t startX = std::max(2, ((widget->right - widget->left) - ((ride->num_vehicles - 1) * 36)) / 2 - 25);
int32_t startY = widget->bottom - widget->top - 4;
int32_t startX = std::max(2, (widget->width() - ((ride->num_vehicles - 1) * 36)) / 2 - 25);
int32_t startY = widget->height() - 4;
rct_ride_entry_vehicle* rideVehicleEntry = &rideEntry->vehicles[ride_entry_get_vehicle_at_position(
ride->subtype, ride->num_cars_per_train, 0)];
@ -3414,9 +3412,8 @@ static void window_ride_mode_dropdown(rct_window* w, rct_widget* widget)
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numAvailableModes,
widget->right - dropdownWidget->left);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numAvailableModes, widget->right - dropdownWidget->left);
if (checkedIndex != -1)
{
@ -3441,9 +3438,8 @@ static void window_ride_load_dropdown(rct_window* w, rct_widget* widget)
gDropdownItemsArgs[i] = VehicleLoadNames[i];
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 5,
widget->right - dropdownWidget->left);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 5, widget->right - dropdownWidget->left);
dropdown_set_checked(ride->depart_flags & RIDE_DEPART_WAIT_FOR_LOAD_MASK, true);
}
@ -4052,9 +4048,8 @@ static void window_ride_maintenance_mousedown(rct_window* w, rct_widgetindex wid
gDropdownItemsArgs[i] = RideInspectionIntervalNames[i];
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 7,
widget->right - dropdownWidget->left);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 7, widget->right - dropdownWidget->left);
dropdown_set_checked(ride->inspection_interval, true);
break;
@ -4093,7 +4088,7 @@ static void window_ride_maintenance_mousedown(rct_window* w, rct_widgetindex wid
{
window_dropdown_show_text(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], DROPDOWN_FLAG_STAY_OPEN, num_items);
dropdownWidget->height() + 1, w->colours[1], DROPDOWN_FLAG_STAY_OPEN, num_items);
num_items = 1;
int32_t breakdownReason = ride->breakdown_reason_pending;
@ -4566,9 +4561,8 @@ static void window_ride_colour_mousedown(rct_window* w, rct_widgetindex widgetIn
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4,
widget->right - dropdownWidget->left);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4, widget->right - dropdownWidget->left);
dropdown_set_checked(colourSchemeIndex, true);
break;
@ -4589,9 +4583,8 @@ static void window_ride_colour_mousedown(rct_window* w, rct_widgetindex widgetIn
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4,
widget->right - dropdownWidget->left);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4, widget->right - dropdownWidget->left);
dropdown_set_checked(ride->track_colour[colourSchemeIndex].supports, true);
break;
@ -4615,9 +4608,8 @@ static void window_ride_colour_mousedown(rct_window* w, rct_widgetindex widgetIn
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, ddIndex,
widget->right - dropdownWidget->left);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, ddIndex, widget->right - dropdownWidget->left);
break;
}
case WIDX_VEHICLE_COLOUR_SCHEME_DROPDOWN:
@ -4630,9 +4622,9 @@ static void window_ride_colour_mousedown(rct_window* w, rct_widgetindex widgetIn
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN,
rideEntry->max_cars_in_train > 1 ? 3 : 2, widget->right - dropdownWidget->left);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, rideEntry->max_cars_in_train > 1 ? 3 : 2,
widget->right - dropdownWidget->left);
dropdown_set_checked(ride->colour_scheme_type & 3, true);
break;
@ -4652,9 +4644,8 @@ static void window_ride_colour_mousedown(rct_window* w, rct_widgetindex widgetIn
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
widget->right - dropdownWidget->left);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - dropdownWidget->left);
dropdown_set_checked(w->vehicleIndex, true);
break;
@ -5114,8 +5105,8 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (widget->type != WWT_EMPTY)
{
if (clip_drawpixelinfo(
&clippedDpi, dpi, w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1,
widget->right - widget->left, widget->bottom - widget->top))
&clippedDpi, dpi, w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1, widget->width(),
widget->height()))
{
gfx_clear(&clippedDpi, PALETTE_INDEX_12);
@ -5169,8 +5160,7 @@ static void window_ride_colour_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, PALETTE_INDEX_12);
// ?
auto screenCoords = ScreenCoordsXY{ (vehiclePreviewWidget->right - vehiclePreviewWidget->left) / 2,
vehiclePreviewWidget->bottom - vehiclePreviewWidget->top - 15 };
auto screenCoords = ScreenCoordsXY{ vehiclePreviewWidget->width() / 2, vehiclePreviewWidget->height() - 15 };
// ?
auto trainCarIndex = (ride->colour_scheme_type & 3) == RIDE_COLOUR_SCHEME_DIFFERENT_PER_CAR ? w->vehicleIndex
@ -5296,9 +5286,8 @@ static void window_ride_music_mousedown(rct_window* w, rct_widgetindex widgetInd
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top },
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
widget->right - dropdownWidget->left);
{ w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - dropdownWidget->left);
for (auto i = 0; i < numItems; i++)
{
@ -5597,7 +5586,7 @@ static void window_ride_measurements_mousedown(rct_window* w, rct_widgetindex wi
gDropdownItemsFormat[1] = STR_SAVE_TRACK_DESIGN_WITH_SCENERY_ITEM;
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1, w->colours[1],
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1],
DROPDOWN_FLAG_STAY_OPEN, 2);
gDropdownDefaultIndex = 0;
if (gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER)
@ -5772,7 +5761,7 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi
{
rct_widget* widget = &window_ride_measurements_widgets[WIDX_PAGE_BACKGROUND];
ScreenCoordsXY widgetCoords(w->windowPos.x + (widget->right - widget->left) / 2, w->windowPos.y + widget->top + 40);
ScreenCoordsXY widgetCoords(w->windowPos.x + widget->width() / 2, w->windowPos.y + widget->top + 40);
gfx_draw_string_centred_wrapped(
dpi, nullptr, widgetCoords, w->width - 8, STR_CLICK_ITEMS_OF_SCENERY_TO_SELECT, COLOUR_BLACK);
@ -6100,11 +6089,11 @@ static void window_ride_graphs_update(rct_window* w)
{
RideMeasurement* measurement{};
std::tie(measurement, std::ignore) = ride_get_measurement(ride);
x = measurement == nullptr ? 0 : measurement->current_item - (((widget->right - widget->left) / 4) * 3);
x = measurement == nullptr ? 0 : measurement->current_item - ((widget->width() / 4) * 3);
}
}
w->scrolls[0].h_left = std::clamp(x, 0, w->scrolls[0].h_right - ((widget->right - widget->left) - 2));
w->scrolls[0].h_left = std::clamp(x, 0, w->scrolls[0].h_right - (widget->width() - 2));
widget_scroll_update_thumbs(w, WIDX_GRAPH);
}
@ -6117,7 +6106,7 @@ static void window_ride_graphs_scrollgetheight(rct_window* w, int32_t scrollInde
window_event_invalidate_call(w);
// Set minimum size
*width = window_ride_graphs_widgets[WIDX_GRAPH].right - window_ride_graphs_widgets[WIDX_GRAPH].left - 2;
*width = window_ride_graphs_widgets[WIDX_GRAPH].width() - 2;
// Get measurement size
auto ride = get_ride(w->number);
@ -6263,8 +6252,8 @@ static void window_ride_graphs_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi
if (measurement == nullptr)
{
// No measurement message
ScreenCoordsXY stringCoords((widget->right - widget->left) / 2, (widget->bottom - widget->top) / 2 - 5);
int32_t width = widget->right - widget->left - 2;
ScreenCoordsXY stringCoords(widget->width() / 2, widget->height() / 2 - 5);
int32_t width = widget->width() - 2;
gfx_draw_string_centred_wrapped(dpi, gCommonFormatArgs, stringCoords, width, stringId, COLOUR_BLACK);
return;
}
@ -6300,7 +6289,7 @@ static void window_ride_graphs_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi
yUnit -= gMapBaseZ * 3;
}
for (int32_t y = widget->bottom - widget->top - 13; y >= 8; y -= yInterval, yUnit += yUnitInterval)
for (int32_t y = widget->height() - 13; y >= 8; y -= yInterval, yUnit += yUnitInterval)
{
// Minor / major line
int32_t colour = yUnit == 0 ? lightColour : darkColour;
@ -6363,8 +6352,8 @@ static void window_ride_graphs_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi
}
// Adjust line to match graph widget position.
top = widget->bottom - widget->top - top - 13;
bottom = widget->bottom - widget->top - bottom - 13;
top = widget->height() - top - 13;
bottom = widget->height() - bottom - 13;
if (top > bottom)
{
std::swap(top, bottom);
@ -6373,8 +6362,8 @@ static void window_ride_graphs_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi
// Adjust threshold line position as well
if (listType == GRAPH_VERTICAL || listType == GRAPH_LATERAL)
{
intensityThresholdPositive = widget->bottom - widget->top - intensityThresholdPositive - 13;
intensityThresholdNegative = widget->bottom - widget->top - intensityThresholdNegative - 13;
intensityThresholdPositive = widget->height() - intensityThresholdPositive - 13;
intensityThresholdNegative = widget->height() - intensityThresholdNegative - 13;
}
const bool previousMeasurement = x > measurement->current_item;

View File

@ -2332,8 +2332,8 @@ static void window_ride_construction_paint(rct_window* w, rct_drawpixelinfo* dpi
// Draw track piece
auto screenCoords = ScreenCoordsXY{ w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 };
width = widget->right - widget->left - 1;
height = widget->bottom - widget->top - 1;
width = widget->width() - 1;
height = widget->height() - 1;
if (clip_drawpixelinfo(&clipdpi, dpi, screenCoords.x, screenCoords.y, width, height))
{
window_ride_construction_draw_track_piece(
@ -3379,8 +3379,8 @@ static void window_ride_construction_show_special_track_dropdown(rct_window* w,
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1, w->colours[1], 0, 0,
_numCurrentPossibleRideConfigurations, widget->right - widget->left);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0, 0,
_numCurrentPossibleRideConfigurations, widget->width());
for (int32_t i = 0; i < 32; i++)
{

View File

@ -322,7 +322,7 @@ static void window_ride_list_mousedown(rct_window* w, rct_widgetindex widgetInde
gDropdownItemsFormat[0] = STR_CLOSE_ALL;
gDropdownItemsFormat[1] = STR_OPEN_ALL;
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top, w->colours[1], 0, 2);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height(), w->colours[1], 0, 2);
}
else if (widgetIndex == WIDX_INFORMATION_TYPE_DROPDOWN)
{
@ -357,8 +357,8 @@ static void window_ride_list_mousedown(rct_window* w, rct_widgetindex widgetInde
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height(), w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, numItems, widget->width() - 3);
if (selectedIndex != -1)
{
dropdown_set_checked(selectedIndex, true);

View File

@ -302,7 +302,7 @@ static void window_server_list_scroll_mouseover(rct_window* w, int32_t scrollInd
int32_t hoverButtonIndex = -1;
if (index != -1)
{
int32_t width = w->widgets[WIDX_LIST].right - w->widgets[WIDX_LIST].left;
int32_t width = w->widgets[WIDX_LIST].width();
int32_t sy = index * ITEM_HEIGHT;
for (int32_t i = 0; i < 2; i++)
{
@ -317,7 +317,7 @@ static void window_server_list_scroll_mouseover(rct_window* w, int32_t scrollInd
}
}
int32_t width = w->widgets[WIDX_LIST].right - w->widgets[WIDX_LIST].left;
int32_t width = w->widgets[WIDX_LIST].width();
int32_t right = width - 3 - 14 - 10;
if (screenCoords.x < right)
{
@ -429,7 +429,7 @@ static void window_server_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi
uint8_t paletteIndex = ColourMapA[w->colours[1]].mid_light;
gfx_clear(dpi, paletteIndex);
int32_t width = w->widgets[WIDX_LIST].right - w->widgets[WIDX_LIST].left;
int32_t width = w->widgets[WIDX_LIST].width();
ScreenCoordsXY screenCoords;
screenCoords.y = 0;

View File

@ -193,9 +193,8 @@ rct_window* window_sign_open(rct_windownumber number)
// Create viewport
viewportWidget = &window_sign_widgets[WIDX_VIEWPORT];
viewport_create(
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
(viewportWidget->right - viewportWidget->left) - 1, (viewportWidget->bottom - viewportWidget->top) - 1, 0,
{ signViewPos, view_z }, 0, SPRITE_INDEX_NULL);
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 }, viewportWidget->width() - 1,
viewportWidget->height() - 1, 0, { signViewPos, view_z }, 0, SPRITE_INDEX_NULL);
w->viewport->flags = gConfigGeneral.always_show_gridlines ? VIEWPORT_FLAG_GRIDLINES : 0;
w->Invalidate();
@ -375,9 +374,8 @@ static void window_sign_viewport_rotate(rct_window* w)
// Create viewport
rct_widget* viewportWidget = &window_sign_widgets[WIDX_VIEWPORT];
viewport_create(
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
(viewportWidget->right - viewportWidget->left) - 1, (viewportWidget->bottom - viewportWidget->top) - 1, 0, signViewPos,
0, SPRITE_INDEX_NULL);
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 }, viewportWidget->width() - 1,
viewportWidget->height() - 1, 0, signViewPos, 0, SPRITE_INDEX_NULL);
if (w->viewport != nullptr)
w->viewport->flags = gConfigGeneral.always_show_gridlines ? VIEWPORT_FLAG_GRIDLINES : 0;
w->Invalidate();
@ -439,9 +437,8 @@ rct_window* window_sign_small_open(rct_windownumber number)
// Create viewport
viewportWidget = &window_sign_widgets[WIDX_VIEWPORT];
viewport_create(
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
(viewportWidget->right - viewportWidget->left) - 1, (viewportWidget->bottom - viewportWidget->top) - 1, 0,
{ signViewPos, view_z }, 0, SPRITE_INDEX_NULL);
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 }, viewportWidget->width() - 1,
viewportWidget->height() - 1, 0, { signViewPos, view_z }, 0, SPRITE_INDEX_NULL);
w->viewport->flags = gConfigGeneral.always_show_gridlines ? VIEWPORT_FLAG_GRIDLINES : 0;
w->flags |= WF_NO_SCROLLING;

View File

@ -565,7 +565,7 @@ void window_staff_overview_mousedown(rct_window* w, rct_widgetindex widgetIndex,
gDropdownItemsFormat[1] = STR_CLEAR_PATROL_AREA;
auto dropdownPos = ScreenCoordsXY{ widget->left + w->windowPos.x, widget->top + w->windowPos.y };
int32_t extray = widget->bottom - widget->top + 1;
int32_t extray = widget->height() + 1;
window_dropdown_show_text(dropdownPos, extray, w->colours[1], 0, 2);
gDropdownDefaultIndex = 0;
@ -953,7 +953,7 @@ void window_staff_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
peep->FormatActionTo(ft);
rct_widget* widget = &w->widgets[WIDX_BTM_LABEL];
auto screenPos = w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->top };
int32_t width = widget->right - widget->left;
int32_t width = widget->width();
gfx_draw_string_centred_clipped(dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, screenPos, width);
}
@ -1010,8 +1010,8 @@ void window_staff_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
return;
rct_widget* widget = &w->widgets[WIDX_TAB_1];
int32_t width = widget->right - widget->left - 1;
int32_t height = widget->bottom - widget->top - 1;
int32_t width = widget->width() - 1;
int32_t height = widget->height() - 1;
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left + 1, widget->top + 1 };
if (w->page == WINDOW_STAFF_OVERVIEW)
height++;
@ -1381,8 +1381,8 @@ void window_staff_viewport_init(rct_window* w)
rct_widget* view_widget = &w->widgets[WIDX_VIEWPORT];
auto screenPos = ScreenCoordsXY{ view_widget->left + 1 + w->windowPos.x, view_widget->top + 1 + w->windowPos.y };
int32_t width = view_widget->right - view_widget->left - 1;
int32_t height = view_widget->bottom - view_widget->top - 1;
int32_t width = view_widget->width() - 1;
int32_t height = view_widget->height() - 1;
viewport_create(
w, screenPos, width, height, 0, { 0, 0, 0 }, focus.type & VIEWPORT_FOCUS_TYPE_MASK, focus.sprite_id);
@ -1428,8 +1428,8 @@ void window_staff_options_mousedown(rct_window* w, rct_widgetindex widgetIndex,
widget--;
auto dropdownPos = ScreenCoordsXY{ widget->left + w->windowPos.x, widget->top + w->windowPos.y };
int32_t extray = widget->bottom - widget->top + 1;
int32_t width = widget->right - widget->left - 3;
int32_t extray = widget->height() + 1;
int32_t width = widget->width() - 3;
window_dropdown_show_text_custom_width(dropdownPos, extray, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numCostumes, width);
// See above note.

View File

@ -458,7 +458,7 @@ void window_staff_list_scrollgetsize(rct_window* w, int32_t scrollIndex, int32_t
w->Invalidate();
}
*width = w->widgets[WIDX_STAFF_LIST_LIST].right - w->widgets[WIDX_STAFF_LIST_LIST].left - 15;
*width = w->widgets[WIDX_STAFF_LIST_LIST].width() - 15;
}
/**
@ -675,7 +675,7 @@ void window_staff_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light);
// How much space do we have for the name and action columns? (Discount scroll area and icons.)
const int32_t nonIconSpace = w->widgets[WIDX_STAFF_LIST_LIST].right - w->widgets[WIDX_STAFF_LIST_LIST].left - 15 - 68;
const int32_t nonIconSpace = w->widgets[WIDX_STAFF_LIST_LIST].width() - 15 - 68;
const int32_t nameColumnSize = nonIconSpace * 0.42;
const int32_t actionColumnSize = nonIconSpace * 0.58;
const int32_t actionOffset = w->widgets[WIDX_STAFF_LIST_LIST].right - actionColumnSize - 15;

View File

@ -525,8 +525,8 @@ static void window_themes_mousedown(rct_window* w, rct_widgetindex widgetIndex,
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, num_items, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, num_items, widget->width() - 3);
dropdown_set_checked(static_cast<int32_t>(theme_manager_get_active_available_theme_index()), true);
break;

View File

@ -1141,8 +1141,8 @@ static void window_tile_inspector_mousedown(rct_window* w, rct_widgetindex widge
gDropdownItemsArgs[1] = STR_TILE_INSPECTOR_WALL_SLOPED_LEFT;
gDropdownItemsArgs[2] = STR_TILE_INSPECTOR_WALL_SLOPED_RIGHT;
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 3, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, 3, widget->width() - 3);
// Set current value as checked
TileElement* const tileElement = window_tile_inspector_get_selected_element(w);
@ -1755,31 +1755,31 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
gfx_draw_string_left_clipped(
dpi, STR_TILE_INSPECTOR_ELEMENT_TYPE, gCommonFormatArgs, w->colours[1],
{ w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->right - widget->left);
{ w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width());
}
if ((widget = &w->widgets[WIDX_COLUMN_BASEHEIGHT])->type != WWT_EMPTY)
{
gfx_draw_string_left_clipped(
dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_SHORT, gCommonFormatArgs, w->colours[1],
{ w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->right - widget->left);
{ w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width());
}
if ((widget = &w->widgets[WIDX_COLUMN_CLEARANCEHEIGHT])->type != WWT_EMPTY)
{
gfx_draw_string_left_clipped(
dpi, STR_TILE_INSPECTOR_CLEARANGE_HEIGHT_SHORT, gCommonFormatArgs, w->colours[1],
{ w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->right - widget->left);
{ w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width());
}
if ((widget = &w->widgets[WIDX_COLUMN_GHOSTFLAG])->type != WWT_EMPTY)
{
gfx_draw_string_left_clipped(
dpi, STR_TILE_INSPECTOR_FLAG_GHOST_SHORT, gCommonFormatArgs, w->colours[1],
{ w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->right - widget->left);
{ w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width());
}
if ((widget = &w->widgets[WIDX_COLUMN_LASTFLAG])->type != WWT_EMPTY)
{
gfx_draw_string_left_clipped(
dpi, STR_TILE_INSPECTOR_FLAG_LAST_SHORT, gCommonFormatArgs, w->colours[1],
{ w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->right - widget->left);
{ w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width());
}
ScreenCoordsXY screenCoords(w->windowPos.x, w->windowPos.y);
@ -2253,7 +2253,7 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
static void window_tile_inspector_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t scrollIndex)
{
const int32_t listWidth = w->widgets[WIDX_LIST].right - w->widgets[WIDX_LIST].left;
const int32_t listWidth = w->widgets[WIDX_LIST].width();
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light);
ScreenCoordsXY screenCoords{};

View File

@ -250,8 +250,7 @@ void window_title_command_editor_open(TitleSequence* sequence, int32_t index, bo
rct_widget* const viewportWidget = &window_title_command_editor_widgets[WIDX_VIEWPORT];
viewport_create(
window, window->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
viewportWidget->right - viewportWidget->left - 1, viewportWidget->bottom - viewportWidget->top - 1, 0, { 0, 0, 0 }, 0,
SPRITE_INDEX_NULL);
viewportWidget->width() - 1, viewportWidget->height() - 1, 0, { 0, 0, 0 }, 0, SPRITE_INDEX_NULL);
_window_title_command_editor_index = index;
_window_title_command_editor_insert = insert;
@ -394,8 +393,8 @@ static void window_title_command_editor_mousedown(rct_window* w, rct_widgetindex
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, numItems, widget->width() - 3);
dropdown_set_checked(get_command_info_index(command.Type), true);
break;
@ -411,8 +410,8 @@ static void window_title_command_editor_mousedown(rct_window* w, rct_widgetindex
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, numItems, widget->width() - 3);
dropdown_set_checked(command.Speed - 1, true);
}
@ -426,8 +425,8 @@ static void window_title_command_editor_mousedown(rct_window* w, rct_widgetindex
}
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, numItems, widget->width() - 3);
dropdown_set_checked(command.SaveIndex, true);
}
@ -789,7 +788,7 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo*
gfx_draw_string_left_clipped(
dpi, spriteString, gCommonFormatArgs, colour,
{ w->windowPos.x + w->widgets[WIDX_VIEWPORT].left + 2, w->windowPos.y + w->widgets[WIDX_VIEWPORT].top + 1 },
w->widgets[WIDX_VIEWPORT].right - w->widgets[WIDX_VIEWPORT].left - 2);
w->widgets[WIDX_VIEWPORT].width() - 2);
}
else if (command.Type == TITLE_SCRIPT_LOAD)
{

View File

@ -562,8 +562,8 @@ static void window_title_editor_mousedown(rct_window* w, rct_widgetindex widgetI
widget--;
window_dropdown_show_text_custom_width(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, numItems, widget->width() - 3);
dropdown_set_checked(static_cast<int32_t>(_selectedTitleSequence), true);
}
break;

View File

@ -185,8 +185,8 @@ static void window_title_menu_mousedown(rct_window* w, rct_widgetindex widgetInd
gDropdownItemsFormat[3] = STR_TRACK_DESIGNS_MANAGER;
gDropdownItemsFormat[4] = STR_OPEN_USER_CONTENT_FOLDER;
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
TRANSLUCENT(w->colours[0]), DROPDOWN_FLAG_STAY_OPEN, 5);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, TRANSLUCENT(w->colours[0]),
DROPDOWN_FLAG_STAY_OPEN, 5);
}
}

View File

@ -558,7 +558,7 @@ static void window_scenarioselect_scrollpaint(rct_window* w, rct_drawpixelinfo*
bool wide = gConfigGeneral.scenario_select_mode == SCENARIO_SELECT_MODE_ORIGIN || _titleEditor;
rct_widget* listWidget = &w->widgets[WIDX_SCENARIOLIST];
int32_t listWidth = listWidget->right - listWidget->left - 12;
int32_t listWidth = listWidget->width() - 12;
const int32_t scenarioItemHeight = get_scenario_list_item_size();

View File

@ -491,8 +491,8 @@ static void window_top_toolbar_mousedown(rct_window* w, rct_widgetindex widgetIn
numItems = 12;
}
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1,
w->colours[0] | 0x80, DROPDOWN_FLAG_STAY_OPEN, numItems);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[0] | 0x80,
DROPDOWN_FLAG_STAY_OPEN, numItems);
break;
case WIDX_CHEATS:
top_toolbar_init_cheats_menu(w, widget);
@ -761,7 +761,7 @@ static void window_top_toolbar_invalidate(rct_window* w)
if (firstAlignment && widgetIndex == WIDX_SEPARATOR)
continue;
widgetWidth = widget->right - widget->left;
widgetWidth = widget->width();
widget->left = x;
x += widgetWidth;
widget->right = x;
@ -783,7 +783,7 @@ static void window_top_toolbar_invalidate(rct_window* w)
if (firstAlignment && widgetIndex == WIDX_SEPARATOR)
continue;
widgetWidth = widget->right - widget->left;
widgetWidth = widget->width();
x -= 1;
widget->right = x;
x -= widgetWidth;
@ -3331,8 +3331,7 @@ static void top_toolbar_init_map_menu(rct_window* w, rct_widget* widget)
#endif
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1, w->colours[1] | 0x80,
0, i);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1] | 0x80, 0, i);
gDropdownDefaultIndex = DDIDX_SHOW_MAP;
}
@ -3393,8 +3392,8 @@ static void top_toolbar_init_fastforward_menu(rct_window* w, rct_widget* widget)
gDropdownItemsArgs[3] = STR_SPEED_TURBO;
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1, w->colours[0] | 0x80,
0, num_items);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[0] | 0x80, 0,
num_items);
// Set checkmarks
if (gGameSpeed <= 4)
@ -3441,8 +3440,7 @@ static void top_toolbar_init_rotate_menu(rct_window* w, rct_widget* widget)
gDropdownItemsFormat[1] = STR_ROTATE_ANTI_CLOCKWISE;
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1, w->colours[1] | 0x80,
0, 2);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1] | 0x80, 0, 2);
gDropdownDefaultIndex = DDIDX_ROTATE_CLOCKWISE;
}
@ -3494,8 +3492,8 @@ static void top_toolbar_init_cheats_menu(rct_window* w, rct_widget* widget)
gDropdownItemsArgs[DDIDX_DISABLE_SUPPORT_LIMITS] = STR_DISABLE_SUPPORT_LIMITS;
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1, w->colours[0] | 0x80,
0, TOP_TOOLBAR_CHEATS_COUNT);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[0] | 0x80, 0,
TOP_TOOLBAR_CHEATS_COUNT);
// Disable items that are not yet available in multiplayer
if (network_get_mode() != NETWORK_MODE_NONE)
@ -3572,7 +3570,7 @@ static void top_toolbar_init_debug_menu(rct_window* w, rct_widget* widget)
gDropdownItemsArgs[DDIDX_DEBUG_PAINT] = STR_DEBUG_DROPDOWN_DEBUG_PAINT;
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1, w->colours[0] | 0x80,
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[0] | 0x80,
DROPDOWN_FLAG_STAY_OPEN, TOP_TOOLBAR_DEBUG_COUNT);
dropdown_set_checked(DDIDX_DEBUG_PAINT, window_find_by_class(WC_DEBUG_PAINT) != nullptr);
@ -3585,8 +3583,8 @@ static void top_toolbar_init_network_menu(rct_window* w, rct_widget* widget)
gDropdownItemsFormat[DDIDX_MULTIPLAYER_RECONNECT] = STR_MULTIPLAYER_RECONNECT;
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1, w->colours[0] | 0x80,
0, TOP_TOOLBAR_NETWORK_COUNT);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[0] | 0x80, 0,
TOP_TOOLBAR_NETWORK_COUNT);
dropdown_set_disabled(DDIDX_MULTIPLAYER_RECONNECT, !network_is_desynchronised());
@ -3678,8 +3676,8 @@ static void top_toolbar_init_view_menu(rct_window* w, rct_widget* widget)
gDropdownItemsArgs[DDIDX_HIGHLIGHT_PATH_ISSUES] = STR_HIGHLIGHT_PATH_ISSUES_MENU;
window_dropdown_show_text(
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->bottom - widget->top + 1, w->colours[1] | 0x80,
0, TOP_TOOLBAR_VIEW_MENU_COUNT);
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1] | 0x80, 0,
TOP_TOOLBAR_VIEW_MENU_COUNT);
// Set checkmarks
rct_viewport* mainViewport = window_get_main()->viewport;

View File

@ -128,8 +128,7 @@ static void window_view_clipping_set_clipheight(rct_window* w, const uint8_t cli
gClipHeight = clipheight;
rct_widget* widget = &window_view_clipping_widgets[WIDX_CLIP_HEIGHT_SLIDER];
const float clip_height_ratio = static_cast<float>(gClipHeight) / 255;
w->scrolls[0].h_left = static_cast<int16_t>(
std::ceil(clip_height_ratio * (w->scrolls[0].h_right - ((widget->right - widget->left) - 1))));
w->scrolls[0].h_left = static_cast<int16_t>(std::ceil(clip_height_ratio * (w->scrolls[0].h_right - (widget->width() - 1))));
}
rct_window* window_view_clipping_open()
@ -285,7 +284,7 @@ static void window_view_clipping_update(rct_window* w)
{
const rct_widget* const widget = &window_view_clipping_widgets[WIDX_CLIP_HEIGHT_SLIDER];
const rct_scroll* const scroll = &w->scrolls[0];
const int16_t scroll_width = widget->right - widget->left - 1;
const int16_t scroll_width = widget->width() - 1;
const uint8_t clip_height = static_cast<uint8_t>(
(static_cast<float>(scroll->h_left) / (scroll->h_right - scroll_width)) * 255);
if (clip_height != gClipHeight)

View File

@ -210,8 +210,8 @@ static void window_viewport_invalidate(rct_window* w)
w->disabled_widgets |= 1 << WIDX_ZOOM_OUT;
viewport->pos = w->windowPos + ScreenCoordsXY{ viewportWidget->left, viewportWidget->top };
viewport->width = viewportWidget->right - viewportWidget->left;
viewport->height = viewportWidget->bottom - viewportWidget->top;
viewport->width = viewportWidget->width();
viewport->height = viewportWidget->height();
viewport->view_width = viewport->width * viewport->zoom;
viewport->view_height = viewport->height * viewport->zoom;
}

View File

@ -1692,7 +1692,7 @@ void window_resize_gui_scenario_editor(int32_t width, int32_t height)
void window_align_tabs(rct_window* w, rct_widgetindex start_tab_id, rct_widgetindex end_tab_id)
{
int32_t i, x = w->widgets[start_tab_id].left;
int32_t tab_width = w->widgets[start_tab_id].right - w->widgets[start_tab_id].left;
int32_t tab_width = w->widgets[start_tab_id].width();
for (i = start_tab_id; i <= end_tab_id; i++)
{
@ -2137,7 +2137,7 @@ void widget_scroll_update_thumbs(rct_window* w, rct_widgetindex widget_index)
if (scroll->flags & HSCROLLBAR_VISIBLE)
{
int32_t view_size = widget->right - widget->left - 21;
int32_t view_size = widget->width() - 21;
if (scroll->flags & VSCROLLBAR_VISIBLE)
view_size -= 11;
int32_t x = scroll->h_left * view_size;
@ -2145,7 +2145,7 @@ void widget_scroll_update_thumbs(rct_window* w, rct_widgetindex widget_index)
x /= scroll->h_right;
scroll->h_thumb_left = x + 11;
x = widget->right - widget->left - 2;
x = widget->width() - 2;
if (scroll->flags & VSCROLLBAR_VISIBLE)
x -= 11;
x += scroll->h_left;
@ -2166,7 +2166,7 @@ void widget_scroll_update_thumbs(rct_window* w, rct_widgetindex widget_index)
if (scroll->flags & VSCROLLBAR_VISIBLE)
{
int32_t view_size = widget->bottom - widget->top - 21;
int32_t view_size = widget->height() - 21;
if (scroll->flags & HSCROLLBAR_VISIBLE)
view_size -= 11;
int32_t y = scroll->v_top * view_size;
@ -2174,7 +2174,7 @@ void widget_scroll_update_thumbs(rct_window* w, rct_widgetindex widget_index)
y /= scroll->v_bottom;
scroll->v_thumb_top = y + 11;
y = widget->bottom - widget->top - 2;
y = widget->height() - 2;
if (scroll->flags & HSCROLLBAR_VISIBLE)
y -= 11;
y += scroll->v_top;

View File

@ -98,6 +98,16 @@ struct rct_widget
// New properties
WidgetFlags flags{};
utf8* sztooltip{};
int16_t width() const
{
return right - left;
}
int16_t height() const
{
return bottom - top;
}
};
/**