Changeset 851
- Timestamp:
- 04/19/08 01:27:50 (6 months ago)
- Files:
-
- trunk/MatroskaImportPrivate.cpp (modified) (1 diff)
- trunk/Subtitles/SubATSUIRenderer.m (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/MatroskaImportPrivate.cpp
r850 r851 883 883 884 884 for (int i = 0; i < tracks.size(); i++) { 885 if (tracks[i].type == track_subtitle) { 885 MatroskaTrack *track = &tracks[i]; 886 887 if (track->type == track_subtitle) { 886 888 Handle subtitleDescriptionExt; 887 OSErr err = GetImageDescriptionExtension((ImageDescriptionHandle)track s[i].desc, &subtitleDescriptionExt, kSubFormatSSA, 0);889 OSErr err = GetImageDescriptionExtension((ImageDescriptionHandle)track->desc, &subtitleDescriptionExt, kSubFormatSSA, 1); 888 890 889 891 if (err || !subtitleDescriptionExt) continue; trunk/Subtitles/SubATSUIRenderer.m
r850 r851 261 261 [context release]; 262 262 free(ubuffer); 263 CGColorSpaceRelease(srgbCSpace); 263 264 UCDisposeTextBreakLocator(&breakLocator); 264 265 ATSUDisposeTextLayout(layout); … … 286 287 } 287 288 288 static ATSFontRef gHelveticaATSRef = -1; 289 static ATSUFontID gHelveticaATSUID; 290 291 static ATSUFontID GetFontIDForSSAName(NSString *name, ATSFontRef *_fontRef) 289 static ATSUFontID GetFontIDForSSAName(NSString *name) 292 290 { 293 291 ByteCount nlen = [name length]; 294 292 unichar *uname = (unichar*)[name cStringUsingEncoding:NSUnicodeStringEncoding]; 295 296 ATSFontRef fontRef; 293 static NSMutableDictionary *fontIDCache = nil; 294 295 if (!fontIDCache) fontIDCache = [[NSMutableDictionary alloc] init]; 296 297 NSNumber *idN = [fontIDCache objectForKey:name]; 298 299 if (idN) return [idN intValue]; 300 297 301 ATSUFontID font; 298 302 … … 300 304 301 305 if (font == kATSUInvalidFontID) { 302 fontRef = ATSFontFindFromName((CFStringRef)name,kATSOptionFlagsDefault); 303 font = FMGetFontFromATSFontRef(fontRef); 306 font = ATSFontFindFromName((CFStringRef)name,kATSOptionFlagsDefault); 304 307 305 308 if (font == kATSUInvalidFontID) { 306 if (gHelveticaATSRef == -1) { 307 gHelveticaATSRef = ATSFontFindFromName((CFStringRef)@"Helvetica",kATSOptionFlagsDefault); 308 gHelveticaATSUID = FMGetFontFromATSFontRef(fontRef); 309 } 309 static ATSUFontID helveticaID = kATSUInvalidFontID; 310 310 311 fontRef = gHelveticaATSRef; 312 font = gHelveticaATSUID; 311 if (helveticaID == kATSUInvalidFontID) 312 ATSFontFindFromName((CFStringRef)@"Helvetica",kATSOptionFlagsDefault); 313 314 font = helveticaID; 313 315 } 314 } else fontRef = FMGetATSFontRefFromFont(font);315 316 *_fontRef = fontRef;317 316 } 317 318 [fontIDCache setValue:[NSNumber numberWithInt:font] forKey:name]; 319 318 320 return font; 319 321 } … … 324 326 const ByteCount sizes[] = {sizeof(ATSStyleRenderingOptions), sizeof(Fixed), sizeof(Boolean), sizeof(Boolean), sizeof(Boolean), sizeof(Boolean), sizeof(ATSUFontID)}; 325 327 326 ATS FontRef fontRef;327 ATS UFontID font = GetFontIDForSSAName(s->fontname, &fontRef);328 ATSUFontID font = GetFontIDForSSAName(s->fontname); 329 ATSFontRef fontRef = font; 328 330 ATSStyleRenderingOptions opt = kATSStyleApplyAntiAliasing; 329 331 Fixed size; … … 433 435 sv(); 434 436 { 435 ATSFontRef fontRef; 436 ATSUFontID font = GetFontIDForSSAName(sval, &fontRef); 437 ATSUFontID font = GetFontIDForSSAName(sval); 437 438 438 439 if (font) SetATSUStyleOther(spanEx->style, kATSUFontTag, sizeof(ATSUFontID), &font); … … 1111 1112 : SubInitNonSSA(640, 480); 1112 1113 1114 /* 1113 1115 CGColorSpaceRef csp = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); 1114 1116 void *buf = malloc(640 * 480 * 4); … … 1123 1125 for (i = 0; i < nstyles; i++) { 1124 1126 SubStyle *sty = [styles objectAtIndex:i]; 1125 NSString *line = [NSString stringWithFormat:@"0,0,%@,,0,0,0,, to Be continued", sty->name];1127 NSString *line = [NSString stringWithFormat:@"0,0,%@,,0,0,0,,{\fs1}If you are seeing this message, your player doesn't fully support the formatted subtitle track. It is recommended you switch to the unformatted track.", sty->name]; 1126 1128 SubRenderPacket(s, c, (CFStringRef)line, 640, 480); 1127 1129 } … … 1131 1133 free(buf); 1132 1134 CGColorSpaceRelease(csp); 1135 */ 1136 1137 SubDisposeRenderer(s); 1133 1138 [pool release]; 1134 1139 }
