project_files/HedgewarsMobile/Classes/otherSrc/UIImageExtra.m
author koda
Sun, 20 Jun 2010 18:35:59 +0200
changeset 3523 6592fbb969da
parent 3514 59dbd31e9953
child 3525 1d7b056ff866
permissions -rw-r--r--
fix zoom smoothness some more work for weapons on the ifrontend bugfix for the gameconfig page
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3352
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
     1
//
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
     2
//  UIImageExtra.m
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
     3
//  HedgewarsMobile
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
     4
//
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
     5
//  Created by Vittorio on 08/04/10.
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
     6
//  Copyright 2010 __MyCompanyName__. All rights reserved.
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
     7
//
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
     8
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
     9
#import "UIImageExtra.h"
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    10
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    11
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    12
@implementation UIImage (extra)
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    13
 
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    14
-(UIImage *)scaleToSize:(CGSize) size {
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    15
  // Create a bitmap graphics context
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    16
  // This will also set it as the current context
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    17
  UIGraphicsBeginImageContext(size);
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    18
 
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    19
  // Draw the scaled image in the current context
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    20
  [self drawInRect:CGRectMake(0, 0, size.width, size.height)];
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    21
 
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    22
  // Create a new image from current context
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    23
  UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    24
 
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    25
  // Pop the current context from the stack
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    26
  UIGraphicsEndImageContext();
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    27
 
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    28
  // Return our new scaled image (autoreleased)
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    29
  return scaledImage;
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    30
}
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    31
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    32
-(UIImage *)mergeWith:(UIImage *)secondImage atPoint:(CGPoint) secondImagePoint {
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    33
    // create a contex of size of the background image
3361
cfc6cd502f85 buttons for number of hogs in game config
koda
parents: 3352
diff changeset
    34
    return [self mergeWith:secondImage atPoint:secondImagePoint atSize:self.size];
cfc6cd502f85 buttons for number of hogs in game config
koda
parents: 3352
diff changeset
    35
}
cfc6cd502f85 buttons for number of hogs in game config
koda
parents: 3352
diff changeset
    36
cfc6cd502f85 buttons for number of hogs in game config
koda
parents: 3352
diff changeset
    37
-(UIImage *)mergeWith:(UIImage *)secondImage atPoint:(CGPoint) secondImagePoint atSize:(CGSize) resultingSize {
cfc6cd502f85 buttons for number of hogs in game config
koda
parents: 3352
diff changeset
    38
    UIGraphicsBeginImageContext(resultingSize);
3352
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    39
    
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    40
    // drav the background image
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    41
    [self drawAtPoint:CGPointMake(0,0)];
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    42
    
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    43
    // draw the image on top of the first image
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    44
    [secondImage drawAtPoint:secondImagePoint];
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    45
    
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    46
    // create an image from the current contex (not thread safe)
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    47
    UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    48
    
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    49
    // free drawing contex
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    50
    UIGraphicsEndImageContext();
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    51
    
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    52
    // return the resulting autoreleased image
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    53
    return resultImage;
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    54
}
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    55
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    56
-(id) initWithContentsOfFile:(NSString *)path andCutAt:(CGRect) rect {
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    57
    // load image from path
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    58
    UIImage *image = [[UIImage alloc] initWithContentsOfFile: path];
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    59
    
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    60
    if (nil != image) {
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    61
        // get its CGImage representation with a give size
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    62
        CGImageRef cgImgage = CGImageCreateWithImageInRect([image CGImage], rect);
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    63
    
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    64
        // clean memory
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    65
        [image release];
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    66
    
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    67
        // create a UIImage from the CGImage (memory must be allocated already)
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    68
        UIImage *sprite = [self initWithCGImage:cgImgage];
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    69
    
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    70
        // clean memory
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    71
        CGImageRelease(cgImgage);
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    72
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    73
        // return resulting image
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    74
        return sprite;
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    75
    } else {
3523
6592fbb969da fix zoom smoothness
koda
parents: 3514
diff changeset
    76
        DLog(@"error - image == nil");
3352
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    77
        return nil;
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    78
    }
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
    79
}
3463
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    80
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
    81
-(UIImage *)convertToGrayScale {
3463
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    82
  // Create image rectangle with current image width/height
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
    83
  CGRect imageRect = CGRectMake(0, 0, self.size.width, self.size.height);
3463
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    84
 
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    85
  // Grayscale color space
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    86
  CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    87
 
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    88
  // Create bitmap content with current image size and grayscale colorspace
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
    89
  CGContextRef context = CGBitmapContextCreate(nil, self.size.width, self.size.height, 8, 0, colorSpace, kCGImageAlphaNone);
3463
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    90
 
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    91
  // Draw image into current context, with specified rectangle
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    92
  // using previously defined context (with grayscale colorspace)
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
    93
  CGContextDrawImage(context, imageRect, [self CGImage]);
3463
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    94
 
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    95
  // Create bitmap image info from pixel data in current context
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    96
  CGImageRef imageRef = CGBitmapContextCreateImage(context);
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    97
 
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    98
  // Create a new UIImage object  
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
    99
  UIImage *newImage = [UIImage imageWithCGImage:imageRef];
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
   100
 
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
   101
  // Release colorspace, context and bitmap information
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
   102
  CGColorSpaceRelease(colorSpace);
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
   103
  CGContextRelease(context);
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
   104
  CFRelease(imageRef);
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
   105
 
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
   106
  // Return the new grayscale image
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
   107
  return newImage;
23c50be687a9 update sdl functions to latest revision
koda
parents: 3361
diff changeset
   108
}
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   109
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   110
// by http://iphonedevelopertips.com/cocoa/how-to-mask-an-image.html turned into a category by koda
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   111
-(UIImage*) maskImageWith:(UIImage *)maskImage {
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   112
    CGImageRef maskRef = maskImage.CGImage;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   113
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   114
    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   115
                                        CGImageGetHeight(maskRef),
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   116
                                        CGImageGetBitsPerComponent(maskRef),
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   117
                                        CGImageGetBitsPerPixel(maskRef),
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   118
                                        CGImageGetBytesPerRow(maskRef),
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   119
                                        CGImageGetDataProvider(maskRef), NULL, false);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   120
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   121
    CGImageRef masked = CGImageCreateWithMask([self CGImage], mask);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   122
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   123
    CGImageRelease(mask);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   124
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   125
    UIImage* retImage = [UIImage imageWithCGImage:masked];
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   126
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   127
    CGImageRelease(masked);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   128
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   129
    return retImage;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   130
}
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   131
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   132
// by http://blog.sallarp.com/iphone-uiimage-round-corners/ turned into a category by koda
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   133
void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth, float ovalHeight)
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   134
{
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   135
    float fw, fh;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   136
    if (ovalWidth == 0 || ovalHeight == 0) {
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   137
        CGContextAddRect(context, rect);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   138
        return;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   139
    }
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   140
    CGContextSaveGState(context);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   141
    CGContextTranslateCTM (context, CGRectGetMinX(rect), CGRectGetMinY(rect));
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   142
    CGContextScaleCTM (context, ovalWidth, ovalHeight);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   143
    fw = CGRectGetWidth (rect) / ovalWidth;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   144
    fh = CGRectGetHeight (rect) / ovalHeight;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   145
    CGContextMoveToPoint(context, fw, fh/2);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   146
    CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   147
    CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   148
    CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   149
    CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   150
    CGContextClosePath(context);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   151
    CGContextRestoreGState(context);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   152
}
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   153
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   154
-(UIImage *)makeRoundCornersOfSize:(CGSize) sizewh {
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   155
	UIImage * newImage = nil;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   156
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   157
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   158
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   159
    NSInteger cornerWidth = sizewh.width;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   160
    NSInteger cornerHeight = sizewh.height;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   161
    int w = self.size.width;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   162
    int h = self.size.height;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   163
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   164
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   165
    CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   166
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   167
    CGContextBeginPath(context);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   168
    CGRect rect = CGRectMake(0, 0, w, h);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   169
    addRoundedRectToPath(context, rect, cornerWidth, cornerHeight);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   170
    CGContextClosePath(context);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   171
    CGContextClip(context);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   172
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   173
    CGContextDrawImage(context, CGRectMake(0, 0, w, h), self.CGImage);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   174
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   175
    CGImageRef imageMasked = CGBitmapContextCreateImage(context);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   176
    CGContextRelease(context);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   177
    CGColorSpaceRelease(colorSpace);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   178
    [self release];
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   179
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   180
    newImage = [[UIImage imageWithCGImage:imageMasked] retain];
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   181
    CGImageRelease(imageMasked);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   182
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   183
    [pool release];
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   184
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   185
    return newImage;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   186
}
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   187
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3463
diff changeset
   188
3352
ac5d14a35482 complete previews on the team settings
koda
parents:
diff changeset
   189
@end