0x00473579
| 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: |
no test coverage detected