diff options
| author | SND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2014-03-29 20:11:02 +0000 |
|---|---|---|
| committer | SND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2014-03-29 20:11:02 +0000 |
| commit | 4f3311553ff259813ca26105f82f5b17af7db03e (patch) | |
| tree | 382673c781ee70d4bf2aaaaa7e4217142ea77fcf /macosx/Pcsxr-QL/GeneratePreviewForURL.m | |
| parent | 97bb0560b9d2e2ef44e86bde2d52cf9093b0c0da (diff) | |
| download | pcsxr-4f3311553ff259813ca26105f82f5b17af7db03e.tar.gz | |
OS X: More work on the QuickLook importer.
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@89716 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'macosx/Pcsxr-QL/GeneratePreviewForURL.m')
| -rw-r--r-- | macosx/Pcsxr-QL/GeneratePreviewForURL.m | 88 |
1 files changed, 57 insertions, 31 deletions
diff --git a/macosx/Pcsxr-QL/GeneratePreviewForURL.m b/macosx/Pcsxr-QL/GeneratePreviewForURL.m index 20cee6ba..df16a80f 100644 --- a/macosx/Pcsxr-QL/GeneratePreviewForURL.m +++ b/macosx/Pcsxr-QL/GeneratePreviewForURL.m @@ -12,45 +12,71 @@ This function's job is to create preview for designated file ----------------------------------------------------------------------------- */ +static OSStatus GeneratePreviewForFreeze(void *thisInterface, QLPreviewRequestRef preview, NSURL *url, NSDictionary *options); +static OSStatus GeneratePreviewForMemCard(void *thisInterface, QLPreviewRequestRef preview, NSURL *url, NSDictionary *options); + OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options) { + OSStatus theStatus = noErr; @autoreleasepool { - NSData *data; - NSURL *urlNS = (__bridge NSURL *)(url); - gzFile f; - const char* state_filename; - if ([urlNS respondsToSelector:@selector(fileSystemRepresentation)]) { - state_filename = [urlNS fileSystemRepresentation]; - } else { - state_filename = [[urlNS path] fileSystemRepresentation]; - } - - unsigned char *pMem = (unsigned char *) malloc(128*96*3); - if (pMem == NULL) - return mFulErr; - - f = gzopen(state_filename, "rb"); - if (f != NULL) { - gzseek(f, 32, SEEK_SET); // skip header - gzseek(f, sizeof(uint32_t), SEEK_CUR); - gzseek(f, sizeof(uint8_t), SEEK_CUR); - gzread(f, pMem, 128*96*3); - gzclose(f); - } else { - memcpy(pMem, NoPic_Image.pixel_data, 128*96*3); + NSWorkspace *workspace = [NSWorkspace sharedWorkspace]; + NSURL *urlNS = (__bridge NSURL*)url; + NSString *uti = (__bridge NSString*)contentTypeUTI; + NSDictionary *optionsNS = (__bridge NSDictionary*)options; + if ([workspace type:uti conformsToType:@"com.codeplex.pcsxr.freeze"]) { + theStatus = GeneratePreviewForFreeze(thisInterface, preview, urlNS, optionsNS); + } else if ([workspace type:uti conformsToType:@"com.codeplex.pcsxr.memcard"]) { + theStatus = GeneratePreviewForMemCard(thisInterface, preview, urlNS, optionsNS); } - - NSBitmapImageRep *imRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:&pMem pixelsWide:NoPic_Image.width pixelsHigh:NoPic_Image.height bitsPerSample:8 samplesPerPixel:3 hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedRGBColorSpace bitmapFormat:0 bytesPerRow:NoPic_Image.width * NoPic_Image.bytes_per_pixel bitsPerPixel:24]; - if (imRep) { - data = [imRep TIFFRepresentation]; - QLPreviewRequestSetDataRepresentation(preview, (__bridge CFDataRef)(data), kUTTypeImage, NULL); - } - free(pMem); } - return noErr; + return theStatus; } void CancelPreviewGeneration(void *thisInterface, QLPreviewRequestRef preview) { // Implement only if supported } + +OSStatus GeneratePreviewForFreeze(void *thisInterface, QLPreviewRequestRef preview, NSURL *url, NSDictionary *options) +{ + NSData *data; + gzFile f; + const char* state_filename; + if ([url respondsToSelector:@selector(fileSystemRepresentation)]) { + state_filename = [url fileSystemRepresentation]; + } else { + state_filename = [[url path] fileSystemRepresentation]; + } + + if (!state_filename) { + return fnfErr; + } + + unsigned char *pMem = (unsigned char *) malloc(128*96*3); + if (pMem == NULL) + return mFulErr; + + f = gzopen(state_filename, "rb"); + if (f != NULL) { + gzseek(f, 32, SEEK_SET); // skip header + gzseek(f, sizeof(uint32_t), SEEK_CUR); + gzseek(f, sizeof(uint8_t), SEEK_CUR); + gzread(f, pMem, 128*96*3); + gzclose(f); + } else { + memcpy(pMem, NoPic_Image.pixel_data, 128*96*3); + } + + NSBitmapImageRep *imRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:&pMem pixelsWide:NoPic_Image.width pixelsHigh:NoPic_Image.height bitsPerSample:8 samplesPerPixel:3 hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedRGBColorSpace bitmapFormat:0 bytesPerRow:NoPic_Image.width * NoPic_Image.bytes_per_pixel bitsPerPixel:24]; + if (imRep) { + data = [imRep TIFFRepresentation]; + QLPreviewRequestSetDataRepresentation(preview, (__bridge CFDataRef)(data), kUTTypeImage, NULL); + } + free(pMem); + return noErr; +} + +static OSStatus GeneratePreviewForMemCard(void *thisInterface, QLPreviewRequestRef preview, NSURL *url, NSDictionary *options) +{ + return unimpErr; +} |
