ATMProgressLayer.m 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * ATMHudProgressLayer.m
  3. * ATMHud
  4. *
  5. * Created by Marcel Müller on 2011-03-01.
  6. * Copyright (c) 2010-2011, Marcel Müller (atomcraft)
  7. * All rights reserved.
  8. *
  9. * https://github.com/atomton/ATMHud
  10. */
  11. #import "ATMProgressLayer.h"
  12. @implementation ATMProgressLayer
  13. @synthesize theProgress, progressBorderWidth, progressBorderRadius, progressBarRadius, progressBarInset;
  14. - (void)drawInContext:(CGContextRef)ctx {
  15. UIGraphicsPushContext(ctx);
  16. if (theProgress > 0) {
  17. CGRect rrect = CGRectInset(self.bounds, progressBorderWidth, progressBorderWidth);
  18. CGFloat radius = progressBorderRadius;
  19. CGFloat minx = CGRectGetMinX(rrect), midx = CGRectGetMidX(rrect), maxx = CGRectGetMaxX(rrect);
  20. CGFloat miny = CGRectGetMinY(rrect), midy = CGRectGetMidY(rrect), maxy = CGRectGetMaxY(rrect);
  21. CGContextMoveToPoint(ctx, minx, midy);
  22. CGContextAddArcToPoint(ctx, minx, miny, midx, miny, radius);
  23. CGContextAddArcToPoint(ctx, maxx, miny, maxx, midy, radius);
  24. CGContextAddArcToPoint(ctx, maxx, maxy, midx, maxy, radius);
  25. CGContextAddArcToPoint(ctx, minx, maxy, minx, midy, radius);
  26. CGContextClosePath(ctx);
  27. CGContextSetRGBStrokeColor(ctx, 1, 1, 1, 1);
  28. CGContextSetLineWidth(ctx, progressBorderWidth);
  29. CGContextDrawPath(ctx, kCGPathStroke);
  30. radius = progressBarRadius;
  31. rrect = CGRectInset(rrect, progressBarInset, progressBarInset);
  32. rrect.size.width = rrect.size.width * theProgress;
  33. minx = CGRectGetMinX(rrect), midx = CGRectGetMidX(rrect), maxx = CGRectGetMaxX(rrect);
  34. miny = CGRectGetMinY(rrect), midy = CGRectGetMidY(rrect), maxy = CGRectGetMaxY(rrect);
  35. CGContextMoveToPoint(ctx, minx, midy);
  36. CGContextAddArcToPoint(ctx, minx, miny, midx, miny, radius);
  37. CGContextAddArcToPoint(ctx, maxx, miny, maxx, midy, radius);
  38. CGContextAddArcToPoint(ctx, maxx, maxy, midx, maxy, radius);
  39. CGContextAddArcToPoint(ctx, minx, maxy, minx, midy, radius);
  40. CGContextClosePath(ctx);
  41. CGContextSetRGBFillColor(ctx,1, 1, 1, 1);
  42. CGContextDrawPath(ctx, kCGPathFill);
  43. }
  44. UIGraphicsPopContext();
  45. }
  46. @end