diff --git a/gyp/install.gypi b/gyp/install.gypi index 8fba98649..e7217219c 100644 --- a/gyp/install.gypi +++ b/gyp/install.gypi @@ -18,6 +18,22 @@ { 'files': [ '<(PRODUCT_DIR)/libmbgl-<(platform).a' ], 'destination': '<(install_prefix)/lib' }, { 'files': [ '../include/mbgl' ], 'destination': '<(install_prefix)/include' } ], + 'actions': [ + { 'action_name': 'mbgl-config', + 'inputs': [ + '../utils/mbgl-config/mbgl-config.template.sh', + '../utils/mbgl-config/build.sh', + ], + 'outputs': [ + '<(install_prefix)/bin/mbgl-config', + ], + 'action': [ + './utils/mbgl-config/build.sh', + '<(install_prefix)', + '<(platform)', + ] + } + ] }, ] }], diff --git a/gyp/mbgl.gypi b/gyp/mbgl.gypi new file mode 100644 index 000000000..0d914f46f --- /dev/null +++ b/gyp/mbgl.gypi @@ -0,0 +1,75 @@ +{ + 'targets': [ + { 'target_name': 'mbgl', + 'product_name': 'mbgl', + 'type': 'static_library', + 'standalone_static_library': 1, + 'hard_dependency': 1, + 'dependencies': [ + 'shaders', + ], + 'sources': [ + ' #include +#include #include #include @@ -26,7 +27,6 @@ class SpriteAtlas : public util::noncopyable { public: typedef uint16_t dimension; -public: // Add way to construct this from another SpriteAtlas (e.g. with another pixelRatio) SpriteAtlas(dimension width, dimension height); ~SpriteAtlas(); @@ -34,22 +34,16 @@ public: // Changes the pixel ratio. bool resize(float newRatio); - // Update uninitialized (= outdated) sprites in this atlas from the given sprite. - void update(const Sprite &sprite); + // Changes the source sprite. + void setSprite(util::ptr sprite); // Returns the coordinates of an image that is sourced from the sprite image. // This getter attempts to read the image from the sprite if it is already loaded. // In that case, it copies it into the sprite atlas and returns the dimensions. // Otherwise, it returns a 0/0/0/0 rect. - Rect getImage(const std::string &name, const Sprite &sprite); + Rect getImage(const std::string& name); - // Returns the coordinates of an image that is sourced from the sprite image. - // This getter waits until the sprite image was loaded, copies it into the sprite - // image and returns the dimensions. - // NEVER CALL THIS FUNCTION FROM THE RENDER THREAD! it is blocking. - Rect waitForImage(const std::string &name, const Sprite &sprite); - - SpriteAtlasPosition getPosition(const std::string &name, const Sprite &sprite, bool repeating = false); + SpriteAtlasPosition getPosition(const std::string& name, bool repeating = false); // Binds the image buffer of this sprite atlas to the GPU, and uploads data if it is out // of date. @@ -61,19 +55,18 @@ public: inline float getTextureHeight() const { return height * pixelRatio; } inline float getPixelRatio() const { return pixelRatio; } -private: - void allocate(); - Rect allocateImage(size_t width, size_t height); - void copy(const Rect &dst, const SpritePosition &src, const Sprite &sprite); - -public: const dimension width = 0; const dimension height = 0; private: - std::mutex mtx; + void allocate(); + Rect allocateImage(size_t width, size_t height); + void copy(const Rect& dst, const SpritePosition& src); + + std::recursive_mutex mtx; float pixelRatio = 1.0f; BinPack bin; + util::ptr sprite; std::map> images; std::set uninitialized; uint32_t *data = nullptr; diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp index bc67e5b35..6aa86fcc8 100644 --- a/include/mbgl/map/map.hpp +++ b/include/mbgl/map/map.hpp @@ -3,12 +3,12 @@ #include #include - +#include +#include #include #include #include #include - #include #include #include @@ -17,10 +17,8 @@ namespace mbgl { -class GlyphAtlas; class GlyphStore; class LayerDescription; -class SpriteAtlas; class Sprite; class Style; class StyleLayer; @@ -55,8 +53,6 @@ public: // Triggers a lazy rerender: only performs a render when the map is not clean. void rerender(); - void renderLayer(util::ptr layer_desc, RenderPass pass, const Tile::ID* id = nullptr, const mat4* matrix = nullptr); - // Forces a map update: always triggers a rerender. void update(); @@ -133,12 +129,11 @@ public: inline const TransformState &getState() const { return state; } inline util::ptr getFileSource() const { return fileSource; } inline util::ptr