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