aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-11-14 13:12:47 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-11-14 13:12:47 +0000
commitb42403bdb9989150878ef55d32773070abf53ce1 (patch)
tree134dfe3b47ce3a72f645da0492c34ed13009302b /src/core
parented7f040853a70c51e4236061f7c6bce8144ac926 (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.cpp98
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(