5#import <AppKit/NSImage.h>
84 int ok = close(src_fd);
86 NSLog(
@"Blender Thumbnailer Error: Failed to close the blend file.");
104 NSLog(
@"Blender Thumbnailer Error: %@", errorStr);
105 return [NSError errorWithDomain:
@"org.blenderfoundation.blender.thumbnailer"
107 userInfo:@{NSLocalizedDescriptionKey : errorStr}];
114 if (!src_file_fd.
good()) {
120 if (file_content ==
nullptr) {
140 NSData *ns_data = [NSData dataWithBytes:png_buf_opt->data()
length:png_buf_opt->size()];
141 NSImage *ns_image = [[NSImage alloc] initWithData:ns_data];
147- (void)provideThumbnailForFileRequest:(QLFileThumbnailRequest *)request
148 completionHandler:(
void (^)(QLThumbnailReply *_Nullable reply,
149 NSError *_Nullable
error))handler
152 NSLog(
@"Generating thumbnail for %@", request.fileURL.path);
154 NSError *
error = nil;
157 if (image == nil || image.size.width <= 0 || image.size.height <= 0) {
162 const CGFloat width_ratio = request.maximumSize.width / image.size.width;
163 const CGFloat height_ratio = request.maximumSize.height / image.size.height;
164 const CGFloat scale_factor =
MIN(width_ratio, height_ratio);
166 const NSSize context_size = NSMakeSize(image.size.width * scale_factor,
167 image.size.height * scale_factor);
169 const NSRect context_rect = NSMakeRect(0, 0, context_size.width, context_size.height);
171 QLThumbnailReply *thumbnailReply = [QLThumbnailReply replyWithContextSize:context_size
172 currentContextDrawingBlock:^BOOL {
173 [image drawInRect:context_rect];
181 handler(thumbnailReply, nil);
183 NSLog(
@"Thumbnail generation successfully completed");
File and directory operations.
int BLI_open(const char *filepath, int oflag, int pmode) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Wrapper for reading from various sources (e.g. raw files, compressed files, memory....
FileReader * BLI_filereader_new_file(int filedes) ATTR_WARN_UNUSED_RESULT
eThumbStatus blendthumb_create_thumb_from_file(FileReader *rawfile, Thumbnail *thumb)
std::optional< blender::Vector< uint8_t > > blendthumb_create_png_data_from_thumb(const Thumbnail *thumb)
FileDescriptorRAII(const char *file_path)
float length(VecOp< float, D >) RET
static void error(const char *str)
static NSError * create_nserror_from_string(NSString *errorStr)
static NSImage * generate_nsimage_for_file(const char *src_blend_path, NSError *error)