| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 #include "SkAdvancedTypefaceMetrics.h" | 9 #include "SkAdvancedTypefaceMetrics.h" |
| 10 #include "SkBase64.h" | 10 #include "SkBase64.h" |
| (...skipping 1906 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1917 &numFonts); | 1917 &numFonts); |
| 1918 | 1918 |
| 1919 if (fontHandle != NULL && numFonts < 1) { | 1919 if (fontHandle != NULL && numFonts < 1) { |
| 1920 RemoveFontMemResourceEx(fontHandle); | 1920 RemoveFontMemResourceEx(fontHandle); |
| 1921 return NULL; | 1921 return NULL; |
| 1922 } | 1922 } |
| 1923 | 1923 |
| 1924 return fontHandle; | 1924 return fontHandle; |
| 1925 } | 1925 } |
| 1926 | 1926 |
| 1927 // Does not affect ownership of stream. |
| 1927 static SkTypeface* create_from_stream(SkStream* stream) { | 1928 static SkTypeface* create_from_stream(SkStream* stream) { |
| 1928 // Create a unique and unpredictable font name. | 1929 // Create a unique and unpredictable font name. |
| 1929 // Avoids collisions and access from CSS. | 1930 // Avoids collisions and access from CSS. |
| 1930 char familyName[BASE64_GUID_ID_LEN]; | 1931 char familyName[BASE64_GUID_ID_LEN]; |
| 1931 const int familyNameSize = SK_ARRAY_COUNT(familyName); | 1932 const int familyNameSize = SK_ARRAY_COUNT(familyName); |
| 1932 if (FAILED(create_unique_font_name(familyName, familyNameSize))) { | 1933 if (FAILED(create_unique_font_name(familyName, familyNameSize))) { |
| 1933 return NULL; | 1934 return NULL; |
| 1934 } | 1935 } |
| 1935 | 1936 |
| 1936 // Change the name of the font. | 1937 // Change the name of the font. |
| (...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2474 | 2475 |
| 2475 virtual SkTypeface* onMatchFaceStyle(const SkTypeface* familyMember, | 2476 virtual SkTypeface* onMatchFaceStyle(const SkTypeface* familyMember, |
| 2476 const SkFontStyle& fontstyle) const SK_
OVERRIDE { | 2477 const SkFontStyle& fontstyle) const SK_
OVERRIDE { |
| 2477 // could be in base impl | 2478 // could be in base impl |
| 2478 SkString familyName; | 2479 SkString familyName; |
| 2479 ((LogFontTypeface*)familyMember)->getFamilyName(&familyName); | 2480 ((LogFontTypeface*)familyMember)->getFamilyName(&familyName); |
| 2480 return this->matchFamilyStyle(familyName.c_str(), fontstyle); | 2481 return this->matchFamilyStyle(familyName.c_str(), fontstyle); |
| 2481 } | 2482 } |
| 2482 | 2483 |
| 2483 SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) const SK_OVER
RIDE { | 2484 SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) const SK_OVER
RIDE { |
| 2485 SkAutoTDelete<SkStream> streamDeleter(stream); |
| 2484 return create_from_stream(stream); | 2486 return create_from_stream(stream); |
| 2485 } | 2487 } |
| 2486 | 2488 |
| 2487 SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const SK_OVERRIDE { | 2489 SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const SK_OVERRIDE { |
| 2488 // could be in base impl | 2490 // could be in base impl |
| 2489 SkAutoTUnref<SkStream> stream(SkNEW_ARGS(SkMemoryStream, (data))); | 2491 return this->createFromStream(SkNEW_ARGS(SkMemoryStream, (data))); |
| 2490 return this->createFromStream(stream); | |
| 2491 } | 2492 } |
| 2492 | 2493 |
| 2493 SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const SK_OVERR
IDE { | 2494 SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const SK_OVERR
IDE { |
| 2494 // could be in base impl | 2495 // could be in base impl |
| 2495 SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(path)); | 2496 return this->createFromStream(SkStream::NewFromFile(path)); |
| 2496 return this->createFromStream(stream); | |
| 2497 } | 2497 } |
| 2498 | 2498 |
| 2499 virtual SkTypeface* onLegacyCreateTypeface(const char familyName[], | 2499 virtual SkTypeface* onLegacyCreateTypeface(const char familyName[], |
| 2500 unsigned styleBits) const SK_OVER
RIDE { | 2500 unsigned styleBits) const SK_OVER
RIDE { |
| 2501 LOGFONT lf; | 2501 LOGFONT lf; |
| 2502 if (NULL == familyName) { | 2502 if (NULL == familyName) { |
| 2503 lf = get_default_font(); | 2503 lf = get_default_font(); |
| 2504 } else { | 2504 } else { |
| 2505 logfont_for_name(familyName, &lf); | 2505 logfont_for_name(familyName, &lf); |
| 2506 } | 2506 } |
| 2507 | 2507 |
| 2508 SkTypeface::Style style = (SkTypeface::Style)styleBits; | 2508 SkTypeface::Style style = (SkTypeface::Style)styleBits; |
| 2509 lf.lfWeight = (style & SkTypeface::kBold) != 0 ? FW_BOLD : FW_NORMAL; | 2509 lf.lfWeight = (style & SkTypeface::kBold) != 0 ? FW_BOLD : FW_NORMAL; |
| 2510 lf.lfItalic = ((style & SkTypeface::kItalic) != 0); | 2510 lf.lfItalic = ((style & SkTypeface::kItalic) != 0); |
| 2511 return SkCreateTypefaceFromLOGFONT(lf); | 2511 return SkCreateTypefaceFromLOGFONT(lf); |
| 2512 } | 2512 } |
| 2513 | 2513 |
| 2514 private: | 2514 private: |
| 2515 SkTDArray<ENUMLOGFONTEX> fLogFontArray; | 2515 SkTDArray<ENUMLOGFONTEX> fLogFontArray; |
| 2516 }; | 2516 }; |
| 2517 | 2517 |
| 2518 /////////////////////////////////////////////////////////////////////////////// | 2518 /////////////////////////////////////////////////////////////////////////////// |
| 2519 | 2519 |
| 2520 SkFontMgr* SkFontMgr_New_GDI() { | 2520 SkFontMgr* SkFontMgr_New_GDI() { |
| 2521 return SkNEW(SkFontMgrGDI); | 2521 return SkNEW(SkFontMgrGDI); |
| 2522 } | 2522 } |
| OLD | NEW |