OLD | NEW |
1 | 1 |
2 | 2 |
3 /* | 3 /* |
4 * Copyright 2006 The Android Open Source Project | 4 * Copyright 2006 The Android Open Source Project |
5 * | 5 * |
6 * Use of this source code is governed by a BSD-style license that can be | 6 * Use of this source code is governed by a BSD-style license that can be |
7 * found in the LICENSE file. | 7 * found in the LICENSE file. |
8 */ | 8 */ |
9 | 9 |
10 | 10 |
(...skipping 713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
724 kUTF16_TextEncoding, //!< the text parameters are UTF16 | 724 kUTF16_TextEncoding, //!< the text parameters are UTF16 |
725 kUTF32_TextEncoding, //!< the text parameters are UTF32 | 725 kUTF32_TextEncoding, //!< the text parameters are UTF32 |
726 kGlyphID_TextEncoding //!< the text parameters are glyph indices | 726 kGlyphID_TextEncoding //!< the text parameters are glyph indices |
727 }; | 727 }; |
728 | 728 |
729 TextEncoding getTextEncoding() const { return (TextEncoding)fTextEncoding; } | 729 TextEncoding getTextEncoding() const { return (TextEncoding)fTextEncoding; } |
730 | 730 |
731 void setTextEncoding(TextEncoding encoding); | 731 void setTextEncoding(TextEncoding encoding); |
732 | 732 |
733 struct FontMetrics { | 733 struct FontMetrics { |
| 734 /** Flags which indicate the confidence level of various metrics. |
| 735 A set flag indicates that the metric may be trusted. |
| 736 */ |
| 737 enum FontMetricsFlags { |
| 738 kUnderlineThinknessIsValid_Flag = 1 << 0, |
| 739 kUnderlinePositionIsValid_Flag = 1 << 1, |
| 740 }; |
| 741 |
| 742 uint32_t fFlags; //!< Bit field to identify which values are un
known |
734 SkScalar fTop; //!< The greatest distance above the baseline fo
r any glyph (will be <= 0) | 743 SkScalar fTop; //!< The greatest distance above the baseline fo
r any glyph (will be <= 0) |
735 SkScalar fAscent; //!< The recommended distance above the baseline
(will be <= 0) | 744 SkScalar fAscent; //!< The recommended distance above the baseline
(will be <= 0) |
736 SkScalar fDescent; //!< The recommended distance below the baseline
(will be >= 0) | 745 SkScalar fDescent; //!< The recommended distance below the baseline
(will be >= 0) |
737 SkScalar fBottom; //!< The greatest distance below the baseline fo
r any glyph (will be >= 0) | 746 SkScalar fBottom; //!< The greatest distance below the baseline fo
r any glyph (will be >= 0) |
738 SkScalar fLeading; //!< The recommended distance to add between lin
es of text (will be >= 0) | 747 SkScalar fLeading; //!< The recommended distance to add between lin
es of text (will be >= 0) |
739 SkScalar fAvgCharWidth; //!< the average charactor width (>= 0) | 748 SkScalar fAvgCharWidth; //!< the average character width (>= 0) |
740 SkScalar fMaxCharWidth; //!< the max charactor width (>= 0) | 749 SkScalar fMaxCharWidth; //!< the max character width (>= 0) |
741 SkScalar fXMin; //!< The minimum bounding box x value for all gl
yphs | 750 SkScalar fXMin; //!< The minimum bounding box x value for all gl
yphs |
742 SkScalar fXMax; //!< The maximum bounding box x value for all gl
yphs | 751 SkScalar fXMax; //!< The maximum bounding box x value for all gl
yphs |
743 SkScalar fXHeight; //!< The height of an 'x' in px, or 0 if no 'x'
in face | 752 SkScalar fXHeight; //!< The height of an 'x' in px, or 0 if no 'x'
in face |
744 SkScalar fCapHeight; //!< The cap height (> 0), or 0 if cannot be de
termined. | 753 SkScalar fCapHeight; //!< The cap height (> 0), or 0 if cannot be de
termined. |
| 754 SkScalar fUnderlineThickness; //!< underline thickness, or 0 if canno
t be determined |
| 755 |
| 756 /** Underline Position - position of the top of the Underline stroke |
| 757 relative to the baseline, this can have following values |
| 758 - Negative - means underline should be drawn above baseline. |
| 759 - Positive - means below baseline. |
| 760 - Zero - mean underline should be drawn on baseline. |
| 761 */ |
| 762 SkScalar fUnderlinePosition; //!< underline position, or 0 if cannot
be determined |
| 763 |
| 764 /** If the fontmetrics has a valid underlinethickness, return true, and
set the |
| 765 thickness param to that value. If it doesn't return false and ig
nore the |
| 766 thickness param. |
| 767 */ |
| 768 bool hasUnderlineThickness(SkScalar* thickness) const { |
| 769 if (SkToBool(fFlags & kUnderlineThinknessIsValid_Flag)) { |
| 770 *thickness = fUnderlineThickness; |
| 771 return true; |
| 772 } |
| 773 return false; |
| 774 } |
| 775 |
| 776 /** If the fontmetrics has a valid underlineposition, return true, and
set the |
| 777 thickness param to that value. If it doesn't return false and ig
nore the |
| 778 thickness param. |
| 779 */ |
| 780 bool hasUnderlinePosition(SkScalar* position) const { |
| 781 if (SkToBool(fFlags & kUnderlinePositionIsValid_Flag)) { |
| 782 *position = fUnderlinePosition; |
| 783 return true; |
| 784 } |
| 785 return false; |
| 786 } |
| 787 |
745 }; | 788 }; |
746 | 789 |
747 /** Return the recommend spacing between lines (which will be | 790 /** Return the recommend spacing between lines (which will be |
748 fDescent - fAscent + fLeading). | 791 fDescent - fAscent + fLeading). |
749 If metrics is not null, return in it the font metrics for the | 792 If metrics is not null, return in it the font metrics for the |
750 typeface/pointsize/etc. currently set in the paint. | 793 typeface/pointsize/etc. currently set in the paint. |
751 @param metrics If not null, returns the font metrics for the | 794 @param metrics If not null, returns the font metrics for the |
752 current typeface/pointsize/etc setting in this | 795 current typeface/pointsize/etc setting in this |
753 paint. | 796 paint. |
754 @param scale If not 0, return width as if the canvas were scaled | 797 @param scale If not 0, return width as if the canvas were scaled |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1090 #ifdef SK_BUILD_FOR_ANDROID | 1133 #ifdef SK_BUILD_FOR_ANDROID |
1091 SkPaintOptionsAndroid fPaintOptionsAndroid; | 1134 SkPaintOptionsAndroid fPaintOptionsAndroid; |
1092 | 1135 |
1093 // In order for the == operator to work properly this must be the last field | 1136 // In order for the == operator to work properly this must be the last field |
1094 // in the struct so that we can do a memcmp to this field's offset. | 1137 // in the struct so that we can do a memcmp to this field's offset. |
1095 uint32_t fGenerationID; | 1138 uint32_t fGenerationID; |
1096 #endif | 1139 #endif |
1097 }; | 1140 }; |
1098 | 1141 |
1099 #endif | 1142 #endif |
OLD | NEW |