| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 #include "SkPaint.h" | 9 #include "SkPaint.h" |
| 10 #include "SkAnnotation.h" | 10 #include "SkAnnotation.h" |
| (...skipping 978 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 989 uint32_t flags = this->getFlags(); | 989 uint32_t flags = this->getFlags(); |
| 990 // clear the flags we don't care about | 990 // clear the flags we don't care about |
| 991 flags &= ~TEXT_AS_PATHS_PAINT_FLAGS_TO_IGNORE; | 991 flags &= ~TEXT_AS_PATHS_PAINT_FLAGS_TO_IGNORE; |
| 992 // set the flags we do care about | 992 // set the flags we do care about |
| 993 flags |= SkPaint::kSubpixelText_Flag; | 993 flags |= SkPaint::kSubpixelText_Flag; |
| 994 | 994 |
| 995 this->setFlags(flags); | 995 this->setFlags(flags); |
| 996 this->setHinting(SkPaint::kNo_Hinting); | 996 this->setHinting(SkPaint::kNo_Hinting); |
| 997 | 997 |
| 998 SkScalar textSize = fTextSize; | 998 SkScalar textSize = fTextSize; |
| 999 this->setTextSize(kCanonicalTextSizeForPaths); | 999 SkScalar scale = SK_Scalar1; |
| 1000 return textSize / kCanonicalTextSizeForPaths; | 1000 |
| 1001 // path effect will affects the generation of path for text, don't change |
| 1002 // SkPaint if it exists. If no path effect, text drawing is based on |
| 1003 // canonical text, so textSize and strokeWidth need to be reset. However, |
| 1004 // hairline stroked text is treated as filled to generate its path. |
| 1005 if (NULL == this->getPathEffect()) { |
| 1006 this->setTextSize(kCanonicalTextSizeForPaths); |
| 1007 scale = textSize / kCanonicalTextSizeForPaths; |
| 1008 |
| 1009 if (this->getStrokeWidth() > 0 && |
| 1010 SkPaint::kFill_Style != this->getStyle()) { |
| 1011 this->setStrokeWidth(SkScalarDiv(this->getStrokeWidth(), scale)); |
| 1012 } else { |
| 1013 this->setStyle(SkPaint::kFill_Style); |
| 1014 } |
| 1015 } |
| 1016 |
| 1017 return scale; |
| 1001 } | 1018 } |
| 1002 | 1019 |
| 1003 class SkCanonicalizePaint { | 1020 class SkCanonicalizePaint { |
| 1004 public: | 1021 public: |
| 1005 SkCanonicalizePaint(const SkPaint& paint) : fPaint(&paint), fScale(0) { | 1022 SkCanonicalizePaint(const SkPaint& paint) : fPaint(&paint), fScale(0) { |
| 1006 if (paint.isLinearText() || paint.tooBigToUseCache()) { | 1023 if (paint.isLinearText() || paint.tooBigToUseCache()) { |
| 1007 SkPaint* p = fLazy.set(paint); | 1024 SkPaint* p = fLazy.set(paint); |
| 1008 fScale = p->setupForAsPaths(); | 1025 fScale = p->setupForAsPaths(); |
| 1009 fPaint = p; | 1026 fPaint = p; |
| 1010 } | 1027 } |
| (...skipping 1725 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2736 } | 2753 } |
| 2737 #ifdef SK_BUILD_FOR_ANDROID | 2754 #ifdef SK_BUILD_FOR_ANDROID |
| 2738 if (dirty & kPaintOptionsAndroid_DirtyBit) { | 2755 if (dirty & kPaintOptionsAndroid_DirtyBit) { |
| 2739 SkPaintOptionsAndroid options; | 2756 SkPaintOptionsAndroid options; |
| 2740 options.unflatten(buffer); | 2757 options.unflatten(buffer); |
| 2741 paint->setPaintOptionsAndroid(options); | 2758 paint->setPaintOptionsAndroid(options); |
| 2742 } | 2759 } |
| 2743 #endif | 2760 #endif |
| 2744 SkASSERT(dirty == paint->fDirtyBits); | 2761 SkASSERT(dirty == paint->fDirtyBits); |
| 2745 } | 2762 } |
| OLD | NEW |