Удаление закрученного угла из эскиза qlgenerator

Как удалить изогнутый значок, созданный эскизом в плагине Quicklook?

Снимок экрана текущего значка: enter image description here

Скриншот того, что я хочу: enter image description here

GeneratePreviewForURL.m:

#include <CoreFoundation/CoreFoundation.h>
#include <CoreServices/CoreServices.h>
#include <QuickLook/QuickLook.h>

#import "GenerateIcon.h"

OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options);
void CancelPreviewGeneration(void *thisInterface, QLPreviewRequestRef preview);

/* -----------------------------------------------------------------------------
   Generate a preview for file

   This function's job is to create preview for designated file
   ----------------------------------------------------------------------------- */

OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options)
{
    // To complete your generator please implement the function GeneratePreviewForURL in GeneratePreviewForURL.c

    [GenerateIcon generatePreviewWithRef:preview URL:url];

    return noErr;
}

void CancelPreviewGeneration(void *thisInterface, QLPreviewRequestRef preview)
{
    // Implement only if supported
}

GenerateIcon.m:

//
//  GenerateIcon.m
//  Windows Binary Icon
//
//  Created by Asger Hautop Drewsen on 2/5/12.
//  Copyright (c) 2012 Asger Drewsen. All rights reserved.
//

#import "GenerateIcon.h"

@implementation GenerateIcon

+(void) generateThumbnailWithRef:(QLThumbnailRequestRef)requestRef URL:(CFURLRef)url
{
    [GenerateIcon generateMultiWithThumbnailRef:requestRef PreviewRef:nil URL:url];
}
+(void) generatePreviewWithRef:(QLPreviewRequestRef)requestRef URL:(CFURLRef)url
{
    [GenerateIcon generateMultiWithThumbnailRef:nil PreviewRef:requestRef URL:url];
}

     +(void) generateMultiWithThumbnailRef:(QLThumbnailRequestRef)thumbnail PreviewRef:(QLPreviewRequestRef)preview URL:(CFURLRef)url
{
    @autoreleasepool {

        NSString * tempDir = NSTemporaryDirectory();
        if (tempDir == nil)
            tempDir = @"/tmp";

        NSFileManager *fileManager = [[NSFileManager alloc] init];

        NSString *directory = [tempDir stringByAppendingFormat: [NSString stringWithFormat:@"%@-%.0f", @"exe-icons", [NSDate timeIntervalSinceReferenceDate] * 1000.0]];

        //NSString *directory = [tempDir stringByAppendingPathComponent:@"com.tyilo.exe-icons"];

        /*for (NSString *file in [fileManager contentsOfDirectoryAtPath:directory error:nil])
         {
         [fileManager removeItemAtPath:file error:nil];
         }*/

        [fileManager createDirectoryAtPath:directory withIntermediateDirectories:YES attributes:nil error:nil];

        [[NSTask launchedTaskWithLaunchPath:@"/usr/local/bin/wrestool" arguments:[NSArray arrayWithObjects:
                                                                                  @"-t",
                                                                                  @"group_icon",
                                                                                  @"-o",
                                                                                  directory,
                                                                                  @"-x",
                                                                                  [(__bridge NSURL *)url path],
                                                                                  nil]] waitUntilExit];

        NSArray *icons = [fileManager contentsOfDirectoryAtPath:directory error:nil];

        if (icons.count > 0)
        {
            NSImage *image = [[NSImage alloc] initWithContentsOfFile:[directory stringByAppendingPathComponent: [icons objectAtIndex:0]]];
            NSData *thumbnailData = [image TIFFRepresentation];
            CGSize size = image.size;
            NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys:
                                        [NSNumber numberWithInt:size.width],kQLPreviewPropertyWidthKey,
                                        [NSNumber numberWithInt:size.height],kQLPreviewPropertyHeightKey,
                                        nil];
            CGContextRef CGContext;
            if (thumbnail)
            {
                CGContext = QLThumbnailRequestCreateContext(thumbnail, size, TRUE, (__bridge CFDictionaryRef)properties);
            }
            else
            {
                CGContext = QLPreviewRequestCreateContext(preview, size, TRUE, (__bridge CFDictionaryRef)properties);
            }
            if(CGContext) {
                NSGraphicsContext* context = [NSGraphicsContext graphicsContextWithGraphicsPort:(void *)CGContext flipped:size.width > size.height];
                if(context) {
                    //These two lines of code are just good safe programming…
                    [NSGraphicsContext saveGraphicsState];
                    [NSGraphicsContext setCurrentContext:context];

                    NSBitmapImageRep *thumbnailBitmap = [NSBitmapImageRep imageRepWithData:thumbnailData];
                    [thumbnailBitmap draw];

                    //This line sets the context back to what it was when we're done
                    [NSGraphicsContext restoreGraphicsState];
                }

                // When we are done with our drawing code QLThumbnailRequestFlushContext() is called to flush the context
                if (thumbnail)
                {
                    QLThumbnailRequestFlushContext(thumbnail, CGContext);
                }
                else
                {
                    QLPreviewRequestFlushContext(preview, CGContext);
                }

                // Release the CGContext
                CFRelease(CGContext);
            }
            /*NSLog(@"%@", [directory stringByAppendingPathComponent: [icons objectAtIndex:0]]);
             CGImageRef image = (__bridge CGImageRef) [[NSImage alloc] initByReferencingFile:[directory stringByAppendingPathComponent: [icons objectAtIndex:0]]];
             QLThumbnailRequestSetImage(thumbnail, image, properties);*/
        }
        else
        {
            NSLog(@"Failed to generate thumbnail!");
        }
    }
}

@end

Edit: Добавлены скриншоты.

6
задан Tyilo 19 February 2012 в 13:12
поделиться