#ifndef __MLX_PUT_PIXEL_MANAGER__ #define __MLX_PUT_PIXEL_MANAGER__ #include namespace mlx { class PutPixelManager { public: PutPixelManager(NonOwningPtr renderer) : p_renderer(renderer) {} // Returns a valid pointer when a new texture has been created NonOwningPtr DrawPixel(int x, int y, std::uint64_t draw_layer, mlx_color color); NonOwningPtr DrawPixelsArray(int x, int y, std::uint64_t draw_layer, mlx_color* pixels, std::size_t pixels_size); NonOwningPtr DrawPixelsRegion(int x, int y, int w, int h, std::uint64_t draw_layer, mlx_color* pixels); void ResetRenderData(); ~PutPixelManager() = default; private: NonOwningPtr GetLayer(std::uint64_t draw_layer, bool& is_newlayer); private: std::unordered_map> m_placements; std::vector> m_textures; NonOwningPtr p_renderer; std::size_t m_current_texture_index = 0; }; } #endif