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

Method ComputeGroupInfoSize

src/group_gui.cpp:242–281  ·  view source on GitHub ↗

* Compute tiny_step_height and column_size * @return Total width required for the group list. */

Source from the content-addressed store, hash-verified

240 * @return Total width required for the group list.
241 */
242 uint ComputeGroupInfoSize()
243 {
244 this->column_size[VGC_FOLD] = maxdim(GetScaledSpriteSize(SPR_CIRCLE_FOLDED), GetScaledSpriteSize(SPR_CIRCLE_UNFOLDED));
245 this->tiny_step_height = this->column_size[VGC_FOLD].height;
246
247 this->column_size[VGC_NAME] = maxdim(GetStringBoundingBox(STR_GROUP_DEFAULT_TRAINS + this->vli.vtype), GetStringBoundingBox(STR_GROUP_ALL_TRAINS + this->vli.vtype));
248 this->column_size[VGC_NAME].width = std::max(170u, this->column_size[VGC_NAME].width) + WidgetDimensions::scaled.hsep_indent;
249 this->tiny_step_height = std::max(this->tiny_step_height, this->column_size[VGC_NAME].height);
250
251 this->column_size[VGC_PROTECT] = GetScaledSpriteSize(SPR_GROUP_REPLACE_PROTECT);
252 this->tiny_step_height = std::max(this->tiny_step_height, this->column_size[VGC_PROTECT].height);
253
254 this->column_size[VGC_AUTOREPLACE] = GetScaledSpriteSize(SPR_GROUP_REPLACE_ACTIVE);
255 this->tiny_step_height = std::max(this->tiny_step_height, this->column_size[VGC_AUTOREPLACE].height);
256
257 this->column_size[VGC_PROFIT].width = 0;
258 this->column_size[VGC_PROFIT].height = 0;
259 static const SpriteID profit_sprites[] = {SPR_PROFIT_NA, SPR_PROFIT_NEGATIVE, SPR_PROFIT_SOME, SPR_PROFIT_LOT};
260 for (const auto &profit_sprite : profit_sprites) {
261 Dimension d = GetScaledSpriteSize(profit_sprite);
262 this->column_size[VGC_PROFIT] = maxdim(this->column_size[VGC_PROFIT], d);
263 }
264 this->tiny_step_height = std::max(this->tiny_step_height, this->column_size[VGC_PROFIT].height);
265
266 int num_vehicle = GetGroupNumVehicle(this->vli.company, ALL_GROUP, this->vli.vtype);
267 uint64_t max_value = GetParamMaxValue(num_vehicle, 3, FS_SMALL);
268 this->column_size[VGC_NUMBER] = GetStringBoundingBox(GetString(STR_GROUP_COUNT_WITH_SUBGROUP, max_value, max_value));
269 this->tiny_step_height = std::max(this->tiny_step_height, this->column_size[VGC_NUMBER].height);
270
271 this->tiny_step_height += WidgetDimensions::scaled.framerect.Vertical();
272
273 return WidgetDimensions::scaled.framerect.left +
274 this->column_size[VGC_FOLD].width + WidgetDimensions::scaled.hsep_normal +
275 this->column_size[VGC_NAME].width + WidgetDimensions::scaled.hsep_wide +
276 this->column_size[VGC_PROTECT].width + WidgetDimensions::scaled.hsep_normal +
277 this->column_size[VGC_AUTOREPLACE].width + WidgetDimensions::scaled.hsep_normal +
278 this->column_size[VGC_PROFIT].width + WidgetDimensions::scaled.hsep_normal +
279 this->column_size[VGC_NUMBER].width +
280 WidgetDimensions::scaled.framerect.right;
281 }
282
283 /**
284 * Update precalculated column rects for drawing group information.

Callers 1

UpdateWidgetSizeMethod · 0.95

Calls 7

maxdimFunction · 0.85
GetScaledSpriteSizeFunction · 0.85
GetStringBoundingBoxFunction · 0.85
GetGroupNumVehicleFunction · 0.85
GetParamMaxValueFunction · 0.85
VerticalMethod · 0.80
GetStringFunction · 0.70

Tested by

no test coverage detected