| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680 |
- //
- // TextDrawable.m
- // pdftest
- //
- // Created by Ray on 10/12/16.
- // Copyright © 2016 United Software Applications, Inc. All rights reserved.
- //
- #import "TextDrawable.h"
- #import <CoreText/CoreText.h>
- #import "TextUtils.h"
- #define DEBUG_STRING_VALUE0 @"DEBUG OFF"
- #define DEBUG_STRING_VALUE1 @"DEBUG OFF"
- @implementation TextDrawable
- -(instancetype) init:(CGRect) rect source_type:(NSString*) source_type source:(NSString*)source textAlignment:(NSString*)textAlignment vAlign:(NSString*)vAlign size:(NSString*)size
- {
-
- if (self = [super init]) {
- // NSMutableDictionary* m1=[drawableTemplate mutableCopy];
- // NSMutableDictionary* m2=[drawableTemplate mutableCopy];
- // [self setDrawableTemplate:[[RAUtils string2dict:[RAUtils dict2string:drawableTemplate]] mutableCopy] ];
-
- NSMutableDictionary * drawableTemplate = [TextDrawable createTextTemplate:rect source_type:source_type source:source textAlignment:textAlignment vAlign:vAlign size:size];
-
-
- [self setDrawableTemplate:[NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:drawableTemplate]] ];
-
- }
- return self;
-
- }
- +(NSMutableDictionary *) createTextTemplate:(CGRect) rect source_type:(NSString*) source_type source:(NSString*)source textAlignment:(NSString*)textAlignment vAlign:(NSString*)vAlign size:(NSString*)size
- {
-
-
-
-
- NSLog(@"createTextTemplate text align : %@",textAlignment);
-
- if(textAlignment.length==0)
- textAlignment= @"Center";
- if(vAlign.length==0)
- vAlign= @"Middle";
- if(size.length==0)
- vAlign= @"10";
-
-
-
- NSMutableDictionary* ret=[super createDrawableTemplate:rect];
-
- ret[@"type"]=@"text" ;
- ret[@"source_type"]=source_type ;
- ret[@"source"]=source ;
- ret[@"text"]=source ;
- ret[@"textAlignment"]=textAlignment ;
- ret[@"vAlign"]=vAlign ;
- ret[@"size"]=size ;
-
- return ret;
- }
- -(void) setDrawableTemplate:(NSMutableDictionary *)drawableTemplate
- {
-
- [super setDrawableTemplate:drawableTemplate];
-
-
-
- NSString* align= drawableTemplate[@"textAlignment"];
-
- NSLog(@"setDrawableTemplate text align : %@",align);
- if(align.length==0 || [align.lowercaseString isEqualToString:@"left"])
- {
- self.textalignment= NSTextAlignmentLeft;
- }
- else if([align.lowercaseString isEqualToString:@"right"])
- {
- self.textalignment= NSTextAlignmentRight;
- }
- else if([align.lowercaseString isEqualToString:@"center"])
- {
- self.textalignment= NSTextAlignmentCenter;
- }
- else
- {
- self.textalignment= NSTextAlignmentLeft;
- }
-
- self.lineSpace = 0;
- self.paragraphSpace = 0;
-
-
- NSString* colorvalue=drawableTemplate[@"color"];
- if(colorvalue.length>0 )
- {
- unsigned long color = strtoul([colorvalue UTF8String],0,16);
- self.textColor= UIColorFromRGB(color);
- }
- else
- {
- self.textColor= [UIColor blackColor];
-
- }
-
-
- // kCTTextAlignmentJustified CT_ENUM_AVAILABLE(10_8, 6_0) = 3,
- // kCTTextAlignmentNatural CT_ENUM_AVAILABLE(10_8, 6_0) = 4,
-
-
- // _drawableTemplate = drawableTemplate;
- // self.margin_left=[self.drawableTemplate[@"margin_left"] doubleValue];
- // self.margin_right=[self.drawableTemplate[@"margin_right"] doubleValue];
- // self.margin_top=[self.drawableTemplate[@"margin_top"] doubleValue];
- // self.margin_bottom=[self.drawableTemplate[@"margin_bottom"] doubleValue];
- // self.rect = CGRectMake(0, 0, [self.drawableTemplate[@"width"] doubleValue], [self.drawableTemplate[@"height"] doubleValue]);
- }
- -(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
- {
- // return p_rect;
- bool expand=[self.drawableTemplate[@"expand"] boolValue];
- if(!expand)
- {
- CGRect parentrect = [self to_parent_rect:p_rect pos:self.rect offsetX:0 offsetY:0];
-
- return parentrect;
- }
- else
- {
-
-
-
-
- NSString * source=self.drawableTemplate[@"source_type"];
- if(source==nil)
- source=@"const";
- if([source isEqualToString:@"const"])
- {
- self.text=self.drawableTemplate[@"text"];
- // self.text=[self.text stringByReplacingOccurrencesOfString:@"\r\n" withString:@"<br>"];
-
- }
- else if([source isEqualToString:@"data"])
- {
- if([self.drawableTemplate[@"source_isexpression"] boolValue])
- {
- NSString *content = data[self.drawableTemplate[@"source"]];
- NSString *pattern = @"\\$\\.\\{([\\s\\S]*?)\\}\\.\\$";
- NSArray* matches=[TextUtils expression_varable:content regex:pattern];
- // if (matches) {
- // for (NSTextCheckingResult *match in matches) {
- // for (int i = 0; i < match.numberOfRanges; ++i) {
- // DebugLog(@"%d-> %@",i, [content substringWithRange:[match rangeAtIndex:i]]);
- // }
- // }
- // }
- if (matches)
- {
- self.text=content;
- for (NSTextCheckingResult *match in matches)
- {
-
- for (int i = 0; i < match.numberOfRanges/2; ++i) {
- DebugLog(@"%d-> %@",i, [content substringWithRange:[match rangeAtIndex:i]]);
- DebugLog(@"%d-> %@",i+1, [content substringWithRange:[match rangeAtIndex:i+1]]);
-
- self.text=[self.text stringByReplacingOccurrencesOfString:[content substringWithRange:[match rangeAtIndex:i]] withString:[NSString stringWithFormat:@"%@",data[[content substringWithRange:[match rangeAtIndex:i+1]]]]];
- }
- }
- }
- //self.text=content;
-
- }
- else
- {
- self.text=data[self.drawableTemplate[@"source"]];
- }
- }
-
- if(self.text==nil)
- self.text=@"";
-
-
-
-
-
- // if([self.text isEqualToString:@"www.newpacificdirect.com"])
- // {
- // int debug=0;
- // }
-
-
- bool bold = [self.drawableTemplate[@"bold"] boolValue];
- // bool italic = [self.drawableTemplate[@"italic"] boolValue];
- NSString* font=self.drawableTemplate[@"font"];
-
- // [super flipContext:context ContextHeight:flip_height];
- // super flipContext:context ContextHeight:<#(double)#>
- CGFloat fontsize = [self.drawableTemplate[@"size"] doubleValue];
-
- //NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[title dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
- //创建AttributeStringfdsa
-
- NSMutableAttributedString *string = nil;
- // if([self.drawableTemplate[@"ishtml"] boolValue])
- // {
- // string=[[[NSAttributedString alloc] initWithData:[self.text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil] mutableCopy];
- //
- // }
- // else
- {
- string=[[NSMutableAttributedString alloc] initWithString:self.text];
- //创建字体以及字体大小
- // CTFontRef ctfont = [self CreateFont:font size:fontsize bold:bold];//CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);
- // // CTFontRef helveticaBold = CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);
- // //字体,把helvetica 样式加到整个,string上
- // [string addAttribute:(id)kCTFontAttributeName
- // value:CFBridgingRelease(ctfont)
- // range:NSMakeRange(0, [string length])];
- //
- // //字体样式 ,把helveticaBold 样式加到整个,string上
- // // [string addAttribute:(id)kCTFontAttributeName
- // // value:CFBridgingRelease(helveticaBold)
- // // range:NSMakeRange(0, [string length])];
- //
- // //颜色,此处为黑色,你可以自己改颜色,[UIColor redColor]
- // [string addAttribute:(id)kCTForegroundColorAttributeName
- // value:(id)self.textColor.CGColor
- // range:NSMakeRange(0, [string length])];
-
- string = [self richtext2attributedstring:string font:font size:fontsize bold:bold];
-
-
- // //设置字体间距
- // long number = self.characterSpace;
- // CFNumberRef num = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt8Type, &number);
- // [string addAttribute:(id)kCTKernAttributeName value:(__bridge NSNumber*)num range:NSMakeRange(0, [string length])];
- // CFRelease(num);
-
-
- // //创建文本对齐方式
- // CTTextAlignment alignment = self.textalignment;//对齐方
- // CTParagraphStyleSetting alignmentStyle;
- // alignmentStyle.spec=kCTParagraphStyleSpecifierAlignment;
- // alignmentStyle.valueSize=sizeof(alignment);
- // alignmentStyle.value=&alignment;
-
- // //创建文本, 行间距
- // CGFloat lineSpace=self.lineSpace;//间距数据
- // CTParagraphStyleSetting lineSpaceStyle;
- // lineSpaceStyle.spec=kCTParagraphStyleSpecifierLineSpacing;
- // lineSpaceStyle.valueSize=sizeof(lineSpace);
- // lineSpaceStyle.value=&lineSpace;
-
- // //设置 line break;
- // CTLineBreakMode linebreakmode = kCTLineBreakByTruncatingTail;
- // CTParagraphStyleSetting linebreakStyle;
- // linebreakStyle.spec = kCTParagraphStyleSpecifierLineBreakMode;
- // linebreakStyle.valueSize = sizeof(CGFloat);
- // linebreakStyle.value = &linebreakmode;
-
-
- // //设置 段落间距
- // CGFloat paragraph = self.paragraphSpace;
- // CTParagraphStyleSetting paragraphStyle;
- // paragraphStyle.spec = kCTParagraphStyleSpecifierParagraphSpacing;
- // paragraphStyle.valueSize = sizeof(CGFloat);
- // paragraphStyle.value = ¶graph;
-
-
-
-
- //创建样式数组
- // CTParagraphStyleSetting settings[]={
- // alignmentStyle/*,linebreakStyle,lineSpaceStyle,paragraphStyle*/
- // };
- //
- // //设置样式
- // CTParagraphStyleRef paragraphStyle1 = CTParagraphStyleCreate(settings, sizeof(settings));
- //
- // //给字符串添加样式attribute
- // [string addAttribute:(id)kCTParagraphStyleAttributeName
- // value:(__bridge id)paragraphStyle1
- // range:NSMakeRange(0, [string length])];
- // CFRelease(paragraphStyle1);
-
-
- NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
-
-
- [style setAlignment:self.textalignment];
- //[style setLineBreakMode:NSLineBreakByTruncatingTail];
-
- [style setLineBreakMode:NSLineBreakByWordWrapping];
-
- [string addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, [string length])];
- }
-
-
-
- // CGRect pdfrect=[self to_parent_rect:p_rect pos:self.rect offsetX:0 offsetY:0];
- // [string drawInRect:pdfrect];
-
-
- // [self.text drawInRect:pdfrect withAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:40],NSForegroundColorAttributeName : [UIColor redColor]}];
-
- // layout master
- CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)string);
- //计算文本绘制size ,这里300是文字宽度,你可以自己更改为247,但是要记得,在height 方法里的这个位置,也改为247
- CGSize tmpSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0,0), NULL, CGSizeMake(self.rect.size.width-self.margin_left-self.margin_right, MAXFLOAT), NULL);
- //创建textBoxSize以设置view的frame
- // CGSize textBoxSize = CGSizeMake((int)tmpSize.width + 1, (int)tmpSize.height + 1);
- // DebugLog(@"textBoxSize0 == %f,%f,%f",textBoxSize.width,textBoxSize.height,textBoxSize.width / textBoxSize.height);
- // self.frame = CGRectMake(0, 0, textBoxSize.width , textBoxSize.height);
- // [string release];
-
- //- (void)drawRect:(CGRect)rect;代码
-
-
-
-
- // CGMutablePathRef leftColumnPath = CGPathCreateMutable();
-
- CGRect parentrect = [self to_parent_rect:p_rect pos:self.rect offsetX:0 offsetY:0];
-
-
- double height =0;
- if(tmpSize.height<parentrect.size.height)
- height=tmpSize.height;
- else
- if(expand)
- {
- height=tmpSize.height;
- self.rect = CGRectMake(self.rect.origin.x, self.rect.origin.y, self.rect.size.width, height+self.margin_top+self.margin_bottom);
- }
- else
- height=parentrect.size.height;
-
- CGRect rect=CGRectMake(parentrect.origin.x, parentrect.origin.y, parentrect.size.width, height);
-
- CGRect expand_rect=rect;
-
- // CGRect rect=[RAUtils rectAlign:parentrect rect:scalerect hAlign:self.hAlign vAlign:self.vAlign];
- // rect=[RAUtils rectVAlign:parentrect rect:rect vAlign:self.vAlign];
- //
- // // CGRect pdfrect = [self to_pdf_rect:p_rect pos:self.rect contextHeight:flip_height];
- //
- // rect= [self parent_to_pdf_rect:rect contextHeight:flip_height];
- // // pdfrect=CGRectMake(pdfrect.origin.x, flip_height-pdfrect.origin.y, pdfrect.size.width, pdfrect.size.height);
- // CGPathAddRect(leftColumnPath, NULL,
- // rect);
- //
- // CTFrameRef leftFrame = CTFramesetterCreateFrame(framesetter,
- // CFRangeMake(0, 0),
- // leftColumnPath, NULL);
- //
- // // DebugLog(@"textBoxSize1 == %f,%f",self.frame.size.width,self.frame.size.height);
- // // flip the coordinate system
- // // CGContextRef context = UIGraphicsGetCurrentContext();
- //
- //
- // // CGContextClearRect(context, self.rect);
- // // CGContextSetFillColorWithColor(context, [[UIColor whiteColor]CGColor]);
- // // CGContextFillRect(context, CGRectMake(0, 0, self.rect.size.width, self.rect.size.height));
- //
- //
- // CGContextSetTextMatrix(context, CGAffineTransformIdentity);
- // // CGContextTranslateCTM(context, 0, self.rect.size.height);
- // // CGContextScaleCTM(context, 1.0, -1.0);
- //
- // // draw
- // CTFrameDraw(leftFrame, context);
- //
- //
- // CFRelease(leftFrame);
- // // cleanup
- //
- // CGPathRelease(leftColumnPath);
- CFRelease(framesetter);
-
-
- // return self.rect;
- // [self DrawBound:context dataSource:data ParentRect:p_rect startX:x startY:y flipHeight:flip_height range:between_header_and_footer];
- if(expand&&expand_rect.size.height>parentrect.size.height)
- return expand_rect;
- else
- return parentrect;
- // return CGPointMake(parentrect.origin.x+parentrect.size.width, parentrect.origin.y+parentrect.size.height);
-
- // [super restoreFlip:context ContextHeight:flip_height];
- }
-
-
- }
- -(UIFont*)CreateFont:(NSString*)name size:(double)size bold:(bool)bold
- {
-
- if(name.length==0)
- {
- name=@"Helvetica";
- // name=@"DejaVu Sans";
- }
- if(size==0)
- {
- size=10;
- }
- // NSString* style = @"Regular";
- // if(bold)
- // style=@"Bold";
-
- //name=@"Courier";
-
- NSDictionary *fontAttributes =
- [NSDictionary dictionaryWithObjectsAndKeys:
- name, UIFontDescriptorFamilyAttribute,
- // style, UIFontDescriptorTextStyleAttribute,
- [NSNumber numberWithFloat:size],
- UIFontDescriptorSizeAttribute,
- nil];
-
- UIFontDescriptor* fontdescriptor=[UIFontDescriptor fontDescriptorWithFontAttributes:fontAttributes];
-
- if(bold)
- fontdescriptor = [fontdescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold];
-
-
- UIFont * font = [UIFont fontWithDescriptor:fontdescriptor size:0.0];
- return font;
-
- //
- // // Create a descriptor.
- // CFDictionaryRef cffontAttributes =(__bridge CFDictionaryRef)fontAttributes;
- // CTFontDescriptorRef descriptor =
- // CTFontDescriptorCreateWithAttributes(cffontAttributes);
- //
- // // CFBridgingRelease(cffontAttributes);
- //
- // // Create a font using the descriptor.
- // CTFontRef font = CTFontCreateWithFontDescriptor(descriptor, 0.0, NULL);
- // CFRelease(descriptor);
- //
- // return font;
-
- // if(bold)
- // {
- // CTFontRef font=CTFontCreateWithName((__bridge CFStringRef)name, size, NULL);
- // CTFontRef font_bold =CTFontCreateCopyWithSymbolicTraits(font, 0.0, NULL, kCTFontBoldTrait, kCTFontBoldTrait);
- // CFBridgingRelease(font);
- // return font_bold;
- // }
- // return CTFontCreateWithName((__bridge CFStringRef)name, size, NULL);
- }
- //-(NSString*) QueryFontName:(NSString*)font
- //{
- // if(font==nil)
- // {
- // return @"Helvetica";
- // }
- // else if([font.lowercaseString isEqualToString:@"kalinga"])
- // {
- // return @"kalinga";
- // }
- // return @"Helvetica";
- //}
- -(NSMutableAttributedString*) richtext2attributedstring:(NSMutableAttributedString*)string font:(NSString*)font size:(double)size bold:(bool)bold
- {
- // UILabel* uilabel=[[UILabel alloc]init];
- // uilabel.font=[UIFont fontWithName:font size:size];
- // NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[self.text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
- // uilabel.attributedText = attrStr;
- // DebugLog(@"%@", attrStr);
- // DebugLog(@"%@", uilabel.attributedText);
-
- // CTFontRef ctfont = [self CreateFont:font size:size bold:bold];//CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);b
- UIFont* uifont =[self CreateFont:font size:size bold:bold];
-
-
- //CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);
- // CTFontRef helveticaBold = CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);
- //字体,把helvetica 样式加到整个,string上
- [string addAttribute:NSFontAttributeName
- value:uifont
- range:NSMakeRange(0, [string length])];
- // CFRelease(ctfont);
-
-
-
- //颜色,此处为黑色,你可以自己改颜色,[UIColor redColor]
- [string addAttribute:NSForegroundColorAttributeName
- value:self.textColor
- range:NSMakeRange(0, [string length])];
-
-
- if(!bold)
- {
-
- // NSString* newstring= nil;
- // NSString *content = string.string ;
- NSString *pattern = @"\\<b\\>([\\s\\S]*?)\\<\\/b\\>";
- // NSArray* matches=[TextUtils expression_varable:content regex:pattern];
- // if (matches) {
- // for (NSTextCheckingResult *match in matches) {
- // for (int i = 0; i < match.numberOfRanges; ++i) {
- // DebugLog(@"%d-> %@",i, [content substringWithRange:[match rangeAtIndex:i]]);
- // }
- // }
- // }
- NSTextCheckingResult * match=[TextUtils expression_findfistMatch:string.string regex:pattern];
- UIFont* uifontbold = [self CreateFont:font size:size bold:true];
- while(match)
- {
- //for (int i = 0; i < match.numberOfRanges/2; ++i)
- {
- int i=0;
- DebugLog(@"%d->range with richtext label: %lu,%lu",i, (unsigned long)[match rangeAtIndex:i].location,(unsigned long)[match rangeAtIndex:i].length);
- DebugLog(@"%d-> range of text: %lu,%lu ",i+1, (unsigned long)[match rangeAtIndex:i+1].location,(unsigned long)[match rangeAtIndex:i+1].length);
-
-
- DebugLog(@"string length: %lu",(unsigned long)string.string.length);
-
-
- // CTFontRef ctfont_bold = [self CreateFont:font size:size bold:true];
- [string addAttribute:NSFontAttributeName
- value:uifontbold
- range:[match rangeAtIndex:i+1]];
-
-
- [string replaceCharactersInRange:NSMakeRange([match rangeAtIndex:i+1].location+[match rangeAtIndex:i+1].length, [match rangeAtIndex:i].location+[match rangeAtIndex:i].length-([match rangeAtIndex:i+1].location+[match rangeAtIndex:i+1].length)) withString:@""];
- [string replaceCharactersInRange:NSMakeRange([match rangeAtIndex:i].location, [match rangeAtIndex:i+1].location-[match rangeAtIndex:i].location) withString:@""];
-
- DebugLog(@"string after replace: %@",string.string);
- //newstring=[newstring stringByReplacingOccurrencesOfString:[content substringWithRange:[match rangeAtIndex:i]] withString:[content substringWithRange:[match rangeAtIndex:i+1]]];
- match=[TextUtils expression_findfistMatch:string.string regex:pattern];
- }
- }
- // if (matches)
- // {
- // newstring=content;
- // for (NSTextCheckingResult *match in matches)
- // {
- //
- // for (int i = 0; i < match.numberOfRanges/2; ++i)
- // {
- // DebugLog(@"%d-> %@",i, [content substringWithRange:[match rangeAtIndex:i]]);
- // DebugLog(@"%d-> %@",i+1, [content substringWithRange:[match rangeAtIndex:i+1]]);
- //
- // [string addAttribute:(id)kCTFontAttributeName
- // value:CFBridgingRelease(ctfont_bold)
- // range:[match rangeAtIndex:i+1]];
- //
- // newstring=[newstring stringByReplacingOccurrencesOfString:[content substringWithRange:[match rangeAtIndex:i]] withString:[content substringWithRange:[match rangeAtIndex:i+1]]];
- //
- // }
- // }
- // }
-
-
-
- // CFRelease(ctfont_bold);
- }
-
-
- return string;
- }
- -(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
- {
-
-
-
-
- NSString * source=self.drawableTemplate[@"source_type"];
- if(source==nil)
- source=@"const";
- if([source isEqualToString:@"const"])
- {
- self.text=self.drawableTemplate[@"text"];
-
- // self.text=[self.text stringByReplacingOccurrencesOfString:@"\r\n" withString:@"<br>"];
-
- }
- else if([source isEqualToString:@"data"])
- {
- if([self.drawableTemplate[@"source_isexpression"] boolValue])
- {
- NSString *content = data[self.drawableTemplate[@"source"]];
- NSString *pattern = @"\\$\\.\\{([\\s\\S]*?)\\}\\.\\$";
- NSArray* matches=[TextUtils expression_varable:content regex:pattern];
- // if (matches) {
- // for (NSTextCheckingResult *match in matches) {
- // for (int i = 0; i < match.numberOfRanges; ++i) {
- // DebugLog(@"%d-> %@",i, [content substringWithRange:[match rangeAtIndex:i]]);
- // }
- // }
- // }
- if (matches)
- {
- self.text=content;
- for (NSTextCheckingResult *match in matches)
- {
-
- for (int i = 0; i < match.numberOfRanges/2; ++i) {
- DebugLog(@"%d-> %@",i, [content substringWithRange:[match rangeAtIndex:i]]);
- DebugLog(@"%d-> %@",i+1, [content substringWithRange:[match rangeAtIndex:i+1]]);
-
- self.text=[self.text stringByReplacingOccurrencesOfString:[content substringWithRange:[match rangeAtIndex:i]] withString:[NSString stringWithFormat:@"%@",data[[content substringWithRange:[match rangeAtIndex:i+1]]]]];
- }
- }
- }
- //self.text=content;
-
- }
- else
- {
- self.text=data[self.drawableTemplate[@"source"]];
- }
- }
-
- if(self.text==nil)
- self.text=@"";
-
-
- if([self.text isEqualToString:DEBUG_STRING_VALUE0])
- {
- self.text =DEBUG_STRING_VALUE1;
- }
-
-
- // if([self.text isEqualToString:@"www.newpacificdirect.com"])
- // {
- // int debug=0;
- // }
-
-
- bool bold = [self.drawableTemplate[@"bold"] boolValue];
- // bool italic = [self.drawableTemplate[@"italic"] boolValue];
- NSString* font=self.drawableTemplate[@"font"];
-
- // [super flipContext:context ContextHeight:flip_height];
- // super flipContext:context ContextHeight:<#(double)#>
- CGFloat fontsize = [self.drawableTemplate[@"size"] doubleValue];
-
- //NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[title dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
- //创建AttributeStringfdsa
-
- NSMutableAttributedString *string = nil;
- // if([self.drawableTemplate[@"ishtml"] boolValue])
- // {
- // string=[[[NSAttributedString alloc] initWithData:[self.text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil] mutableCopy];
- //
- // }
- // else
-
- string=[[NSMutableAttributedString alloc] initWithString:self.text];
- //创建字体以及字体大小
- // CTFontRef ctfont = [self CreateFont:font size:fontsize bold:bold];//CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);
- // // CTFontRef helveticaBold = CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);
- // //字体,把helvetica 样式加到整个,string上
- // [string addAttribute:(id)kCTFontAttributeName
- // value:CFBridgingRelease(ctfont)
- // range:NSMakeRange(0, [string length])];
- //
- // //字体样式 ,把helveticaBold 样式加到整个,string上
- // // [string addAttribute:(id)kCTFontAttributeName
- // // value:CFBridgingRelease(helveticaBold)
- // // range:NSMakeRange(0, [string length])];
- //
- // //颜色,此处为黑色,你可以自己改颜色,[UIColor redColor]
- // [string addAttribute:(id)kCTForegroundColorAttributeName
- // value:(id)self.textColor.CGColor
- // range:NSMakeRange(0, [string length])];
-
- string = [self richtext2attributedstring:string font:font size:fontsize bold:bold];
-
- // //设置字体间距
- // long number = self.characterSpace;
- // CFNumberRef num = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt8Type, &number);
- // [string addAttribute:(id)kCTKernAttributeName value:CFBridgingRelease(num) range:NSMakeRange(0, [string length])];
- //CFRelease(num);
-
-
- //创建文本对齐方式
- // CTTextAlignment alignment = self.textalignment;//对齐方
- // CTParagraphStyleSetting alignmentStyle;
- // alignmentStyle.spec=kCTParagraphStyleSpecifierAlignment;
- // alignmentStyle.valueSize=sizeof(CTTextAlignment);
- // alignmentStyle.value=&alignment;
- //
- // //创建文本, 行间距
- // CGFloat lineSpace=self.lineSpace;//间距数据
- // CTParagraphStyleSetting lineSpaceStyle;
- // lineSpaceStyle.spec=kCTParagraphStyleSpecifierLineSpacing;
- // lineSpaceStyle.valueSize=sizeof(lineSpace);
- // lineSpaceStyle.value=&lineSpace;
- //
- // //设置 line break;
- // CTLineBreakMode linebreakmode = kCTLineBreakByTruncatingTail;
- // CTParagraphStyleSetting linebreakStyle;
- // linebreakStyle.spec = kCTParagraphStyleSpecifierLineBreakMode;
- // linebreakStyle.valueSize = sizeof(CGFloat);
- // linebreakStyle.value = &linebreakmode;
- //
- //
- // //设置 段落间距
- // CGFloat paragraph = self.paragraphSpace;
- // CTParagraphStyleSetting paragraphStylesetting;
- // paragraphStylesetting.spec = kCTParagraphStyleSpecifierParagraphSpacing;
- // paragraphStylesetting.valueSize = sizeof(CGFloat);
- // paragraphStylesetting.value = ¶graph;
- //
- //
- //
- //
- // //创建样式数组
- // CTParagraphStyleSetting settings[]={
- // alignmentStyle/*,linebreakStyle,lineSpaceStyle,paragraphStylesetting*/
- // };
- //
- // //设置样式
- // CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(settings, sizeof(settings));
- //
- // //给字符串添加样式attribute
- // [string addAttribute:NSParagraphStyleAttributeName
- // value:(__bridge id)(paragraphStyle)
- // range:NSMakeRange(0, [string length])];
- // CFRelease(paragraphStyle);
-
-
- NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
-
- [style setAlignment:self.textalignment];
- // [style setLineBreakMode:NSLineBreakByTruncatingTail];
- [style setLineBreakMode:NSLineBreakByWordWrapping];
- // style SETLINE
-
- [string addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, [string length])];
-
-
- if([self.text isEqualToString:DEBUG_STRING_VALUE1])
- {
- // bool debug=true;
- NSLog(@"textdrawable text:%@",self.text);
- NSLog(@"string %@",string);
- // NSLog(@"compute size %@", NSStringFromCGSize(CGSizeMake(self.rect.size.width-self.margin_left-self.margin_right, MAXFLOAT)) );
- // NSLog(@"tmpSize %@", NSStringFromCGSize(tmpSize) );
- // NSLog(@"p_rect %@", NSStringFromCGRect(p_rect) );
- // NSLog(@"self.rect %@", NSStringFromCGRect(self.rect) );
- }
-
-
-
-
-
- // CGRect pdfrect=[self to_parent_rect:p_rect pos:self.rect offsetX:0 offsetY:0];
- // [string drawInRect:pdfrect];
-
-
- // [self.text drawInRect:pdfrect withAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:40],NSForegroundColorAttributeName : [UIColor redColor]}];
-
- // layout master
- CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)string);
- //计算文本绘制size ,这里300是文字宽度,你可以自己更改为247,但是要记得,在height 方法里的这个位置,也改为247
- CGSize tmpSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0,0), NULL, CGSizeMake(self.rect.size.width-self.margin_left-self.margin_right, MAXFLOAT), NULL);
- //创建textBoxSize以设置view的frame
- // CGSize textBoxSize = CGSizeMake((int)tmpSize.width + 1, (int)tmpSize.height + 1);
- // DebugLog(@"textBoxSize0 == %f,%f,%f",textBoxSize.width,textBoxSize.height,textBoxSize.width / textBoxSize.height);
- // self.frame = CGRectMake(0, 0, textBoxSize.width , textBoxSize.height);
- // [string release];
-
- //- (void)drawRect:(CGRect)rect;代码
-
-
-
- CGMutablePathRef leftColumnPath = CGPathCreateMutable();
-
- CGRect parentrect = [self to_parent_rect:p_rect pos:self.rect offsetX:0 offsetY:0];
-
- bool expand=[self.drawableTemplate[@"expand"] boolValue];
- double height =0;
- if(tmpSize.height<parentrect.size.height)
- height=tmpSize.height;
- else
- if(expand)
- {
- height=tmpSize.height;
- self.rect = CGRectMake(self.rect.origin.x, self.rect.origin.y, self.rect.size.width, height+self.margin_top+self.margin_bottom);
- }
- else
- height=parentrect.size.height;
-
- CGRect rect=CGRectMake(parentrect.origin.x, parentrect.origin.y, parentrect.size.width, height);
-
- CGRect expand_rect=rect;
-
-
- if([self.text isEqualToString:DEBUG_STRING_VALUE1])
- {
- // bool debug=true;
- NSLog(@"textdrawable text:%@",self.text);
- NSLog(@"tmpSize %@", NSStringFromCGSize(tmpSize) );
- NSLog(@"p_rect %@", NSStringFromCGRect(p_rect) );
- NSLog(@"self.rect %@", NSStringFromCGRect(self.rect) );
-
- NSLog(@"expand %@", expand?@"true":@"false" );
- NSLog(@"height %f", height );
- NSLog(@"expand_rect %@", NSStringFromCGRect(expand_rect) );
- }
-
- // CGRect rect=[RAUtils rectAlign:parentrect rect:scalerect hAlign:self.hAlign vAlign:self.vAlign];
- rect=[TextUtils rectVAlign:parentrect rect:rect vAlign:self.vAlign];
-
- if([self.text isEqualToString:DEBUG_STRING_VALUE1])
- {
- // bool debug=true;
- NSLog(@"textdrawable text:%@",self.text);
- NSLog(@"tmpSize %@", NSStringFromCGSize(tmpSize) );
- NSLog(@"p_rect %@", NSStringFromCGRect(p_rect) );
- NSLog(@"self.rect %@", NSStringFromCGRect(self.rect) );
-
- NSLog(@"expand %@", expand?@"true":@"false" );
- NSLog(@"height %f", height );
- NSLog(@"expand_rect %@", NSStringFromCGRect(expand_rect) );
-
- NSLog(@"rect %@", NSStringFromCGRect(rect) );
- NSLog(@"vAlign %@", self.vAlign );
- }
-
- // CGRect pdfrect = [self to_pdf_rect:p_rect pos:self.rect contextHeight:flip_height];
-
- rect= [self parent_to_pdf_rect:rect contextHeight:flip_height];
- // pdfrect=CGRectMake(pdfrect.origin.x, flip_height-pdfrect.origin.y, pdfrect.size.width, pdfrect.size.height);
- CGPathAddRect(leftColumnPath, NULL,
- rect);
-
- CTFrameRef leftFrame = CTFramesetterCreateFrame(framesetter,
- CFRangeMake(0, 0),
- leftColumnPath, NULL);
-
- // DebugLog(@"textBoxSize1 == %f,%f",self.frame.size.width,self.frame.size.height);
- // flip the coordinate system
- // CGContextRef context = UIGraphicsGetCurrentContext();
-
-
- // CGContextClearRect(context, self.rect);
- // CGContextSetFillColorWithColor(context, [[UIColor whiteColor]CGColor]);
- // CGContextFillRect(context, CGRectMake(0, 0, self.rect.size.width, self.rect.size.height));
-
-
- CGContextSetTextMatrix(context, CGAffineTransformIdentity);
- // CGContextTranslateCTM(context, 0, self.rect.size.height);
- // CGContextScaleCTM(context, 1.0, -1.0);
-
- // draw
- CTFrameDraw(leftFrame, context);
-
-
- CFRelease(leftFrame);
- // cleanup
-
- CGPathRelease(leftColumnPath);
- CFRelease(framesetter);
-
-
- // return self.rect;
- [self DrawBound:context dataSource:data ParentRect:p_rect startX:x startY:y flipHeight:flip_height range:between_header_and_footer];
- if(expand&&expand_rect.size.height>parentrect.size.height)
- return expand_rect;
- else
- return parentrect;
- // return CGPointMake(parentrect.origin.x+parentrect.size.width, parentrect.origin.y+parentrect.size.height);
-
- // [super restoreFlip:context ContextHeight:flip_height];
- }
- @end
- ////
- //// TextDrawable.m
- //// pdftest
- ////
- //// Created by Ray on 10/12/16.
- //// Copyright © 2016 United Software Applications, Inc. All rights reserved.
- ////
- //
- //#import "TextDrawable.h"
- //#import <CoreText/CoreText.h>
- //#import "TextUtils.h"
- //
- //@implementation TextDrawable
- //
- //
- //-(instancetype) init:(CGRect) rect source_type:(NSString*) source_type source:(NSString*)source textAlignment:(NSString*)textAlignment vAlign:(NSString*)vAlign size:(NSString*)size
- //{
- //
- // if (self = [super init]) {
- // // NSMutableDictionary* m1=[drawableTemplate mutableCopy];
- // // NSMutableDictionary* m2=[drawableTemplate mutableCopy];
- // // [self setDrawableTemplate:[[RAUtils string2dict:[RAUtils dict2string:drawableTemplate]] mutableCopy] ];
- //
- // NSMutableDictionary * drawableTemplate = [TextDrawable createTextTemplate:rect source_type:source_type source:source textAlignment:textAlignment vAlign:vAlign size:size];
- //
- //
- // [self setDrawableTemplate:[NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:drawableTemplate]] ];
- //
- // }
- // return self;
- //
- //}
- //+(NSMutableDictionary *) createTextTemplate:(CGRect) rect source_type:(NSString*) source_type source:(NSString*)source textAlignment:(NSString*)textAlignment vAlign:(NSString*)vAlign size:(NSString*)size
- //{
- //
- //
- //
- //
- //
- //
- // if(textAlignment.length==0)
- // textAlignment= @"Center";
- // if(vAlign.length==0)
- // vAlign= @"Middle";
- // if(size.length==0)
- // vAlign= @"10";
- //
- //
- //
- // NSMutableDictionary* ret=[super createDrawableTemplate:rect];
- //
- // ret[@"type"]=@"text" ;
- // ret[@"source_type"]=source_type ;
- // ret[@"source"]=source ;
- // ret[@"text"]=source ;
- // ret[@"textAlignment"]=textAlignment ;
- // ret[@"vAlign"]=vAlign ;
- // ret[@"size"]=size ;
- //
- // return ret;
- //}
- //
- //
- //-(void) setDrawableTemplate:(NSMutableDictionary *)drawableTemplate
- //{
- //
- // [super setDrawableTemplate:drawableTemplate];
- //
- //
- //
- // NSString* align= drawableTemplate[@"textAlignment"];
- // if(align.length==0 || [align.lowercaseString isEqualToString:@"left"])
- // {
- // self.textalignment= kCTTextAlignmentLeft;
- // }
- // else if([align.lowercaseString isEqualToString:@"right"])
- // {
- // self.textalignment= kCTTextAlignmentRight;
- // }
- // else if([align.lowercaseString isEqualToString:@"center"])
- // {
- // self.textalignment= kCTTextAlignmentCenter;
- // }
- // else
- // {
- // self.textalignment= kCTTextAlignmentLeft;
- // }
- //
- //// self.lineSpace = 0;
- //// self.paragraphSpace = 0;
- //
- //
- // NSString* colorvalue=drawableTemplate[@"color"];
- // if(colorvalue.length>0 )
- // {
- // unsigned long color = strtoul([colorvalue UTF8String],0,16);
- // self.textColor= UIColorFromRGB(color);
- // }
- // else
- // {
- // self.textColor= [UIColor blackColor];
- //
- // }
- //
- //
- // // kCTTextAlignmentJustified CT_ENUM_AVAILABLE(10_8, 6_0) = 3,
- // // kCTTextAlignmentNatural CT_ENUM_AVAILABLE(10_8, 6_0) = 4,
- //
- //
- // // _drawableTemplate = drawableTemplate;
- // // self.margin_left=[self.drawableTemplate[@"margin_left"] doubleValue];
- // // self.margin_right=[self.drawableTemplate[@"margin_right"] doubleValue];
- // // self.margin_top=[self.drawableTemplate[@"margin_top"] doubleValue];
- // // self.margin_bottom=[self.drawableTemplate[@"margin_bottom"] doubleValue];
- // // self.rect = CGRectMake(0, 0, [self.drawableTemplate[@"width"] doubleValue], [self.drawableTemplate[@"height"] doubleValue]);
- //}
- //
- //
- //-(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
- //{
- //
- // bool expand=[self.drawableTemplate[@"expand"] boolValue];
- // if(!expand)
- // {
- // CGRect parentrect = [self to_parent_rect:p_rect pos:self.rect offsetX:0 offsetY:0];
- //
- // return parentrect;
- // }
- // else
- // {
- //
- //
- //
- //
- // NSString * source=self.drawableTemplate[@"source_type"];
- // if(source==nil)
- // source=@"const";
- // if([source isEqualToString:@"const"])
- // {
- // self.text=self.drawableTemplate[@"text"];
- // // self.text=[self.text stringByReplacingOccurrencesOfString:@"\r\n" withString:@"<br>"];
- //
- // }
- // else if([source isEqualToString:@"data"])
- // {
- // if([self.drawableTemplate[@"source_isexpression"] boolValue])
- // {
- // NSString *content = data[self.drawableTemplate[@"source"]];
- // NSString *pattern = @"\\$\\.\\{([\\s\\S]*?)\\}\\.\\$";
- // NSArray* matches=[TextUtils expression_varable:content regex:pattern];
- // // if (matches) {
- // // for (NSTextCheckingResult *match in matches) {
- // // for (int i = 0; i < match.numberOfRanges; ++i) {
- // // DebugLog(@"%d-> %@",i, [content substringWithRange:[match rangeAtIndex:i]]);
- // // }
- // // }
- // // }
- // if (matches)
- // {
- // self.text=content;
- // for (NSTextCheckingResult *match in matches)
- // {
- //
- // for (int i = 0; i < match.numberOfRanges/2; ++i) {
- // DebugLog(@"%d-> %@",i, [content substringWithRange:[match rangeAtIndex:i]]);
- // DebugLog(@"%d-> %@",i+1, [content substringWithRange:[match rangeAtIndex:i+1]]);
- //
- // self.text=[self.text stringByReplacingOccurrencesOfString:[content substringWithRange:[match rangeAtIndex:i]] withString:[NSString stringWithFormat:@"%@",data[[content substringWithRange:[match rangeAtIndex:i+1]]]]];
- // }
- // }
- // }
- // //self.text=content;
- //
- // }
- // else
- // {
- // self.text=data[self.drawableTemplate[@"source"]];
- // }
- // }
- //
- // if(self.text==nil)
- // self.text=@"";
- //
- //
- //
- //
- //
- //// if([self.text isEqualToString:@"www.newpacificdirect.com"])
- //// {
- //// int debug=0;
- //// }
- //
- //
- // bool bold = [self.drawableTemplate[@"bold"] boolValue];
- // bool italic = [self.drawableTemplate[@"italic"] boolValue];
- // NSString* font=self.drawableTemplate[@"font"];
- //
- // // [super flipContext:context ContextHeight:flip_height];
- // // super flipContext:context ContextHeight:<#(double)#>
- // CGFloat fontsize = [self.drawableTemplate[@"size"] doubleValue];
- //
- // //NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[title dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
- // //创建AttributeStringfdsa
- //
- // NSMutableAttributedString *string = nil;
- // // if([self.drawableTemplate[@"ishtml"] boolValue])
- // // {
- // // string=[[[NSAttributedString alloc] initWithData:[self.text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil] mutableCopy];
- // //
- // // }
- // // else
- // {
- // string=[[NSMutableAttributedString alloc] initWithString:self.text];
- // //创建字体以及字体大小
- // // CTFontRef ctfont = [self CreateFont:font size:fontsize bold:bold];//CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);
- // // // CTFontRef helveticaBold = CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);
- // // //字体,把helvetica 样式加到整个,string上
- // // [string addAttribute:(id)kCTFontAttributeName
- // // value:CFBridgingRelease(ctfont)
- // // range:NSMakeRange(0, [string length])];
- // //
- // // //字体样式 ,把helveticaBold 样式加到整个,string上
- // // // [string addAttribute:(id)kCTFontAttributeName
- // // // value:CFBridgingRelease(helveticaBold)
- // // // range:NSMakeRange(0, [string length])];
- // //
- // // //颜色,此处为黑色,你可以自己改颜色,[UIColor redColor]
- // // [string addAttribute:(id)kCTForegroundColorAttributeName
- // // value:(id)self.textColor.CGColor
- // // range:NSMakeRange(0, [string length])];
- //
- // string = [self richtext2attributedstring:string font:font size:fontsize bold:bold];
- //
- //
- // //设置字体间距
- // long number = self.characterSpace;
- // CFNumberRef num = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt8Type, &number);
- // [string addAttribute:(id)kCTKernAttributeName value:CFBridgingRelease(num) range:NSMakeRange(0, [string length])];
- // //CFRelease(num);
- //
- //
- // //创建文本对齐方式
- // CTTextAlignment alignment = self.textalignment;//对齐方
- // CTParagraphStyleSetting alignmentStyle;
- // alignmentStyle.spec=kCTParagraphStyleSpecifierAlignment;
- // alignmentStyle.valueSize=sizeof(alignment);
- // alignmentStyle.value=&alignment;
- //
- // //创建文本, 行间距
- // CGFloat lineSpace=self.lineSpace;//间距数据
- // CTParagraphStyleSetting lineSpaceStyle;
- // lineSpaceStyle.spec=kCTParagraphStyleSpecifierLineSpacing;
- // lineSpaceStyle.valueSize=sizeof(lineSpace);
- // lineSpaceStyle.value=&lineSpace;
- //
- // //设置 line break;
- // CTLineBreakMode linebreakmode = kCTLineBreakByTruncatingTail;
- // CTParagraphStyleSetting linebreakStyle;
- // linebreakStyle.spec = kCTParagraphStyleSpecifierLineBreakMode;
- // linebreakStyle.valueSize = sizeof(CGFloat);
- // linebreakStyle.value = &linebreakmode;
- //
- //
- // //设置 段落间距
- // CGFloat paragraph = self.paragraphSpace;
- // CTParagraphStyleSetting paragraphStyle;
- // paragraphStyle.spec = kCTParagraphStyleSpecifierParagraphSpacing;
- // paragraphStyle.valueSize = sizeof(CGFloat);
- // paragraphStyle.value = ¶graph;
- //
- //
- //
- //
- // //创建样式数组
- // CTParagraphStyleSetting settings[]={
- // alignmentStyle,lineSpaceStyle,paragraphStyle,linebreakStyle
- // };
- //
- // //设置样式
- // CTParagraphStyleRef paragraphStyle1 = CTParagraphStyleCreate(settings, sizeof(settings));
- //
- // //给字符串添加样式attribute
- // [string addAttribute:(id)kCTParagraphStyleAttributeName
- // value:CFBridgingRelease(paragraphStyle1)
- // range:NSMakeRange(0, [string length])];
- //
- // }
- //
- //
- //
- // // CGRect pdfrect=[self to_parent_rect:p_rect pos:self.rect offsetX:0 offsetY:0];
- // // [string drawInRect:pdfrect];
- //
- //
- // // [self.text drawInRect:pdfrect withAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:40],NSForegroundColorAttributeName : [UIColor redColor]}];
- //
- // // layout master
- // CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)string);
- // //计算文本绘制size ,这里300是文字宽度,你可以自己更改为247,但是要记得,在height 方法里的这个位置,也改为247
- // CGSize tmpSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0,0), NULL, CGSizeMake(self.rect.size.width-self.margin_left-self.margin_right, MAXFLOAT), NULL);
- // //创建textBoxSize以设置view的frame
- // CGSize textBoxSize = CGSizeMake((int)tmpSize.width + 1, (int)tmpSize.height + 1);
- // // DebugLog(@"textBoxSize0 == %f,%f,%f",textBoxSize.width,textBoxSize.height,textBoxSize.width / textBoxSize.height);
- // // self.frame = CGRectMake(0, 0, textBoxSize.width , textBoxSize.height);
- // // [string release];
- //
- // //- (void)drawRect:(CGRect)rect;代码
- //
- //
- //
- //
- // // CGMutablePathRef leftColumnPath = CGPathCreateMutable();
- //
- // CGRect parentrect = [self to_parent_rect:p_rect pos:self.rect offsetX:0 offsetY:0];
- //
- //
- // double height =0;
- // if(tmpSize.height<parentrect.size.height)
- // height=tmpSize.height;
- // else
- // if(expand)
- // {
- // height=tmpSize.height;
- // self.rect = CGRectMake(self.rect.origin.x, self.rect.origin.y, self.rect.size.width, height+self.margin_top+self.margin_bottom);
- // }
- // else
- // height=parentrect.size.height;
- //
- // CGRect rect=CGRectMake(parentrect.origin.x, parentrect.origin.y, parentrect.size.width, height);
- //
- // CGRect expand_rect=rect;
- //
- // // CGRect rect=[RAUtils rectAlign:parentrect rect:scalerect hAlign:self.hAlign vAlign:self.vAlign];
- // // rect=[RAUtils rectVAlign:parentrect rect:rect vAlign:self.vAlign];
- // //
- // // // CGRect pdfrect = [self to_pdf_rect:p_rect pos:self.rect contextHeight:flip_height];
- // //
- // // rect= [self parent_to_pdf_rect:rect contextHeight:flip_height];
- // // // pdfrect=CGRectMake(pdfrect.origin.x, flip_height-pdfrect.origin.y, pdfrect.size.width, pdfrect.size.height);
- // // CGPathAddRect(leftColumnPath, NULL,
- // // rect);
- // //
- // // CTFrameRef leftFrame = CTFramesetterCreateFrame(framesetter,
- // // CFRangeMake(0, 0),
- // // leftColumnPath, NULL);
- // //
- // // // DebugLog(@"textBoxSize1 == %f,%f",self.frame.size.width,self.frame.size.height);
- // // // flip the coordinate system
- // // // CGContextRef context = UIGraphicsGetCurrentContext();
- // //
- // //
- // // // CGContextClearRect(context, self.rect);
- // // // CGContextSetFillColorWithColor(context, [[UIColor whiteColor]CGColor]);
- // // // CGContextFillRect(context, CGRectMake(0, 0, self.rect.size.width, self.rect.size.height));
- // //
- // //
- // // CGContextSetTextMatrix(context, CGAffineTransformIdentity);
- // // // CGContextTranslateCTM(context, 0, self.rect.size.height);
- // // // CGContextScaleCTM(context, 1.0, -1.0);
- // //
- // // // draw
- // // CTFrameDraw(leftFrame, context);
- // //
- // //
- // // CFRelease(leftFrame);
- // // // cleanup
- // //
- // // CGPathRelease(leftColumnPath);
- // CFRelease(framesetter);
- //
- //
- // // return self.rect;
- // // [self DrawBound:context dataSource:data ParentRect:p_rect startX:x startY:y flipHeight:flip_height range:between_header_and_footer];
- // if(expand&&expand_rect.size.height>parentrect.size.height)
- // return expand_rect;
- // else
- // return parentrect;
- // // return CGPointMake(parentrect.origin.x+parentrect.size.width, parentrect.origin.y+parentrect.size.height);
- //
- // // [super restoreFlip:context ContextHeight:flip_height];
- // }
- //
- //
- //}
- //-(CTFontRef)CreateFont:(NSString*)name size:(double)size bold:(bool)bold
- //{
- //
- // if(name.length==0)
- // {
- // name=@"Helvetica";
- // // name=@"DejaVu Sans";
- // }
- // if(size==0)
- // {
- // size=10;
- // }
- // NSString* style = @"Regular";
- // if(bold)
- // style=@"Bold";
- //
- // //name=@"Courier";
- //
- // NSDictionary *fontAttributes =
- // [NSDictionary dictionaryWithObjectsAndKeys:
- // name, (NSString *)kCTFontFamilyNameAttribute,
- // style, (NSString *)kCTFontStyleNameAttribute,
- // [NSNumber numberWithFloat:size],
- // (NSString *)kCTFontSizeAttribute,
- // nil];
- // // Create a descriptor.
- // CFDictionaryRef cffontAttributes =(__bridge CFDictionaryRef)fontAttributes;
- // CTFontDescriptorRef descriptor =
- // CTFontDescriptorCreateWithAttributes(cffontAttributes);
- //
- // // CFBridgingRelease(cffontAttributes);
- //
- // // Create a font using the descriptor.
- // CTFontRef font = CTFontCreateWithFontDescriptor(descriptor, 0.0, NULL);
- // CFBridgingRelease(descriptor);
- //
- // return font;
- //
- // // if(bold)
- // // {
- // // CTFontRef font=CTFontCreateWithName((__bridge CFStringRef)name, size, NULL);
- // // CTFontRef font_bold =CTFontCreateCopyWithSymbolicTraits(font, 0.0, NULL, kCTFontBoldTrait, kCTFontBoldTrait);
- // // CFBridgingRelease(font);
- // // return font_bold;
- // // }
- // // return CTFontCreateWithName((__bridge CFStringRef)name, size, NULL);
- //}
- ////-(NSString*) QueryFontName:(NSString*)font
- ////{
- //// if(font==nil)
- //// {
- //// return @"Helvetica";
- //// }
- //// else if([font.lowercaseString isEqualToString:@"kalinga"])
- //// {
- //// return @"kalinga";
- //// }
- //// return @"Helvetica";
- ////}
- //-(NSMutableAttributedString*) richtext2attributedstring:(NSMutableAttributedString*)string font:(NSString*)font size:(double)size bold:(bool)bold
- //{
- // // UILabel* uilabel=[[UILabel alloc]init];
- // // uilabel.font=[UIFont fontWithName:font size:size];
- // // NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[self.text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
- // // uilabel.attributedText = attrStr;
- // // DebugLog(@"%@", attrStr);
- // // DebugLog(@"%@", uilabel.attributedText);
- //
- // CTFontRef ctfont = [self CreateFont:font size:size bold:bold];//CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);b
- //
- // //CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);
- // // CTFontRef helveticaBold = CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);
- // //字体,把helvetica 样式加到整个,string上
- // [string addAttribute:(id)kCTFontAttributeName
- // value:CFBridgingRelease(ctfont)
- // range:NSMakeRange(0, [string length])];
- //
- // //颜色,此处为黑色,你可以自己改颜色,[UIColor redColor]
- // [string addAttribute:(id)kCTForegroundColorAttributeName
- // value:(id)self.textColor.CGColor
- // range:NSMakeRange(0, [string length])];
- //
- //
- // if(!bold)
- // {
- // CTFontRef ctfont_bold = [self CreateFont:font size:size bold:true];
- // NSString* newstring= nil;
- // // NSString *content = string.string ;
- // NSString *pattern = @"\\<b\\>([\\s\\S]*?)\\<\\/b\\>";
- // // NSArray* matches=[TextUtils expression_varable:content regex:pattern];
- // // if (matches) {
- // // for (NSTextCheckingResult *match in matches) {
- // // for (int i = 0; i < match.numberOfRanges; ++i) {
- // // DebugLog(@"%d-> %@",i, [content substringWithRange:[match rangeAtIndex:i]]);
- // // }
- // // }
- // // }
- // NSTextCheckingResult * match=[TextUtils expression_findfistMatch:string.string regex:pattern];
- //
- // while(match)
- // {
- // //for (int i = 0; i < match.numberOfRanges/2; ++i)
- // {
- // int i=0;
- // DebugLog(@"%d->range with richtext label: %d,%d",i, [match rangeAtIndex:i].location,[match rangeAtIndex:i].length);
- // DebugLog(@"%d-> range of text: %d,%d ",i+1, [match rangeAtIndex:i+1].location,[match rangeAtIndex:i+1].length);
- //
- //
- // DebugLog(@"string length: %d",string.string.length);
- // [string addAttribute:(id)kCTFontAttributeName
- // value:(__bridge id _Nonnull)(ctfont_bold)
- // range:[match rangeAtIndex:i+1]];
- //
- // [string replaceCharactersInRange:NSMakeRange([match rangeAtIndex:i+1].location+[match rangeAtIndex:i+1].length, [match rangeAtIndex:i].location+[match rangeAtIndex:i].length-([match rangeAtIndex:i+1].location+[match rangeAtIndex:i+1].length)) withString:@""];
- // [string replaceCharactersInRange:NSMakeRange([match rangeAtIndex:i].location, [match rangeAtIndex:i+1].location-[match rangeAtIndex:i].location) withString:@""];
- //
- // DebugLog(@"string after replace: %@",string.string);
- // //newstring=[newstring stringByReplacingOccurrencesOfString:[content substringWithRange:[match rangeAtIndex:i]] withString:[content substringWithRange:[match rangeAtIndex:i+1]]];
- // match=[TextUtils expression_findfistMatch:string.string regex:pattern];
- // }
- // }
- // // if (matches)
- // // {
- // // newstring=content;
- // // for (NSTextCheckingResult *match in matches)
- // // {
- // //
- // // for (int i = 0; i < match.numberOfRanges/2; ++i)
- // // {
- // // DebugLog(@"%d-> %@",i, [content substringWithRange:[match rangeAtIndex:i]]);
- // // DebugLog(@"%d-> %@",i+1, [content substringWithRange:[match rangeAtIndex:i+1]]);
- // //
- // // [string addAttribute:(id)kCTFontAttributeName
- // // value:CFBridgingRelease(ctfont_bold)
- // // range:[match rangeAtIndex:i+1]];
- // //
- // // newstring=[newstring stringByReplacingOccurrencesOfString:[content substringWithRange:[match rangeAtIndex:i]] withString:[content substringWithRange:[match rangeAtIndex:i+1]]];
- // //
- // // }
- // // }
- // // }
- //
- //
- //
- // CFBridgingRelease(ctfont_bold);
- // }
- //
- //
- // return string;
- //}
- //-(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
- //{
- //
- //
- //
- //
- // NSString * source=self.drawableTemplate[@"source_type"];
- // if(source==nil)
- // source=@"const";
- // if([source isEqualToString:@"const"])
- // {
- // self.text=self.drawableTemplate[@"text"];
- // // self.text=[self.text stringByReplacingOccurrencesOfString:@"\r\n" withString:@"<br>"];
- //
- // }
- // else if([source isEqualToString:@"data"])
- // {
- // if([self.drawableTemplate[@"source_isexpression"] boolValue])
- // {
- // NSString *content = data[self.drawableTemplate[@"source"]];
- // NSString *pattern = @"\\$\\.\\{([\\s\\S]*?)\\}\\.\\$";
- // NSArray* matches=[TextUtils expression_varable:content regex:pattern];
- // // if (matches) {
- // // for (NSTextCheckingResult *match in matches) {
- // // for (int i = 0; i < match.numberOfRanges; ++i) {
- // // DebugLog(@"%d-> %@",i, [content substringWithRange:[match rangeAtIndex:i]]);
- // // }
- // // }
- // // }
- // if (matches)
- // {
- // self.text=content;
- // for (NSTextCheckingResult *match in matches)
- // {
- //
- // for (int i = 0; i < match.numberOfRanges/2; ++i) {
- // DebugLog(@"%d-> %@",i, [content substringWithRange:[match rangeAtIndex:i]]);
- // DebugLog(@"%d-> %@",i+1, [content substringWithRange:[match rangeAtIndex:i+1]]);
- //
- // self.text=[self.text stringByReplacingOccurrencesOfString:[content substringWithRange:[match rangeAtIndex:i]] withString:[NSString stringWithFormat:@"%@",data[[content substringWithRange:[match rangeAtIndex:i+1]]]]];
- // }
- // }
- // }
- // //self.text=content;
- //
- // }
- // else
- // {
- // self.text=data[self.drawableTemplate[@"source"]];
- // }
- // }
- //
- // if(self.text==nil)
- // self.text=@"";
- //
- //
- //
- //
- //
- //// if([self.text isEqualToString:@"www.newpacificdirect.com"])
- //// {
- //// int debug=0;
- //// }
- //
- //
- // bool bold = [self.drawableTemplate[@"bold"] boolValue];
- // bool italic = [self.drawableTemplate[@"italic"] boolValue];
- // NSString* font=self.drawableTemplate[@"font"];
- //
- // // [super flipContext:context ContextHeight:flip_height];
- // // super flipContext:context ContextHeight:<#(double)#>
- // CGFloat fontsize = [self.drawableTemplate[@"size"] doubleValue];
- //
- // //NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[title dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
- // //创建AttributeStringfdsa
- //
- // NSMutableAttributedString *string = nil;
- // // if([self.drawableTemplate[@"ishtml"] boolValue])
- // // {
- // // string=[[[NSAttributedString alloc] initWithData:[self.text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil] mutableCopy];
- // //
- // // }
- // // else
- //
- // string=[[NSMutableAttributedString alloc] initWithString:self.text];
- // //创建字体以及字体大小
- // // CTFontRef ctfont = [self CreateFont:font size:fontsize bold:bold];//CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);
- // // // CTFontRef helveticaBold = CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);
- // // //字体,把helvetica 样式加到整个,string上
- // // [string addAttribute:(id)kCTFontAttributeName
- // // value:CFBridgingRelease(ctfont)
- // // range:NSMakeRange(0, [string length])];
- // //
- // // //字体样式 ,把helveticaBold 样式加到整个,string上
- // // // [string addAttribute:(id)kCTFontAttributeName
- // // // value:CFBridgingRelease(helveticaBold)
- // // // range:NSMakeRange(0, [string length])];
- // //
- // // //颜色,此处为黑色,你可以自己改颜色,[UIColor redColor]
- // // [string addAttribute:(id)kCTForegroundColorAttributeName
- // // value:(id)self.textColor.CGColor
- // // range:NSMakeRange(0, [string length])];
- //
- // string = [self richtext2attributedstring:string font:font size:fontsize bold:bold];
- //
- //
- // //设置字体间距
- // long number = self.characterSpace;
- // CFNumberRef num = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt8Type, &number);
- // [string addAttribute:(id)kCTKernAttributeName value:CFBridgingRelease(num) range:NSMakeRange(0, [string length])];
- // //CFRelease(num);
- //
- //
- // //创建文本对齐方式
- // CTTextAlignment alignment = self.textalignment;//对齐方
- // CTParagraphStyleSetting alignmentStyle;
- // alignmentStyle.spec=kCTParagraphStyleSpecifierAlignment;
- // alignmentStyle.valueSize=sizeof(alignment);
- // alignmentStyle.value=&alignment;
- //
- // //创建文本, 行间距
- // CGFloat lineSpace=self.lineSpace;//间距数据
- // CTParagraphStyleSetting lineSpaceStyle;
- // lineSpaceStyle.spec=kCTParagraphStyleSpecifierLineSpacing;
- // lineSpaceStyle.valueSize=sizeof(lineSpace);
- // lineSpaceStyle.value=&lineSpace;
- //
- // //设置 line break;
- // CTLineBreakMode linebreakmode = kCTLineBreakByTruncatingTail;
- // CTParagraphStyleSetting linebreakStyle;
- // linebreakStyle.spec = kCTParagraphStyleSpecifierLineBreakMode;
- // linebreakStyle.valueSize = sizeof(CGFloat);
- // linebreakStyle.value = &linebreakmode;
- //
- //
- // //设置 段落间距
- // CGFloat paragraph = self.paragraphSpace;
- // CTParagraphStyleSetting paragraphStylesetting;
- // paragraphStylesetting.spec = kCTParagraphStyleSpecifierParagraphSpacing;
- // paragraphStylesetting.valueSize = sizeof(CGFloat);
- // paragraphStylesetting.value = ¶graph;
- //
- //
- //
- //
- // //创建样式数组
- // CTParagraphStyleSetting settings[]={
- // alignmentStyle,lineSpaceStyle,paragraphStylesetting,linebreakStyle
- // };
- //
- // //设置样式
- // CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(settings, sizeof(settings));
- //
- // //给字符串添加样式attribute
- // [string addAttribute:(id)kCTParagraphStyleAttributeName
- // value:CFBridgingRelease(paragraphStyle)
- // range:NSMakeRange(0, [string length])];
- //
- //
- //
- //
- //
- // // CGRect pdfrect=[self to_parent_rect:p_rect pos:self.rect offsetX:0 offsetY:0];
- // // [string drawInRect:pdfrect];
- //
- //
- // // [self.text drawInRect:pdfrect withAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:40],NSForegroundColorAttributeName : [UIColor redColor]}];
- //
- // // layout master
- // CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)string);
- // //计算文本绘制size ,这里300是文字宽度,你可以自己更改为247,但是要记得,在height 方法里的这个位置,也改为247
- // CGSize tmpSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0,0), NULL, CGSizeMake(self.rect.size.width-self.margin_left-self.margin_right, MAXFLOAT), NULL);
- // //创建textBoxSize以设置view的frame
- // CGSize textBoxSize = CGSizeMake((int)tmpSize.width + 1, (int)tmpSize.height + 1);
- // // DebugLog(@"textBoxSize0 == %f,%f,%f",textBoxSize.width,textBoxSize.height,textBoxSize.width / textBoxSize.height);
- // // self.frame = CGRectMake(0, 0, textBoxSize.width , textBoxSize.height);
- // // [string release];
- //
- // //- (void)drawRect:(CGRect)rect;代码
- //
- //
- //
- //
- // CGMutablePathRef leftColumnPath = CGPathCreateMutable();
- //
- // CGRect parentrect = [self to_parent_rect:p_rect pos:self.rect offsetX:0 offsetY:0];
- //
- // bool expand=[self.drawableTemplate[@"expand"] boolValue];
- // double height =0;
- // if(tmpSize.height<parentrect.size.height)
- // height=tmpSize.height;
- // else
- // if(expand)
- // {
- // height=tmpSize.height;
- // self.rect = CGRectMake(self.rect.origin.x, self.rect.origin.y, self.rect.size.width, height+self.margin_top+self.margin_bottom);
- // }
- // else
- // height=parentrect.size.height;
- //
- // CGRect rect=CGRectMake(parentrect.origin.x, parentrect.origin.y, parentrect.size.width, height);
- //
- // CGRect expand_rect=rect;
- //
- // // CGRect rect=[RAUtils rectAlign:parentrect rect:scalerect hAlign:self.hAlign vAlign:self.vAlign];
- // rect=[TextUtils rectVAlign:parentrect rect:rect vAlign:self.vAlign];
- //
- // // CGRect pdfrect = [self to_pdf_rect:p_rect pos:self.rect contextHeight:flip_height];
- //
- // rect= [self parent_to_pdf_rect:rect contextHeight:flip_height];
- // // pdfrect=CGRectMake(pdfrect.origin.x, flip_height-pdfrect.origin.y, pdfrect.size.width, pdfrect.size.height);
- // CGPathAddRect(leftColumnPath, NULL,
- // rect);
- //
- // CTFrameRef leftFrame = CTFramesetterCreateFrame(framesetter,
- // CFRangeMake(0, 0),
- // leftColumnPath, NULL);
- //
- // // DebugLog(@"textBoxSize1 == %f,%f",self.frame.size.width,self.frame.size.height);
- // // flip the coordinate system
- // // CGContextRef context = UIGraphicsGetCurrentContext();
- //
- //
- // // CGContextClearRect(context, self.rect);
- // // CGContextSetFillColorWithColor(context, [[UIColor whiteColor]CGColor]);
- // // CGContextFillRect(context, CGRectMake(0, 0, self.rect.size.width, self.rect.size.height));
- //
- //
- // CGContextSetTextMatrix(context, CGAffineTransformIdentity);
- // // CGContextTranslateCTM(context, 0, self.rect.size.height);
- // // CGContextScaleCTM(context, 1.0, -1.0);
- //
- // // draw
- // CTFrameDraw(leftFrame, context);
- //
- //
- // CFRelease(leftFrame);
- // // cleanup
- //
- // CGPathRelease(leftColumnPath);
- // CFRelease(framesetter);
- //
- //
- // // return self.rect;
- // [self DrawBound:context dataSource:data ParentRect:p_rect startX:x startY:y flipHeight:flip_height range:between_header_and_footer];
- // if(expand&&expand_rect.size.height>parentrect.size.height)
- // return expand_rect;
- // else
- // return parentrect;
- // // return CGPointMake(parentrect.origin.x+parentrect.size.width, parentrect.origin.y+parentrect.size.height);
- //
- // // [super restoreFlip:context ContextHeight:flip_height];
- //}
- //
- //
- //@end
|