- @implementation BrightnessController
- // MyCreateBitmapContext: Source based on Apple Sample Code
- CGContextRef MyCreateBitmapContext (int pixelsWide,
- int pixelsHigh)
- {
- CGContextRef context = NULL;
- CGColorSpaceRef colorSpace;
- void * bitmapData;
- int bitmapByteCount;
- int bitmapBytesPerRow;
- bitmapBytesPerRow = (pixelsWide * 4);
- bitmapByteCount = (bitmapBytesPerRow * pixelsHigh);
- colorSpace = CGColorSpaceCreateDeviceRGB();
- bitmapData = malloc( bitmapByteCount );
- if (bitmapData == NULL)
- {
- fprintf (stderr, "Memory not allocated!");
- CGColorSpaceRelease( colorSpace );
- return NULL;
- }
- context = CGBitmapContextCreate (bitmapData,
- pixelsWide,
- pixelsHigh,
- 8,
- bitmapBytesPerRow,
- colorSpace,
- kCGImageAlphaPremultipliedLast);
- if (context== NULL)
- {
- free (bitmapData);
- fprintf (stderr, "Context not created!");
- return NULL;
- }
- CGColorSpaceRelease( colorSpace );
- return context;
- }
- // addRoundedRectToPath: Source based on Apple Sample Code
- static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth,
- float ovalHeight)
- {
- float fw, fh;
- if (ovalWidth == 0 || ovalHeight == 0) {
- CGContextAddRect(context, rect);
- return;
- }
- CGContextSaveGState(context);
- CGContextTranslateCTM(context, CGRectGetMinX(rect), CGRectGetMinY(rect));
- CGContextScaleCTM(context, ovalWidth, ovalHeight);
- fw = CGRectGetWidth(rect) / ovalWidth;
- fh = CGRectGetHeight(rect) / ovalHeight;
- CGContextMoveToPoint(context, fw, fh/2); // Start at lower right corner
- CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); // Top right corner
- CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); // Top left corner
- CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); // Lower left corner
- CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); // Back to lower right
- CGContextClosePath(context);
- CGContextRestoreGState(context);
- }
- // Build an image tinted at the given percentage
- id createImage(float percentage)
- {
- CGContextRef context = MyCreateBitmapContext(30, 30);
- addRoundedRectToPath(context, CGRectMake(0.0f, 0.0f, 30.0f, 30.0f), 4.0f, 4.0f);
- CGFloat gray[4] = {percentage, percentage, percentage, 1.0f};
- CGContextSetFillColor(context, gray);
- CGContextFillPath(context);
- CGImageRef myRef = CGBitmapContextCreateImage (context);
- free(CGBitmapContextGetData(context));
- CGContextRelease(context);
- return [UIImage imageWithCGImage:myRef];
- }
- #define MAXDEPTH 8
- -(BrightnessController *) initWithBrightness: (int) aBrightness
- {
- self = [super init];
- brightness = aBrightness;
- self.title = [NSString stringWithFormat:@"%d%%", brightness * 10];
- [self.tabBarItem initWithTitle:self.title image:createImage(((float) brightness / 10.0f)) tag:0];
- return self;
- }
- - (void)loadView
- {
- UIView *contentView = [[UIView alloc] init];
- float percent = brightness * 0.1;
- contentView.backgroundColor = [UIColor colorWithRed:percent green:percent blue:percent alpha:1.0];
- contentView.autoresizesSubviews = YES;
- contentView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
- self.view = contentView;
- [contentView release];
- }
- @end
id 博主 = [[KILONET.CNBLOGS.COM alloc] initWithValue:@"天堂向右,我依然向左"
网名:@"老舟"
兴趣:@"影音,阅读"
动态:@"系统架构设计,Android通信模块开发"
网址:@"http://kilonet.cnblogs.com"
签名:@"--------------------------------------------------
Stay Hungry , Stay Foolish
求 知 若 渴,处 事 若 愚
--------------------------------------------------"
]; // Never Release