3361
+ − 1
//
+ − 2
// HogButtonView.m
+ − 3
// HedgewarsMobile
+ − 4
//
+ − 5
// Created by Vittorio on 20/04/10.
+ − 6
// Copyright 2010 __MyCompanyName__. All rights reserved.
+ − 7
//
+ − 8
+ − 9
#import "SquareButtonView.h"
+ − 10
#import "CommodityFunctions.h"
+ − 11
#import "UIImageExtra.h"
+ − 12
#import "QuartzCore/QuartzCore.h"
+ − 13
+ − 14
@implementation SquareButtonView
3364
+ − 15
@synthesize colorArray, selectedColor, ownerDictionary;
3361
+ − 16
+ − 17
-(id) initWithFrame:(CGRect)frame {
+ − 18
if ((self = [super initWithFrame:frame])) {
+ − 19
colorIndex = -1;
3364
+ − 20
selectedColor = 0;
+ − 21
3361
+ − 22
// list of allowed colors
3364
+ − 23
NSArray *colors = [[NSArray alloc] initWithObjects: [NSNumber numberWithUnsignedInt:4421353], // bluette
+ − 24
[NSNumber numberWithUnsignedInt:4100897], // greeeen
+ − 25
[NSNumber numberWithUnsignedInt:10632635], // violett
+ − 26
[NSNumber numberWithUnsignedInt:16749353], // oranngy
+ − 27
[NSNumber numberWithUnsignedInt:14483456], // reddish
+ − 28
[NSNumber numberWithUnsignedInt:7566195], // graaaay
+ − 29
nil];
3361
+ − 30
self.colorArray = colors;
+ − 31
[colors release];
+ − 32
+ − 33
// set the color to the first available one
+ − 34
[self nextColor];
+ − 35
+ − 36
// this makes the button round and nice
+ − 37
[self.layer setCornerRadius:7.0f];
+ − 38
[self.layer setMasksToBounds:YES];
+ − 39
+ − 40
// this changes the color at button press
+ − 41
[self addTarget:self action:@selector(nextColor) forControlEvents:UIControlEventTouchUpInside];
+ − 42
+ − 43
self.backgroundColor = [UIColor blackColor];
+ − 44
}
+ − 45
return self;
+ − 46
}
+ − 47
+ − 48
-(void) nextColor {
+ − 49
colorIndex++;
+ − 50
if (colorIndex >= [colorArray count])
+ − 51
colorIndex = 0;
3364
+ − 52
3361
+ − 53
NSUInteger color = [[self.colorArray objectAtIndex:colorIndex] unsignedIntValue];
3364
+ − 54
[self selectColor:color];
3361
+ − 55
3364
+ − 56
[ownerDictionary setObject:[NSNumber numberWithInt:color] forKey:@"color"];
+ − 57
}
+ − 58
+ − 59
-(void) selectColor:(NSUInteger) color {
+ − 60
if (color != selectedColor) {
+ − 61
selectedColor = color;
+ − 62
+ − 63
UIGraphicsBeginImageContext(self.frame.size);
+ − 64
CGContextRef context = UIGraphicsGetCurrentContext();
+ − 65
CGContextSetRGBFillColor(context, ((color & 0x00FF0000) >> 16)/255.0f,
+ − 66
((color & 0x0000FF00) >> 8)/255.0f,
+ − 67
(color & 0x000000FF)/255.0f,
+ − 68
1.0f);
+ − 69
CGContextFillRect(context, CGRectMake(1.1, 1.1, self.frame.size.width-2.2, self.frame.size.height-2.2));
+ − 70
+ − 71
UIImageView *resultingImage = [[UIImageView alloc] initWithImage: UIGraphicsGetImageFromCurrentImageContext()];
+ − 72
UIGraphicsEndImageContext();
+ − 73
+ − 74
[self setImage:resultingImage.image forState:UIControlStateNormal];
+ − 75
[resultingImage release];
+ − 76
+ − 77
}
3361
+ − 78
/*
+ − 79
self.backgroundColor = [UIColor colorWithRed:((color & 0x00FF0000) >> 16)/255.0f
+ − 80
green:((color & 0x0000FF00) >> 8)/255.0f
+ − 81
blue: (color & 0x000000FF)/255.0f
+ − 82
alpha:1.0f];
+ − 83
*/
+ − 84
}
+ − 85
+ − 86
-(void) dealloc {
3364
+ − 87
[ownerDictionary release];
3361
+ − 88
[colorArray release];
+ − 89
[super dealloc];
+ − 90
}
+ − 91
+ − 92
+ − 93
@end