title: Remove curled corner from qlgenerator thumbnail
body: <p>How do I remove the curled icon a thumbnail create in a quicklook plugin?</p>
  
  <p>Screenshot of current icon: <img src="https://i.stack.imgur.com/aLPeD.png" alt="enter image description here"></p>
  
  <p>Screenshot of what I want: <img src="https://i.stack.imgur.com/hBpiD.png" alt="enter image description here"></p>
  
  <p>GeneratePreviewForURL.m:</p>
  
  <pre><code>#include &lt;CoreFoundation/CoreFoundation.h&gt;
  #include &lt;CoreServices/CoreServices.h&gt;
  #include &lt;QuickLook/QuickLook.h&gt;
  
  #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
  }
  </code></pre>
  
  <p>GenerateIcon.m:</p>
  
  <pre><code>//
  //  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 &gt; 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 &gt; 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
  </code></pre>
  
  <p><strong>Edit:</strong> Added screenshots.</p>