* Compute tiny_step_height and column_size * @return Total width required for the group list. */
| 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. |
no test coverage detected