| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 Google Inc. |
| 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 "SkFont.h" | 8 #include "SkFont.h" |
| 9 #include "SkTypeface.h" | 9 #include "SkTypeface.h" |
| 10 #include "SkUtils.h" | 10 #include "SkUtils.h" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 | 41 |
| 42 sk_sp<SkFont> SkFont::Make(sk_sp<SkTypeface> face, SkScalar size, MaskType mt, u
int32_t flags) { | 42 sk_sp<SkFont> SkFont::Make(sk_sp<SkTypeface> face, SkScalar size, MaskType mt, u
int32_t flags) { |
| 43 return SkFont::Make(std::move(face), size, 1, 0, mt, flags); | 43 return SkFont::Make(std::move(face), size, 1, 0, mt, flags); |
| 44 } | 44 } |
| 45 | 45 |
| 46 sk_sp<SkFont> SkFont::makeWithSize(SkScalar newSize) const { | 46 sk_sp<SkFont> SkFont::makeWithSize(SkScalar newSize) const { |
| 47 return SkFont::Make(sk_ref_sp(this->getTypeface()), newSize, this->getScaleX
(), | 47 return SkFont::Make(sk_ref_sp(this->getTypeface()), newSize, this->getScaleX
(), |
| 48 this->getSkewX(), this->getMaskType(), this->getFlags())
; | 48 this->getSkewX(), this->getMaskType(), this->getFlags())
; |
| 49 } | 49 } |
| 50 | 50 |
| 51 sk_sp<SkFont> SkFont::makeWithFlags(uint32_t newFlags) const { |
| 52 return SkFont::Make(sk_ref_sp(this->getTypeface()), this->getSize(), this->g
etScaleX(), |
| 53 this->getSkewX(), this->getMaskType(), newFlags); |
| 54 } |
| 51 ////////////////////////////////////////////////////////////////////////////////
/////////////////// | 55 ////////////////////////////////////////////////////////////////////////////////
/////////////////// |
| 52 | 56 |
| 53 int SkFont::textToGlyphs(const void* text, size_t byteLength, SkTextEncoding enc
oding, | 57 int SkFont::textToGlyphs(const void* text, size_t byteLength, SkTextEncoding enc
oding, |
| 54 uint16_t glyphs[], int maxGlyphCount) const { | 58 uint16_t glyphs[], int maxGlyphCount) const { |
| 55 if (0 == byteLength) { | 59 if (0 == byteLength) { |
| 56 return 0; | 60 return 0; |
| 57 } | 61 } |
| 58 | 62 |
| 59 SkASSERT(text); | 63 SkASSERT(text); |
| 60 | 64 |
| 61 int count = 0; // fix uninitialized warning (even though the switch is comp
lete!) | 65 int count = 0; // fix uninitialized warning (even though the switch is comp
lete!) |
| 62 | 66 |
| 63 switch (encoding) { | 67 switch (encoding) { |
| 64 case kUTF8_SkTextEncoding: | 68 case kUTF8_SkTextEncoding: |
| 65 count = SkUTF8_CountUnichars((const char*)text, byteLength); | 69 count = SkUTF8_CountUnichars((const char*)text, byteLength); |
| 66 break; | 70 break; |
| 67 case kUTF16_SkTextEncoding: | 71 case kUTF16_SkTextEncoding: |
| 68 count = SkUTF16_CountUnichars((const uint16_t*)text, SkToInt(byteLen
gth >> 1)); | 72 count = SkUTF16_CountUnichars((const uint16_t*)text, SkToInt(byteLen
gth >> 1)); |
| 69 break; | 73 break; |
| 70 case kUTF32_SkTextEncoding: | 74 case kUTF32_SkTextEncoding: |
| 71 count = SkToInt(byteLength >> 2); | 75 count = SkToInt(byteLength >> 2); |
| 72 break; | 76 break; |
| 73 case kGlyphID_SkTextEncoding: | 77 case kGlyphID_SkTextEncoding: |
| 74 count = SkToInt(byteLength >> 1); | 78 count = SkToInt(byteLength >> 1); |
| 75 break; | 79 break; |
| 76 } | 80 } |
| 77 if (nullptr == glyphs) { | 81 if (!glyphs) { |
| 78 return count; | 82 return count; |
| 79 } | 83 } |
| 80 | 84 |
| 81 // TODO: unify/eliminate SkTypeface::Encoding with SkTextEncoding | 85 // TODO: unify/eliminate SkTypeface::Encoding with SkTextEncoding |
| 82 SkTypeface::Encoding typeface_encoding; | 86 SkTypeface::Encoding typefaceEncoding; |
| 83 switch (encoding) { | 87 switch (encoding) { |
| 84 case kUTF8_SkTextEncoding: | 88 case kUTF8_SkTextEncoding: |
| 85 typeface_encoding = SkTypeface::kUTF8_Encoding; | 89 typefaceEncoding = SkTypeface::kUTF8_Encoding; |
| 86 break; | 90 break; |
| 87 case kUTF16_SkTextEncoding: | 91 case kUTF16_SkTextEncoding: |
| 88 typeface_encoding = SkTypeface::kUTF16_Encoding; | 92 typefaceEncoding = SkTypeface::kUTF16_Encoding; |
| 89 break; | 93 break; |
| 90 case kUTF32_SkTextEncoding: | 94 case kUTF32_SkTextEncoding: |
| 91 typeface_encoding = SkTypeface::kUTF32_Encoding; | 95 typefaceEncoding = SkTypeface::kUTF32_Encoding; |
| 92 break; | 96 break; |
| 93 default: | 97 default: |
| 94 SkASSERT(kGlyphID_SkTextEncoding == encoding); | 98 SkASSERT(kGlyphID_SkTextEncoding == encoding); |
| 95 // we can early exit, since we already have glyphIDs | 99 // we can early exit, since we already have glyphIDs |
| 96 memcpy(glyphs, text, count << 1); | 100 memcpy(glyphs, text, count << 1); |
| 97 return count; | 101 return count; |
| 98 } | 102 } |
| 99 | 103 |
| 100 (void)fTypeface->charsToGlyphs(text, typeface_encoding, glyphs, count); | 104 (void)fTypeface->charsToGlyphs(text, typefaceEncoding, glyphs, count); |
| 101 return count; | 105 return count; |
| 102 } | 106 } |
| 103 | 107 |
| 104 SkScalar SkFont::measureText(const void* text, size_t byteLength, SkTextEncoding
encoding) const { | 108 SkScalar SkFont::measureText(const void* text, size_t byteLength, SkTextEncoding
encoding) const { |
| 105 // TODO: need access to the cache | 109 // TODO: need access to the cache |
| 106 return -1; | 110 return -1; |
| 107 } | 111 } |
| 108 | 112 |
| 109 ////////////////////////////////////////////////////////////////////////////////
/////////////////// | 113 ////////////////////////////////////////////////////////////////////////////////
/////////////////// |
| 110 | 114 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 138 } | 142 } |
| 139 | 143 |
| 140 MaskType maskType = SkFont::kBW_MaskType; | 144 MaskType maskType = SkFont::kBW_MaskType; |
| 141 if (paint.isAntiAlias()) { | 145 if (paint.isAntiAlias()) { |
| 142 maskType = paint.isLCDRenderText() ? kLCD_MaskType : kA8_MaskType; | 146 maskType = paint.isLCDRenderText() ? kLCD_MaskType : kA8_MaskType; |
| 143 } | 147 } |
| 144 | 148 |
| 145 return Make(sk_ref_sp(paint.getTypeface()), paint.getTextSize(), paint.getTe
xtScaleX(), | 149 return Make(sk_ref_sp(paint.getTypeface()), paint.getTextSize(), paint.getTe
xtScaleX(), |
| 146 paint.getTextSkewX(), maskType, flags); | 150 paint.getTextSkewX(), maskType, flags); |
| 147 } | 151 } |
| OLD | NEW |