From 1b0cc67a28a7b1ea902fb50c206a908691c1ca47 Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Mon, 20 Nov 2023 21:57:50 +0100 Subject: [PATCH] LibAccelGfx+LibWeb: Add basic push/pop stacking context implementation With basic PushStackingContext and PopStackingContext commands implementation scrolling works again after changes being made in: 4e04f81626cf3a5e1bea52ae26bb17f40695ad78 --- Userland/Libraries/LibAccelGfx/Painter.h | 1 + .../LibWeb/Painting/PaintingCommandExecutorGPU.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibAccelGfx/Painter.h b/Userland/Libraries/LibAccelGfx/Painter.h index bdad0d9565..068164912d 100644 --- a/Userland/Libraries/LibAccelGfx/Painter.h +++ b/Userland/Libraries/LibAccelGfx/Painter.h @@ -39,6 +39,7 @@ public: [[nodiscard]] Gfx::AffineTransform const& transform() const { return state().transform; } void set_transform(Gfx::AffineTransform const& transform) { state().transform = transform; } + void translate(Gfx::FloatPoint translation) { state().transform.translate(translation); } void fill_rect(Gfx::FloatRect, Gfx::Color); void fill_rect(Gfx::IntRect, Gfx::Color); diff --git a/Userland/Libraries/LibWeb/Painting/PaintingCommandExecutorGPU.cpp b/Userland/Libraries/LibWeb/Painting/PaintingCommandExecutorGPU.cpp index 3cda541877..6696c03cb3 100644 --- a/Userland/Libraries/LibWeb/Painting/PaintingCommandExecutorGPU.cpp +++ b/Userland/Libraries/LibWeb/Painting/PaintingCommandExecutorGPU.cpp @@ -75,15 +75,16 @@ CommandResult PaintingCommandExecutorGPU::set_font(Gfx::Font const&) return CommandResult::Continue; } -CommandResult PaintingCommandExecutorGPU::push_stacking_context(float, bool, Gfx::IntRect const&, Gfx::IntPoint, CSS::ImageRendering, StackingContextTransform, Optional) +CommandResult PaintingCommandExecutorGPU::push_stacking_context(float, bool, Gfx::IntRect const&, Gfx::IntPoint post_transform_translation, CSS::ImageRendering, StackingContextTransform, Optional) { - // FIXME + painter().save(); + painter().translate(post_transform_translation.to_type()); return CommandResult::Continue; } CommandResult PaintingCommandExecutorGPU::pop_stacking_context() { - // FIXME + painter().restore(); return CommandResult::Continue; }