/* * Copyright (c) 2023, Aliaksandr Kalenik * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace AccelGfx { class Canvas : public RefCounted { public: static NonnullRefPtr create(Gfx::IntSize const& size) { return adopt_ref(*new Canvas(size)); } Gfx::IntSize const& size() const { return m_size; } GL::Framebuffer const& framebuffer() const { return m_framebuffer; } void bind() { GL::bind_framebuffer(m_framebuffer); } virtual ~Canvas() { GL::delete_framebuffer(m_framebuffer); } private: Canvas(Gfx::IntSize const& size) : m_size(size) , m_framebuffer(GL::create_framebuffer(size)) { } Gfx::IntSize m_size; GL::Framebuffer m_framebuffer; }; }