diff options
author | reed <reed@google.com> | 2015-05-12 09:50:04 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-05-12 09:50:04 -0700 |
commit | 39a9a5069b25aa8b9529118cfd0ece5f412fb56b (patch) | |
tree | 6857910652952189574c5f3df7425b06db7caed9 /include/core | |
parent | 67d71c898249a7af3523b16c6a69895a63bfae0a (diff) |
Make SkAdvancedTypefaceMetrics private.
Review URL: https://codereview.chromium.org/1129283003
Diffstat (limited to 'include/core')
-rw-r--r-- | include/core/SkAdvancedTypefaceMetrics.h | 162 | ||||
-rw-r--r-- | include/core/SkTypeface.h | 17 |
2 files changed, 14 insertions, 165 deletions
diff --git a/include/core/SkAdvancedTypefaceMetrics.h b/include/core/SkAdvancedTypefaceMetrics.h deleted file mode 100644 index 06757c0c17..0000000000 --- a/include/core/SkAdvancedTypefaceMetrics.h +++ /dev/null @@ -1,162 +0,0 @@ - -/* - * Copyright 2011 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - - -#ifndef SkAdvancedTypefaceMetrics_DEFINED -#define SkAdvancedTypefaceMetrics_DEFINED - -#include "SkRect.h" -#include "SkRefCnt.h" -#include "SkString.h" -#include "SkTDArray.h" -#include "SkTemplates.h" - -/** \class SkAdvancedTypefaceMetrics - - The SkAdvancedTypefaceMetrics class is used by the PDF backend to correctly - embed typefaces. This class is created and filled in with information by - SkTypeface::getAdvancedTypefaceMetrics. -*/ - -class SkAdvancedTypefaceMetrics : public SkRefCnt { -public: - SK_DECLARE_INST_COUNT(SkAdvancedTypefaceMetrics) - - SkString fFontName; - - enum FontType { - kType1_Font, - kType1CID_Font, - kCFF_Font, - kTrueType_Font, - kOther_Font, - }; - // The type of the underlying font program. This field determines which - // of the following fields are valid. If it is kOther_Font the per glyph - // information will never be populated. - FontType fType; - - enum FontFlags { - kEmpty_FontFlag = 0x0, //!<No flags set - kMultiMaster_FontFlag = 0x1, //!<May be true for Type1 or CFF fonts. - kNotEmbeddable_FontFlag = 0x2, //!<May not be embedded. - kNotSubsettable_FontFlag = 0x4, //!<May not be subset. - }; - // Global font flags. - FontFlags fFlags; - - uint16_t fLastGlyphID; // The last valid glyph ID in the font. - uint16_t fEmSize; // The size of the em box (defines font units). - - // These enum values match the values used in the PDF file format. - enum StyleFlags { - kFixedPitch_Style = 0x00001, - kSerif_Style = 0x00002, - kScript_Style = 0x00008, - kItalic_Style = 0x00040, - kAllCaps_Style = 0x10000, - kSmallCaps_Style = 0x20000, - kForceBold_Style = 0x40000 - }; - uint16_t fStyle; // Font style characteristics. - int16_t fItalicAngle; // Counterclockwise degrees from vertical of the - // dominant vertical stroke for an Italic face. - // The following fields are all in font units. - int16_t fAscent; // Max height above baseline, not including accents. - int16_t fDescent; // Max depth below baseline (negative). - int16_t fStemV; // Thickness of dominant vertical stem. - int16_t fCapHeight; // Height (from baseline) of top of flat capitals. - - SkIRect fBBox; // The bounding box of all glyphs (in font units). - - // The type of advance data wanted. - enum PerGlyphInfo { - kNo_PerGlyphInfo = 0x0, // Don't populate any per glyph info. - kHAdvance_PerGlyphInfo = 0x1, // Populate horizontal advance data. - kVAdvance_PerGlyphInfo = 0x2, // Populate vertical advance data. - kGlyphNames_PerGlyphInfo = 0x4, // Populate glyph names (Type 1 only). - kToUnicode_PerGlyphInfo = 0x8 // Populate ToUnicode table, ignored - // for Type 1 fonts - }; - - template <typename Data> - struct AdvanceMetric { - enum MetricType { - kDefault, // Default advance: fAdvance.count = 1 - kRange, // Advances for a range: fAdvance.count = fEndID-fStartID - kRun // fStartID-fEndID have same advance: fAdvance.count = 1 - }; - MetricType fType; - uint16_t fStartId; - uint16_t fEndId; - SkTDArray<Data> fAdvance; - SkAutoTDelete<AdvanceMetric<Data> > fNext; - }; - - struct VerticalMetric { - int16_t fVerticalAdvance; - int16_t fOriginXDisp; // Horiz. displacement of the secondary origin. - int16_t fOriginYDisp; // Vert. displacement of the secondary origin. - }; - typedef AdvanceMetric<int16_t> WidthRange; - typedef AdvanceMetric<VerticalMetric> VerticalAdvanceRange; - - // This is indexed by glyph id. - SkAutoTDelete<WidthRange> fGlyphWidths; - // Only used for Vertical CID fonts. - SkAutoTDelete<VerticalAdvanceRange> fVerticalMetrics; - - // The names of each glyph, only populated for postscript fonts. - SkAutoTDelete<SkAutoTArray<SkString> > fGlyphNames; - - // The mapping from glyph to Unicode, only populated if - // kToUnicode_PerGlyphInfo is passed to GetAdvancedTypefaceMetrics. - SkTDArray<SkUnichar> fGlyphToUnicode; - -private: - typedef SkRefCnt INHERITED; -}; - -namespace skia_advanced_typeface_metrics_utils { - -template <typename Data> -void resetRange(SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* range, - int startId); - -template <typename Data> -SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* appendRange( - SkAutoTDelete<SkAdvancedTypefaceMetrics::AdvanceMetric<Data> >* nextSlot, - int startId); - -template <typename Data> -void finishRange( - SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* range, - int endId, - typename SkAdvancedTypefaceMetrics::AdvanceMetric<Data>::MetricType - type); - -/** Retrieve advance data for glyphs. Used by the PDF backend. It calls - underlying platform dependent API getAdvance to acquire the data. - @param num_glyphs Total number of glyphs in the given font. - @param glyphIDs For per-glyph info, specify subset of the font by - giving glyph ids. Each integer represents a glyph - id. Passing NULL means all glyphs in the font. - @param glyphIDsCount Number of elements in subsetGlyphIds. Ignored if - glyphIDs is NULL. -*/ -template <typename Data, typename FontHandle> -SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* getAdvanceData( - FontHandle fontHandle, - int num_glyphs, - const uint32_t* glyphIDs, - uint32_t glyphIDsCount, - bool (*getAdvance)(FontHandle fontHandle, int gId, Data* data)); - -} // namespace skia_advanced_typeface_metrics_utils - -#endif diff --git a/include/core/SkTypeface.h b/include/core/SkTypeface.h index 6a6d7241a2..7d8b892f2c 100644 --- a/include/core/SkTypeface.h +++ b/include/core/SkTypeface.h @@ -10,9 +10,10 @@ #ifndef SkTypeface_DEFINED #define SkTypeface_DEFINED -#include "SkAdvancedTypefaceMetrics.h" #include "SkFontStyle.h" #include "SkLazyPtr.h" +#include "SkRect.h" +#include "SkString.h" #include "SkWeakRefCnt.h" class SkDescriptor; @@ -307,6 +308,16 @@ public: } protected: + // The type of advance data wanted. + enum PerGlyphInfo { + kNo_PerGlyphInfo = 0x0, // Don't populate any per glyph info. + kHAdvance_PerGlyphInfo = 0x1, // Populate horizontal advance data. + kVAdvance_PerGlyphInfo = 0x2, // Populate vertical advance data. + kGlyphNames_PerGlyphInfo = 0x4, // Populate glyph names (Type 1 only). + kToUnicode_PerGlyphInfo = 0x8 // Populate ToUnicode table, ignored + // for Type 1 fonts + }; + /** uniqueID must be unique and non-zero */ SkTypeface(const SkFontStyle& style, SkFontID uniqueID, bool isFixedPitch = false); @@ -321,7 +332,7 @@ protected: virtual SkScalerContext* onCreateScalerContext(const SkDescriptor*) const = 0; virtual void onFilterRec(SkScalerContextRec*) const = 0; virtual SkAdvancedTypefaceMetrics* onGetAdvancedTypefaceMetrics( - SkAdvancedTypefaceMetrics::PerGlyphInfo perGlyphInfo, + PerGlyphInfo, const uint32_t* glyphIDs, uint32_t glyphIDsCount) const = 0; @@ -368,7 +379,7 @@ private: @return The returned object has already been referenced. */ SkAdvancedTypefaceMetrics* getAdvancedTypefaceMetrics( - SkAdvancedTypefaceMetrics::PerGlyphInfo perGlyphInfo, + PerGlyphInfo, const uint32_t* glyphIDs = NULL, uint32_t glyphIDsCount = 0) const; |