Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.86 KB | None | 0 0
  1. - (IBAction)doExport:(id)sender {
  2. ExportView *view = [[ExportView alloc] initWithNibName:@"ExportView" bundle:nil];
  3. [view.pic1 setImage:self.pic1.image];
  4. [view.pic2 setImage:self.pic2.image];
  5. [view.pic3 setImage:self.pic3.image];
  6. [view.icon setImage:self.icon.image];
  7.  
  8. // Hardcoding for test
  9. [view.pic1 setImage:[NSImage imageNamed:@"iPhone 4-Inch Screenshot 1"]];
  10. [view.pic1 setNeedsLayout:YES];
  11. [view.pic1 setNeedsDisplay];
  12. [view.pic1 updateLayer];
  13.  
  14. // Setup the image to render
  15. NSRect imgRect = view.view.frame;
  16. NSSize imgSize = imgRect.size;
  17.  
  18. NSBitmapImageRep *rep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
  19. pixelsWide:imgSize.width
  20. pixelsHigh:imgSize.height
  21. bitsPerSample:8
  22. samplesPerPixel:4
  23. hasAlpha:YES
  24. isPlanar:NO
  25. colorSpaceName:NSDeviceRGBColorSpace
  26. bitmapFormat:NSAlphaFirstBitmapFormat
  27. bytesPerRow:0
  28. bitsPerPixel:0];
  29.  
  30. NSGraphicsContext *g = [NSGraphicsContext graphicsContextWithBitmapImageRep:rep];
  31. [NSGraphicsContext saveGraphicsState];
  32. [NSGraphicsContext setCurrentContext:g];
  33.  
  34. // Set view background color
  35. CALayer *viewLayer = [CALayer layer];
  36. [viewLayer setBackgroundColor:[NSColor clearColor].CGColor];
  37. [view.view setWantsLayer:YES];
  38. [view.view setLayer:viewLayer];
  39.  
  40. // Render
  41. CGContextRef zCgContextRef = (CGContextRef) [g graphicsPort];
  42. [[view.view layer] renderInContext:zCgContextRef];
  43.  
  44. // Render pic as well, for test
  45. [view.pic1.layer renderInContext:zCgContextRef];
  46.  
  47. // Get the Data for the image
  48. NSData *exportedData = [rep representationUsingType:NSJPEGFileType properties:nil];
  49.  
  50. // Start the savepanel
  51. NSSavePanel *savepanel = [NSSavePanel savePanel];
  52. savepanel.title = @"Save chart";
  53.  
  54. [savepanel setAllowedFileTypes:[NSArray arrayWithObject:@"jpg"]];
  55.  
  56. [savepanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result)
  57. {
  58. if (NSFileHandlingPanelOKButton == result)
  59. {
  60. NSURL* fileURL = [savepanel URL];
  61.  
  62. if ([fileURL.pathExtension isEqualToString:@""])
  63. fileURL = [fileURL URLByAppendingPathExtension:@"jpg"];
  64.  
  65. [exportedData writeToURL:fileURL atomically:YES];
  66. }
  67. }];
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement