From d9267a388d779ee4b13124568b92d646c6d1dcc6 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Sun, 21 Jan 2024 08:54:03 -0500 Subject: [PATCH] PDFViewer: Add Debug menu entries for disabling clipping --- Userland/Applications/PDFViewer/PDFViewer.cpp | 24 +++++++++++++++++++ Userland/Applications/PDFViewer/PDFViewer.h | 6 +++++ .../PDFViewer/PDFViewerWidget.cpp | 15 ++++++++++++ 3 files changed, 45 insertions(+) diff --git a/Userland/Applications/PDFViewer/PDFViewer.cpp b/Userland/Applications/PDFViewer/PDFViewer.cpp index ca1fd031af..1728652ecc 100644 --- a/Userland/Applications/PDFViewer/PDFViewer.cpp +++ b/Userland/Applications/PDFViewer/PDFViewer.cpp @@ -48,6 +48,9 @@ PDFViewer::PDFViewer() m_page_view_mode = static_cast(Config::read_i32("PDFViewer"sv, "Display"sv, "PageMode"sv, 0)); m_rendering_preferences.show_clipping_paths = Config::read_bool("PDFViewer"sv, "Rendering"sv, "ShowClippingPaths"sv, false); m_rendering_preferences.show_images = Config::read_bool("PDFViewer"sv, "Rendering"sv, "ShowImages"sv, true); + m_rendering_preferences.clip_images = Config::read_bool("PDFViewer"sv, "Rendering"sv, "ClipImages"sv, true); + m_rendering_preferences.clip_paths = Config::read_bool("PDFViewer"sv, "Rendering"sv, "ClipPaths"sv, true); + m_rendering_preferences.clip_text = Config::read_bool("PDFViewer"sv, "Rendering"sv, "ClipText"sv, true); } PDF::PDFErrorOr PDFViewer::set_document(RefPtr document) @@ -181,6 +184,27 @@ void PDFViewer::set_show_images(bool show_images) update(); } +void PDFViewer::set_clip_images(bool clip_images) +{ + m_rendering_preferences.clip_images = clip_images; + Config::write_bool("PDFViewer"sv, "Rendering"sv, "ClipImages"sv, clip_images); + update(); +} + +void PDFViewer::set_clip_paths(bool clip_paths) +{ + m_rendering_preferences.clip_paths = clip_paths; + Config::write_bool("PDFViewer"sv, "Rendering"sv, "ClipPaths"sv, clip_paths); + update(); +} + +void PDFViewer::set_clip_text(bool clip_text) +{ + m_rendering_preferences.clip_text = clip_text; + Config::write_bool("PDFViewer"sv, "Rendering"sv, "ClipText"sv, clip_text); + update(); +} + void PDFViewer::resize_event(GUI::ResizeEvent&) { for (auto& map : m_rendered_page_list) diff --git a/Userland/Applications/PDFViewer/PDFViewer.h b/Userland/Applications/PDFViewer/PDFViewer.h index 91bba33334..0459713593 100644 --- a/Userland/Applications/PDFViewer/PDFViewer.h +++ b/Userland/Applications/PDFViewer/PDFViewer.h @@ -66,6 +66,12 @@ public: void set_show_clipping_paths(bool); bool show_images() const { return m_rendering_preferences.show_images; } void set_show_images(bool); + bool clip_images() const { return m_rendering_preferences.clip_images; } + void set_clip_images(bool); + bool clip_paths() const { return m_rendering_preferences.clip_paths; } + void set_clip_paths(bool); + bool clip_text() const { return m_rendering_preferences.clip_text; } + void set_clip_text(bool); protected: PDFViewer(); diff --git a/Userland/Applications/PDFViewer/PDFViewerWidget.cpp b/Userland/Applications/PDFViewer/PDFViewerWidget.cpp index 2d1b540c3e..84260eaaf5 100644 --- a/Userland/Applications/PDFViewer/PDFViewerWidget.cpp +++ b/Userland/Applications/PDFViewer/PDFViewerWidget.cpp @@ -257,6 +257,21 @@ ErrorOr PDFViewerWidget::initialize_menubar(GUI::Window& window) }); toggle_show_images->set_checked(m_viewer->show_images()); debug_menu->add_action(*toggle_show_images); + auto toggle_clip_images = GUI::Action::create_checkable("Clip I&mages", [&](auto& action) { + m_viewer->set_clip_images(action.is_checked()); + }); + toggle_clip_images->set_checked(m_viewer->clip_images()); + debug_menu->add_action(toggle_clip_images); + auto toggle_clip_paths = GUI::Action::create_checkable("Clip &Paths", [&](auto& action) { + m_viewer->set_clip_paths(action.is_checked()); + }); + toggle_clip_paths->set_checked(m_viewer->clip_paths()); + debug_menu->add_action(toggle_clip_paths); + auto toggle_clip_text = GUI::Action::create_checkable("Clip &Text", [&](auto& action) { + m_viewer->set_clip_text(action.is_checked()); + }); + toggle_clip_text->set_checked(m_viewer->clip_text()); + debug_menu->add_action(toggle_clip_text); auto help_menu = window.add_menu("&Help"_string); help_menu->add_action(GUI::CommonActions::make_command_palette_action(&window));