diff --git a/Meta/Lagom/Contrib/MacPDF/MacPDFView.h b/Meta/Lagom/Contrib/MacPDF/MacPDFView.h index f96c2d9016..298a7297a9 100644 --- a/Meta/Lagom/Contrib/MacPDF/MacPDFView.h +++ b/Meta/Lagom/Contrib/MacPDF/MacPDFView.h @@ -26,4 +26,6 @@ - (IBAction)goToNextPage:(id)sender; - (IBAction)goToPreviousPage:(id)sender; +- (IBAction)toggleShowClippingPaths:(id)sender; + @end diff --git a/Meta/Lagom/Contrib/MacPDF/MacPDFView.mm b/Meta/Lagom/Contrib/MacPDF/MacPDFView.mm index cc5d4c7d54..6e8d8a76c0 100644 --- a/Meta/Lagom/Contrib/MacPDF/MacPDFView.mm +++ b/Meta/Lagom/Contrib/MacPDF/MacPDFView.mm @@ -16,10 +16,11 @@ NSBitmapImageRep* _cachedBitmap; int _page_index; __weak id _delegate; + PDF::RenderingPreferences _preferences; } @end -static PDF::PDFErrorOr> render(PDF::Document& document, int page_index, NSSize size) +static PDF::PDFErrorOr> render(PDF::Document& document, int page_index, NSSize size, PDF::RenderingPreferences const& preferences) { auto page = TRY(document.get_page(page_index)); @@ -29,7 +30,7 @@ static PDF::PDFErrorOr> render(PDF::Document& documen auto bitmap = TRY(Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, page_size)); - auto errors = PDF::Renderer::render(document, page, bitmap, Color::White, PDF::RenderingPreferences {}); + auto errors = PDF::Renderer::render(document, page, bitmap, Color::White, preferences); if (errors.is_error()) { for (auto const& error : errors.error().errors()) NSLog(@"warning: %@", @(error.message().characters())); @@ -129,7 +130,7 @@ static NSBitmapImageRep* ns_from_gfx(NonnullRefPtr bitmap_p) if (NSEqualSizes([_cachedBitmap size], pixel_size)) return; - if (auto bitmap_or = render(*_doc, _page_index, pixel_size); !bitmap_or.is_error()) + if (auto bitmap_or = render(*_doc, _page_index, pixel_size, _preferences); !bitmap_or.is_error()) _cachedBitmap = ns_from_gfx(bitmap_or.value()); } @@ -158,6 +159,23 @@ static NSBitmapImageRep* ns_from_gfx(NonnullRefPtr bitmap_p) [self goToPage:current_page - 1]; } +- (BOOL)validateMenuItem:(NSMenuItem*)item +{ + if ([item action] == @selector(toggleShowClippingPaths:)) { + [item setState:_preferences.show_clipping_paths ? NSControlStateValueOn : NSControlStateValueOff]; + return _doc ? YES : NO; + } + return NO; +} + +- (IBAction)toggleShowClippingPaths:(id)sender +{ + if (_doc) { + _preferences.show_clipping_paths = !_preferences.show_clipping_paths; + [self invalidateCachedBitmap]; + } +} + - (void)keyDown:(NSEvent*)event { // Calls moveLeft: or moveRight: below. diff --git a/Meta/Lagom/Contrib/MacPDF/MainMenu.xib b/Meta/Lagom/Contrib/MacPDF/MainMenu.xib index 32ab8ed996..9ddfae8b46 100644 --- a/Meta/Lagom/Contrib/MacPDF/MainMenu.xib +++ b/Meta/Lagom/Contrib/MacPDF/MainMenu.xib @@ -1,7 +1,7 @@ - + - + @@ -660,26 +660,39 @@ - + - + - - - - - - + - + - - + + + + + + + + + + + + + - + + + + + + + +