diff options
Diffstat (limited to 'src/mbgl/renderer/image_atlas.cpp')
-rw-r--r-- | src/mbgl/renderer/image_atlas.cpp | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/src/mbgl/renderer/image_atlas.cpp b/src/mbgl/renderer/image_atlas.cpp index b53c2162ea..9649187175 100644 --- a/src/mbgl/renderer/image_atlas.cpp +++ b/src/mbgl/renderer/image_atlas.cpp @@ -23,31 +23,17 @@ ImageAtlas makeImageAtlas(const ImageMap& images) { options.autoResize = true; mapbox::ShelfPack pack(0, 0, options); - std::vector<const style::Image::Impl*> pointers; - pointers.reserve(images.size()); - - std::vector<mapbox::Bin> bins; - bins.reserve(images.size()); - for (const auto& entry : images) { const style::Image::Impl& image = *entry.second; - pointers.emplace_back(&image); - bins.emplace_back(pointers.size() - 1, - image.image.size.width + 2 * padding, - image.image.size.height + 2 * padding); - } - mapbox::ShelfPack::PackOptions packOptions; - packOptions.inPlace = true; - pack.pack(bins, packOptions); + const mapbox::Bin& bin = *pack.packOne(-1, + image.image.size.width + 2 * padding, + image.image.size.height + 2 * padding); - result.image = PremultipliedImage({ - static_cast<uint32_t>(pack.width()), - static_cast<uint32_t>(pack.height()) - }); - - for (const auto& bin : bins) { - const style::Image::Impl& image = *pointers.at(bin.id); + result.image.resize({ + static_cast<uint32_t>(pack.width()), + static_cast<uint32_t>(pack.height()) + }); PremultipliedImage::copy(image.image, result.image, @@ -62,6 +48,12 @@ ImageAtlas makeImageAtlas(const ImageMap& images) { ImagePosition { bin, image }); } +// pack.shrink(); +// result.image.resize({ +// static_cast<uint32_t>(pack.width()), +// static_cast<uint32_t>(pack.height()) +// }); + return result; } |