MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / DrawWidget

Method DrawWidget

src/company_gui.cpp:1325–1372  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1323 }
1324
1325 void DrawWidget(const Rect &r, WidgetID widget) const override
1326 {
1327 switch (widget) {
1328 case WID_SCMF_FACE:
1329 DrawCompanyManagerFace(this->face, Company::Get(this->window_number)->colour, r);
1330 break;
1331
1332 case WID_SCMF_STYLE: {
1333 Rect ir = r.Shrink(WidgetDimensions::scaled.frametext, RectPadding::zero).WithHeight(this->line_height);
1334 bool rtl = _current_text_dir == TD_RTL;
1335
1336 Rect br = ir.CentreToHeight(SETTING_BUTTON_HEIGHT).WithWidth(SETTING_BUTTON_WIDTH, rtl);
1337 Rect tr = ir.Shrink(RectPadding::zero, WidgetDimensions::scaled.matrix).CentreToHeight(GetCharacterHeight(FS_NORMAL)).Indent(SETTING_BUTTON_WIDTH + WidgetDimensions::scaled.hsep_wide, rtl);
1338
1339 DrawArrowButtons(br.left, br.top, COLOUR_YELLOW, this->selected_var == UINT_MAX - 1 ? this->click_state : 0, true, true);
1340 DrawString(tr, GetString(STR_FACE_SETTING_NUMERIC, STR_FACE_STYLE, this->face.style + 1, GetNumCompanyManagerFaceStyles()), TC_WHITE);
1341 break;
1342 }
1343
1344 case WID_SCMF_PARTS: {
1345 Rect ir = r.Shrink(WidgetDimensions::scaled.frametext, RectPadding::zero).WithHeight(this->line_height);
1346 bool rtl = _current_text_dir == TD_RTL;
1347
1348 FaceVars vars = GetCompanyManagerFaceVars(this->face.style);
1349
1350 auto [first, last] = this->GetScrollbar(WID_SCMF_PARTS_SCROLLBAR)->GetVisibleRangeIterators(this->face_vars);
1351 for (auto it = first; it != last; ++it) {
1352 const uint8_t var = static_cast<uint8_t>(*it - vars.data());
1353 const FaceVar &facevar = **it;
1354
1355 Rect br = ir.CentreToHeight(SETTING_BUTTON_HEIGHT).WithWidth(SETTING_BUTTON_WIDTH, rtl);
1356 Rect tr = ir.Shrink(RectPadding::zero, WidgetDimensions::scaled.matrix).CentreToHeight(GetCharacterHeight(FS_NORMAL)).Indent(SETTING_BUTTON_WIDTH + WidgetDimensions::scaled.hsep_wide, rtl);
1357
1358 uint val = vars[var].GetBits(this->face);
1359 if (facevar.type == FaceVarType::Toggle) {
1360 DrawBoolButton(br.left, br.top, COLOUR_YELLOW, COLOUR_GREY, val == 1, true);
1361 DrawString(tr, GetString(STR_FACE_SETTING_TOGGLE, facevar.name, val == 1 ? STR_FACE_YES : STR_FACE_NO), TC_WHITE);
1362 } else {
1363 DrawArrowButtons(br.left, br.top, COLOUR_YELLOW, this->selected_var == var ? this->click_state : 0, true, true);
1364 DrawString(tr, GetString(STR_FACE_SETTING_NUMERIC, facevar.name, val + 1, facevar.valid_values), TC_WHITE);
1365 }
1366
1367 ir = ir.Translate(0, this->line_height);
1368 }
1369 break;
1370 }
1371 }
1372 }
1373
1374 void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override
1375 {

Callers

nothing calls this directly

Calls 15

DrawCompanyManagerFaceFunction · 0.85
GetCharacterHeightFunction · 0.85
DrawArrowButtonsFunction · 0.85
DrawBoolButtonFunction · 0.85
WithHeightMethod · 0.80
ShrinkMethod · 0.80
WithWidthMethod · 0.80
CentreToHeightMethod · 0.80
IndentMethod · 0.80

Tested by

no test coverage detected