1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 05:57:44 +00:00

LibPDF: Offset PaintStyle when painting so pattern overlaps properly

This commit is contained in:
Kyle Pereira 2023-12-07 13:08:37 +00:00 committed by Andreas Kling
parent 8ff87911a3
commit 8c7fc4fe6c
2 changed files with 13 additions and 0 deletions

View file

@ -293,6 +293,12 @@ RENDERER_HANDLER(path_append_rect)
void Renderer::begin_path_paint()
{
if (state().paint_style.has<NonnullRefPtr<Gfx::PaintStyle>>()) {
VERIFY(!m_original_paint_style);
m_original_paint_style = state().paint_style.get<NonnullRefPtr<Gfx::PaintStyle>>();
auto translation = Gfx::AffineTransform().translate(m_current_path.bounding_box().x(), m_current_path.bounding_box().y());
state().paint_style = { MUST(Gfx::OffsetPaintStyle::create(state().paint_style.get<NonnullRefPtr<Gfx::PaintStyle>>(), translation)) };
}
auto bounding_box = state().clipping_paths.current.bounding_box();
m_painter.clear_clip_rect();
if (m_rendering_preferences.show_clipping_paths) {
@ -306,6 +312,11 @@ void Renderer::end_path_paint()
m_current_path.clear();
m_painter.clear_clip_rect();
state().clipping_paths.current = state().clipping_paths.next;
if (m_original_paint_style) {
state().paint_style = m_original_paint_style.release_nonnull();
m_original_paint_style = nullptr;
}
}
RENDERER_HANDLER(path_stroke)