cocos2d+uikit常用函数
来源:互联网 发布:克里斯保罗16年数据 编辑:程序博客网 时间:2024/06/06 20:15
coocs2d to uikit
- (UIImage*) convertSpriteToImage:(CCSprite*)sprite
{
CGPoint p = sprite.anchorPoint;
[sprite setAnchorPoint:ccp(0,0)];
CCRenderTexture *renderer = [CCRenderTexture
renderTextureWithWidth:sprite.contentSize.width height:sprite.contentSize.height];
[renderer begin];
[sprite visit];
[renderer end];
[sprite setAnchorPoint:p];
return [renderer getUIImageFromBuffer];
}
// uikit to cocos2d
- (CCSprite*) convertImageToSprite:(UIImage*)image
{
CCTexture2D* texture = [[CCTexture2D alloc] initWithImage:image];
CCSprite* sprite = [CCSprite spriteWithTexture:texture];
SAFE_RELEASE(texture);
return sprite;
}
// 灰度
- (UIImage*) convertToGreyscale:(UIImage*)image
{
int kRed = 1;
int kGreen = 2;
int kBlue = 4;
int colors = kGreen;
int m_width = image.size.width;
int m_height = image.size.height;
uint32_t *rgbImage = (uint32_t *) malloc(m_width * m_height * sizeof(uint32_t));
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(rgbImage, m_width, m_height, 8, m_width * 4, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipLast);
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGContextSetShouldAntialias(context, NO);
CGContextDrawImage(context, CGRectMake(0, 0, m_width, m_height), [image CGImage]);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
// now convert to grayscale
uint8_t *m_imageData = (uint8_t *) malloc(m_width * m_height);
for(int y = 0; y < m_height; y++)
{
for(int x = 0; x < m_width; x++)
{
uint32_t rgbPixel=rgbImage[y*m_width+x];
uint32_t sum=0,count=0;
if (colors & kRed) {sum += (rgbPixel>>24)&255; count++;}
if (colors & kGreen) {sum += (rgbPixel>>16)&255; count++;}
if (colors & kBlue) {sum += (rgbPixel>>8)&255; count++;}
m_imageData[y*m_width+x]=sum/count;
}
}
free(rgbImage);
// convert from a gray scale image back into a UIImage
uint8_t *result = (uint8_t *) calloc(m_width * m_height *sizeof(uint32_t), 1);
// process the image back to rgb
for(int i = 0; i < m_height * m_width; i++)
{
result[i*4]=0;
int val=m_imageData[i];
result[i*4+1]=val;
result[i*4+2]=val;
result[i*4+3]=val;
}
// create a UIImage
colorSpace = CGColorSpaceCreateDeviceRGB();
context = CGBitmapContextCreate(result, m_width, m_height, 8, m_width * sizeof(uint32_t), colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipLast);
CGImageRef imageRef = CGBitmapContextCreateImage(context);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
UIImage *resultUIImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
// make sure the data will be released by giving it to an autoreleased NSData
[NSData dataWithBytesNoCopy:result length:m_width * m_height];
return resultUIImage;
}
// 缩放图片
- (UIImage*) scaleToSize:(UIImage*)img size:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[img drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
// md5编码
- (NSString*) convertToMd5:(NSString*)source
{
const char *cStr = [source UTF8String];
unsigned char result[16];
CC_MD5(cStr,strlen(cStr),result);
return [NSString stringWithFormat:
@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0] , result[1] , result[2] , result[3] ,
result[4] , result[5] , result[6] , result[7] ,
result[8] , result[9] , result[10], result[11],
result[12], result[13], result[14], result[15]
];
}
// 得到系统首选语言
- (NSString*) getDefaultLanguage
{
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString* preferredLang = [languages objectAtIndex:0];
return preferredLang;
}
// cocos2d得到当前屏幕buffer
- (UIImage*) getScreenshot
{
CCDirector* director = [CCDirector sharedDirector];
CGSize size = director.displaySize;
//Create buffer for pixels
GLuint bufferLength = size.width * size.height * 4;
GLubyte* buffer = (GLubyte*)malloc(bufferLength);
//Read Pixels from OpenGL
glReadPixels(0, 0, size.width, size.height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
//Make data provider with data.
CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, buffer, bufferLength, NULL);
//Configure image
int bitsPerComponent = 8;
int bitsPerPixel = 32;
int bytesPerRow = 4 * size.width;
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
CGImageRef iref = CGImageCreate(size.width, size.height, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent);
CGColorSpaceRelease(colorSpaceRef);
uint32_t* pixels = (uint32_t*)malloc(bufferLength);
CGContextRef context = CGBitmapContextCreate(pixels, [director winSize].width, [director winSize].height, 8, [director winSize].width * 4, CGImageGetColorSpace(iref), kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGContextTranslateCTM(context, 0, size.height);
CGContextScaleCTM(context, 1.0f, -1.0f);
switch (director.deviceOrientation)
{
case CCDeviceOrientationPortrait:
case CCDeviceOrientationPortraitUpsideDown:
CGContextRotateCTM(context, CC_DEGREES_TO_RADIANS(180));
CGContextTranslateCTM(context, -size.width, -size.height);
break;
case CCDeviceOrientationLandscapeLeft:
CGContextRotateCTM(context, CC_DEGREES_TO_RADIANS(-90));
CGContextTranslateCTM(context, -size.height, 0);
break;
case CCDeviceOrientationLandscapeRight:
CGContextRotateCTM(context, CC_DEGREES_TO_RADIANS(90));
CGContextTranslateCTM(context, size.width * 0.5f, -size.height);
break;
}
CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, size.width, size.height), iref);
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage *outputImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
//Dealloc
CGDataProviderRelease(provider);
CGImageRelease(iref);
CGContextRelease(context);
free(buffer);
free(pixels);
return outputImage;
}
// 震动
- (void) sendShock
{
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
// 判断是否越狱
- (BOOL)isJailbroken
{
BOOL jailbroken = NO;
NSString *cydiaPath = @"/Applications/Cydia.app";
NSString *aptPath = @"/private/var/lib/apt/";
if ([[NSFileManager defaultManager] fileExistsAtPath:cydiaPath])
{
jailbroken = YES;
}
if ([[NSFileManager defaultManager] fileExistsAtPath:aptPath])
{
jailbroken = YES;
}
return jailbroken;
}
- (UIImage*) convertSpriteToImage:(CCSprite*)sprite
{
CGPoint p = sprite.anchorPoint;
[sprite setAnchorPoint:ccp(0,0)];
CCRenderTexture *renderer = [CCRenderTexture
renderTextureWithWidth:sprite.contentSize.width height:sprite.contentSize.height];
[renderer begin];
[sprite visit];
[renderer end];
[sprite setAnchorPoint:p];
return [renderer getUIImageFromBuffer];
}
// uikit to cocos2d
- (CCSprite*) convertImageToSprite:(UIImage*)image
{
CCTexture2D* texture = [[CCTexture2D alloc] initWithImage:image];
CCSprite* sprite = [CCSprite spriteWithTexture:texture];
SAFE_RELEASE(texture);
return sprite;
}
// 灰度
- (UIImage*) convertToGreyscale:(UIImage*)image
{
int kRed = 1;
int kGreen = 2;
int kBlue = 4;
int colors = kGreen;
int m_width = image.size.width;
int m_height = image.size.height;
uint32_t *rgbImage = (uint32_t *) malloc(m_width * m_height * sizeof(uint32_t));
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(rgbImage, m_width, m_height, 8, m_width * 4, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipLast);
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGContextSetShouldAntialias(context, NO);
CGContextDrawImage(context, CGRectMake(0, 0, m_width, m_height), [image CGImage]);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
// now convert to grayscale
uint8_t *m_imageData = (uint8_t *) malloc(m_width * m_height);
for(int y = 0; y < m_height; y++)
{
for(int x = 0; x < m_width; x++)
{
uint32_t rgbPixel=rgbImage[y*m_width+x];
uint32_t sum=0,count=0;
if (colors & kRed) {sum += (rgbPixel>>24)&255; count++;}
if (colors & kGreen) {sum += (rgbPixel>>16)&255; count++;}
if (colors & kBlue) {sum += (rgbPixel>>8)&255; count++;}
m_imageData[y*m_width+x]=sum/count;
}
}
free(rgbImage);
// convert from a gray scale image back into a UIImage
uint8_t *result = (uint8_t *) calloc(m_width * m_height *sizeof(uint32_t), 1);
// process the image back to rgb
for(int i = 0; i < m_height * m_width; i++)
{
result[i*4]=0;
int val=m_imageData[i];
result[i*4+1]=val;
result[i*4+2]=val;
result[i*4+3]=val;
}
// create a UIImage
colorSpace = CGColorSpaceCreateDeviceRGB();
context = CGBitmapContextCreate(result, m_width, m_height, 8, m_width * sizeof(uint32_t), colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipLast);
CGImageRef imageRef = CGBitmapContextCreateImage(context);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
UIImage *resultUIImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
// make sure the data will be released by giving it to an autoreleased NSData
[NSData dataWithBytesNoCopy:result length:m_width * m_height];
return resultUIImage;
}
// 缩放图片
- (UIImage*) scaleToSize:(UIImage*)img size:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[img drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
// md5编码
- (NSString*) convertToMd5:(NSString*)source
{
const char *cStr = [source UTF8String];
unsigned char result[16];
CC_MD5(cStr,strlen(cStr),result);
return [NSString stringWithFormat:
@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0] , result[1] , result[2] , result[3] ,
result[4] , result[5] , result[6] , result[7] ,
result[8] , result[9] , result[10], result[11],
result[12], result[13], result[14], result[15]
];
}
// 得到系统首选语言
- (NSString*) getDefaultLanguage
{
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString* preferredLang = [languages objectAtIndex:0];
return preferredLang;
}
// cocos2d得到当前屏幕buffer
- (UIImage*) getScreenshot
{
CCDirector* director = [CCDirector sharedDirector];
CGSize size = director.displaySize;
//Create buffer for pixels
GLuint bufferLength = size.width * size.height * 4;
GLubyte* buffer = (GLubyte*)malloc(bufferLength);
//Read Pixels from OpenGL
glReadPixels(0, 0, size.width, size.height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
//Make data provider with data.
CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, buffer, bufferLength, NULL);
//Configure image
int bitsPerComponent = 8;
int bitsPerPixel = 32;
int bytesPerRow = 4 * size.width;
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
CGImageRef iref = CGImageCreate(size.width, size.height, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent);
CGColorSpaceRelease(colorSpaceRef);
uint32_t* pixels = (uint32_t*)malloc(bufferLength);
CGContextRef context = CGBitmapContextCreate(pixels, [director winSize].width, [director winSize].height, 8, [director winSize].width * 4, CGImageGetColorSpace(iref), kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGContextTranslateCTM(context, 0, size.height);
CGContextScaleCTM(context, 1.0f, -1.0f);
switch (director.deviceOrientation)
{
case CCDeviceOrientationPortrait:
case CCDeviceOrientationPortraitUpsideDown:
CGContextRotateCTM(context, CC_DEGREES_TO_RADIANS(180));
CGContextTranslateCTM(context, -size.width, -size.height);
break;
case CCDeviceOrientationLandscapeLeft:
CGContextRotateCTM(context, CC_DEGREES_TO_RADIANS(-90));
CGContextTranslateCTM(context, -size.height, 0);
break;
case CCDeviceOrientationLandscapeRight:
CGContextRotateCTM(context, CC_DEGREES_TO_RADIANS(90));
CGContextTranslateCTM(context, size.width * 0.5f, -size.height);
break;
}
CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, size.width, size.height), iref);
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage *outputImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
//Dealloc
CGDataProviderRelease(provider);
CGImageRelease(iref);
CGContextRelease(context);
free(buffer);
free(pixels);
return outputImage;
}
// 震动
- (void) sendShock
{
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
// 判断是否越狱
- (BOOL)isJailbroken
{
BOOL jailbroken = NO;
NSString *cydiaPath = @"/Applications/Cydia.app";
NSString *aptPath = @"/private/var/lib/apt/";
if ([[NSFileManager defaultManager] fileExistsAtPath:cydiaPath])
{
jailbroken = YES;
}
if ([[NSFileManager defaultManager] fileExistsAtPath:aptPath])
{
jailbroken = YES;
}
return jailbroken;
}
- cocos2d+uikit常用函数
- ipad 常用UI(UIKit)
- UIKit-UIView常用设置
- Cocos2d-x常用绘制函数
- cocos2d-x常用数学函数
- Cocos2d-x常用函数及常用宏
- Cocos2d-x常用函数及常用宏
- Cocos2d-x常用函数及常用宏
- IOS 常用UIKit 控件总结
- cocos2d 中使用UiKit 各种view
- 怎样在 UIKit 中使用 Cocos2d-x
- Cocos2d和UIKit的结合使用
- Cocos2d 2.0与UIKit结合使用
- 如何结合使用Cocos2d和UIKit
- Cocos2D-iPhone和Uikit混合使用问题
- cocos2d-x 数学函数,常用宏
- Cocos2d-x数学函数和常用宏
- COCOS2D-x 宏定义与常用函数
- 点击查看自己到哪个级别了!参考黑马j2ee路线图!
- Problem cf.load(m_ResourcePath + "resources.cfg")
- Vision Enterprises的结构和功能
- hdu 3061 最大流最小割
- 为什么要使用EJB?
- cocos2d+uikit常用函数
- 第一课
- android软键盘的显示后隐藏
- 第二课
- 入职
- SVN 目录结构
- mysql查询、索引、配置优化
- 11g-新特性-动态视图-v$sql_hint
- c程序编译流程