ImageDrawable.m 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //
  2. // ImageDrawable.m
  3. // pdftest
  4. //
  5. // Created by Ray on 10/13/16.
  6. // Copyright © 2016 United Software Applications, Inc. All rights reserved.
  7. //
  8. #import "ImageDrawable.h"
  9. #import "RAUtils.h"
  10. @implementation ImageDrawable
  11. -(CGRect) Query_Rect:(CGContextRef) context dataSource:(NSMutableDictionary*)data ParentRect:(CGRect)p_rect startX:(double) x startY:(double) y flipHeight:(double)flip_height range:(NSRange)between_header_and_footer
  12. {
  13. CGRect parentrect = [self to_parent_rect:p_rect pos:self.rect offsetX:0 offsetY:0];
  14. return parentrect;
  15. }
  16. -(CGRect) Draw:(CGContextRef) context dataSource:(NSMutableDictionary*)data ParentRect:(CGRect)p_rect startX:(double) x startY:(double) y flipHeight:(double)flip_height range:(NSRange)between_header_and_footer
  17. {
  18. // [super flipContext:context ContextHeight:flip_height];
  19. UIImage* image=nil;
  20. NSString * source=self.drawableTemplate[@"source_type"];
  21. if([source isEqualToString:@"const"])
  22. {
  23. image= [UIImage imageNamed:self.drawableTemplate[@"source"]];
  24. }
  25. else
  26. {
  27. // not impl;
  28. image=[UIImage imageNamed:data[self.drawableTemplate[@"source"]]];
  29. }
  30. // CGRect rect=[self to_parent_rect:p_rect pos:self.rect offsetX:0 offsetY:0];//CGRectMake(self.rect.origin.x+x, self.rect.origin.y, self.rect.size.width, self.rect.size.height);
  31. // rect=CGRectMake(rect.origin.x, flip_height-rect.origin.y-rect.size.height, rect.size.width, rect.size.height);
  32. CGRect parentrect = [self to_parent_rect:p_rect pos:self.rect offsetX:0 offsetY:0];
  33. CGRect scalerect = [RAUtils scaleToSize:CGRectMake(0, 0, image.size.width, image.size.height) to:parentrect.size];
  34. CGRect rect=[RAUtils rectAlign:parentrect rect:scalerect hAlign:self.hAlign vAlign:self.vAlign];
  35. //image=[RAUtils scaleToSize:image size:parentrect.size];
  36. rect= [self parent_to_pdf_rect:rect contextHeight:flip_height];
  37. //CGRect rect = [self to_pdf_rect:p_rect pos:self.rect contextHeight:flip_height];
  38. CGContextDrawImage(context, rect, image.CGImage);
  39. [self DrawBound:context dataSource:data ParentRect:p_rect startX:x startY:y flipHeight:flip_height range:between_header_and_footer];
  40. return parentrect;
  41. // return CGPointMake(parentrect.origin.x+parentrect.size.width, parentrect.origin.y+parentrect.size.height);
  42. // // 切换上下文 Core Graphics 和 UIKit 混用
  43. // UIGraphicsPushContext(context);
  44. //
  45. // // 使用UIKit绘制内容
  46. // [image drawInRect:rect];
  47. //
  48. // // 绘制完位图后,再恢复上下文
  49. // UIGraphicsPopContext();
  50. // [super restoreFlip:context ContextHeight:flip_height];
  51. }
  52. @end