Index: src/core/SkLinearBitmapPipeline_tile.h |
diff --git a/src/core/SkLinearBitmapPipeline_tile.h b/src/core/SkLinearBitmapPipeline_tile.h |
index 1e07c22cf54f49921e38ce8c27f5bc1018623093..df47ba07344ab52c4fa38af4b33deb41cf274da5 100644 |
--- a/src/core/SkLinearBitmapPipeline_tile.h |
+++ b/src/core/SkLinearBitmapPipeline_tile.h |
@@ -18,11 +18,11 @@ namespace { |
class XClampStrategy { |
public: |
XClampStrategy(int32_t max) |
- : fXsMax{SkScalar(max - 0.5f)} |
+ : fXMaxPixel{SkScalar(max - 0.5f)} |
, fXMax{SkScalar(max)} { } |
void tileXPoints(Sk4s* xs) { |
- *xs = Sk4s::Min(Sk4s::Max(*xs, 0.0f), fXsMax); |
+ *xs = Sk4s::Min(Sk4s::Max(*xs, 0.0f), fXMaxPixel); |
SkASSERT(0 <= (*xs)[0] && (*xs)[0] < fXMax); |
SkASSERT(0 <= (*xs)[1] && (*xs)[1] < fXMax); |
SkASSERT(0 <= (*xs)[2] && (*xs)[2] < fXMax); |
@@ -108,18 +108,17 @@ public: |
} |
private: |
- const Sk4s fXsMax; |
+ const SkScalar fXMaxPixel; |
const SkScalar fXMax; |
}; |
class YClampStrategy { |
public: |
YClampStrategy(int32_t max) |
- : fYMax{SkScalar(max) - 0.5f} |
- , fYsMax{SkScalar(max) - 0.5f} { } |
+ : fYMax{SkScalar(max) - 0.5f} { } |
void tileYPoints(Sk4s* ys) { |
- *ys = Sk4s::Min(Sk4s::Max(*ys, 0.0f), fYsMax); |
+ *ys = Sk4s::Min(Sk4s::Max(*ys, 0.0f), fYMax); |
SkASSERT(0 <= (*ys)[0] && (*ys)[0] <= fYMax); |
SkASSERT(0 <= (*ys)[1] && (*ys)[1] <= fYMax); |
SkASSERT(0 <= (*ys)[2] && (*ys)[2] <= fYMax); |
@@ -132,7 +131,6 @@ public: |
private: |
const SkScalar fYMax; |
- const Sk4s fYsMax; |
}; |
SkScalar tile_mod(SkScalar x, SkScalar base) { |
@@ -143,14 +141,13 @@ class XRepeatStrategy { |
public: |
XRepeatStrategy(int32_t max) |
: fXMax{SkScalar(max)} |
- , fXsMax{SkScalar(max)} |
- , fXsCap{SkScalar(nextafterf(SkScalar(max), 0.0f))} |
- , fXsInvMax{1.0f / SkScalar(max)} { } |
+ , fXCap{SkScalar(nextafterf(SkScalar(max), 0.0f))} |
+ , fXInvMax{1.0f / SkScalar(max)} { } |
void tileXPoints(Sk4s* xs) { |
- Sk4s divX = *xs * fXsInvMax; |
- Sk4s modX = *xs - divX.floor() * fXsMax; |
- *xs = Sk4s::Min(fXsCap, modX); |
+ Sk4s divX = *xs * fXInvMax; |
+ Sk4s modX = *xs - divX.floor() * fXMax; |
+ *xs = Sk4s::Min(fXCap, modX); |
SkASSERT(0 <= (*xs)[0] && (*xs)[0] < fXMax); |
SkASSERT(0 <= (*xs)[1] && (*xs)[1] < fXMax); |
SkASSERT(0 <= (*xs)[2] && (*xs)[2] < fXMax); |
@@ -228,9 +225,8 @@ public: |
private: |
const SkScalar fXMax; |
- const Sk4s fXsMax; |
- const Sk4s fXsCap; |
- const Sk4s fXsInvMax; |
+ const SkScalar fXCap; |
+ const SkScalar fXInvMax; |
}; |
// The XRepeatUnitScaleStrategy exploits the situation where dx = 1.0. The main advantage is that |
@@ -242,14 +238,13 @@ class XRepeatUnitScaleStrategy { |
public: |
XRepeatUnitScaleStrategy(int32_t max) |
: fXMax{SkScalar(max)} |
- , fXsMax{SkScalar(max)} |
- , fXsCap{SkScalar(nextafterf(SkScalar(max), 0.0f))} |
- , fXsInvMax{1.0f / SkScalar(max)} { } |
+ , fXCap{SkScalar(nextafterf(SkScalar(max), 0.0f))} |
+ , fXInvMax{1.0f / SkScalar(max)} { } |
void tileXPoints(Sk4s* xs) { |
- Sk4s divX = *xs * fXsInvMax; |
- Sk4s modX = *xs - divX.floor() * fXsMax; |
- *xs = Sk4s::Min(fXsCap, modX); |
+ Sk4s divX = *xs * fXInvMax; |
+ Sk4s modX = *xs - divX.floor() * fXMax; |
+ *xs = Sk4s::Min(fXCap, modX); |
SkASSERT(0 <= (*xs)[0] && (*xs)[0] < fXMax); |
SkASSERT(0 <= (*xs)[1] && (*xs)[1] < fXMax); |
SkASSERT(0 <= (*xs)[2] && (*xs)[2] < fXMax); |
@@ -319,21 +314,19 @@ public: |
private: |
const SkScalar fXMax; |
- const Sk4s fXsMax; |
- const Sk4s fXsCap; |
- const Sk4s fXsInvMax; |
+ const SkScalar fXCap; |
+ const SkScalar fXInvMax; |
}; |
class YRepeatStrategy { |
public: |
YRepeatStrategy(int32_t max) |
: fYMax{SkScalar(max)} |
- , fYsMax{SkScalar(max)} |
, fYsInvMax{1.0f / SkScalar(max)} { } |
void tileYPoints(Sk4s* ys) { |
Sk4s divY = *ys * fYsInvMax; |
- Sk4s modY = *ys - divY.floor() * fYsMax; |
+ Sk4s modY = *ys - divY.floor() * fYMax; |
*ys = modY; |
SkASSERT(0 <= (*ys)[0] && (*ys)[0] < fYMax); |
SkASSERT(0 <= (*ys)[1] && (*ys)[1] < fYMax); |
@@ -349,53 +342,51 @@ public: |
private: |
const SkScalar fYMax; |
- const Sk4s fYsMax; |
- const Sk4s fYsInvMax; |
+ const SkScalar fYsInvMax; |
}; |
// max = 40 |
// mq2[x_] := Abs[(x - 40) - Floor[(x - 40)/80] * 80 - 40] |
class XMirrorStrategy { |
public: |
XMirrorStrategy(int32_t max) |
- : fXsMax{SkScalar(max)} |
- , fXsCap{SkScalar(nextafterf(SkScalar(max), 0.0f))} |
- , fXsDoubleInvMax{1.0f / (2.0f * SkScalar(max))} { } |
+ : fXMax{SkScalar(max)} |
+ , fXCap{SkScalar(nextafterf(SkScalar(max), 0.0f))} |
+ , fXDoubleInvMax{1.0f / (2.0f * SkScalar(max))} { } |
void tileXPoints(Sk4s* xs) { |
- Sk4f bias = *xs - fXsMax; |
- Sk4f div = bias * fXsDoubleInvMax; |
- Sk4f mod = bias - div.floor() * 2.0f * fXsMax; |
- Sk4f unbias = mod - fXsMax; |
- *xs = Sk4f::Min(unbias.abs(), fXsCap); |
- SkASSERT(0 <= (*xs)[0] && (*xs)[0] < fXsMax[0]); |
- SkASSERT(0 <= (*xs)[1] && (*xs)[1] < fXsMax[0]); |
- SkASSERT(0 <= (*xs)[2] && (*xs)[2] < fXsMax[0]); |
- SkASSERT(0 <= (*xs)[3] && (*xs)[3] < fXsMax[0]); |
+ Sk4f bias = *xs - fXMax; |
+ Sk4f div = bias * fXDoubleInvMax; |
+ Sk4f mod = bias - div.floor() * 2.0f * fXMax; |
+ Sk4f unbias = mod - fXMax; |
+ *xs = Sk4f::Min(unbias.abs(), fXCap); |
+ SkASSERT(0 <= (*xs)[0] && (*xs)[0] < fXMax); |
+ SkASSERT(0 <= (*xs)[1] && (*xs)[1] < fXMax); |
+ SkASSERT(0 <= (*xs)[2] && (*xs)[2] < fXMax); |
+ SkASSERT(0 <= (*xs)[3] && (*xs)[3] < fXMax); |
} |
template <typename Next> |
bool maybeProcessSpan(Span originalSpan, Next* next) { return false; } |
private: |
- Sk4f fXsMax; |
- Sk4f fXsCap; |
- Sk4f fXsDoubleInvMax; |
+ SkScalar fXMax; |
+ SkScalar fXCap; |
+ SkScalar fXDoubleInvMax; |
}; |
class YMirrorStrategy { |
public: |
YMirrorStrategy(int32_t max) |
: fYMax{SkScalar(max)} |
- , fYsMax{SkScalar(max)} |
- , fYsCap{nextafterf(SkScalar(max), 0.0f)} |
- , fYsDoubleInvMax{1.0f / (2.0f * SkScalar(max))} { } |
+ , fYCap{nextafterf(SkScalar(max), 0.0f)} |
+ , fYDoubleInvMax{1.0f / (2.0f * SkScalar(max))} { } |
void tileYPoints(Sk4s* ys) { |
- Sk4f bias = *ys - fYsMax; |
- Sk4f div = bias * fYsDoubleInvMax; |
- Sk4f mod = bias - div.floor() * 2.0f * fYsMax; |
- Sk4f unbias = mod - fYsMax; |
- *ys = Sk4f::Min(unbias.abs(), fYsCap); |
+ Sk4f bias = *ys - fYMax; |
+ Sk4f div = bias * fYDoubleInvMax; |
+ Sk4f mod = bias - div.floor() * 2.0f * fYMax; |
+ Sk4f unbias = mod - fYMax; |
+ *ys = Sk4f::Min(unbias.abs(), fYCap); |
SkASSERT(0 <= (*ys)[0] && (*ys)[0] < fYMax); |
SkASSERT(0 <= (*ys)[1] && (*ys)[1] < fYMax); |
SkASSERT(0 <= (*ys)[2] && (*ys)[2] < fYMax); |
@@ -404,19 +395,18 @@ public: |
SkScalar tileY(SkScalar y) { |
SkScalar bias = y - fYMax; |
- SkScalar div = bias * fYsDoubleInvMax[0]; |
+ SkScalar div = bias * fYDoubleInvMax; |
SkScalar mod = bias - SkScalarFloorToScalar(div) * 2.0f * fYMax; |
SkScalar unbias = mod - fYMax; |
- SkScalar answer = SkMinScalar(SkScalarAbs(unbias), fYsCap[0]); |
+ SkScalar answer = SkMinScalar(SkScalarAbs(unbias), fYCap); |
SkASSERT(0 <= answer && answer < fYMax); |
return answer; |
} |
private: |
SkScalar fYMax; |
- Sk4f fYsMax; |
- Sk4f fYsCap; |
- Sk4f fYsDoubleInvMax; |
+ SkScalar fYCap; |
+ SkScalar fYDoubleInvMax; |
}; |
} // namespace |