1
0
mirror of https://github.com/danog/Telegram.git synced 2024-11-26 20:14:43 +01:00
Telegram/Share/TGRoundImage.m

46 lines
2.0 KiB
Mathematica
Raw Permalink Normal View History

2015-10-01 18:19:52 +02:00
#import "TGRoundImage.h"
UIImage *TGRoundImage(UIImage *sourceImage, CGSize size)
{
UIGraphicsBeginImageContextWithOptions(size, false, 0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[sourceImage drawInRect:CGRectMake(0.0f, 0.0f, size.width, size.height) blendMode:kCGBlendModeCopy alpha:1.0f];
CGContextSetBlendMode(context, kCGBlendModeCopy);
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextBeginPath(context);
CGContextMoveToPoint(context, 0.0f, size.height / 2.0f);
CGContextAddArcToPoint(context, 0.0f, 0.0f, size.width / 2.0f, 0.0f, size.width / 2.0f);
CGContextAddLineToPoint(context, 0.0f, 0.0f);
CGContextAddLineToPoint(context, 0.0f, size.height / 2.0f);
CGContextFillPath(context);
CGContextBeginPath(context);
CGContextMoveToPoint(context, size.width / 2.0f, 0.0f);
CGContextAddArcToPoint(context, size.width, 0.0f, size.width, size.height / 2.0f, size.width / 2.0f);
CGContextAddLineToPoint(context, size.width, 0.0f);
CGContextAddLineToPoint(context, size.width / 2.0f, 0.0f);
CGContextFillPath(context);
CGContextBeginPath(context);
CGContextMoveToPoint(context, size.width, size.height / 2.0f);
CGContextAddArcToPoint(context, size.width, size.height, size.width / 2.0f, size.height, size.width / 2.0f);
CGContextAddLineToPoint(context, size.width, size.height);
CGContextAddLineToPoint(context, size.width, size.height / 2.0f);
CGContextFillPath(context);
CGContextBeginPath(context);
CGContextMoveToPoint(context, size.width / 2.0f, size.height);
CGContextAddArcToPoint(context, 0.0f, size.height, 0.0f, size.height / 2.0f, size.width / 2.0f);
CGContextAddLineToPoint(context, 0.0f, size.height);
CGContextAddLineToPoint(context, size.width / 2.0f, size.height);
CGContextFillPath(context);
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return result;
}