| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkAdvancedTypefaceMetrics.h" | 8 #include "SkAdvancedTypefaceMetrics.h" |
| 9 #include "SkBase64.h" | 9 #include "SkBase64.h" |
| 10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
| (...skipping 2259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2270 } | 2270 } |
| 2271 | 2271 |
| 2272 SelectObject(hdc, savefont); | 2272 SelectObject(hdc, savefont); |
| 2273 DeleteObject(font); | 2273 DeleteObject(font); |
| 2274 DeleteDC(hdc); | 2274 DeleteDC(hdc); |
| 2275 | 2275 |
| 2276 return bufferSize == GDI_ERROR ? 0 : bufferSize; | 2276 return bufferSize == GDI_ERROR ? 0 : bufferSize; |
| 2277 } | 2277 } |
| 2278 | 2278 |
| 2279 SkScalerContext* LogFontTypeface::onCreateScalerContext(const SkDescriptor* desc
) const { | 2279 SkScalerContext* LogFontTypeface::onCreateScalerContext(const SkDescriptor* desc
) const { |
| 2280 SkScalerContext_GDI* ctx = SkNEW_ARGS(SkScalerContext_GDI, | 2280 SkScalerContext_GDI* ctx = new SkScalerContext_GDI(const_cast<LogFontTypefac
e*>(this), desc); |
| 2281 (const_cast<LogFontTypeface*>(th
is), desc)); | |
| 2282 if (!ctx->isValid()) { | 2281 if (!ctx->isValid()) { |
| 2283 SkDELETE(ctx); | 2282 delete ctx; |
| 2284 ctx = NULL; | 2283 ctx = NULL; |
| 2285 } | 2284 } |
| 2286 return ctx; | 2285 return ctx; |
| 2287 } | 2286 } |
| 2288 | 2287 |
| 2289 void LogFontTypeface::onFilterRec(SkScalerContextRec* rec) const { | 2288 void LogFontTypeface::onFilterRec(SkScalerContextRec* rec) const { |
| 2290 if (rec->fFlags & SkScalerContext::kLCD_BGROrder_Flag || | 2289 if (rec->fFlags & SkScalerContext::kLCD_BGROrder_Flag || |
| 2291 rec->fFlags & SkScalerContext::kLCD_Vertical_Flag) | 2290 rec->fFlags & SkScalerContext::kLCD_Vertical_Flag) |
| 2292 { | 2291 { |
| 2293 rec->fMaskFormat = SkMask::kA8_Format; | 2292 rec->fMaskFormat = SkMask::kA8_Format; |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2435 return fLogFontArray.count(); | 2434 return fLogFontArray.count(); |
| 2436 } | 2435 } |
| 2437 | 2436 |
| 2438 void onGetFamilyName(int index, SkString* familyName) const override { | 2437 void onGetFamilyName(int index, SkString* familyName) const override { |
| 2439 SkASSERT((unsigned)index < (unsigned)fLogFontArray.count()); | 2438 SkASSERT((unsigned)index < (unsigned)fLogFontArray.count()); |
| 2440 tchar_to_skstring(fLogFontArray[index].elfLogFont.lfFaceName, familyName
); | 2439 tchar_to_skstring(fLogFontArray[index].elfLogFont.lfFaceName, familyName
); |
| 2441 } | 2440 } |
| 2442 | 2441 |
| 2443 SkFontStyleSet* onCreateStyleSet(int index) const override { | 2442 SkFontStyleSet* onCreateStyleSet(int index) const override { |
| 2444 SkASSERT((unsigned)index < (unsigned)fLogFontArray.count()); | 2443 SkASSERT((unsigned)index < (unsigned)fLogFontArray.count()); |
| 2445 return SkNEW_ARGS(SkFontStyleSetGDI, (fLogFontArray[index].elfLogFont.lf
FaceName)); | 2444 return new SkFontStyleSetGDI(fLogFontArray[index].elfLogFont.lfFaceName)
; |
| 2446 } | 2445 } |
| 2447 | 2446 |
| 2448 SkFontStyleSet* onMatchFamily(const char familyName[]) const override { | 2447 SkFontStyleSet* onMatchFamily(const char familyName[]) const override { |
| 2449 if (NULL == familyName) { | 2448 if (NULL == familyName) { |
| 2450 familyName = ""; // do we need this check??? | 2449 familyName = ""; // do we need this check??? |
| 2451 } | 2450 } |
| 2452 LOGFONT lf; | 2451 LOGFONT lf; |
| 2453 logfont_for_name(familyName, &lf); | 2452 logfont_for_name(familyName, &lf); |
| 2454 return SkNEW_ARGS(SkFontStyleSetGDI, (lf.lfFaceName)); | 2453 return new SkFontStyleSetGDI(lf.lfFaceName); |
| 2455 } | 2454 } |
| 2456 | 2455 |
| 2457 virtual SkTypeface* onMatchFamilyStyle(const char familyName[], | 2456 virtual SkTypeface* onMatchFamilyStyle(const char familyName[], |
| 2458 const SkFontStyle& fontstyle) const o
verride { | 2457 const SkFontStyle& fontstyle) const o
verride { |
| 2459 // could be in base impl | 2458 // could be in base impl |
| 2460 SkAutoTUnref<SkFontStyleSet> sset(this->matchFamily(familyName)); | 2459 SkAutoTUnref<SkFontStyleSet> sset(this->matchFamily(familyName)); |
| 2461 return sset->matchStyle(fontstyle); | 2460 return sset->matchStyle(fontstyle); |
| 2462 } | 2461 } |
| 2463 | 2462 |
| 2464 virtual SkTypeface* onMatchFamilyStyleCharacter(const char familyName[], con
st SkFontStyle&, | 2463 virtual SkTypeface* onMatchFamilyStyleCharacter(const char familyName[], con
st SkFontStyle&, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 2475 return this->matchFamilyStyle(familyName.c_str(), fontstyle); | 2474 return this->matchFamilyStyle(familyName.c_str(), fontstyle); |
| 2476 } | 2475 } |
| 2477 | 2476 |
| 2478 SkTypeface* onCreateFromStream(SkStreamAsset* bareStream, int ttcIndex) cons
t override { | 2477 SkTypeface* onCreateFromStream(SkStreamAsset* bareStream, int ttcIndex) cons
t override { |
| 2479 SkAutoTDelete<SkStreamAsset> stream(bareStream); | 2478 SkAutoTDelete<SkStreamAsset> stream(bareStream); |
| 2480 return create_from_stream(stream); | 2479 return create_from_stream(stream); |
| 2481 } | 2480 } |
| 2482 | 2481 |
| 2483 SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const override { | 2482 SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const override { |
| 2484 // could be in base impl | 2483 // could be in base impl |
| 2485 return this->createFromStream(SkNEW_ARGS(SkMemoryStream, (data))); | 2484 return this->createFromStream(new SkMemoryStream(data)); |
| 2486 } | 2485 } |
| 2487 | 2486 |
| 2488 SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const override
{ | 2487 SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const override
{ |
| 2489 // could be in base impl | 2488 // could be in base impl |
| 2490 return this->createFromStream(SkStream::NewFromFile(path)); | 2489 return this->createFromStream(SkStream::NewFromFile(path)); |
| 2491 } | 2490 } |
| 2492 | 2491 |
| 2493 virtual SkTypeface* onLegacyCreateTypeface(const char familyName[], | 2492 virtual SkTypeface* onLegacyCreateTypeface(const char familyName[], |
| 2494 unsigned styleBits) const overrid
e { | 2493 unsigned styleBits) const overrid
e { |
| 2495 LOGFONT lf; | 2494 LOGFONT lf; |
| 2496 if (NULL == familyName) { | 2495 if (NULL == familyName) { |
| 2497 lf = get_default_font(); | 2496 lf = get_default_font(); |
| 2498 } else { | 2497 } else { |
| 2499 logfont_for_name(familyName, &lf); | 2498 logfont_for_name(familyName, &lf); |
| 2500 } | 2499 } |
| 2501 | 2500 |
| 2502 SkTypeface::Style style = (SkTypeface::Style)styleBits; | 2501 SkTypeface::Style style = (SkTypeface::Style)styleBits; |
| 2503 lf.lfWeight = (style & SkTypeface::kBold) != 0 ? FW_BOLD : FW_NORMAL; | 2502 lf.lfWeight = (style & SkTypeface::kBold) != 0 ? FW_BOLD : FW_NORMAL; |
| 2504 lf.lfItalic = ((style & SkTypeface::kItalic) != 0); | 2503 lf.lfItalic = ((style & SkTypeface::kItalic) != 0); |
| 2505 return SkCreateTypefaceFromLOGFONT(lf); | 2504 return SkCreateTypefaceFromLOGFONT(lf); |
| 2506 } | 2505 } |
| 2507 | 2506 |
| 2508 private: | 2507 private: |
| 2509 SkTDArray<ENUMLOGFONTEX> fLogFontArray; | 2508 SkTDArray<ENUMLOGFONTEX> fLogFontArray; |
| 2510 }; | 2509 }; |
| 2511 | 2510 |
| 2512 /////////////////////////////////////////////////////////////////////////////// | 2511 /////////////////////////////////////////////////////////////////////////////// |
| 2513 | 2512 |
| 2514 SkFontMgr* SkFontMgr_New_GDI() { | 2513 SkFontMgr* SkFontMgr_New_GDI() { return new SkFontMgrGDI; } |
| 2515 return SkNEW(SkFontMgrGDI); | |
| 2516 } | |
| OLD | NEW |