MCPcopy Create free account
hub / github.com/OpenRCT2/OpenRCT2 / DrawPreview

Method DrawPreview

src/openrct2-ui/windows/LoadSave.cpp:408–532  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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 {

Callers 3

MusicOnDrawMethod · 0.45
onDrawMethod · 0.45
onDrawMethod · 0.45

Calls 11

drawTextEllipsisedFunction · 0.85
fillInsetFunction · 0.85
drawPreviewImageFunction · 0.85
getColourMapFunction · 0.85
GfxDrawSpriteSolidFunction · 0.85
drawTextFunction · 0.85
withFlagMethod · 0.80
FormatterClass · 0.70
ScreenCoordsXYClass · 0.50
ImageIdClass · 0.50
isValidMethod · 0.45

Tested by

no test coverage detected