packages feed

SVG2Q-0.3: functions.c

void drawRoundedRect(CGContextRef context, CGFloat x, CGFloat y, CGFloat width, CGFloat height, CGFloat rx, CGFloat ry, CGFloat strokeWidth, CGColorRef stroke) {
	if (rx > (width/2)) {
		rx = width/2;
	}
	if (ry > (height/2)) {
		ry = height/2;
	}
	CGContextSetLineWidth(context, strokeWidth);
	CGContextSetStrokeColorWithColor(context, stroke);
	// 1. top left corner
	CGContextMoveToPoint(context, x+rx, y);
	// 2. line to right corner
	CGContextAddLineToPoint(context, x + width - rx, y);
	// 3. top right rounded corner
	CGContextAddQuadCurveToPoint(context, x + width, y, x + width, y+ry);
	// 4. line down the right
	CGContextAddLineToPoint(context, x + width, y + height - ry);
	// 5. lower right corner
	CGContextAddQuadCurveToPoint(context, x + width, y + height, x + width - rx, y + height);
	// 6. lower line to left corner
	CGContextAddLineToPoint(context, x + rx, y + height);
	// 7. lower left corner
	CGContextAddQuadCurveToPoint(context, x, y+height, x, y + height - ry);
	// 8. line from lower left to upper left
	CGContextAddLineToPoint(context, x, y+ry);
	// 9. upper left corner
	CGContextAddQuadCurveToPoint(context, x, y, x+rx, y);
	
	CGContextStrokePath(context);	
}

void drawRoundedRectFill(CGContextRef context, CGFloat x, CGFloat y, CGFloat width, CGFloat height, CGFloat rx, CGFloat ry, CGFloat strokeWidth, CGColorRef stroke, CGColorRef fill) {
	if (rx > (width/2)) {
		rx = width/2;
	}
	if (ry > (height/2)) {
		ry = height/2;
	}
	CGContextSetLineWidth(context, strokeWidth);
	CGContextSetStrokeColorWithColor(context, stroke);
	CGContextSetFillColorWithColor(context, fill);
	// 1. top left corner
	CGContextMoveToPoint(context, x+rx, y);
	// 2. line to right corner
	CGContextAddLineToPoint(context, x + width - rx, y);
	// 3. top right rounded corner
	CGContextAddQuadCurveToPoint(context, x + width, y, x + width, y+ry);
	// 4. line down the right
	CGContextAddLineToPoint(context, x + width, y + height - ry);
	// 5. lower right corner
	CGContextAddQuadCurveToPoint(context, x + width, y + height, x + width - rx, y + height);
	// 6. lower line to left corner
	CGContextAddLineToPoint(context, x + rx, y + height);
	// 7. lower left corner
	CGContextAddQuadCurveToPoint(context, x, y+height, x, y + height - ry);
	// 8. line from lower left to upper left
	CGContextAddLineToPoint(context, x, y+ry);
	// 9. upper left corner
	CGContextAddQuadCurveToPoint(context, x, y, x+rx, y);
	
	CGContextDrawPath(context, kCGPathFillStroke);
}