From b42403bdb9989150878ef55d32773070abf53ce1 Mon Sep 17 00:00:00 2001 From: "reed@google.com" Date: Mon, 14 Nov 2011 13:12:47 +0000 Subject: reorder template functions so it compiles in Lion git-svn-id: http://skia.googlecode.com/svn/trunk@2672 2bbb7eff-a529-9590-31e7-b0007b416f81 --- src/core/SkAdvancedTypefaceMetrics.cpp | 98 +++++++++++++++++----------------- 1 file changed, 49 insertions(+), 49 deletions(-) (limited to 'src/core') 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 @@ -30,87 +30,63 @@ namespace skia_advanced_typeface_metrics_utils { const int16_t kInvalidAdvance = SK_MinS16; const int16_t kDontCareAdvance = SK_MinS16 + 1; -template -void resetRange(SkAdvancedTypefaceMetrics::AdvanceMetric* range, - int startId) { - range->fStartId = startId; - range->fAdvance.setCount(0); -} - -template -SkAdvancedTypefaceMetrics::AdvanceMetric* appendRange( - SkTScopedPtr >* nextSlot, - int startId) { - nextSlot->reset(new SkAdvancedTypefaceMetrics::AdvanceMetric); - resetRange(nextSlot->get(), startId); - return nextSlot->get(); -} - -template -void finishRange( - SkAdvancedTypefaceMetrics::AdvanceMetric* range, - int endId, - typename SkAdvancedTypefaceMetrics::AdvanceMetric::MetricType - type) { - range->fEndId = endId; - range->fType = type; - stripUninterestingTrailingAdvancesFromRange(range); - int newLength; - if (type == SkAdvancedTypefaceMetrics::AdvanceMetric::kRange) { - newLength = range->fEndId - range->fStartId + 1; - } else { - if (range->fEndId == range->fStartId) { - range->fType = - SkAdvancedTypefaceMetrics::AdvanceMetric::kRange; - } - newLength = 1; - } - SkASSERT(range->fAdvance.count() >= newLength); - range->fAdvance.setCount(newLength); - zeroWildcardsInRange(range); -} - template void stripUninterestingTrailingAdvancesFromRange( - SkAdvancedTypefaceMetrics::AdvanceMetric* range) { + SkAdvancedTypefaceMetrics::AdvanceMetric* range) { SkASSERT(false); } template <> void stripUninterestingTrailingAdvancesFromRange( - SkAdvancedTypefaceMetrics::AdvanceMetric* range) { + SkAdvancedTypefaceMetrics::AdvanceMetric* 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; } } } +template +void resetRange(SkAdvancedTypefaceMetrics::AdvanceMetric* range, + int startId) { + range->fStartId = startId; + range->fAdvance.setCount(0); +} + +template +SkAdvancedTypefaceMetrics::AdvanceMetric* appendRange( + SkTScopedPtr >* nextSlot, + int startId) { + nextSlot->reset(new SkAdvancedTypefaceMetrics::AdvanceMetric); + resetRange(nextSlot->get(), startId); + return nextSlot->get(); +} + template void zeroWildcardsInRange( - SkAdvancedTypefaceMetrics::AdvanceMetric* range) { + SkAdvancedTypefaceMetrics::AdvanceMetric* range) { SkASSERT(false); } template <> void zeroWildcardsInRange( - SkAdvancedTypefaceMetrics::AdvanceMetric* range) { + SkAdvancedTypefaceMetrics::AdvanceMetric* 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( } } } + +template +void finishRange( + SkAdvancedTypefaceMetrics::AdvanceMetric* range, + int endId, + typename SkAdvancedTypefaceMetrics::AdvanceMetric::MetricType + type) { + range->fEndId = endId; + range->fType = type; + stripUninterestingTrailingAdvancesFromRange(range); + int newLength; + if (type == SkAdvancedTypefaceMetrics::AdvanceMetric::kRange) { + newLength = range->fEndId - range->fStartId + 1; + } else { + if (range->fEndId == range->fStartId) { + range->fType = + SkAdvancedTypefaceMetrics::AdvanceMetric::kRange; + } + newLength = 1; + } + SkASSERT(range->fAdvance.count() >= newLength); + range->fAdvance.setCount(newLength); + zeroWildcardsInRange(range); +} template SkAdvancedTypefaceMetrics::AdvanceMetric* getAdvanceData( -- cgit v1.2.3