summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/image_atlas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/image_atlas.cpp')
-rw-r--r--src/mbgl/renderer/image_atlas.cpp34
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;
}