| 406 | } |
| 407 | |
| 408 | void DrawPreview(RenderTarget& rt) |
| 409 | { |
| 410 | // Find preview image to draw |
| 411 | PreviewImage* image = nullptr; |
| 412 | auto targetPref = Config::Get().general.fileBrowserPreviewType; |
| 413 | auto targetType = targetPref == ParkPreviewPref::screenshot ? PreviewImageType::screenshot |
| 414 | : PreviewImageType::miniMap; |
| 415 | for (auto& candidate : _preview.images) |
| 416 | { |
| 417 | if (candidate.type == targetType) |
| 418 | { |
| 419 | image = &candidate; |
| 420 | break; |
| 421 | } |
| 422 | } |
| 423 | |
| 424 | const auto previewPaneSize = GetPreviewSize(); |
| 425 | auto& widget = widgets[WIDX_SCROLL]; |
| 426 | |
| 427 | // Draw park name |
| 428 | { |
| 429 | auto namePos = windowPos |
| 430 | + ScreenCoordsXY(width - previewPaneSize.width / 2 - kPadding, widget.top - kButtonFaceHeight); |
| 431 | auto ft = Formatter(); |
| 432 | ft.Add<StringId>(STR_STRING); |
| 433 | ft.Add<const char*>(_preview.parkName.c_str()); |
| 434 | drawTextEllipsised( |
| 435 | rt, namePos, previewPaneSize.width - kPadding * 2, STR_WINDOW_COLOUR_2_STRINGID, ft, |
| 436 | { TextAlignment::centre }); |
| 437 | } |
| 438 | |
| 439 | const bool drawFrame = image != nullptr || targetType == PreviewImageType::screenshot; |
| 440 | const auto previewWidth = image != nullptr ? image->width : previewPaneSize.width; |
| 441 | const auto previewHeight = image != nullptr ? image->height : previewPaneSize.height; |
| 442 | |
| 443 | auto hCentre = (previewPaneSize.width - previewWidth) / 2 - kPadding; |
| 444 | auto frameStartPos = windowPos + ScreenCoordsXY(width - previewPaneSize.width + hCentre - 1, widget.top); |
| 445 | auto frameEndPos = frameStartPos + ScreenCoordsXY(previewWidth + 1, previewHeight + 1); |
| 446 | |
| 447 | if (drawFrame) |
| 448 | { |
| 449 | Rectangle::fillInset( |
| 450 | rt, { frameStartPos, frameEndPos }, colours[1], Rectangle::BorderStyle::inset, |
| 451 | Rectangle::FillBrightness::dark, Rectangle::FillMode::dontLightenWhenInset); |
| 452 | } |
| 453 | |
| 454 | // Draw image, or placeholder if no preview was found |
| 455 | if (image != nullptr) |
| 456 | { |
| 457 | auto imagePos = frameStartPos + ScreenCoordsXY(1, 1); |
| 458 | drawPreviewImage(*image, rt, imagePos); |
| 459 | } |
| 460 | else |
| 461 | { |
| 462 | auto imagePos = frameStartPos + ScreenCoordsXY(1, 1); |
| 463 | |
| 464 | if (targetType == PreviewImageType::screenshot) |
| 465 | { |
no test coverage detected