Revision: 14139
http://sourceforge.net/p/skim-app/code/14139
Author: hofman
Date: 2024-03-25 00:07:34 +0000 (Mon, 25 Mar 2024)
Log Message:
-----------
Apply color filters to window image from bitmap when using legacy scrollers
Modified Paths:
--------------
trunk/SKSnapshotWindowController.m
Modified: trunk/SKSnapshotWindowController.m
===================================================================
--- trunk/SKSnapshotWindowController.m 2024-03-24 18:09:51 UTC (rev 14138)
+++ trunk/SKSnapshotWindowController.m 2024-03-25 00:07:34 UTC (rev 14139)
@@ -596,8 +596,25 @@
return imageView;
}
+static void applyFiltersToImageRep(NSBitmapImageRep *imageRep, NSArray
*filters, NSRect rect) {
+ CGFloat scale = [imageRep pixelsHigh] / [imageRep size].height;
+ NSRect scaledRect = NSZeroRect;
+ scaledRect.size.width = scale * NSWidth(rect);
+ scaledRect.size.height = scale * NSHeight(rect);
+ CIImage *image = [[CIImage alloc] initWithBitmapImageRep:imageRep];
+ for (CIFilter *filter in filters) {
+ [filter setValue:image forKey:kCIInputImageKey];
+ image = [filter outputImage];
+ }
+ [NSGraphicsContext saveGraphicsState];
+ [NSGraphicsContext setCurrentContext:[NSGraphicsContext
graphicsContextWithBitmapImageRep:imageRep]];
+ [image drawInRect:rect fromRect:scaledRect
operation:NSCompositingOperationSourceOver fraction:1.0];
+ [NSGraphicsContext restoreGraphicsState];
+}
+
- (void)miniaturizeWindow:(BOOL)miniaturize fromRect:(NSRect)startRect
toRect:(NSRect)endRect {
NSWindow *window = [self window];
+ NSArray *filters = SKColorEffectFilters();
NSImage *contentImage = [self thumbnailWithSize:-1.0];
NSImage *windowImage;
@@ -605,7 +622,10 @@
windowImage = [(SKSnapshotWindow *)window windowImage];
} else {
windowImage = [[NSImage alloc] initWithSize:[window frame].size];
- [windowImage addRepresentation:[[[window contentView] superview]
bitmapImageRepCachingDisplay]];
+ NSBitmapImageRep *imageRep = [[[window contentView] superview]
bitmapImageRepCachingDisplay];
+ if ([filters count] > 0 && [NSScroller preferredScrollerStyle] ==
NSScrollerStyleLegacy)
+ applyFiltersToImageRep(imageRep, filters, [window
contentLayoutRect]);
+ [windowImage addRepresentation:imageRep];
}
SKAnimatedBorderlessWindow *miniaturizeWindow =
[[SKAnimatedBorderlessWindow alloc] initWithContentRect:startRect];
@@ -614,10 +634,11 @@
[[miniaturizeWindow contentView] setWantsLayer:YES];
NSImageView *imageView = addImageView([miniaturizeWindow contentView],
windowImage);
NSImageView *contentImageView = addImageView([miniaturizeWindow
contentView], contentImage);
- [contentImageView setContentFilters:SKColorEffectFilters()];
+ [contentImageView setContentFilters:filters];
if (miniaturize == NO)
[imageView setAlphaValue:0.0];
-
+ [contentImageView setAlphaValue:0.0];
+
[miniaturizeWindow orderFront:nil];
if (miniaturize) {
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit