mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 23:50:19 +00:00
f4a5c136c3
Before this change, we used Gfx::Bitmap to represent both decoded images that are not going to be mutated and bitmaps corresponding to canvases that could be mutated. This change introduces a wrapper for bitmaps that are not going to be mutated, so the painter could do caching: texture caching in the case of GPU painter and potentially scaled bitmap caching in the case of CPU painter.
40 lines
926 B
C++
40 lines
926 B
C++
/*
|
|
* Copyright (c) 2023, Aliaksandr Kalenik <kalenik.aliaksandr@gmail.com>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/Forward.h>
|
|
#include <AK/RefCounted.h>
|
|
#include <LibGfx/Bitmap.h>
|
|
#include <LibGfx/Forward.h>
|
|
#include <LibGfx/Rect.h>
|
|
|
|
namespace Gfx {
|
|
|
|
class ImmutableBitmap final : public RefCounted<ImmutableBitmap> {
|
|
public:
|
|
static NonnullRefPtr<ImmutableBitmap> create(NonnullRefPtr<Bitmap> bitmap);
|
|
|
|
~ImmutableBitmap() = default;
|
|
|
|
Bitmap const& bitmap() const { return *m_bitmap; }
|
|
|
|
size_t width() const { return m_bitmap->width(); }
|
|
size_t height() const { return m_bitmap->height(); }
|
|
|
|
IntRect rect() const { return m_bitmap->rect(); }
|
|
IntSize size() const { return m_bitmap->size(); }
|
|
|
|
size_t id() const { return m_id; }
|
|
|
|
private:
|
|
NonnullRefPtr<Bitmap> m_bitmap;
|
|
size_t m_id;
|
|
|
|
explicit ImmutableBitmap(NonnullRefPtr<Bitmap> bitmap);
|
|
};
|
|
|
|
}
|