/* * Copyright (c) 2023, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include namespace AccelGfx { Canvas Canvas::create(Context& context, NonnullRefPtr bitmap) { VERIFY(bitmap->format() == Gfx::BitmapFormat::BGRA8888); Canvas canvas { move(bitmap), context }; canvas.initialize(); return canvas; } Canvas::Canvas(NonnullRefPtr bitmap, Context& context) : m_bitmap(move(bitmap)) , m_context(context) { } void Canvas::initialize() { m_surface = m_context.create_surface(width(), height()); m_context.set_active_surface(m_surface); GL::set_viewport({ 0, 0, width(), height() }); } void Canvas::flush() { GL::read_pixels({ 0, 0, width(), height() }, *m_bitmap); } Canvas::~Canvas() { m_context.destroy_surface(m_surface); } }