1 #pragma once 2 3 #include <mbgl/style/image_impl.hpp> 4 #include <mbgl/style/source_impl.hpp> 5 #include <mbgl/style/layer_impl.hpp> 6 #include <mbgl/util/immutable.hpp> 7 #include <mbgl/util/variant.hpp> 8 9 #include <unordered_map> 10 11 namespace mbgl { 12 13 template <class T> 14 class StyleChange { 15 public: 16 T before; 17 T after; 18 }; 19 20 template <class T> 21 class StyleDifference { 22 public: 23 std::unordered_map<std::string, T> added; 24 std::unordered_map<std::string, T> removed; 25 std::unordered_map<std::string, StyleChange<T>> changed; 26 }; 27 28 using ImmutableImage = Immutable<style::Image::Impl>; 29 using ImageDifference = StyleDifference<ImmutableImage>; 30 31 ImageDifference diffImages(const Immutable<std::vector<ImmutableImage>>&, 32 const Immutable<std::vector<ImmutableImage>>&); 33 34 using ImmutableSource = Immutable<style::Source::Impl>; 35 using SourceDifference = StyleDifference<ImmutableSource>; 36 37 SourceDifference diffSources(const Immutable<std::vector<ImmutableSource>>&, 38 const Immutable<std::vector<ImmutableSource>>&); 39 40 using ImmutableLayer = Immutable<style::Layer::Impl>; 41 using LayerDifference = StyleDifference<ImmutableLayer>; 42 43 LayerDifference diffLayers(const Immutable<std::vector<ImmutableLayer>>&, 44 const Immutable<std::vector<ImmutableLayer>>&); 45 46 bool hasLayoutDifference(const LayerDifference&, const std::string& layerID); 47 48 } // namespace mbgl 49