mirror of
https://github.com/RGBCube/serenity
synced 2025-06-01 09:28:13 +00:00
LibGfx+LibWeb: Add ImmutableBitmap for images bitmap caching in painter
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.
This commit is contained in:
parent
abcf71a8ca
commit
f4a5c136c3
24 changed files with 146 additions and 35 deletions
|
@ -16,7 +16,7 @@ public:
|
|||
static ErrorOr<NonnullRefPtr<SVGDecodedImageData>> create(Page&, AK::URL const&, ByteBuffer encoded_svg);
|
||||
virtual ~SVGDecodedImageData() override;
|
||||
|
||||
virtual RefPtr<Gfx::Bitmap const> bitmap(size_t frame_index, Gfx::IntSize) const override;
|
||||
virtual RefPtr<Gfx::ImmutableBitmap> bitmap(size_t frame_index, Gfx::IntSize) const override;
|
||||
|
||||
virtual Optional<CSSPixels> intrinsic_width() const override;
|
||||
virtual Optional<CSSPixels> intrinsic_height() const override;
|
||||
|
@ -34,8 +34,8 @@ private:
|
|||
class SVGPageClient;
|
||||
SVGDecodedImageData(NonnullOwnPtr<Page>, NonnullOwnPtr<SVGPageClient>, JS::Handle<DOM::Document>, JS::Handle<SVG::SVGSVGElement>);
|
||||
|
||||
void render(Gfx::IntSize) const;
|
||||
mutable RefPtr<Gfx::Bitmap> m_bitmap;
|
||||
RefPtr<Gfx::Bitmap> render(Gfx::IntSize) const;
|
||||
mutable RefPtr<Gfx::ImmutableBitmap> m_immutable_bitmap;
|
||||
|
||||
NonnullOwnPtr<Page> m_page;
|
||||
NonnullOwnPtr<SVGPageClient> m_page_client;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue