* * rct2: 0x006847BA */
| 45 | * rct2: 0x006847BA |
| 46 | */ |
| 47 | void CarEntrySetImageMaxSizes(CarEntry& carEntry, int32_t numImages) |
| 48 | { |
| 49 | constexpr uint8_t kWidth = 200; |
| 50 | constexpr uint8_t kHeight = 200; |
| 51 | constexpr uint8_t kCentreX = kWidth / 2; |
| 52 | constexpr uint8_t kCentreY = kHeight / 2; |
| 53 | |
| 54 | OpenRCT2::Drawing::PaletteIndex bitmap[kHeight][kWidth]{}; |
| 55 | |
| 56 | OpenRCT2::Drawing::RenderTarget rt = { |
| 57 | .bits = reinterpret_cast<OpenRCT2::Drawing::PaletteIndex*>(bitmap), |
| 58 | .x = -(kWidth / 2), |
| 59 | .y = -(kHeight / 2), |
| 60 | .width = kWidth, |
| 61 | .height = kHeight, |
| 62 | .pitch = 0, |
| 63 | .zoom_level = ZoomLevel{ 0 }, |
| 64 | }; |
| 65 | |
| 66 | for (int32_t i = 0; i < numImages; ++i) |
| 67 | { |
| 68 | GfxDrawSpriteSoftware(rt, ImageId(carEntry.base_image_id + i), { 0, 0 }); |
| 69 | } |
| 70 | |
| 71 | int32_t spriteWidth = -1; |
| 72 | for (int32_t i = kCentreX - 1; i != 0; --i) |
| 73 | { |
| 74 | for (int32_t j = 0; j < kWidth; j++) |
| 75 | { |
| 76 | if (bitmap[j][kCentreX - i] != OpenRCT2::Drawing::PaletteIndex::transparent) |
| 77 | { |
| 78 | spriteWidth = i; |
| 79 | break; |
| 80 | } |
| 81 | } |
| 82 | |
| 83 | if (spriteWidth != -1) |
| 84 | break; |
| 85 | |
| 86 | for (int32_t j = 0; j < kWidth; j++) |
| 87 | { |
| 88 | if (bitmap[j][kCentreX + i] != OpenRCT2::Drawing::PaletteIndex::transparent) |
| 89 | { |
| 90 | spriteWidth = i; |
| 91 | break; |
| 92 | } |
| 93 | } |
| 94 | |
| 95 | if (spriteWidth != -1) |
| 96 | break; |
| 97 | } |
| 98 | spriteWidth++; |
| 99 | |
| 100 | int32_t spriteHeightNegative = -1; |
| 101 | for (int32_t i = kCentreY - 1; i != 0; --i) |
| 102 | { |
| 103 | for (int32_t j = 0; j < kWidth; j++) |
| 104 | { |
no test coverage detected