Contents of /trunk/mozilla-thunderbird/patches/mozilla-thunderbird-0.9-4ft2.patch
Parent Directory | Revision Log
Revision 153 -
(show annotations)
(download)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 22360 byte(s)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 22360 byte(s)
-import
1 | This patch is from |
2 | https://bugzilla.mozilla.org/show_bug.cgi?id=234035#c65 to enable |
3 | linking against freetype-2.1.8+. It disables the experimental |
4 | freetype caching. I modified this patch slightly to apply to 1.7.3; |
5 | some things had moved around in the files since the original patch. |
6 | |
7 | Note this is the same patch as we apply to mozilla-firefox-1.0 |
8 | |
9 | 15 Nov 2004 agriffis |
10 | |
11 | --- gfx/idl/nsIFreeType2.idl.agriffis 2004-04-15 21:09:33.000000000 -0400 |
12 | +++ gfx/idl/nsIFreeType2.idl 2004-11-15 13:29:05.120343408 -0500 |
13 | @@ -98,8 +98,6 @@ |
14 | { |
15 | |
16 | readonly attribute FT_Library library; |
17 | - readonly attribute FTC_Manager FTCacheManager; |
18 | - readonly attribute FTC_Image_Cache ImageCache; |
19 | |
20 | void doneFace(in FT_Face face); |
21 | void doneFreeType(in FT_Library lib); |
22 | @@ -114,17 +112,8 @@ |
23 | in FT_Long face_num, out FT_Face face); |
24 | void outlineDecompose(in FT_Outline_p outline, |
25 | in const_FT_Outline_Funcs_p funcs, in voidPtr p); |
26 | + void setPixelSizes(in FT_Face face, in FT_UInt width, in FT_UInt height); |
27 | void setCharmap(in FT_Face face, in FT_CharMap charmap); |
28 | - void imageCacheLookup(in FTC_Image_Cache cache, in FTC_Image_Desc_p desc, |
29 | - in FT_UInt gindex, out FT_Glyph glyph); |
30 | - void managerLookupSize(in FTC_Manager manager, in FTC_Font font, |
31 | - out FT_Face face, out FT_Size size); |
32 | - void managerDone(in FTC_Manager manager); |
33 | - void managerNew(in FT_Library lib, in FT_UInt max_faces, |
34 | - in FT_UInt max_sizes, in FT_ULong max_bytes, |
35 | - in FTC_Face_Requester requester, in FT_Pointer req_data, |
36 | - out FTC_Manager manager); |
37 | - void imageCacheNew(in FTC_Manager manager, out FTC_Image_Cache cache); |
38 | /* #ifdef MOZ_SVG */ |
39 | void glyphTransform(in FT_Glyph glyph, in FT_Matrix_p matrix, |
40 | in FT_Vector_p delta); |
41 | --- gfx/src/ps/nsFontMetricsPS.h.agriffis 2003-04-22 12:25:09.000000000 -0400 |
42 | +++ gfx/src/ps/nsFontMetricsPS.h 2004-11-15 13:37:58.431267824 -0500 |
43 | @@ -320,7 +320,8 @@ |
44 | nsCOMPtr<nsITrueTypeFontCatalogEntry> mFaceID; |
45 | nsCOMPtr<nsIFreeType2> mFt2; |
46 | PRUint16 mPixelSize; |
47 | - FTC_Image_Desc mImageDesc; |
48 | + FT_Face mFace; |
49 | + FT_Library mFreeTypeLibrary; |
50 | |
51 | |
52 | static PRBool AddUserPref(nsIAtom *aLang, const nsFont& aFont, |
53 | @@ -363,7 +364,8 @@ |
54 | protected: |
55 | nsCOMPtr<nsITrueTypeFontCatalogEntry> mEntry; |
56 | nsCOMPtr<nsIFreeType2> mFt2; |
57 | - FTC_Image_Desc mImageDesc; |
58 | + FT_Face mFace; |
59 | + FT_Library mFreeTypeLibrary; |
60 | }; |
61 | #endif |
62 | |
63 | --- gfx/src/ps/nsFontMetricsPS.cpp.agriffis 2004-02-04 20:57:05.000000000 -0500 |
64 | +++ gfx/src/ps/nsFontMetricsPS.cpp 2004-11-15 13:29:05.123342952 -0500 |
65 | @@ -1141,21 +1141,26 @@ |
66 | |
67 | mPixelSize = NSToIntRound(app2dev * mFont->size); |
68 | |
69 | - mImageDesc.font.face_id = (void*)mEntry; |
70 | - mImageDesc.font.pix_width = mPixelSize; |
71 | - mImageDesc.font.pix_height = mPixelSize; |
72 | - mImageDesc.image_type = 0; |
73 | - |
74 | nsresult rv; |
75 | mFt2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv); |
76 | if (NS_FAILED(rv)) { |
77 | + NS_ERROR("failed to get ft2 service"); |
78 | + return NS_ERROR_FAILURE; |
79 | + } |
80 | + |
81 | + if (NS_FAILED(mFt2->GetLibrary(&mFreeTypeLibrary))) { |
82 | + NS_ERROR("failed to get ft2 library"); |
83 | return NS_ERROR_FAILURE; |
84 | } |
85 | + |
86 | + mFace = nsnull; |
87 | return NS_OK; |
88 | } |
89 | |
90 | nsFontPSFreeType::~nsFontPSFreeType() |
91 | { |
92 | + if (mFace) |
93 | + mFt2->DoneFace(mFace); |
94 | mEntry = nsnull; |
95 | } |
96 | |
97 | @@ -1180,32 +1185,26 @@ |
98 | nscoord |
99 | nsFontPSFreeType::GetWidth(const PRUnichar* aString, PRUint32 aLength) |
100 | { |
101 | - FT_UInt glyph_index; |
102 | - FT_Glyph glyph; |
103 | - double origin_x = 0; |
104 | - |
105 | // get the face/size from the FreeType cache |
106 | FT_Face face = getFTFace(); |
107 | NS_ASSERTION(face, "failed to get face/size"); |
108 | if (!face) |
109 | return 0; |
110 | |
111 | - FTC_Image_Cache iCache; |
112 | - nsresult rv = mFt2->GetImageCache(&iCache); |
113 | - if (NS_FAILED(rv)) { |
114 | - NS_ERROR("Failed to get Image Cache"); |
115 | - return 0; |
116 | - } |
117 | + FT_UInt glyph_index; |
118 | + FT_Glyph glyph; |
119 | + double origin_x = 0; |
120 | |
121 | + // XXX : we might need some caching here |
122 | for (PRUint32 i=0; i<aLength; i++) { |
123 | - mFt2->GetCharIndex((FT_Face)face, aString[i], &glyph_index); |
124 | - nsresult rv = mFt2->ImageCacheLookup(iCache, &mImageDesc, |
125 | - glyph_index, &glyph); |
126 | - if (NS_FAILED(rv)) { |
127 | + mFt2->GetCharIndex(face, aString[i], &glyph_index); |
128 | + if (NS_FAILED(mFt2->LoadGlyph(face, glyph_index, FT_LOAD_DEFAULT)) || |
129 | + NS_FAILED(mFt2->GetGlyph(face->glyph, &glyph))) { |
130 | origin_x += FT_REG_TO_16_16(face->size->metrics.x_ppem/2 + 2); |
131 | continue; |
132 | } |
133 | origin_x += glyph->advance.x; |
134 | + mFt2->DoneGlyph(glyph); |
135 | } |
136 | |
137 | NS_ENSURE_TRUE(mFontMetrics, 0); |
138 | @@ -1224,16 +1223,26 @@ |
139 | FT_Face |
140 | nsFontPSFreeType::getFTFace() |
141 | { |
142 | - FT_Face face = nsnull; |
143 | - |
144 | - FTC_Manager cManager; |
145 | - mFt2->GetFTCacheManager(&cManager); |
146 | - nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font, |
147 | - &face, nsnull); |
148 | + if (mFace) return mFace; |
149 | + |
150 | + nsCAutoString fileName; |
151 | + PRInt16 faceIndex; |
152 | + mEntry->GetFileName(fileName); |
153 | + mEntry->GetFaceIndex(&faceIndex); |
154 | + |
155 | + nsresult rv = |
156 | + mFt2->NewFace(mFreeTypeLibrary, fileName.get(), faceIndex, &mFace); |
157 | + |
158 | NS_ASSERTION(rv==0, "failed to get face/size"); |
159 | - if (rv) |
160 | - return nsnull; |
161 | - return face; |
162 | + if (NS_FAILED(rv)) { |
163 | + return nsnull; |
164 | + } |
165 | + |
166 | + if (NS_FAILED(mFt2->SetPixelSizes(mFace, mPixelSize, 0))) { |
167 | + return nsnull; |
168 | + } |
169 | + |
170 | + return mFace; |
171 | } |
172 | |
173 | nscoord |
174 | @@ -1618,26 +1627,23 @@ |
175 | |
176 | void nsFT2Type8Generator::GeneratePSFont(FILE* aFile) |
177 | { |
178 | - nsCAutoString fontName, styleName; |
179 | - mEntry->GetFamilyName(fontName); |
180 | - mEntry->GetStyleName(styleName); |
181 | - |
182 | - mImageDesc.font.face_id = (void*)mEntry; |
183 | - // TT glyph has no relation to size |
184 | - mImageDesc.font.pix_width = 16; |
185 | - mImageDesc.font.pix_height = 16; |
186 | - mImageDesc.image_type = 0; |
187 | - FT_Face face = nsnull; |
188 | - FTC_Manager cManager; |
189 | - mFt2->GetFTCacheManager(&cManager); |
190 | - nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font, |
191 | - &face, nsnull); |
192 | - if (NS_FAILED(rv)) |
193 | - return; |
194 | + if (mFace == nsnull) { |
195 | + nsCAutoString fileName; |
196 | + PRInt16 faceIndex; |
197 | + |
198 | + mEntry->GetFileName(fileName); |
199 | + mEntry->GetFaceIndex(&faceIndex); |
200 | + if (NS_FAILED(mFt2-> |
201 | + NewFace(mFreeTypeLibrary, fileName.get(), faceIndex, &mFace))) { |
202 | + return; |
203 | + } |
204 | + NS_ASSERTION(mFace != nsnull, "mFace is null"); |
205 | + } |
206 | + |
207 | |
208 | int wmode = 0; |
209 | if (!mSubset.IsEmpty()) |
210 | - FT2SubsetToType8(face, mSubset.get(), mSubset.Length(), wmode, aFile); |
211 | + FT2SubsetToType8(mFace, mSubset.get(), mSubset.Length(), wmode, aFile); |
212 | } |
213 | #endif //MOZ_ENABLE_FREETYPE2 |
214 | |
215 | --- gfx/src/x11shared/nsFontFreeType.cpp.agriffis 2003-12-25 03:24:52.000000000 -0500 |
216 | +++ gfx/src/x11shared/nsFontFreeType.cpp 2004-11-15 13:29:05.125342648 -0500 |
217 | @@ -173,15 +173,22 @@ |
218 | FT_Face |
219 | nsFreeTypeFont::getFTFace() |
220 | { |
221 | - FT_Face face = nsnull; |
222 | - FTC_Manager mgr; |
223 | + if (mFace) return mFace; |
224 | + |
225 | + nsCAutoString fileName; |
226 | + PRInt16 faceIndex; |
227 | + mFaceID->GetFileName(fileName); |
228 | + mFaceID->GetFaceIndex(&faceIndex); |
229 | + |
230 | nsresult rv; |
231 | - mFt2->GetFTCacheManager(&mgr); |
232 | - rv = mFt2->ManagerLookupSize(mgr, &mImageDesc.font, &face, nsnull); |
233 | + rv = mFt2->NewFace(mFreeTypeLibrary, fileName.get(), faceIndex, &mFace); |
234 | NS_ASSERTION(NS_SUCCEEDED(rv), "failed to get face/size"); |
235 | if (NS_FAILED(rv)) |
236 | return nsnull; |
237 | - return face; |
238 | + rv = mFt2->SetPixelSizes(mFace, mPixelSize, 0); |
239 | + if (NS_FAILED(rv)) |
240 | + return nsnull; |
241 | + return mFace; |
242 | } |
243 | |
244 | nsFreeTypeFont::nsFreeTypeFont(nsITrueTypeFontCatalogEntry *aFaceID, |
245 | @@ -191,21 +198,20 @@ |
246 | PRBool embedded_bimap = PR_FALSE; |
247 | mFaceID = aFaceID; |
248 | mPixelSize = aPixelSize; |
249 | - mImageDesc.font.face_id = (void*)mFaceID; |
250 | - mImageDesc.font.pix_width = aPixelSize; |
251 | - mImageDesc.font.pix_height = aPixelSize; |
252 | - mImageDesc.image_type = 0; |
253 | +//mLoadFlag = FT_LOAD_RENDER; |
254 | + mLoadFlag = 0; |
255 | + mFace = nsnull; |
256 | |
257 | if (aPixelSize < nsFreeType2::gAntiAliasMinimum) { |
258 | - mImageDesc.image_type |= ftc_image_mono; |
259 | + mLoadFlag |= FT_LOAD_MONOCHROME; |
260 | anti_alias = PR_FALSE; |
261 | } |
262 | |
263 | if (nsFreeType2::gFreeType2Autohinted) |
264 | - mImageDesc.image_type |= ftc_image_flag_autohinted; |
265 | + mLoadFlag |= FT_LOAD_FORCE_AUTOHINT; |
266 | |
267 | if (nsFreeType2::gFreeType2Unhinted) |
268 | - mImageDesc.image_type |= ftc_image_flag_unhinted; |
269 | + mLoadFlag |= FT_LOAD_NO_HINTING; |
270 | |
271 | PRUint32 num_embedded_bitmaps, i; |
272 | PRInt32* embedded_bitmapheights; |
273 | @@ -218,7 +224,7 @@ |
274 | if (embedded_bitmapheights[i] == aPixelSize) { |
275 | embedded_bimap = PR_TRUE; |
276 | // unhinted must be set for embedded bitmaps to be used |
277 | - mImageDesc.image_type |= ftc_image_flag_unhinted; |
278 | + mLoadFlag |= FT_LOAD_NO_HINTING; |
279 | break; |
280 | } |
281 | } |
282 | @@ -230,6 +236,11 @@ |
283 | mFt2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv); |
284 | NS_ASSERTION(NS_SUCCEEDED(rv), "failed to find FreeType routines"); |
285 | |
286 | + if (mFt2) { |
287 | + rv = mFt2->GetLibrary(&mFreeTypeLibrary); |
288 | + NS_ASSERTION(NS_SUCCEEDED(rv), "failed to find FreeType library"); |
289 | + } |
290 | + |
291 | FREETYPE_FONT_PRINTF(("anti_alias=%d, embedded_bitmap=%d, " |
292 | "AutoHinted=%d, gFreeType2Unhinted = %d, " |
293 | "size=%dpx, \"%s\"", |
294 | @@ -288,8 +299,6 @@ |
295 | PRInt32* aDescent, |
296 | PRInt32* aWidth) |
297 | { |
298 | - nsresult rv; |
299 | - |
300 | *aLeftBearing = 0; |
301 | *aRightBearing = 0; |
302 | *aAscent = 0; |
303 | @@ -312,11 +321,6 @@ |
304 | if (!face) |
305 | return NS_ERROR_FAILURE; |
306 | |
307 | - FTC_Image_Cache icache; |
308 | - mFt2->GetImageCache(&icache); |
309 | - if (!icache) |
310 | - return NS_ERROR_FAILURE; |
311 | - |
312 | // get the text size |
313 | PRUint32 i, extraSurrogateLength; |
314 | for (i=0; i<aLength; i+=1+extraSurrogateLength) { |
315 | @@ -337,16 +341,17 @@ |
316 | } |
317 | mFt2->GetCharIndex(face, code_point, &glyph_index); |
318 | |
319 | - //NS_ASSERTION(glyph_index,"failed to get glyph"); |
320 | - if (glyph_index) { |
321 | - rv = mFt2->ImageCacheLookup(icache, &mImageDesc, glyph_index, &glyph); |
322 | - NS_ASSERTION(NS_SUCCEEDED(rv),"error loading glyph"); |
323 | - } |
324 | - if ((glyph_index) && (NS_SUCCEEDED(rv))) { |
325 | + // XXX : we need some caching here |
326 | + if (glyph_index && |
327 | + NS_SUCCEEDED(mFt2->LoadGlyph(face, glyph_index, mLoadFlag)) && |
328 | +// NS_SUCCEEDED(mFt2->LoadGlyph(face, glyph_index, FT_LOAD_DEFAULT)) && |
329 | + NS_SUCCEEDED(mFt2->GetGlyph(face->glyph, &glyph))) { |
330 | mFt2->GlyphGetCBox(glyph, ft_glyph_bbox_pixels, &glyph_bbox); |
331 | advance = FT_16_16_TO_REG(glyph->advance.x); |
332 | + mFt2->DoneGlyph(glyph); |
333 | } |
334 | else { |
335 | + NS_ERROR("failed to get or load glyph"); |
336 | // allocate space to draw an empty box in |
337 | GetFallbackGlyphMetrics(&glyph_bbox, face); |
338 | advance = glyph_bbox.xMax + 1; |
339 | @@ -401,11 +406,6 @@ |
340 | if (!face) |
341 | return 0; |
342 | |
343 | - FTC_Image_Cache icache; |
344 | - mFt2->GetImageCache(&icache); |
345 | - if (!icache) |
346 | - return 0; |
347 | - |
348 | PRUint32 i, extraSurrogateLength; |
349 | for (i=0; i<aLength; i+=1+extraSurrogateLength) { |
350 | extraSurrogateLength=0; |
351 | @@ -418,15 +418,18 @@ |
352 | // skip aString[i+1], it is already used as low surrogate |
353 | extraSurrogateLength = 1; |
354 | } |
355 | + |
356 | + // XXX : we need some caching here |
357 | mFt2->GetCharIndex((FT_Face)face, code_point, &glyph_index); |
358 | - nsresult rv; |
359 | - rv = mFt2->ImageCacheLookup(icache, &mImageDesc, glyph_index, &glyph); |
360 | - NS_ASSERTION(NS_SUCCEEDED(rv),"error loading glyph"); |
361 | - if (NS_FAILED(rv)) { |
362 | + if (NS_FAILED(mFt2->LoadGlyph(face, glyph_index, mLoadFlag)) || |
363 | +// if (NS_FAILED(mFt2->LoadGlyph(face, glyph_index, FT_LOAD_DEFAULT)) || |
364 | + NS_FAILED(mFt2->GetGlyph(face->glyph, &glyph))) { |
365 | + NS_ERROR("error loading glyph"); |
366 | origin_x += face->size->metrics.x_ppem/2 + 2; |
367 | continue; |
368 | } |
369 | origin_x += FT_16_16_TO_REG(glyph->advance.x); |
370 | + mFt2->DoneGlyph(glyph); |
371 | } |
372 | |
373 | return origin_x; |
374 | @@ -723,11 +726,6 @@ |
375 | if (y%4==0) (*blendPixelFunc)(sub_image, y, ascent-1, black, 255/2); |
376 | #endif |
377 | |
378 | - FTC_Image_Cache icache; |
379 | - mFt2->GetImageCache(&icache); |
380 | - if (!icache) |
381 | - return 0; |
382 | - |
383 | // |
384 | // Get aa glyphs and blend with background |
385 | // |
386 | @@ -736,7 +734,6 @@ |
387 | for (i=0; i<aLength; i+=1+extraSurrogateLength) { |
388 | FT_UInt glyph_index; |
389 | FT_Glyph glyph; |
390 | - nsresult rv; |
391 | FT_BBox glyph_bbox; |
392 | FT_ULong code_point = aString[i]; |
393 | extraSurrogateLength = 0; |
394 | @@ -750,11 +747,12 @@ |
395 | extraSurrogateLength = 1; |
396 | } |
397 | |
398 | + // XXX : we need some caching here |
399 | mFt2->GetCharIndex(face, code_point, &glyph_index); |
400 | - if (glyph_index) { |
401 | - rv = mFt2->ImageCacheLookup(icache, &mImageDesc, glyph_index, &glyph); |
402 | - } |
403 | - if ((glyph_index) && (NS_SUCCEEDED(rv))) { |
404 | + if (glyph_index && |
405 | + NS_SUCCEEDED(mFt2->LoadGlyph(face, glyph_index, mLoadFlag)) && |
406 | +// NS_SUCCEEDED(mFt2->LoadGlyph(face, glyph_index, FT_LOAD_DEFAULT)) && |
407 | + NS_SUCCEEDED(mFt2->GetGlyph(face->glyph, &glyph))) { |
408 | mFt2->GlyphGetCBox(glyph, ft_glyph_bbox_pixels, &glyph_bbox); |
409 | } |
410 | else { |
411 | @@ -775,13 +773,26 @@ |
412 | continue; |
413 | } |
414 | |
415 | - FT_BitmapGlyph slot = (FT_BitmapGlyph)glyph; |
416 | + FT_BitmapGlyph slot; |
417 | + |
418 | + if (glyph->format != FT_GLYPH_FORMAT_BITMAP) |
419 | + { |
420 | + if (mFt2->GlyphToBitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1)) { |
421 | + NS_ERROR("failed to convert outline to bitmap "); |
422 | + XDestroyImage(sub_image); |
423 | + mFt2->DoneGlyph(glyph); |
424 | + return 0; |
425 | + } |
426 | + } |
427 | + |
428 | + slot = (FT_BitmapGlyph)glyph; |
429 | nsAntiAliasedGlyph aaglyph(glyph_bbox.xMax-glyph_bbox.xMin, |
430 | glyph_bbox.yMax-glyph_bbox.yMin, 0); |
431 | PRUint8 buf[IMAGE_BUFFER_SIZE]; // try to use the stack for data |
432 | if (!aaglyph.WrapFreeType(&glyph_bbox, slot, buf, IMAGE_BUFFER_SIZE)) { |
433 | NS_ERROR("failed to wrap freetype image"); |
434 | XDestroyImage(sub_image); |
435 | + mFt2->DoneGlyph(glyph); |
436 | return 0; |
437 | } |
438 | |
439 | @@ -815,6 +826,7 @@ |
440 | x_pos + aaglyph.GetLBearing(), ascent-glyph_bbox.yMax); |
441 | |
442 | x_pos += aaglyph.GetAdvance(); |
443 | + mFt2->DoneGlyph(glyph); |
444 | } |
445 | |
446 | // |
447 | --- gfx/src/x11shared/nsFontFreeType.h.agriffis 2003-04-22 12:25:13.000000000 -0400 |
448 | +++ gfx/src/x11shared/nsFontFreeType.h 2004-11-15 13:29:05.125342648 -0500 |
449 | @@ -110,8 +110,10 @@ |
450 | XImage *GetXImage(PRUint32 width, PRUint32 height); |
451 | nsITrueTypeFontCatalogEntry *mFaceID; |
452 | PRUint16 mPixelSize; |
453 | - FTC_Image_Desc mImageDesc; |
454 | nsCOMPtr<nsIFreeType2> mFt2; |
455 | + FT_Face mFace; |
456 | + FT_Int32 mLoadFlag; |
457 | + FT_Library mFreeTypeLibrary; |
458 | }; |
459 | |
460 | void WeightTableInitCorrection(PRUint8*, PRUint8, double); |
461 | --- gfx/src/freetype/nsFreeType.cpp.agriffis 2004-02-07 10:22:30.000000000 -0500 |
462 | +++ gfx/src/freetype/nsFreeType.cpp 2004-11-15 13:29:05.121343256 -0500 |
463 | @@ -109,12 +109,8 @@ |
464 | {"FT_Load_Glyph", NS_FT2_OFFSET(nsFT_Load_Glyph), PR_TRUE}, |
465 | {"FT_New_Face", NS_FT2_OFFSET(nsFT_New_Face), PR_TRUE}, |
466 | {"FT_Outline_Decompose", NS_FT2_OFFSET(nsFT_Outline_Decompose), PR_TRUE}, |
467 | + {"FT_Set_Pixel_Sizes", NS_FT2_OFFSET(nsFT_Set_Pixel_Sizes), PR_TRUE}, |
468 | {"FT_Set_Charmap", NS_FT2_OFFSET(nsFT_Set_Charmap), PR_TRUE}, |
469 | - {"FTC_Image_Cache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE}, |
470 | - {"FTC_Manager_Lookup_Size", NS_FT2_OFFSET(nsFTC_Manager_Lookup_Size), PR_TRUE}, |
471 | - {"FTC_Manager_Done", NS_FT2_OFFSET(nsFTC_Manager_Done), PR_TRUE}, |
472 | - {"FTC_Manager_New", NS_FT2_OFFSET(nsFTC_Manager_New), PR_TRUE}, |
473 | - {"FTC_Image_Cache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE}, |
474 | // #ifdef MOZ_SVG |
475 | {"FT_Glyph_Transform", NS_FT2_OFFSET(nsFT_Glyph_Transform), PR_TRUE}, |
476 | {"FT_Get_Kerning", NS_FT2_OFFSET(nsFT_Get_Kerning), PR_TRUE}, |
477 | @@ -274,59 +270,21 @@ |
478 | } |
479 | |
480 | NS_IMETHODIMP |
481 | -nsFreeType2::SetCharmap(FT_Face face, FT_CharMap charmap) |
482 | -{ |
483 | - // call the FreeType2 function via the function pointer |
484 | - FT_Error error = nsFT_Set_Charmap(face, charmap); |
485 | - return error ? NS_ERROR_FAILURE : NS_OK; |
486 | -} |
487 | - |
488 | -NS_IMETHODIMP |
489 | -nsFreeType2::ImageCacheLookup(FTC_Image_Cache cache, FTC_Image_Desc *desc, |
490 | - FT_UInt glyphID, FT_Glyph *glyph) |
491 | -{ |
492 | - // call the FreeType2 function via the function pointer |
493 | - FT_Error error = nsFTC_Image_Cache_Lookup(cache, desc, glyphID, glyph); |
494 | - return error ? NS_ERROR_FAILURE : NS_OK; |
495 | -} |
496 | - |
497 | -NS_IMETHODIMP |
498 | -nsFreeType2::ManagerLookupSize(FTC_Manager manager, FTC_Font font, |
499 | - FT_Face *face, FT_Size *size) |
500 | +nsFreeType2::SetPixelSizes(FT_Face face, FT_UInt width, FT_UInt height) |
501 | { |
502 | // call the FreeType2 function via the function pointer |
503 | - FT_Error error = nsFTC_Manager_Lookup_Size(manager, font, face, size); |
504 | + FT_Error error = nsFT_Set_Pixel_Sizes(face, width, height); |
505 | return error ? NS_ERROR_FAILURE : NS_OK; |
506 | } |
507 | - |
508 | -NS_IMETHODIMP |
509 | -nsFreeType2::ManagerDone(FTC_Manager manager) |
510 | -{ |
511 | - // call the FreeType2 function via the function pointer |
512 | - nsFTC_Manager_Done(manager); |
513 | - return NS_OK; |
514 | -} |
515 | - |
516 | + |
517 | NS_IMETHODIMP |
518 | -nsFreeType2::ManagerNew(FT_Library library, FT_UInt max_faces, |
519 | - FT_UInt max_sizes, FT_ULong max_bytes, |
520 | - FTC_Face_Requester requester, FT_Pointer req_data, |
521 | - FTC_Manager *manager) |
522 | +nsFreeType2::SetCharmap(FT_Face face, FT_CharMap charmap) |
523 | { |
524 | // call the FreeType2 function via the function pointer |
525 | - FT_Error error = nsFTC_Manager_New(library, max_faces, max_sizes, max_bytes, |
526 | - requester, req_data, manager); |
527 | + FT_Error error = nsFT_Set_Charmap(face, charmap); |
528 | return error ? NS_ERROR_FAILURE : NS_OK; |
529 | } |
530 | |
531 | -NS_IMETHODIMP |
532 | -nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_Image_Cache *cache) |
533 | -{ |
534 | - // call the FreeType2 function via the function pointer |
535 | - FT_Error error = nsFTC_Image_Cache_New(manager, cache); |
536 | - return error ? NS_ERROR_FAILURE : NS_OK; |
537 | -} |
538 | - |
539 | // #ifdef MOZ_SVG |
540 | NS_IMETHODIMP |
541 | nsFreeType2::GlyphTransform(FT_Glyph glyph, FT_Matrix * matrix, FT_Vector * delta) |
542 | @@ -389,20 +347,6 @@ |
543 | } |
544 | |
545 | NS_IMETHODIMP |
546 | -nsFreeType2::GetImageCache(FTC_Image_Cache *aCache) |
547 | -{ |
548 | - *aCache = mImageCache; |
549 | - return NS_OK; |
550 | -} |
551 | - |
552 | -NS_IMETHODIMP |
553 | -nsFreeType2::GetFTCacheManager(FTC_Manager *aManager) |
554 | -{ |
555 | - *aManager = mFTCacheManager; |
556 | - return NS_OK; |
557 | -} |
558 | - |
559 | -NS_IMETHODIMP |
560 | nsFreeType2::GetLibrary(FT_Library *aLibrary) |
561 | { |
562 | *aLibrary = mFreeTypeLibrary; |
563 | @@ -425,8 +369,6 @@ |
564 | { |
565 | mSharedLib = nsnull; |
566 | mFreeTypeLibrary = nsnull; |
567 | - mFTCacheManager = nsnull; |
568 | - mImageCache = nsnull; |
569 | } |
570 | |
571 | // I would like to make this a static member function but the compilier |
572 | @@ -456,12 +398,6 @@ |
573 | delete gFreeTypeFaces; |
574 | gFreeTypeFaces = nsnull; |
575 | } |
576 | - // mImageCache released by cache manager |
577 | - if (mFTCacheManager) { |
578 | - // use "this->" to make sure it is obivious we are calling the member func |
579 | - this->ManagerDone(mFTCacheManager); |
580 | - mFTCacheManager = nsnull; |
581 | - } |
582 | if (mFreeTypeLibrary) { |
583 | // use "this->" to make sure it is obivious we are calling the member func |
584 | this->DoneFreeType(mFreeTypeLibrary); |
585 | @@ -658,17 +594,6 @@ |
586 | mFreeTypeLibrary = nsnull; |
587 | goto cleanup_and_return; |
588 | } |
589 | - // use "this->" to make sure it is obivious we are calling the member func |
590 | - rv = this->ManagerNew(mFreeTypeLibrary, 0, 0, 0, nsFreeTypeFaceRequester, |
591 | - this, &mFTCacheManager); |
592 | - NS_ASSERTION(NS_SUCCEEDED(rv), "failed to create FreeType Cache manager"); |
593 | - if (NS_FAILED(rv)) |
594 | - goto cleanup_and_return; |
595 | - // use "this->" to make sure it is obivious we are calling the member func |
596 | - rv = this->ImageCacheNew(mFTCacheManager, &mImageCache); |
597 | - NS_ASSERTION(NS_SUCCEEDED(rv), "failed to create FreeType image cache"); |
598 | - if (NS_FAILED(rv)) |
599 | - goto cleanup_and_return; |
600 | return PR_TRUE; |
601 | |
602 | cleanup_and_return: |
603 | --- gfx/src/freetype/nsFreeType.h.agriffis 2004-04-16 17:31:42.000000000 -0400 |
604 | +++ gfx/src/freetype/nsFreeType.h 2004-11-15 13:29:05.122343104 -0500 |
605 | @@ -102,15 +102,8 @@ |
606 | typedef FT_Error (*FT_Outline_Decompose_t) |
607 | (FT_Outline*, const FT_Outline_Funcs*, void*); |
608 | typedef FT_Error (*FT_New_Face_t)(FT_Library, const char*, FT_Long, FT_Face*); |
609 | +typedef FT_Error (*FT_Set_Pixel_Sizes_t)(FT_Face face, FT_UInt, FT_UInt); |
610 | typedef FT_Error (*FT_Set_Charmap_t)(FT_Face face, FT_CharMap charmap); |
611 | -typedef FT_Error (*FTC_Image_Cache_Lookup_t) |
612 | - (FTC_Image_Cache, FTC_Image_Desc*, FT_UInt, FT_Glyph*); |
613 | -typedef FT_Error (*FTC_Manager_Lookup_Size_t) |
614 | - (FTC_Manager, FTC_Font, FT_Face*, FT_Size*); |
615 | -typedef FT_Error (*FTC_Manager_Done_t)(FTC_Manager); |
616 | -typedef FT_Error (*FTC_Manager_New_t)(FT_Library, FT_UInt, FT_UInt, FT_ULong, |
617 | - FTC_Face_Requester, FT_Pointer, FTC_Manager*); |
618 | -typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_Image_Cache*); |
619 | // #ifdef MOZ_SVG |
620 | typedef FT_Error (*FT_Glyph_Transform_t)(FT_Glyph, FT_Matrix*, FT_Vector*); |
621 | typedef FT_Error (*FT_Get_Kerning_t) |
622 | @@ -163,12 +156,8 @@ |
623 | FT_Load_Glyph_t nsFT_Load_Glyph; |
624 | FT_New_Face_t nsFT_New_Face; |
625 | FT_Outline_Decompose_t nsFT_Outline_Decompose; |
626 | + FT_Set_Pixel_Sizes_t nsFT_Set_Pixel_Sizes; |
627 | FT_Set_Charmap_t nsFT_Set_Charmap; |
628 | - FTC_Image_Cache_Lookup_t nsFTC_Image_Cache_Lookup; |
629 | - FTC_Manager_Lookup_Size_t nsFTC_Manager_Lookup_Size; |
630 | - FTC_Manager_Done_t nsFTC_Manager_Done; |
631 | - FTC_Manager_New_t nsFTC_Manager_New; |
632 | - FTC_Image_Cache_New_t nsFTC_Image_Cache_New; |
633 | // #ifdef MOZ_SVG |
634 | FT_Glyph_Transform_t nsFT_Glyph_Transform; |
635 | FT_Get_Kerning_t nsFT_Get_Kerning; |
636 | @@ -181,9 +170,9 @@ |
637 | // this array needs to be big enough to hold all the function pointers |
638 | // plus one extra for the null at the end |
639 | // #ifdef MOZ_SVG |
640 | - static FtFuncList FtFuncs[24]; |
641 | + static FtFuncList FtFuncs[20]; |
642 | // #else |
643 | -// static FtFuncList FtFuncs[20]; |
644 | +// static FtFuncList FtFuncs[17]; |
645 | // #endif |
646 | |
647 | protected: |
648 | @@ -212,8 +201,6 @@ |
649 | |
650 | PRLibrary *mSharedLib; |
651 | FT_Library mFreeTypeLibrary; |
652 | - FTC_Manager mFTCacheManager; |
653 | - FTC_Image_Cache mImageCache; |
654 | |
655 | static nsHashtable *sFontFamilies; |
656 | static nsHashtable *sRange1CharSetNames; |