diff --git a/Userland/Libraries/LibPDF/Renderer.cpp b/Userland/Libraries/LibPDF/Renderer.cpp index 41dee7fcd0..85bf2c59db 100644 --- a/Userland/Libraries/LibPDF/Renderer.cpp +++ b/Userland/Libraries/LibPDF/Renderer.cpp @@ -21,9 +21,9 @@ namespace PDF { -PDFErrorOr Renderer::render(Document& document, Page const& page, RefPtr bitmap) +PDFErrorOr Renderer::render(Document& document, Page const& page, RefPtr bitmap, RenderingPreferences rendering_preferences) { - return Renderer(document, page, bitmap).render(); + return Renderer(document, page, bitmap, rendering_preferences).render(); } static void rect_path(Gfx::Path& path, float x, float y, float width, float height) @@ -48,12 +48,13 @@ static Gfx::Path rect_path(Gfx::Rect rect) return rect_path(rect.x(), rect.y(), rect.width(), rect.height()); } -Renderer::Renderer(RefPtr document, Page const& page, RefPtr bitmap) +Renderer::Renderer(RefPtr document, Page const& page, RefPtr bitmap, RenderingPreferences rendering_preferences) : m_document(document) , m_bitmap(bitmap) , m_page(page) , m_painter(*bitmap) , m_anti_aliasing_painter(m_painter) + , m_rendering_preferences(rendering_preferences) { auto media_box = m_page.media_box; @@ -247,6 +248,9 @@ void Renderer::begin_path_paint() { auto bounding_box = map(state().clipping_paths.current.bounding_box()); m_painter.clear_clip_rect(); + if (m_rendering_preferences.show_clipping_paths) { + m_painter.stroke_path(rect_path(bounding_box), Color::Black, 1); + } m_painter.add_clip_rect(bounding_box.to_type()); } diff --git a/Userland/Libraries/LibPDF/Renderer.h b/Userland/Libraries/LibPDF/Renderer.h index 0c0de5e155..4f0e1b0f62 100644 --- a/Userland/Libraries/LibPDF/Renderer.h +++ b/Userland/Libraries/LibPDF/Renderer.h @@ -84,12 +84,16 @@ struct GraphicsState { TextState text_state {}; }; +struct RenderingPreferences { + bool show_clipping_paths { false }; +}; + class Renderer { public: - static PDFErrorOr render(Document&, Page const&, RefPtr); + static PDFErrorOr render(Document&, Page const&, RefPtr, RenderingPreferences preferences); private: - Renderer(RefPtr, Page const&, RefPtr); + Renderer(RefPtr, Page const&, RefPtr, RenderingPreferences); PDFErrorOr render(); @@ -128,6 +132,7 @@ private: Page const& m_page; Gfx::Painter m_painter; Gfx::AntiAliasingPainter m_anti_aliasing_painter; + RenderingPreferences m_rendering_preferences; Gfx::Path m_current_path; Vector m_graphics_state_stack;