#ifndef MBGL_MAP_TILE_DATA #define MBGL_MAP_TILE_DATA #include #include #include #include #include #include #include #include #include namespace mbgl { class Map; class Painter; class StyleLayer; class TileData : public std::enable_shared_from_this, private util::noncopyable { public: struct exception : std::exception {}; struct geometry_too_long_exception : exception {}; public: typedef std::shared_ptr Ptr; enum class State { invalid, initial, loading, loaded, parsed, obsolete }; public: TileData(Tile::ID id, Map &map, const std::string url); ~TileData(); void request(); void cancel(); void reparse(); const std::string toString() const; // Override this in the child class. virtual void beforeParse(); virtual void parse() = 0; virtual void afterParse(); virtual void render(Painter &painter, std::shared_ptr layer_desc) = 0; virtual bool hasData(std::shared_ptr layer_desc) const = 0; public: const Tile::ID id; std::atomic state; protected: Map ↦ // Request-related information. const std::string url; std::weak_ptr req; std::string data; // Contains the tile ID string for painting debug information. DebugFontBuffer debugFontBuffer; public: DebugBucket debugBucket; }; } #endif