SVGKExporterNSData.m 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. #import "SVGKExporterNSData.h"
  2. #import "SVGKImage+CGContext.h" // needed for Context calls
  3. @implementation SVGKExporterNSData
  4. +(NSData*) exportAsNSData:(SVGKImage*) image
  5. {
  6. return [self exportAsNSData:image flipYaxis:FALSE];
  7. }
  8. +(NSData*) exportAsNSData:(SVGKImage*) image flipYaxis:(BOOL) flipYaxis
  9. {
  10. return [self exportAsNSData:image antiAliased:TRUE curveFlatnessFactor:1.0 interpolationQuality:kCGInterpolationDefault flipYaxis:flipYaxis];
  11. }
  12. +(NSData*) exportAsNSData:(SVGKImage*) image antiAliased:(BOOL) shouldAntialias curveFlatnessFactor:(CGFloat) multiplyFlatness interpolationQuality:(CGInterpolationQuality) interpolationQuality flipYaxis:(BOOL) flipYaxis
  13. {
  14. CGContextRef newContext = [image newCGContextAutosizedToFit];
  15. [image renderToContext:newContext antiAliased:shouldAntialias curveFlatnessFactor:multiplyFlatness interpolationQuality:interpolationQuality flipYaxis: flipYaxis];
  16. void* resultAsVoidStar = CGBitmapContextGetData(newContext);
  17. size_t dataSize = 4 * image.size.width * image.size.height; // RGBA = 4 8-bit components
  18. NSData* result = [NSData dataWithBytes:resultAsVoidStar length:dataSize];
  19. CGContextRelease(newContext);
  20. return result;
  21. }
  22. @end