| 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 "SkTypes.h" | 8 #include "SkTypes.h" |
| 9 #if defined(SK_BUILD_FOR_WIN32) | 9 #if defined(SK_BUILD_FOR_WIN32) |
| 10 | 10 |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 static LogFontTypeface* Create(const LOGFONT& lf) { | 250 static LogFontTypeface* Create(const LOGFONT& lf) { |
| 251 return new LogFontTypeface(get_style(lf), lf, false); | 251 return new LogFontTypeface(get_style(lf), lf, false); |
| 252 } | 252 } |
| 253 | 253 |
| 254 static void EnsureAccessible(const SkTypeface* face) { | 254 static void EnsureAccessible(const SkTypeface* face) { |
| 255 call_ensure_accessible(static_cast<const LogFontTypeface*>(face)->fLogFo
nt); | 255 call_ensure_accessible(static_cast<const LogFontTypeface*>(face)->fLogFo
nt); |
| 256 } | 256 } |
| 257 | 257 |
| 258 protected: | 258 protected: |
| 259 SkStreamAsset* onOpenStream(int* ttcIndex) const override; | 259 SkStreamAsset* onOpenStream(int* ttcIndex) const override; |
| 260 SkScalerContext* onCreateScalerContext(const SkScalerContextEffects&, | 260 SkScalerContext* onCreateScalerContext(const SkDescriptor*) const override; |
| 261 const SkDescriptor*) const override; | |
| 262 void onFilterRec(SkScalerContextRec*) const override; | 261 void onFilterRec(SkScalerContextRec*) const override; |
| 263 SkAdvancedTypefaceMetrics* onGetAdvancedTypefaceMetrics( | 262 SkAdvancedTypefaceMetrics* onGetAdvancedTypefaceMetrics( |
| 264 PerGlyphInfo, const uint32_t*, uint32_t) const o
verride; | 263 PerGlyphInfo, const uint32_t*, uint32_t) const o
verride; |
| 265 void onGetFontDescriptor(SkFontDescriptor*, bool*) const override; | 264 void onGetFontDescriptor(SkFontDescriptor*, bool*) const override; |
| 266 virtual int onCharsToGlyphs(const void* chars, Encoding encoding, | 265 virtual int onCharsToGlyphs(const void* chars, Encoding encoding, |
| 267 uint16_t glyphs[], int glyphCount) const overrid
e; | 266 uint16_t glyphs[], int glyphCount) const overrid
e; |
| 268 int onCountGlyphs() const override; | 267 int onCountGlyphs() const override; |
| 269 int onGetUPEM() const override; | 268 int onGetUPEM() const override; |
| 270 void onGetFamilyName(SkString* familyName) const override; | 269 void onGetFamilyName(SkString* familyName) const override; |
| 271 SkTypeface::LocalizedStrings* onCreateFamilyNameIterator() const override; | 270 SkTypeface::LocalizedStrings* onCreateFamilyNameIterator() const override; |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 527 *srcRBPtr = srcRB; | 526 *srcRBPtr = srcRB; |
| 528 // offset to the start of the image | 527 // offset to the start of the image |
| 529 return (const char*)fBits + (fHeight - glyph.fHeight) * srcRB; | 528 return (const char*)fBits + (fHeight - glyph.fHeight) * srcRB; |
| 530 } | 529 } |
| 531 | 530 |
| 532 ////////////////////////////////////////////////////////////////////////////// | 531 ////////////////////////////////////////////////////////////////////////////// |
| 533 #define BUFFERSIZE (1 << 13) | 532 #define BUFFERSIZE (1 << 13) |
| 534 | 533 |
| 535 class SkScalerContext_GDI : public SkScalerContext { | 534 class SkScalerContext_GDI : public SkScalerContext { |
| 536 public: | 535 public: |
| 537 SkScalerContext_GDI(SkTypeface*, const SkScalerContextEffects&, const SkDesc
riptor* desc); | 536 SkScalerContext_GDI(SkTypeface*, const SkDescriptor* desc); |
| 538 virtual ~SkScalerContext_GDI(); | 537 virtual ~SkScalerContext_GDI(); |
| 539 | 538 |
| 540 // Returns true if the constructor was able to complete all of its | 539 // Returns true if the constructor was able to complete all of its |
| 541 // initializations (which may include calling GDI). | 540 // initializations (which may include calling GDI). |
| 542 bool isValid() const; | 541 bool isValid() const; |
| 543 | 542 |
| 544 protected: | 543 protected: |
| 545 unsigned generateGlyphCount() override; | 544 unsigned generateGlyphCount() override; |
| 546 uint16_t generateCharToGlyph(SkUnichar uni) override; | 545 uint16_t generateCharToGlyph(SkUnichar uni) override; |
| 547 void generateAdvance(SkGlyph* glyph) override; | 546 void generateAdvance(SkGlyph* glyph) override; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 598 default: | 597 default: |
| 599 if (rec.fFlags & SkScalerContext::kGenA8FromLCD_Flag) { | 598 if (rec.fFlags & SkScalerContext::kGenA8FromLCD_Flag) { |
| 600 return CLEARTYPE_QUALITY; | 599 return CLEARTYPE_QUALITY; |
| 601 } else { | 600 } else { |
| 602 return ANTIALIASED_QUALITY; | 601 return ANTIALIASED_QUALITY; |
| 603 } | 602 } |
| 604 } | 603 } |
| 605 } | 604 } |
| 606 | 605 |
| 607 SkScalerContext_GDI::SkScalerContext_GDI(SkTypeface* rawTypeface, | 606 SkScalerContext_GDI::SkScalerContext_GDI(SkTypeface* rawTypeface, |
| 608 const SkScalerContextEffects& effects, | 607 const SkDescriptor* desc) |
| 609 const SkDescriptor* desc) | 608 : SkScalerContext(rawTypeface, desc) |
| 610 : SkScalerContext(rawTypeface, effects, desc) | |
| 611 , fDDC(0) | 609 , fDDC(0) |
| 612 , fSavefont(0) | 610 , fSavefont(0) |
| 613 , fFont(0) | 611 , fFont(0) |
| 614 , fSC(0) | 612 , fSC(0) |
| 615 , fGlyphCount(-1) | 613 , fGlyphCount(-1) |
| 616 { | 614 { |
| 617 LogFontTypeface* typeface = reinterpret_cast<LogFontTypeface*>(rawTypeface); | 615 LogFontTypeface* typeface = reinterpret_cast<LogFontTypeface*>(rawTypeface); |
| 618 | 616 |
| 619 fDDC = ::CreateCompatibleDC(nullptr); | 617 fDDC = ::CreateCompatibleDC(nullptr); |
| 620 if (!fDDC) { | 618 if (!fDDC) { |
| (...skipping 1659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2280 bufferSize = GetFontData(hdc, tag, (DWORD) offset, data, (DWORD) length)
; | 2278 bufferSize = GetFontData(hdc, tag, (DWORD) offset, data, (DWORD) length)
; |
| 2281 } | 2279 } |
| 2282 | 2280 |
| 2283 SelectObject(hdc, savefont); | 2281 SelectObject(hdc, savefont); |
| 2284 DeleteObject(font); | 2282 DeleteObject(font); |
| 2285 DeleteDC(hdc); | 2283 DeleteDC(hdc); |
| 2286 | 2284 |
| 2287 return bufferSize == GDI_ERROR ? 0 : bufferSize; | 2285 return bufferSize == GDI_ERROR ? 0 : bufferSize; |
| 2288 } | 2286 } |
| 2289 | 2287 |
| 2290 SkScalerContext* LogFontTypeface::onCreateScalerContext(const SkScalerContextEff
ects& effects, | 2288 SkScalerContext* LogFontTypeface::onCreateScalerContext(const SkDescriptor* desc
) const { |
| 2291 const SkDescriptor* desc
) const { | 2289 SkScalerContext_GDI* ctx = new SkScalerContext_GDI(const_cast<LogFontTypefac
e*>(this), desc); |
| 2292 SkScalerContext_GDI* ctx = new SkScalerContext_GDI(const_cast<LogFontTypefac
e*>(this), | |
| 2293 effects, desc); | |
| 2294 if (!ctx->isValid()) { | 2290 if (!ctx->isValid()) { |
| 2295 delete ctx; | 2291 delete ctx; |
| 2296 ctx = nullptr; | 2292 ctx = nullptr; |
| 2297 } | 2293 } |
| 2298 return ctx; | 2294 return ctx; |
| 2299 } | 2295 } |
| 2300 | 2296 |
| 2301 void LogFontTypeface::onFilterRec(SkScalerContextRec* rec) const { | 2297 void LogFontTypeface::onFilterRec(SkScalerContextRec* rec) const { |
| 2302 if (rec->fFlags & SkScalerContext::kLCD_BGROrder_Flag || | 2298 if (rec->fFlags & SkScalerContext::kLCD_BGROrder_Flag || |
| 2303 rec->fFlags & SkScalerContext::kLCD_Vertical_Flag) | 2299 rec->fFlags & SkScalerContext::kLCD_Vertical_Flag) |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2518 | 2514 |
| 2519 private: | 2515 private: |
| 2520 SkTDArray<ENUMLOGFONTEX> fLogFontArray; | 2516 SkTDArray<ENUMLOGFONTEX> fLogFontArray; |
| 2521 }; | 2517 }; |
| 2522 | 2518 |
| 2523 /////////////////////////////////////////////////////////////////////////////// | 2519 /////////////////////////////////////////////////////////////////////////////// |
| 2524 | 2520 |
| 2525 SkFontMgr* SkFontMgr_New_GDI() { return new SkFontMgrGDI; } | 2521 SkFontMgr* SkFontMgr_New_GDI() { return new SkFontMgrGDI; } |
| 2526 | 2522 |
| 2527 #endif//defined(SK_BUILD_FOR_WIN32) | 2523 #endif//defined(SK_BUILD_FOR_WIN32) |
| OLD | NEW |