#include #include #include #include #include #include namespace mbgl { using namespace style; RasterBucket::RasterBucket(UnassociatedImage&& image_) { image = std::make_shared(std::move(image_)); } RasterBucket::RasterBucket(std::shared_ptr image_): image(image_) { } void RasterBucket::upload(gl::Context& context) { if (!hasData()) { return; } if (!texture) { texture = context.createTexture(*image); } if (!vertices.empty()) { vertexBuffer = context.createVertexBuffer(std::move(vertices)); indexBuffer = context.createIndexBuffer(std::move(indices)); } uploaded = true; } void RasterBucket::clear() { vertexBuffer = {}; indexBuffer = {}; segments.clear(); vertices.clear(); indices.clear(); uploaded = false; } void RasterBucket::setImage(std::shared_ptr image_) { image = std::move(image_); texture = {}; uploaded = false; } void RasterBucket::render(Painter& painter, PaintParameters& parameters, const RenderLayer& layer, const RenderTile& tile) { painter.renderRaster(parameters, *this, *layer.as(), tile.matrix, false); } void RasterBucket::render(Painter& painter, PaintParameters& parameters, const RenderLayer& layer, const mat4& matrix) { painter.renderRaster(parameters, *this, *layer.as(), matrix, true); } bool RasterBucket::hasData() const { return !!image; } } // namespace mbgl