diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..89c499e --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +# Xcode +.DS_Store +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +*.xcworkspace +!default.xcworkspace +xcuserdata +profile +*.moved-aside +DerivedData +.idea/ diff --git a/Classes/UIView+MLScreenshot.h b/Classes/UIView+MLScreenshot.h index 7b8ef98..cd61768 100644 --- a/Classes/UIView+MLScreenshot.h +++ b/Classes/UIView+MLScreenshot.h @@ -17,5 +17,6 @@ @interface UIView (MLScreenshot) - (UIImage *)screenshot; +- (UIImage *)glScreenshot; @end diff --git a/Classes/UIView+MLScreenshot.m b/Classes/UIView+MLScreenshot.m index 1434b68..a86756e 100644 --- a/Classes/UIView+MLScreenshot.m +++ b/Classes/UIView+MLScreenshot.m @@ -41,6 +41,27 @@ - (UIImage *)screenshot return screenshot; } +- (UIImage *)glScreenshot +{ + // Draw OpenGL data to an image context + + UIGraphicsBeginImageContext(self.frame.size); + int width = self.frame.size.width; + int height = self.frame.size.height; + unsigned char buffer[width * height * 4]; + + CGContextRef context = UIGraphicsGetCurrentContext(); + glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, &buffer); + CGDataProviderRef dRef = CGDataProviderCreateWithData(NULL, &buffer, width * height * 4, NULL); + CGImageRef ref = CGImageCreate(width,height,8,32,width*4, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaLast, dRef, NULL, true, kCGRenderingIntentDefault); + + CGContextScaleCTM(context, 1.0, -1.0); + CGContextTranslateCTM(context, 0, -self.frame.size.height); + UIImage *im = [[UIImage alloc] initWithCGImage:ref]; + UIGraphicsEndImageContext(); + return im; +} + - (BOOL)isMapViewInSubviews:(NSArray *)subviews { for(id view in subviews)