diff -r c11abf387a7d -r d5b30d6373fc project_files/HedgewarsMobile/Classes/UIImageExtra.m --- a/project_files/HedgewarsMobile/Classes/UIImageExtra.m Sat Jul 31 10:52:43 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/UIImageExtra.m Sat Jul 31 11:24:53 2010 +0200 @@ -10,22 +10,22 @@ @implementation UIImage (extra) - + -(UIImage *)scaleToSize:(CGSize) size { DLog(@"warning - this is a very expensive operation, you should avoid using it"); - + // Create a bitmap graphics context; this will also set it as the current context UIGraphicsBeginImageContext(size); - + // Draw the scaled image in the current context [self drawInRect:CGRectMake(0, 0, size.width, size.height)]; - + // Create a new image from current context UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); - + // Pop the current context from the stack UIGraphicsEndImageContext(); - + // Return our new scaled image (autoreleased) return scaledImage; } @@ -38,19 +38,19 @@ -(UIImage *)mergeWith:(UIImage *)secondImage atPoint:(CGPoint) secondImagePoint atSize:(CGSize) resultingSize { // Create a bitmap graphics context; this will also set it as the current context UIGraphicsBeginImageContext(resultingSize); - + // draw the background image in the current context [self drawAtPoint:CGPointMake(0,0)]; - + // draw the image on top of the first image (because the context is the same) [secondImage drawAtPoint:secondImagePoint]; - + // create an image from the current contex (not thread safe) UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext(); - + // free drawing contex UIGraphicsEndImageContext(); - + // return the resulting autoreleased image return resultImage; } @@ -58,17 +58,17 @@ -(id) initWithContentsOfFile:(NSString *)path andCutAt:(CGRect) rect { // load image from path UIImage *image = [[UIImage alloc] initWithContentsOfFile: path]; - + if (nil != image) { // get its CGImage representation with a give size CGImageRef cgImage = CGImageCreateWithImageInRect([image CGImage], rect); - + // clean memory [image release]; - + // create a UIImage from the CGImage (memory must be allocated already) UIImage *sprite = [self initWithCGImage:cgImage]; - + // clean memory CGImageRelease(cgImage); @@ -82,38 +82,38 @@ -(UIImage *)cutAt:(CGRect) rect { CGImageRef cgImage = CGImageCreateWithImageInRect([self CGImage], rect); - + UIImage *res = [UIImage imageWithCGImage:cgImage]; CGImageRelease(cgImage); - + return res; } -(UIImage *)convertToGrayScale { // Create image rectangle with current image width/height CGRect imageRect = CGRectMake(0, 0, self.size.width, self.size.height); - + // Grayscale color space CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); - + // Create bitmap content with current image size and grayscale colorspace CGContextRef context = CGBitmapContextCreate(nil, self.size.width, self.size.height, 8, 0, colorSpace, kCGImageAlphaNone); - + // Draw image into current context, with specified rectangle // using previously defined context (with grayscale colorspace) CGContextDrawImage(context, imageRect, [self CGImage]); - + // Create bitmap image info from pixel data in current context CGImageRef imageRef = CGBitmapContextCreateImage(context); - - // Create a new UIImage object + + // Create a new UIImage object UIImage *newImage = [UIImage imageWithCGImage:imageRef]; - + // Release colorspace, context and bitmap information CGColorSpaceRelease(colorSpace); CGContextRelease(context); CFRelease(imageRef); - + // Return the new grayscale image return newImage; } @@ -122,7 +122,7 @@ -(UIImage*) maskImageWith:(UIImage *)maskImage { // prepare the reference image CGImageRef maskRef = [maskImage CGImage]; - + // create the mask using parameters of the mask reference CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), CGImageGetHeight(maskRef), @@ -130,14 +130,14 @@ CGImageGetBitsPerPixel(maskRef), CGImageGetBytesPerRow(maskRef), CGImageGetDataProvider(maskRef), NULL, false); - + // create an image in the current context CGImageRef masked = CGImageCreateWithMask([self CGImage], mask); CGImageRelease(mask); - + UIImage* retImage = [UIImage imageWithCGImage:masked]; CGImageRelease(masked); - + return retImage; } @@ -162,30 +162,30 @@ CGContextRestoreGState(context); } --(UIImage *)makeRoundCornersOfSize:(CGSize) sizewh { +-(UIImage *)makeRoundCornersOfSize:(CGSize) sizewh { CGFloat cornerWidth = sizewh.width; CGFloat cornerHeight = sizewh.height; CGFloat w = self.size.width; CGFloat h = self.size.height; - + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst); - + CGContextBeginPath(context); CGRect rect = CGRectMake(0, 0, w, h); addRoundedRectToPath(context, rect, cornerWidth, cornerHeight); CGContextClosePath(context); CGContextClip(context); - + CGContextDrawImage(context, CGRectMake(0, 0, w, h), [self CGImage]); - + CGImageRef imageMasked = CGBitmapContextCreateImage(context); CGContextRelease(context); CGColorSpaceRelease(colorSpace); - + UIImage *newImage = [UIImage imageWithCGImage:imageMasked]; CGImageRelease(imageMasked); - + return newImage; }