MCPcopy Create free account
hub / github.com/OpenLoco/OpenLoco / drawPreviewImage

Function drawPreviewImage

src/OpenLoco/src/Ui/Windows/ObjectSelectionWindow.cpp:755–890  ·  view source on GitHub ↗

0x00473579

Source from the content-addressed store, hash-verified

753
754 // 0x00473579
755 static void drawPreviewImage(const ObjectHeader& header, Gfx::DrawingContext& drawingCtx, int16_t x, int16_t y, const Object& objectPtr)
756 {
757 auto type = header.getType();
758
759 // Clip the draw area to simplify image draw
760 Ui::Point drawAreaPos = Ui::Point{ x, y } - kObjectPreviewOffset;
761 const auto& rt = drawingCtx.currentRenderTarget();
762 auto clipped = Gfx::clipRenderTarget(rt, Ui::Rect(drawAreaPos.x, drawAreaPos.y, kObjectPreviewSize.width - 2, kObjectPreviewSize.height - 2));
763 if (!clipped)
764 {
765 return;
766 }
767
768 drawingCtx.pushRenderTarget(*clipped);
769
770 switch (type)
771 {
772 case ObjectType::interfaceSkin:
773 callDrawPreviewImage<InterfaceSkinObject>(drawingCtx, kObjectPreviewOffset, objectPtr);
774 break;
775
776 case ObjectType::currency:
777 callDrawPreviewImage<CurrencyObject>(drawingCtx, kObjectPreviewOffset, objectPtr);
778 break;
779
780 case ObjectType::cliffEdge:
781 callDrawPreviewImage<CliffEdgeObject>(drawingCtx, kObjectPreviewOffset, objectPtr);
782 break;
783
784 case ObjectType::water:
785 callDrawPreviewImage<WaterObject>(drawingCtx, kObjectPreviewOffset, objectPtr);
786 break;
787
788 case ObjectType::land:
789 callDrawPreviewImage<LandObject>(drawingCtx, kObjectPreviewOffset, objectPtr);
790 break;
791
792 case ObjectType::wall:
793 callDrawPreviewImage<WallObject>(drawingCtx, kObjectPreviewOffset, objectPtr);
794 break;
795
796 case ObjectType::trackSignal:
797 callDrawPreviewImage<TrainSignalObject>(drawingCtx, kObjectPreviewOffset, objectPtr);
798 break;
799
800 case ObjectType::levelCrossing:
801 callDrawPreviewImage<LevelCrossingObject>(drawingCtx, kObjectPreviewOffset, objectPtr);
802 break;
803
804 case ObjectType::streetLight:
805 callDrawPreviewImage<StreetLightObject>(drawingCtx, kObjectPreviewOffset, objectPtr);
806 break;
807
808 case ObjectType::tunnel:
809 callDrawPreviewImage<TunnelObject>(drawingCtx, kObjectPreviewOffset, objectPtr);
810 break;
811
812 case ObjectType::bridge:

Callers 1

drawFunction · 0.85

Calls 5

clipRenderTargetFunction · 0.85
RectClass · 0.85
pushRenderTargetMethod · 0.80
popRenderTargetMethod · 0.80
getTypeMethod · 0.45

Tested by

no test coverage detected