| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682 |
- //
- // TextDrawable.m
- // pdftest
- //
- // Created by Ray on 10/12/16.
- // Copyright © 2016 United Software Applications, Inc. All rights reserved.
- //
- #import "TextDrawable.h"
- #import "const.h"
- #import <CoreText/CoreText.h>
- #import "TextUtils.h"
- #import "RAUtils.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: [[RAUtils copyDict:drawableTemplate] mutableCopy]];
- // [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
- {
-
-
-
-
- DebugLog(@"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"];
-
- DebugLog(@"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;
- DebugLog(@"textdrawable text:%@",self.text);
- DebugLog(@"string %@",string);
- // DebugLog(@"compute size %@", NSStringFromCGSize(CGSizeMake(self.rect.size.width-self.margin_left-self.margin_right, MAXFLOAT)) );
- // DebugLog(@"tmpSize %@", NSStringFromCGSize(tmpSize) );
- // DebugLog(@"p_rect %@", NSStringFromCGRect(p_rect) );
- // DebugLog(@"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;
- DebugLog(@"textdrawable text:%@",self.text);
- DebugLog(@"tmpSize %@", NSStringFromCGSize(tmpSize) );
- DebugLog(@"p_rect %@", NSStringFromCGRect(p_rect) );
- DebugLog(@"self.rect %@", NSStringFromCGRect(self.rect) );
-
- DebugLog(@"expand %@", expand?@"true":@"false" );
- DebugLog(@"height %f", height );
- DebugLog(@"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;
- DebugLog(@"textdrawable text:%@",self.text);
- DebugLog(@"tmpSize %@", NSStringFromCGSize(tmpSize) );
- DebugLog(@"p_rect %@", NSStringFromCGRect(p_rect) );
- DebugLog(@"self.rect %@", NSStringFromCGRect(self.rect) );
-
- DebugLog(@"expand %@", expand?@"true":@"false" );
- DebugLog(@"height %f", height );
- DebugLog(@"expand_rect %@", NSStringFromCGRect(expand_rect) );
-
- DebugLog(@"rect %@", NSStringFromCGRect(rect) );
- DebugLog(@"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
|