Ticket #427: atsui-outer-stroke.diff
| File atsui-outer-stroke.diff, 1.7 KB (added by astrange, 4 years ago) |
|---|
-
Subtitles/SubATSUIRenderer.m
1001 1001 borderRect.size.height = ceil(borderRect.size.height); 1002 1002 1003 1003 CGContextFillRect(c, borderRect); 1004 } else if (textType == kTextLayerOutline) { 1005 CGContextSaveGState(c); 1006 CGContextSetTextDrawingMode(c, kCGTextClip); 1007 ATSUDrawText(layout, thisBreak, lineLen, RoundFixed(penX), RoundFixed(penY)); 1008 CGContextSetTextDrawingMode(c, kCGTextStroke); 1009 ATSUDrawText(layout, thisBreak, lineLen, RoundFixed(penX), RoundFixed(penY)); 1010 CGContextRestoreGState(c); 1004 1011 } else ATSUDrawText(layout, thisBreak, lineLen, RoundFixed(penX), RoundFixed(penY)); 1005 1012 } 1006 1013 … … 1070 1077 { 1071 1078 SubATSUISpanEx *firstSpanEx = ((SubRenderSpan*)[div->spans objectAtIndex:0])->ex; 1072 1079 BOOL endLayer = NO; 1073 1080 Fixed newPenY; 1081 1074 1082 if (div->styleLine->borderStyle == kSubBorderStyleNormal && firstSpanEx->shadowDist) { 1075 1083 if (!(div->render_complexity & renderManualShadows)) { 1076 1084 endLayer = YES; … … 1079 1087 } else DrawTextLines(c, layout, div, breakc, penX, penY, firstSpanEx, kTextLayerShadow); 1080 1088 } 1081 1089 1090 newPenY = DrawTextLines(c, layout, div, breakc, penX, penY, firstSpanEx, kTextLayerPrimary); 1082 1091 DrawTextLines(c, layout, div, breakc, penX, penY, firstSpanEx, kTextLayerOutline); 1083 penY = DrawTextLines(c, layout, div, breakc, penX, penY, firstSpanEx, kTextLayerPrimary); 1084 1092 1085 1093 if (endLayer) { 1086 1094 CGContextEndTransparencyLayer(c); 1087 1095 CGContextSetShadowWithColor(c, CGSizeMake(0,0), 0, NULL); 1088 1096 } 1089 1097 1090 return penY;1098 return newPenY; 1091 1099 } 1092 1100 1093 1101 #pragma mark Main Renderer Function
