Chromium Code Reviews| Index: src/core/SkFindAndPlaceGlyph.h |
| diff --git a/src/core/SkFindAndPlaceGlyph.h b/src/core/SkFindAndPlaceGlyph.h |
| index 18b93f70a466291cc1f44989f3d75463442ad919..35ae77cfe3191c2cf8ff4dbfd54e1cb048bbfd8c 100644 |
| --- a/src/core/SkFindAndPlaceGlyph.h |
| +++ b/src/core/SkFindAndPlaceGlyph.h |
| @@ -381,14 +381,16 @@ private: |
| // produce the correct sub-pixel alignment. If a position is aligned with an axis a shortcut |
| // of 0 is used for the sub-pixel position. |
| static SkIPoint SubpixelAlignment(SkAxisAlignment axisAlignment, SkPoint position) { |
| + // Only the fractional part of position.fX and position.fY matter, because the result of |
| + // this function will just be passed to FixedToSub. |
| switch (axisAlignment) { |
| case kX_SkAxisAlignment: |
| - return {SkScalarToFixed(position.fX + kSubpixelRounding), 0}; |
| + return {SkScalarToFixed(SkScalarFraction(position.fX) + kSubpixelRounding), 0}; |
|
bungeman-skia
2016/03/10 20:55:58
SkScalarFraction is currently really super slow. I
dogben
2016/03/10 21:16:22
I maybe ought to always return positive numbers to
bungeman-skia
2016/03/10 21:37:49
Always returning positive numbers would just be ex
|
| case kY_SkAxisAlignment: |
| - return {0, SkScalarToFixed(position.fY + kSubpixelRounding)}; |
| + return {0, SkScalarToFixed(SkScalarFraction(position.fY) + kSubpixelRounding)}; |
| case kNone_SkAxisAlignment: |
| - return {SkScalarToFixed(position.fX + kSubpixelRounding), |
| - SkScalarToFixed(position.fY + kSubpixelRounding)}; |
| + return {SkScalarToFixed(SkScalarFraction(position.fX) + kSubpixelRounding), |
| + SkScalarToFixed(SkScalarFraction(position.fY) + kSubpixelRounding)}; |
| } |
| SkFAIL("Should not get here."); |
| return {0, 0}; |