Changeset 1163
- Timestamp:
- 10/15/09 23:13:34 (11 months ago)
- Files:
-
- 1 modified
-
trunk/Subtitles/SubATSUIRenderer.m (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Subtitles/SubATSUIRenderer.m
r1140 r1163 633 633 634 634 // XXX see comment for GetTypographicRectangleForLayout 635 static ATSUTextMeasurement GetLineHeight(ATSUTextLayout layout, UniCharArrayOffset lpos )636 { 637 ATSUTextMeasurement ascent , descent;635 static ATSUTextMeasurement GetLineHeight(ATSUTextLayout layout, UniCharArrayOffset lpos, Boolean includeDescent) 636 { 637 ATSUTextMeasurement ascent = 0, descent = 0; 638 638 639 639 ATSUGetLineControl(layout, lpos, kATSULineAscentTag, sizeof(ATSUTextMeasurement), &ascent, NULL); 640 ATSUGetLineControl(layout, lpos, kATSULineDescentTag, sizeof(ATSUTextMeasurement), &descent, NULL);640 if (includeDescent) ATSUGetLineControl(layout, lpos, kATSULineDescentTag, sizeof(ATSUTextMeasurement), &descent, NULL); 641 641 642 642 return ascent + descent; … … 667 667 ATSUGetGlyphBounds(layout, 0, baseY, breaks[i], end-breaks[i], kATSUseDeviceOrigins, 1, &trap, &trapCount); 668 668 669 baseY += GetLineHeight(layout, breaks[i] ) + extraHeight;669 baseY += GetLineHeight(layout, breaks[i], YES) + extraHeight; 670 670 671 671 rect.bottom = MAX(trap.lowerLeft.y, trap.lowerRight.y); … … 716 716 CGContextStrokeRect(c, CGRectMake(FixedToFloat(penX) + pixRect.left, FixedToFloat(penY) + pixRect.top, pixRect.right - pixRect.left, pixRect.bottom - pixRect.top)); 717 717 718 penY += GetLineHeight(layout, breaks[i] ) + extraHeight;718 penY += GetLineHeight(layout, breaks[i], YES) + extraHeight; 719 719 } 720 720 } … … 733 733 ATSUMeasureTextImage(layout, breaks[i], end-breaks[i], 0, baseY, &rect); 734 734 735 baseY += GetLineHeight(layout, breaks[i] ) + extraHeight;735 baseY += GetLineHeight(layout, breaks[i], YES) + extraHeight; 736 736 737 737 if (i == breakCount) largeRect = rect; … … 1059 1059 } 1060 1060 1061 penY += breakc.direction * (GetLineHeight(layout, thisBreak ) + FloatToFixed(extraHeight));1061 penY += breakc.direction * (GetLineHeight(layout, thisBreak, YES) + FloatToFixed(extraHeight)); 1062 1062 } 1063 1063 … … 1182 1182 case kSubAlignmentTop: 1183 1183 if (!topPen || resetPens) { 1184 penY = FloatToFixed(NSMaxY(marginRect)) - GetLineHeight(layout, kATSUFromTextBeginning );1184 penY = FloatToFixed(NSMaxY(marginRect)) - GetLineHeight(layout, kATSUFromTextBeginning, NO); 1185 1185 } else penY = topPen; 1186 1186
