diff -r f589230fa21b -r 59dbd31e9953 project_files/HedgewarsMobile/Classes/otherSrc/SquareButtonView.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Classes/otherSrc/SquareButtonView.m Thu Jun 17 20:30:39 2010 +0200 @@ -0,0 +1,93 @@ +// +// HogButtonView.m +// HedgewarsMobile +// +// Created by Vittorio on 20/04/10. +// Copyright 2010 __MyCompanyName__. All rights reserved. +// + +#import "SquareButtonView.h" +#import +#import "CommodityFunctions.h" +#import "UIImageExtra.h" + +@implementation SquareButtonView +@synthesize colorArray, selectedColor, ownerDictionary; + +-(id) initWithFrame:(CGRect)frame { + if ((self = [super initWithFrame:frame])) { + colorIndex = -1; + selectedColor = 0; + + // list of allowed colors + NSArray *colors = [[NSArray alloc] initWithObjects: [NSNumber numberWithUnsignedInt:4421353], // bluette + [NSNumber numberWithUnsignedInt:4100897], // greeeen + [NSNumber numberWithUnsignedInt:10632635], // violett + [NSNumber numberWithUnsignedInt:16749353], // oranngy + [NSNumber numberWithUnsignedInt:14483456], // reddish + [NSNumber numberWithUnsignedInt:7566195], // graaaay + nil]; + self.colorArray = colors; + [colors release]; + + // set the color to the first available one + [self nextColor]; + + // this makes the button round and nice + [self.layer setCornerRadius:7.0f]; + [self.layer setMasksToBounds:YES]; + + // this changes the color at button press + [self addTarget:self action:@selector(nextColor) forControlEvents:UIControlEventTouchUpInside]; + + self.backgroundColor = [UIColor blackColor]; + } + return self; +} + +-(void) nextColor { + colorIndex++; + if (colorIndex >= [colorArray count]) + colorIndex = 0; + + NSUInteger color = [[self.colorArray objectAtIndex:colorIndex] unsignedIntValue]; + [self selectColor:color]; + + [ownerDictionary setObject:[NSNumber numberWithInt:color] forKey:@"color"]; +} + +-(void) selectColor:(NSUInteger) color { + if (color != selectedColor) { + selectedColor = color; + + UIGraphicsBeginImageContext(self.frame.size); + CGContextRef context = UIGraphicsGetCurrentContext(); + CGContextSetRGBFillColor(context, ((color & 0x00FF0000) >> 16)/255.0f, + ((color & 0x0000FF00) >> 8)/255.0f, + (color & 0x000000FF)/255.0f, + 1.0f); + CGContextFillRect(context, CGRectMake(1.1, 1.1, self.frame.size.width-2.2, self.frame.size.height-2.2)); + + UIImageView *resultingImage = [[UIImageView alloc] initWithImage: UIGraphicsGetImageFromCurrentImageContext()]; + UIGraphicsEndImageContext(); + + [self setImage:resultingImage.image forState:UIControlStateNormal]; + [resultingImage release]; + + } + /* + self.backgroundColor = [UIColor colorWithRed:((color & 0x00FF0000) >> 16)/255.0f + green:((color & 0x0000FF00) >> 8)/255.0f + blue: (color & 0x000000FF)/255.0f + alpha:1.0f]; + */ +} + +-(void) dealloc { + [ownerDictionary release]; + [colorArray release]; + [super dealloc]; +} + + +@end