diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-11-14 13:12:47 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-11-14 13:12:47 +0000 |
commit | b42403bdb9989150878ef55d32773070abf53ce1 (patch) | |
tree | 134dfe3b47ce3a72f645da0492c34ed13009302b /src/core | |
parent | ed7f040853a70c51e4236061f7c6bce8144ac926 (diff) |
reorder template functions so it compiles in Lion
git-svn-id: http://skia.googlecode.com/svn/trunk@2672 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkAdvancedTypefaceMetrics.cpp | 98 |
1 files changed, 49 insertions, 49 deletions
diff --git a/src/core/SkAdvancedTypefaceMetrics.cpp b/src/core/SkAdvancedTypefaceMetrics.cpp index e004edc667..fbbed0c370 100644 --- a/src/core/SkAdvancedTypefaceMetrics.cpp +++ b/src/core/SkAdvancedTypefaceMetrics.cpp @@ -31,65 +31,25 @@ const int16_t kInvalidAdvance = SK_MinS16; const int16_t kDontCareAdvance = SK_MinS16 + 1; template <typename Data> -void resetRange(SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* range, - int startId) { - range->fStartId = startId; - range->fAdvance.setCount(0); -} - -template <typename Data> -SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* appendRange( - SkTScopedPtr<SkAdvancedTypefaceMetrics::AdvanceMetric<Data> >* nextSlot, - int startId) { - nextSlot->reset(new SkAdvancedTypefaceMetrics::AdvanceMetric<Data>); - resetRange(nextSlot->get(), startId); - return nextSlot->get(); -} - -template <typename Data> -void finishRange( - SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* range, - int endId, - typename SkAdvancedTypefaceMetrics::AdvanceMetric<Data>::MetricType - type) { - range->fEndId = endId; - range->fType = type; - stripUninterestingTrailingAdvancesFromRange(range); - int newLength; - if (type == SkAdvancedTypefaceMetrics::AdvanceMetric<Data>::kRange) { - newLength = range->fEndId - range->fStartId + 1; - } else { - if (range->fEndId == range->fStartId) { - range->fType = - SkAdvancedTypefaceMetrics::AdvanceMetric<Data>::kRange; - } - newLength = 1; - } - SkASSERT(range->fAdvance.count() >= newLength); - range->fAdvance.setCount(newLength); - zeroWildcardsInRange(range); -} - -template <typename Data> void stripUninterestingTrailingAdvancesFromRange( - SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* range) { + SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* range) { SkASSERT(false); } template <> void stripUninterestingTrailingAdvancesFromRange<int16_t>( - SkAdvancedTypefaceMetrics::AdvanceMetric<int16_t>* range) { + SkAdvancedTypefaceMetrics::AdvanceMetric<int16_t>* range) { SkASSERT(range); - + int expectedAdvanceCount = range->fEndId - range->fStartId + 1; if (range->fAdvance.count() < expectedAdvanceCount) { return; } - + for (int i = expectedAdvanceCount - 1; i >= 0; --i) { if (range->fAdvance[i] != kDontCareAdvance && - range->fAdvance[i] != kInvalidAdvance && - range->fAdvance[i] != 0) { + range->fAdvance[i] != kInvalidAdvance && + range->fAdvance[i] != 0) { range->fEndId = range->fStartId + i; break; } @@ -97,20 +57,36 @@ void stripUninterestingTrailingAdvancesFromRange<int16_t>( } template <typename Data> +void resetRange(SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* range, + int startId) { + range->fStartId = startId; + range->fAdvance.setCount(0); +} + +template <typename Data> +SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* appendRange( + SkTScopedPtr<SkAdvancedTypefaceMetrics::AdvanceMetric<Data> >* nextSlot, + int startId) { + nextSlot->reset(new SkAdvancedTypefaceMetrics::AdvanceMetric<Data>); + resetRange(nextSlot->get(), startId); + return nextSlot->get(); +} + +template <typename Data> void zeroWildcardsInRange( - SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* range) { + SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* range) { SkASSERT(false); } template <> void zeroWildcardsInRange<int16_t>( - SkAdvancedTypefaceMetrics::AdvanceMetric<int16_t>* range) { + SkAdvancedTypefaceMetrics::AdvanceMetric<int16_t>* range) { SkASSERT(range); if (range->fType != SkAdvancedTypefaceMetrics::WidthRange::kRange) { return; } SkASSERT(range->fAdvance.count() == range->fEndId - range->fStartId + 1); - + // Zero out wildcards. for (int i = 0; i < range->fAdvance.count(); ++i) { if (range->fAdvance[i] == kDontCareAdvance) { @@ -118,6 +94,30 @@ void zeroWildcardsInRange<int16_t>( } } } + +template <typename Data> +void finishRange( + SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* range, + int endId, + typename SkAdvancedTypefaceMetrics::AdvanceMetric<Data>::MetricType + type) { + range->fEndId = endId; + range->fType = type; + stripUninterestingTrailingAdvancesFromRange(range); + int newLength; + if (type == SkAdvancedTypefaceMetrics::AdvanceMetric<Data>::kRange) { + newLength = range->fEndId - range->fStartId + 1; + } else { + if (range->fEndId == range->fStartId) { + range->fType = + SkAdvancedTypefaceMetrics::AdvanceMetric<Data>::kRange; + } + newLength = 1; + } + SkASSERT(range->fAdvance.count() >= newLength); + range->fAdvance.setCount(newLength); + zeroWildcardsInRange(range); +} template <typename Data, typename FontHandle> SkAdvancedTypefaceMetrics::AdvanceMetric<Data>* getAdvanceData( |