Revision: 14143
http://sourceforge.net/p/skim-app/code/14143
Author: hofman
Date: 2024-03-25 09:48:45 +0000 (Mon, 25 Mar 2024)
Log Message:
-----------
create window image using CG in snapshot controller
Modified Paths:
--------------
trunk/SKSnapshotWindow.h
trunk/SKSnapshotWindow.m
trunk/SKSnapshotWindowController.m
Modified: trunk/SKSnapshotWindow.h
===================================================================
--- trunk/SKSnapshotWindow.h 2024-03-25 09:24:58 UTC (rev 14142)
+++ trunk/SKSnapshotWindow.h 2024-03-25 09:48:45 UTC (rev 14143)
@@ -41,11 +41,9 @@
NS_ASSUME_NONNULL_BEGIN
@interface SKSnapshotWindow : NSWindow {
- BOOL disableConstrainToScreen;
BOOL windowControllerMiniaturizesWindow;
}
-@property (nonatomic, nullable, readonly) NSImage *windowImage;
@property (nonatomic) BOOL windowControllerMiniaturizesWindow;
@end
Modified: trunk/SKSnapshotWindow.m
===================================================================
--- trunk/SKSnapshotWindow.m 2024-03-25 09:24:58 UTC (rev 14142)
+++ trunk/SKSnapshotWindow.m 2024-03-25 09:48:45 UTC (rev 14143)
@@ -49,7 +49,6 @@
@implementation SKSnapshotWindow
@synthesize windowControllerMiniaturizesWindow;
-@dynamic windowImage;
- (instancetype)initWithContentRect:(NSRect)contentRect
styleMask:(NSWindowStyleMask)styleMask
backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation {
self = [super initWithContentRect:contentRect styleMask:styleMask
backing:bufferingType defer:deferCreation];
@@ -74,30 +73,4 @@
[super miniaturize:sender];
}
-- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen {
- if (disableConstrainToScreen)
- return frameRect;
- return [super constrainFrameRect:frameRect toScreen:screen];
-}
-
-- (NSImage *)windowImage {
- NSRect frame = [self frame];
- BOOL visible = [self isVisible];
- if (visible == NO) {
- disableConstrainToScreen = YES;
- [self setFrameOrigin:NSMakePoint(MIN_WINDOW_COORDINATE,
MIN_WINDOW_COORDINATE)];
- [self orderBack:nil];
- [self displayIfNeeded];
- disableConstrainToScreen = NO;
- }
- CGImageRef cgImage = CGWindowListCreateImage(CGRectNull,
kCGWindowListOptionIncludingWindow, (CGWindowID)[self windowNumber],
kCGWindowImageBoundsIgnoreFraming);
- if (visible == NO) {
- [self orderOut:nil];
- [self setFrameOrigin:frame.origin];
- }
- NSImage *image = [[NSImage alloc] initWithCGImage:cgImage size:frame.size];
- CGImageRelease(cgImage);
- return image;
-}
-
@end
Modified: trunk/SKSnapshotWindowController.m
===================================================================
--- trunk/SKSnapshotWindowController.m 2024-03-25 09:24:58 UTC (rev 14142)
+++ trunk/SKSnapshotWindowController.m 2024-03-25 09:48:45 UTC (rev 14143)
@@ -617,12 +617,14 @@
NSImage *windowImage;
if (miniaturize) {
- windowImage = [(SKSnapshotWindow *)window windowImage];
+ CGImageRef cgImage = CGWindowListCreateImage(CGRectNull,
kCGWindowListOptionIncludingWindow, (CGWindowID)[window windowNumber],
kCGWindowImageBoundsIgnoreFraming);
+ windowImage = [[NSImage alloc] initWithCGImage:cgImage size:[window
frame].size];
+ CGImageRelease(cgImage);
} else {
- windowImage = [[NSImage alloc] initWithSize:[window frame].size];
NSBitmapImageRep *imageRep = [[[window contentView] superview]
bitmapImageRepCachingDisplay];
if ([filters count] > 0 && [NSScroller preferredScrollerStyle] ==
NSScrollerStyleLegacy)
applyFiltersToImageRep(imageRep, filters, [window
contentLayoutRect]);
+ windowImage = [[NSImage alloc] initWithSize:[window frame].size];
[windowImage addRepresentation:imageRep];
}
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