| 500 | } |
| 501 | |
| 502 | std::vector<std::pair<std::string, Image>> ImageTable::GetImageSources(IReadObjectContext* context, json_t& jsonImages) |
| 503 | { |
| 504 | std::vector<std::pair<std::string, Image>> result; |
| 505 | for (auto& jsonImage : jsonImages) |
| 506 | { |
| 507 | if (jsonImage.is_object() && jsonImage.contains("path")) |
| 508 | { |
| 509 | auto path = Json::GetString(jsonImage["path"]); |
| 510 | auto keepPalette = Json::GetString(jsonImage["palette"]) == "keep"; |
| 511 | auto itSource = std::find_if(result.begin(), result.end(), [&path](const std::pair<std::string, Image>& item) { |
| 512 | return item.first == path; |
| 513 | }); |
| 514 | if (itSource == result.end()) |
| 515 | { |
| 516 | auto imageData = context->GetData(path); |
| 517 | auto imageFormat = keepPalette ? ImageFormat::png : ImageFormat::png32; |
| 518 | auto image = Imaging::ReadFromBuffer(imageData, imageFormat); |
| 519 | auto pair = std::make_pair<std::string, Image>(std::move(path), std::move(image)); |
| 520 | result.push_back(std::move(pair)); |
| 521 | } |
| 522 | } |
| 523 | } |
| 524 | return result; |
| 525 | } |
| 526 | |
| 527 | bool ImageTable::ReadJson(IReadObjectContext* context, json_t& root) |
| 528 | { |