/* * Copyright (c) 2023, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace AccelGfx { class Canvas { public: static Canvas create(Context& context, NonnullRefPtr bitmap); [[nodiscard]] Gfx::IntSize size() const { return m_bitmap->size(); } [[nodiscard]] int width() const { return m_bitmap->width(); } [[nodiscard]] int height() const { return m_bitmap->height(); } void flush(); [[nodiscard]] Gfx::Bitmap const& bitmap() const { return *m_bitmap; } ~Canvas(); private: explicit Canvas(NonnullRefPtr, Context&); void initialize(); NonnullRefPtr m_bitmap; Context& m_context; Context::Surface m_surface; }; }