diff options
Diffstat (limited to 'include/mbgl/util/raster.hpp')
-rw-r--r-- | include/mbgl/util/raster.hpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/include/mbgl/util/raster.hpp b/include/mbgl/util/raster.hpp new file mode 100644 index 0000000000..04c85169e2 --- /dev/null +++ b/include/mbgl/util/raster.hpp @@ -0,0 +1,70 @@ +#ifndef MBGL_UTIL_RASTER +#define MBGL_UTIL_RASTER + +#include <mbgl/util/transition.hpp> +#include <mbgl/util/texturepool.hpp> +#include <mbgl/util/image.hpp> + +#include <string> +#include <mutex> +#include <memory> + +typedef struct uv_loop_s uv_loop_t; + +namespace mbgl { + +class Raster : public std::enable_shared_from_this<Raster> { + +public: + Raster(const std::shared_ptr<Texturepool> &texturepool); + ~Raster(); + + // load image data + bool load(const std::string &img); + + // bind current texture + void bind(bool linear = false); + + // loaded status + bool isLoaded() const; + + // transitions + void beginFadeInTransition(); + bool needsTransition() const; + void updateTransitions(timestamp now); + +public: + // loaded image dimensions + uint32_t width = 0, height = 0; + + // has been uploaded to texture + bool textured = false; + + // the uploaded texture + uint32_t texture = 0; + + // texture opacity + double opacity = 0; + +private: + mutable std::mutex mtx; + + // raw pixels have been loaded + bool loaded = false; + + // shared texture pool + std::shared_ptr<Texturepool> texturepool; + + // min/mag filter + uint32_t filter = 0; + + // the raw pixels + std::unique_ptr<util::Image> img; + + // fade in transition + std::shared_ptr<util::transition> fade_transition = nullptr; +}; + +} + +#endif |