diff --git a/bench/GradientBench.cpp b/bench/GradientBench.cpp index 21b73708d1..f32c4ef1d2 100644 --- a/bench/GradientBench.cpp +++ b/bench/GradientBench.cpp @@ -101,8 +101,8 @@ static SkShader* MakeConicalZeroRad(const SkPoint pts[2], const GradData& data, static SkShader* MakeConicalOutside(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm, float scale) { SkPoint center0, center1; - SkScalar radius0 = (pts[1].fX - pts[0].fX) / 10; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius0 = SkScalarDiv(pts[1].fX - pts[0].fX, 10); + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center0.set(pts[0].fX + radius0, pts[0].fY + radius0); center1.set(pts[1].fX - radius1, pts[1].fY - radius1); return SkGradientShader::CreateTwoPointConical(center0, radius0, @@ -115,8 +115,8 @@ static SkShader* MakeConicalOutside(const SkPoint pts[2], const GradData& data, static SkShader* MakeConicalOutsideZeroRad(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm, float scale) { SkPoint center0, center1; - SkScalar radius0 = (pts[1].fX - pts[0].fX) / 10; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius0 = SkScalarDiv(pts[1].fX - pts[0].fX, 10); + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center0.set(pts[0].fX + radius0, pts[0].fY + radius0); center1.set(pts[1].fX - radius1, pts[1].fY - radius1); return SkGradientShader::CreateTwoPointConical(center0, 0.0, diff --git a/experimental/StrokePathRenderer/GrStrokePathRenderer.cpp b/experimental/StrokePathRenderer/GrStrokePathRenderer.cpp index e693c41a66..4b41dba5b1 100644 --- a/experimental/StrokePathRenderer/GrStrokePathRenderer.cpp +++ b/experimental/StrokePathRenderer/GrStrokePathRenderer.cpp @@ -39,8 +39,8 @@ static IntersectionType intersection(const SkPoint& p1, const SkPoint& p2, SkScalar pre = SkScalarMul(x1, y2) - SkScalarMul(y1, x2), post = SkScalarMul(x3, y4) - SkScalarMul(y3, x4); // Compute the point of intersection - res.set((SkScalarMul(pre, x3 - x4) - SkScalarMul(x1 - x2, post) / d, - (SkScalarMul(pre, y3 - y4) - SkScalarMul(y1 - y2, post) / d); + res.set(SkScalarDiv(SkScalarMul(pre, x3 - x4) - SkScalarMul(x1 - x2, post), d), + SkScalarDiv(SkScalarMul(pre, y3 - y4) - SkScalarMul(y1 - y2, post), d)); // Check if the x and y coordinates are within both lines return (res.x() < GrMin(x1, x2) || res.x() > GrMax(x1, x2) || @@ -184,7 +184,9 @@ bool GrStrokePathRenderer::onDrawPath(const SkPath& origPath, SkPoint miterPt1 = miterPt[0] - *pt1; SkScalar sqDist0 = miterPt0.dot(miterPt0); SkScalar sqDist1 = miterPt1.dot(miterPt1); - const SkScalar rSq = radius*radius / sinHalfAngleSq; + const SkScalar rSq = + SkScalarDiv(SkScalarMul(radius, radius), + sinHalfAngleSq); const SkScalar sqRLimit = SkScalarMul(sqMiterLimit, rSq); if (sqDist0 > sqRLimit || sqDist1 > sqRLimit) { diff --git a/gm/glyph_pos.cpp b/gm/glyph_pos.cpp index 16cdfca11a..0da59ac6f9 100644 --- a/gm/glyph_pos.cpp +++ b/gm/glyph_pos.cpp @@ -82,8 +82,10 @@ protected: canvas->scale(3.0f, 3.0f); SkMatrix skew; skew.setIdentity(); - skew.setSkewX(8.0f / 25.0f); - skew.setSkewY(2.0f / 25.0f); + skew.setSkewX(SkScalarDiv(8.0f, + 25.0f)); + skew.setSkewY(SkScalarDiv(2.0f, + 25.0f)); canvas->concat(skew); drawTestCase(canvas, 1.0f); canvas->restore(); @@ -93,9 +95,11 @@ protected: canvas->save(); SkMatrix perspective; perspective.setIdentity(); - perspective.setPerspX(-SkScalarInvert(340)); - perspective.setSkewX(8.0f / 25.0f); - perspective.setSkewY(2.0f / 25.0f); + perspective.setPerspX(-SkScalarDiv(SK_Scalar1, 340.0f)); + perspective.setSkewX(SkScalarDiv(8.0f, + 25.0f)); + perspective.setSkewY(SkScalarDiv(2.0f, + 25.0f)); canvas->concat(perspective); diff --git a/gm/gradients.cpp b/gm/gradients.cpp index 4e6aba9521..eb1409d625 100644 --- a/gm/gradients.cpp +++ b/gm/gradients.cpp @@ -80,8 +80,8 @@ static SkShader* Make2Radial(const SkPoint pts[2], const GradData& data, static SkShader* Make2Conical(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm, const SkMatrix& localMatrix) { SkPoint center0, center1; - SkScalar radius0 = (pts[1].fX - pts[0].fX) / 10; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius0 = SkScalarDiv(pts[1].fX - pts[0].fX, 10); + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center0.set(pts[0].fX + radius0, pts[0].fY + radius0); center1.set(pts[1].fX - radius1, pts[1].fY - radius1); return SkGradientShader::CreateTwoPointConical(center1, radius1, @@ -185,8 +185,10 @@ protected: // apply an increasing y perspective as we move to the right SkMatrix perspective; perspective.setIdentity(); - perspective.setPerspY(SkIntToScalar(i+1) / 500); - perspective.setSkewX(SkIntToScalar(i+1) / 10); + perspective.setPerspY(SkScalarDiv(SkIntToScalar((unsigned) i+1), + SkIntToScalar(500))); + perspective.setSkewX(SkScalarDiv(SkIntToScalar((unsigned) i+1), + SkIntToScalar(10))); SkShader* shader = gGradMakers[j](pts, gGradData[i], tm, perspective); @@ -218,8 +220,8 @@ protected: virtual void onDraw(SkCanvas* canvas) { SkMatrix perspective; perspective.setIdentity(); - perspective.setPerspY(0.001f); - perspective.setSkewX(SkIntToScalar(8) / 25); + perspective.setPerspY(SkScalarDiv(SK_Scalar1, SkIntToScalar(1000))); + perspective.setSkewX(SkScalarDiv(SkIntToScalar(8), SkIntToScalar(25))); canvas->concat(perspective); INHERITED::onDraw(canvas); } diff --git a/gm/gradients_2pt_conical.cpp b/gm/gradients_2pt_conical.cpp index c865d7177f..f43356eaf6 100644 --- a/gm/gradients_2pt_conical.cpp +++ b/gm/gradients_2pt_conical.cpp @@ -40,8 +40,8 @@ static const GradData gGradData[] = { static SkShader* Make2ConicalOutside(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm, const SkMatrix& localMatrix) { SkPoint center0, center1; - SkScalar radius0 = (pts[1].fX - pts[0].fX) / 10; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius0 = SkScalarDiv(pts[1].fX - pts[0].fX, 10); + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center0.set(pts[0].fX + radius0, pts[0].fY + radius0); center1.set(pts[1].fX - radius1, pts[1].fY - radius1); return SkGradientShader::CreateTwoPointConical(center0, radius0, @@ -53,8 +53,8 @@ static SkShader* Make2ConicalOutside(const SkPoint pts[2], const GradData& data, static SkShader* Make2ConicalOutsideFlip(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm, const SkMatrix& localMatrix) { SkPoint center0, center1; - SkScalar radius0 = (pts[1].fX - pts[0].fX) / 10; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius0 = SkScalarDiv(pts[1].fX - pts[0].fX, 10); + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center0.set(pts[0].fX + radius0, pts[0].fY + radius0); center1.set(pts[1].fX - radius1, pts[1].fY - radius1); return SkGradientShader::CreateTwoPointConical(center1, radius1, @@ -145,7 +145,7 @@ static SkShader* Make2ConicalZeroRadOutside(const SkPoint pts[2], const GradData SkShader::TileMode tm, const SkMatrix& localMatrix) { SkPoint center0, center1; SkScalar radius0 = 0.f; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center0.set(pts[0].fX + radius0, pts[0].fY + radius0); center1.set(pts[1].fX - radius1, pts[1].fY - radius1); return SkGradientShader::CreateTwoPointConical(center0, radius0, @@ -158,7 +158,7 @@ static SkShader* Make2ConicalZeroRadFlipOutside(const SkPoint pts[2], const Grad SkShader::TileMode tm, const SkMatrix& localMatrix) { SkPoint center0, center1; SkScalar radius0 = 0.f; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center0.set(pts[0].fX + radius0, pts[0].fY + radius0); center1.set(pts[1].fX - radius1, pts[1].fY - radius1); return SkGradientShader::CreateTwoPointConical(center1, radius1, @@ -170,8 +170,8 @@ static SkShader* Make2ConicalZeroRadFlipOutside(const SkPoint pts[2], const Grad static SkShader* Make2ConicalEdgeX(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm, const SkMatrix& localMatrix) { SkPoint center0, center1; - SkScalar radius0 = (pts[1].fX - pts[0].fX) / 7; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius0 = SkScalarDiv(pts[1].fX - pts[0].fX, 7); + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center1.set(SkScalarAve(pts[0].fX, pts[1].fX), SkScalarAve(pts[0].fY, pts[1].fY)); center0.set(center1.fX + radius1, center1.fY); @@ -184,8 +184,8 @@ static SkShader* Make2ConicalEdgeX(const SkPoint pts[2], const GradData& data, static SkShader* Make2ConicalEdgeY(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm, const SkMatrix& localMatrix) { SkPoint center0, center1; - SkScalar radius0 = (pts[1].fX - pts[0].fX) / 7; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius0 = SkScalarDiv(pts[1].fX - pts[0].fX, 7); + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center1.set(SkScalarAve(pts[0].fX, pts[1].fX), SkScalarAve(pts[0].fY, pts[1].fY)); center0.set(center1.fX, center1.fY + radius1); @@ -199,7 +199,7 @@ static SkShader* Make2ConicalZeroRadEdgeX(const SkPoint pts[2], const GradData& SkShader::TileMode tm, const SkMatrix& localMatrix) { SkPoint center0, center1; SkScalar radius0 = 0.f; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center1.set(SkScalarAve(pts[0].fX, pts[1].fX), SkScalarAve(pts[0].fY, pts[1].fY)); center0.set(center1.fX + radius1, center1.fY); @@ -213,7 +213,7 @@ static SkShader* Make2ConicalZeroRadEdgeY(const SkPoint pts[2], const GradData& SkShader::TileMode tm, const SkMatrix& localMatrix) { SkPoint center0, center1; SkScalar radius0 = 0.f; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center1.set(SkScalarAve(pts[0].fX, pts[1].fX), SkScalarAve(pts[0].fY, pts[1].fY)); center0.set(center1.fX, center1.fY + radius1); @@ -226,8 +226,8 @@ static SkShader* Make2ConicalZeroRadEdgeY(const SkPoint pts[2], const GradData& static SkShader* Make2ConicalTouchX(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm, const SkMatrix& localMatrix) { SkPoint center0, center1; - SkScalar radius0 = (pts[1].fX - pts[0].fX) / 7; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius0 = SkScalarDiv(pts[1].fX - pts[0].fX, 7); + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center1.set(SkScalarAve(pts[0].fX, pts[1].fX), SkScalarAve(pts[0].fY, pts[1].fY)); center0.set(center1.fX - radius1 + radius0, center1.fY); @@ -240,8 +240,8 @@ static SkShader* Make2ConicalTouchX(const SkPoint pts[2], const GradData& data, static SkShader* Make2ConicalTouchY(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm, const SkMatrix& localMatrix) { SkPoint center0, center1; - SkScalar radius0 = (pts[1].fX - pts[0].fX) / 7; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius0 = SkScalarDiv(pts[1].fX - pts[0].fX, 7); + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center1.set(SkScalarAve(pts[0].fX, pts[1].fX), SkScalarAve(pts[0].fY, pts[1].fY)); center0.set(center1.fX, center1.fY + radius1 - radius0); diff --git a/gm/gradients_no_texture.cpp b/gm/gradients_no_texture.cpp index 391472a0c7..dea9a65784 100644 --- a/gm/gradients_no_texture.cpp +++ b/gm/gradients_no_texture.cpp @@ -59,8 +59,8 @@ static SkShader* Make2Radial(const SkPoint pts[2], const GradData& data, SkShade static SkShader* Make2Conical(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm) { SkPoint center0, center1; - SkScalar radius0 = (pts[1].fX - pts[0].fX) / 10; - SkScalar radius1 = (pts[1].fX - pts[0].fX) / 3; + SkScalar radius0 = SkScalarDiv(pts[1].fX - pts[0].fX, 10); + SkScalar radius1 = SkScalarDiv(pts[1].fX - pts[0].fX, 3); center0.set(pts[0].fX + radius0, pts[0].fY + radius0); center1.set(pts[1].fX - radius1, pts[1].fY - radius1); return SkGradientShader::CreateTwoPointConical(center1, radius1, diff --git a/gm/imagefiltersclipped.cpp b/gm/imagefiltersclipped.cpp index cc636aa276..50066fe6cd 100644 --- a/gm/imagefiltersclipped.cpp +++ b/gm/imagefiltersclipped.cpp @@ -115,7 +115,8 @@ protected: canvas->scale(SkScalarInvert(RESIZE_FACTOR_X), SkScalarInvert(RESIZE_FACTOR_Y)); } - canvas->drawCircle(r.centerX(), r.centerY(), r.width() * 2 / 5, paint); + canvas->drawCircle(r.centerX(), r.centerY(), + SkScalarDiv(r.width()*2, SkIntToScalar(5)), paint); canvas->restore(); canvas->translate(r.width() + margin, 0); } diff --git a/gm/imagefiltersscaled.cpp b/gm/imagefiltersscaled.cpp index 9a80964a0e..4dcf7535da 100644 --- a/gm/imagefiltersscaled.cpp +++ b/gm/imagefiltersscaled.cpp @@ -134,7 +134,8 @@ protected: canvas->scale(SkScalarInvert(RESIZE_FACTOR), SkScalarInvert(RESIZE_FACTOR)); } - canvas->drawCircle(r.centerX(), r.centerY(), r.width()*2/5, paint); + canvas->drawCircle(r.centerX(), r.centerY(), + SkScalarDiv(r.width()*2, SkIntToScalar(5)), paint); canvas->restore(); canvas->translate(r.width() * scales[j].fX + margin, 0); } diff --git a/gm/resizeimagefilter.cpp b/gm/resizeimagefilter.cpp index 2edb802838..14f76b56cf 100644 --- a/gm/resizeimagefilter.cpp +++ b/gm/resizeimagefilter.cpp @@ -32,8 +32,8 @@ protected: SkRect dstRect; canvas->getTotalMatrix().mapRect(&dstRect, rect); canvas->save(); - SkScalar deviceScaleX = deviceSize.width() / dstRect.width(); - SkScalar deviceScaleY = deviceSize.height() / dstRect.height(); + SkScalar deviceScaleX = SkScalarDiv(deviceSize.width(), dstRect.width()); + SkScalar deviceScaleY = SkScalarDiv(deviceSize.height(), dstRect.height()); canvas->translate(rect.x(), rect.y()); canvas->scale(deviceScaleX, deviceScaleY); canvas->translate(-rect.x(), -rect.y()); @@ -96,7 +96,7 @@ protected: SkPaint paint; paint.setColor(0xFF00FF00); SkRect ovalRect = SkRect::MakeWH(16, 16); - ovalRect.inset(SkIntToScalar(2)/3, SkIntToScalar(2)/3); + ovalRect.inset(SkScalarDiv(2.0f, 3.0f), SkScalarDiv(2.0f, 3.0f)); bitmapCanvas.drawOval(ovalRect, paint); } SkRect inRect = SkRect::MakeXYWH(-4, -4, 20, 20); diff --git a/gm/shaderbounds.cpp b/gm/shaderbounds.cpp index 4363d4eee3..e86ab05431 100644 --- a/gm/shaderbounds.cpp +++ b/gm/shaderbounds.cpp @@ -80,9 +80,10 @@ protected: if (background) { scale = 0.6f; } - SkScalar shaderWidth = width / scale; - SkScalar shaderHeight = height / scale; - SkMatrix shaderScale = SkMatrix::MakeScale(scale); + SkScalar shaderWidth = SkScalarDiv(SkIntToScalar(width), scale); + SkScalar shaderHeight = SkScalarDiv(SkIntToScalar(height), scale); + SkMatrix shaderScale; + shaderScale.setScale(scale, scale); SkShader* shader = fShaderMaker(shaderWidth, shaderHeight, background, shaderScale); return shader; } diff --git a/gm/stringart.cpp b/gm/stringart.cpp index 7c9a22ee36..ed5fe0e78f 100644 --- a/gm/stringart.cpp +++ b/gm/stringart.cpp @@ -47,7 +47,7 @@ protected: SkPoint rp = SkPoint::Make(length*SkScalarCos(step) + center.fX, length*SkScalarSin(step) + center.fY); path.lineTo(rp); - length += angle / SkScalarHalf(SK_ScalarPI); + length += SkScalarDiv(angle, SkScalarHalf(SK_ScalarPI)); step += angle; } path.close(); diff --git a/include/core/SkMatrix.h b/include/core/SkMatrix.h index 0252bc7101..89b3072f79 100644 --- a/include/core/SkMatrix.h +++ b/include/core/SkMatrix.h @@ -28,13 +28,7 @@ public: m.setScale(sx, sy); return m; } - - static SkMatrix SK_WARN_UNUSED_RESULT MakeScale(SkScalar scale) { - SkMatrix m; - m.setScale(scale, scale); - return m; - } - + static SkMatrix SK_WARN_UNUSED_RESULT MakeTrans(SkScalar dx, SkScalar dy) { SkMatrix m; m.setTranslate(dx, dy); diff --git a/include/core/SkPoint.h b/include/core/SkPoint.h index 52d01ae88c..4a97391c70 100644 --- a/include/core/SkPoint.h +++ b/include/core/SkPoint.h @@ -348,16 +348,6 @@ struct SK_API SkPoint { fY -= v.fY; } - SkPoint operator*(SkScalar scale) const { - return Make(fX * scale, fY * scale); - } - - SkPoint& operator*=(SkScalar scale) { - fX *= scale; - fY *= scale; - return *this; - } - /** * Returns true if both X and Y are finite (not infinity or NaN) */ diff --git a/include/core/SkScalar.h b/include/core/SkScalar.h index 2c42eb8e89..443454a2ef 100644 --- a/include/core/SkScalar.h +++ b/include/core/SkScalar.h @@ -184,9 +184,7 @@ static inline SkScalar SkScalarSquare(SkScalar x) { return x * x; } #define SkScalarMul(a, b) ((SkScalar)(a) * (b)) #define SkScalarMulAdd(a, b, c) ((SkScalar)(a) * (b) + (c)) -#ifdef SK_SUPPORT_LEGACY_SCALAR_DIV - #define SkScalarDiv(a, b) ((SkScalar)(a) / (b)) -#endif +#define SkScalarDiv(a, b) ((SkScalar)(a) / (b)) #define SkScalarMulDiv(a, b, c) ((SkScalar)(a) * (b) / (c)) #define SkScalarInvert(x) (SK_Scalar1 / (x)) #define SkScalarFastInvert(x) (SK_Scalar1 / (x)) diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp index 04b1cb0258..82d42fdfc4 100644 --- a/samplecode/SampleApp.cpp +++ b/samplecode/SampleApp.cpp @@ -1320,18 +1320,18 @@ void SampleWindow::beforeChild(SkView* child, SkCanvas* canvas) { static const SkScalar gAnimPeriod = 10 * SK_Scalar1; static const SkScalar gAnimMag = SK_Scalar1 / 1000; SkScalar t = SkScalarMod(secs, gAnimPeriod); - if (SkScalarFloorToInt(secs / gAnimPeriod) & 0x1) { + if (SkScalarFloorToInt(SkScalarDiv(secs, gAnimPeriod)) & 0x1) { t = gAnimPeriod - t; } t = 2 * t - gAnimPeriod; - t *= gAnimMag / gAnimPeriod; + t = SkScalarMul(SkScalarDiv(t, gAnimPeriod), gAnimMag); SkMatrix m; m.reset(); #if 1 m.setPerspY(t); #else m.setPerspY(SK_Scalar1 / 1000); - m.setSkewX(8.0f / 25); + m.setSkewX(SkScalarDiv(8, 25)); m.dump(); #endif canvas->concat(m); diff --git a/samplecode/SampleStringArt.cpp b/samplecode/SampleStringArt.cpp index 0e711b09d7..569fd7f337 100644 --- a/samplecode/SampleStringArt.cpp +++ b/samplecode/SampleStringArt.cpp @@ -42,7 +42,7 @@ protected: SkPoint rp = SkPoint::Make(length*SkScalarCos(step) + center.fX, length*SkScalarSin(step) + center.fY); path.lineTo(rp); - length += angle / SkScalarHalf(SK_ScalarPI); + length += SkScalarDiv(angle, SkScalarHalf(SK_ScalarPI)); step += angle; } path.close(); diff --git a/src/animator/SkAnimateBase.cpp b/src/animator/SkAnimateBase.cpp index 82f777ef39..3515ed5cb3 100644 --- a/src/animator/SkAnimateBase.cpp +++ b/src/animator/SkAnimateBase.cpp @@ -91,7 +91,7 @@ void SkAnimateBase::dump(SkAnimateMaker* maker) { SkDebugf("to=\"%s\" ", to.c_str()); } if (begin != 0) { - SkDebugf("begin=\"%g\" ", begin * 0.001); + SkDebugf("begin=\"%g\" ", SkScalarToFloat(SkScalarDiv(begin,1000))); } } #endif diff --git a/src/animator/SkAnimateField.cpp b/src/animator/SkAnimateField.cpp index c6676e5be7..7aebb78288 100644 --- a/src/animator/SkAnimateField.cpp +++ b/src/animator/SkAnimateField.cpp @@ -41,7 +41,7 @@ void SkAnimate::dump(SkAnimateMaker* maker) { SkDebugf("mirror=\"true\" "); if (fReset) SkDebugf("reset=\"true\" "); - SkDebugf("dur=\"%g\" ", dur * 0.001); + SkDebugf("dur=\"%g\" ", SkScalarToFloat(SkScalarDiv(dur,1000))); if (repeat != SK_Scalar1) SkDebugf("repeat=\"%g\" ", SkScalarToFloat(repeat)); //if (fHasValues) diff --git a/src/animator/SkAnimateSet.cpp b/src/animator/SkAnimateSet.cpp index ec06a9e666..d146118e89 100644 --- a/src/animator/SkAnimateSet.cpp +++ b/src/animator/SkAnimateSet.cpp @@ -39,7 +39,7 @@ SkSet::SkSet() { void SkSet::dump(SkAnimateMaker* maker) { INHERITED::dump(maker); if (dur != 1) { - SkDebugf("dur=\"%g\" ", dur * 0.001); + SkDebugf("dur=\"%g\" ", SkScalarToFloat(SkScalarDiv(dur,1000))); } //don't want double />\n's SkDebugf("/>\n"); diff --git a/src/animator/SkAnimatorScript.cpp b/src/animator/SkAnimatorScript.cpp index f4ea51890f..df2e5637a2 100644 --- a/src/animator/SkAnimatorScript.cpp +++ b/src/animator/SkAnimatorScript.cpp @@ -235,7 +235,7 @@ bool SkAnimatorScript::EvalMemberCommon(SkScriptEngine* engine, const SkMemberIn if (info->fType != SkType_MemberProperty && info->fType != SkType_MemberFunction) value->fOperand.fS32 = *(int32_t*) info->memberData(displayable); // OK for SkScalar too if (type == SkType_MSec) { - value->fOperand.fScalar = value->fOperand.fS32 * 0.001f; + value->fOperand.fScalar = SkScalarDiv((SkScalar) value->fOperand.fS32, 1000); // dividing two ints is the same as dividing two scalars type = SkType_Float; } break; diff --git a/src/animator/SkAnimatorScript2.cpp b/src/animator/SkAnimatorScript2.cpp index 28912fb6d0..80ae0c6aa8 100644 --- a/src/animator/SkAnimatorScript2.cpp +++ b/src/animator/SkAnimatorScript2.cpp @@ -412,7 +412,7 @@ bool SkAnimatorScript2::evalMemberCommon(const SkMemberInfo* info, if (info->fType != SkType_MemberProperty && info->fType != SkType_MemberFunction) value->fS32 = *(int32_t*) info->memberData(displayable); // OK for SkScalar too if (type == SkType_MSec) { - value->fScalar = value->fS32 * 0.001f; + value->fScalar = SkScalarDiv((SkScalar) value->fS32, 1000); // dividing two ints is the same as dividing two scalars type = SkType_Float; } break; diff --git a/src/animator/SkDisplayPost.cpp b/src/animator/SkDisplayPost.cpp index 0fd4a06753..cc45b216ba 100644 --- a/src/animator/SkDisplayPost.cpp +++ b/src/animator/SkDisplayPost.cpp @@ -76,7 +76,7 @@ void SkPost::dump(SkAnimateMaker* maker) { delete eventType; if (delay > 0) { - SkDebugf("delay=\"%g\" ", delay * 0.001); + SkDebugf("delay=\"%g\" ", SkScalarToFloat(SkScalarDiv(delay, 1000))); } // if (initialized == false) // SkDebugf("(uninitialized) "); diff --git a/src/animator/SkDisplayable.cpp b/src/animator/SkDisplayable.cpp index 52532fedcd..aff3aaefc6 100644 --- a/src/animator/SkDisplayable.cpp +++ b/src/animator/SkDisplayable.cpp @@ -377,7 +377,7 @@ void SkDisplayable::dumpValues(const SkMemberInfo* info, SkDisplayTypes type, Sk break; case SkType_MSec: if (op.fS32 != blankOp.fS32) { - SkDebugf(" %s=\"%g\" ", info->fName, op.fS32 * 0.001); + SkDebugf(" %s=\"%g\" ", info->fName, SkScalarToFloat(SkScalarDiv(op.fS32, 1000))); } default: SkDebugf(""); diff --git a/src/animator/SkDrawColor.cpp b/src/animator/SkDrawColor.cpp index d86a2e93e7..eb57d9dad4 100644 --- a/src/animator/SkDrawColor.cpp +++ b/src/animator/SkDrawColor.cpp @@ -30,14 +30,14 @@ static SkScalar RGB_to_HSV(SkColor color, HSV_Choice choice) { if (choice == kGetValue) return value/255; SkScalar delta = value - min; - SkScalar saturation = value == 0 ? 0 : delta / value; + SkScalar saturation = value == 0 ? 0 : SkScalarDiv(delta, value); if (choice == kGetSaturation) return saturation; SkScalar hue; if (saturation == 0) hue = 0; else { - SkScalar part60 = 60 / delta; + SkScalar part60 = SkScalarDiv(60 * SK_Scalar1, delta); if (red == value) { hue = SkScalarMul(green - blue, part60); if (hue < 0) diff --git a/src/animator/SkScript.cpp b/src/animator/SkScript.cpp index c430695705..1d04d1b276 100644 --- a/src/animator/SkScript.cpp +++ b/src/animator/SkScript.cpp @@ -1387,7 +1387,7 @@ bool SkScriptEngine::processOp() { if (operand2.fScalar == 0) operand2.fScalar = operand1.fScalar == 0 ? SK_ScalarNaN : operand1.fScalar > 0 ? SK_ScalarMax : -SK_ScalarMax; else - operand2.fScalar = operand1.fScalar / operand2.fScalar; + operand2.fScalar = SkScalarDiv(operand1.fScalar, operand2.fScalar); break; case kEqualInt: operand2.fS32 = operand1.fS32 == operand2.fS32; diff --git a/src/animator/SkScriptRuntime.cpp b/src/animator/SkScriptRuntime.cpp index 07bd4c9c2f..78d9d5c208 100644 --- a/src/animator/SkScriptRuntime.cpp +++ b/src/animator/SkScriptRuntime.cpp @@ -249,7 +249,7 @@ bool SkScriptRuntime::executeTokens(unsigned char* opCode) { operand[0].fScalar = operand[0].fScalar == 0 ? SK_ScalarNaN : operand[0].fScalar > 0 ? SK_ScalarMax : -SK_ScalarMax; else - operand[0].fScalar = operand[0].fScalar / operand[1].fScalar; + operand[0].fScalar = SkScalarDiv(operand[0].fScalar, operand[1].fScalar); break; case SkScriptEngine2::kEqualInt: operand[0].fS32 = operand[0].fS32 == operand[1].fS32; diff --git a/src/core/SkGeometry.cpp b/src/core/SkGeometry.cpp index b4489d28e3..3ee2fa5d26 100644 --- a/src/core/SkGeometry.cpp +++ b/src/core/SkGeometry.cpp @@ -62,7 +62,7 @@ static int valid_unit_divide(SkScalar numer, SkScalar denom, SkScalar* ratio) { return 0; } - SkScalar r = numer / denom; + SkScalar r = SkScalarDiv(numer, denom); if (SkScalarIsNaN(r)) { return 0; } @@ -1149,7 +1149,7 @@ static SkScalar conic_eval_pos(const SkScalar src[], SkScalar w, SkScalar t) { A = -B; SkScalar denom = SkScalarMulAdd(SkScalarMulAdd(A, t, B), t, C); - return numer / denom; + return SkScalarDiv(numer, denom); } // F' = 2 (C t (1 + t (-1 + w)) - A (-1 + t) (t (-1 + w) - w) + B (1 - 2 t) w) diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp index c00dcc6b4f..975d0ccc07 100644 --- a/src/core/SkPaint.cpp +++ b/src/core/SkPaint.cpp @@ -2313,7 +2313,7 @@ SkTextToPathIter::SkTextToPathIter( const char text[], size_t length, fPaint.setTextSize(SkIntToScalar(SkPaint::kCanonicalTextSizeForPaths)); fScale = paint.getTextSize() / SkPaint::kCanonicalTextSizeForPaths; if (has_thick_frame(fPaint)) { - fPaint.setStrokeWidth(fPaint.getStrokeWidth() / fScale); + fPaint.setStrokeWidth(SkScalarDiv(fPaint.getStrokeWidth(), fScale)); } } else { fScale = SK_Scalar1; diff --git a/src/core/SkPathMeasure.cpp b/src/core/SkPathMeasure.cpp index a5dd84048c..c963e9cf35 100644 --- a/src/core/SkPathMeasure.cpp +++ b/src/core/SkPathMeasure.cpp @@ -341,7 +341,8 @@ static void seg_to(const SkPoint pts[], int segType, if (SK_Scalar1 == stopT) { dst->quadTo(tmp0[3], tmp0[4]); } else { - SkChopQuadAt(&tmp0[2], tmp1, (stopT - startT) / (1 - startT)); + SkChopQuadAt(&tmp0[2], tmp1, SkScalarDiv(stopT - startT, + SK_Scalar1 - startT)); dst->quadTo(tmp1[1], tmp1[2]); } } @@ -382,7 +383,8 @@ static void seg_to(const SkPoint pts[], int segType, if (SK_Scalar1 == stopT) { dst->cubicTo(tmp0[4], tmp0[5], tmp0[6]); } else { - SkChopCubicAt(&tmp0[3], tmp1, (stopT - startT) / (1 - startT)); + SkChopCubicAt(&tmp0[3], tmp1, SkScalarDiv(stopT - startT, + SK_Scalar1 - startT)); dst->cubicTo(tmp1[1], tmp1[2], tmp1[3]); } } diff --git a/src/core/SkPictureShader.cpp b/src/core/SkPictureShader.cpp index c1c4755058..2c835ed93e 100644 --- a/src/core/SkPictureShader.cpp +++ b/src/core/SkPictureShader.cpp @@ -168,7 +168,7 @@ SkShader* SkPictureShader::refBitmapShader(const SkMatrix& matrix, const SkMatri static const SkScalar kMaxTileArea = 2048 * 2048; SkScalar tileArea = SkScalarMul(scaledSize.width(), scaledSize.height()); if (tileArea > kMaxTileArea) { - SkScalar clampScale = SkScalarSqrt(kMaxTileArea / tileArea); + SkScalar clampScale = SkScalarSqrt(SkScalarDiv(kMaxTileArea, tileArea)); scaledSize.set(SkScalarMul(scaledSize.width(), clampScale), SkScalarMul(scaledSize.height(), clampScale)); } @@ -176,7 +176,8 @@ SkShader* SkPictureShader::refBitmapShader(const SkMatrix& matrix, const SkMatri // Scale down the tile size if larger than maxTextureSize for GPU Path or it should fail on create texture if (maxTextureSize) { if (scaledSize.width() > maxTextureSize || scaledSize.height() > maxTextureSize) { - SkScalar downScale = maxTextureSize / SkMax32(scaledSize.width(), scaledSize.height()); + SkScalar downScale = SkScalarDiv(maxTextureSize, + SkMax32(scaledSize.width(), scaledSize.height())); scaledSize.set(SkScalarFloorToScalar(SkScalarMul(scaledSize.width(), downScale)), SkScalarFloorToScalar(SkScalarMul(scaledSize.height(), downScale))); } diff --git a/src/core/SkRRect.cpp b/src/core/SkRRect.cpp index 0d1887d792..e54256009a 100644 --- a/src/core/SkRRect.cpp +++ b/src/core/SkRRect.cpp @@ -26,7 +26,8 @@ void SkRRect::setRectXY(const SkRect& rect, SkScalar xRad, SkScalar yRad) { } if (rect.width() < xRad+xRad || rect.height() < yRad+yRad) { - SkScalar scale = SkMinScalar(rect.width() / (xRad + xRad), rect.height() / (yRad + yRad)); + SkScalar scale = SkMinScalar(SkScalarDiv(rect.width(), xRad + xRad), + SkScalarDiv(rect.height(), yRad + yRad)); SkASSERT(scale < SK_Scalar1); xRad = SkScalarMul(xRad, scale); yRad = SkScalarMul(yRad, scale); @@ -65,10 +66,10 @@ void SkRRect::setNinePatch(const SkRect& rect, SkScalar leftRad, SkScalar topRad SkScalar scale = SK_Scalar1; if (leftRad + rightRad > rect.width()) { - scale = rect.width() / (leftRad + rightRad); + scale = SkScalarDiv(rect.width(), leftRad + rightRad); } if (topRad + bottomRad > rect.height()) { - scale = SkMinScalar(scale, rect.height() / (topRad + bottomRad)); + scale = SkMinScalar(scale, SkScalarDiv(rect.height(), topRad + bottomRad)); } if (scale < SK_Scalar1) { diff --git a/src/core/SkScalar.cpp b/src/core/SkScalar.cpp index e8f6e93348..c48d3890ad 100644 --- a/src/core/SkScalar.cpp +++ b/src/core/SkScalar.cpp @@ -31,6 +31,6 @@ SkScalar SkScalarInterpFunc(SkScalar searchKey, const SkScalar keys[], // Otherwise, interpolate between right - 1 and right. SkScalar rightKey = keys[right]; SkScalar leftKey = keys[right-1]; - SkScalar fract = (searchKey - leftKey) / (rightKey - leftKey); + SkScalar fract = SkScalarDiv(searchKey-leftKey,rightKey-leftKey); return SkScalarInterp(values[right-1], values[right], fract); } diff --git a/src/core/SkStroke.cpp b/src/core/SkStroke.cpp index 6454f1694d..a3641ffc4f 100644 --- a/src/core/SkStroke.cpp +++ b/src/core/SkStroke.cpp @@ -454,7 +454,8 @@ void SkPathStroker::quad_to(const SkPoint pts[3], normalB = pts[2] - pts[0]; normalB.rotateCCW(); SkScalar dot = SkPoint::DotProduct(unitNormalAB, *unitNormalBC); - SkAssertResult(normalB.setLength(fRadius / SkScalarSqrt((SK_Scalar1 + dot)/2))); + SkAssertResult(normalB.setLength(SkScalarDiv(fRadius, + SkScalarSqrt((SK_Scalar1 + dot)/2)))); fOuter.quadTo( pts[1].fX + normalB.fX, pts[1].fY + normalB.fY, pts[2].fX + normalBC->fX, pts[2].fY + normalBC->fY); @@ -760,9 +761,11 @@ DRAW_LINE: normalC = *unitNormalCD + unitBC; SkScalar dot = SkPoint::DotProduct(unitNormalAB, unitBC); - SkAssertResult(normalB.setLength(fRadius / SkScalarSqrt((SK_Scalar1 + dot)/2))); + SkAssertResult(normalB.setLength(SkScalarDiv(fRadius, + SkScalarSqrt((SK_Scalar1 + dot)/2)))); dot = SkPoint::DotProduct(*unitNormalCD, unitBC); - SkAssertResult(normalC.setLength(fRadius / SkScalarSqrt((SK_Scalar1 + dot)/2))); + SkAssertResult(normalC.setLength(SkScalarDiv(fRadius, + SkScalarSqrt((SK_Scalar1 + dot)/2)))); fOuter.cubicTo( pts[1].fX + normalB.fX, pts[1].fY + normalB.fY, pts[2].fX + normalC.fX, pts[2].fY + normalC.fY, diff --git a/src/core/SkStrokerPriv.cpp b/src/core/SkStrokerPriv.cpp index 7fc773a114..bc8e0435a1 100644 --- a/src/core/SkStrokerPriv.cpp +++ b/src/core/SkStrokerPriv.cpp @@ -214,7 +214,7 @@ static void MiterJoiner(SkPath* outer, SkPath* inner, const SkVector& beforeUnit else mid.set(before.fX + after.fX, before.fY + after.fY); - mid.setLength(radius / sinHalfAngle); + mid.setLength(SkScalarDiv(radius, sinHalfAngle)); DO_MITER: if (prevIsLine) outer->setLastPt(pivot.fX + mid.fX, pivot.fY + mid.fY); diff --git a/src/device/xps/SkXPSDevice.cpp b/src/device/xps/SkXPSDevice.cpp index 1c06235aef..a5c001393d 100644 --- a/src/device/xps/SkXPSDevice.cpp +++ b/src/device/xps/SkXPSDevice.cpp @@ -512,7 +512,7 @@ static void transform_offsets(SkScalar* stopOffsets, const int numOffsets, SkScalar startToStop = (stopTransformed.fX - startTransformed.fX) + (stopTransformed.fY - startTransformed.fY); //Percentage along transformed line. - stopOffsets[i] = startToStop / startToEnd; + stopOffsets[i] = SkScalarDiv(startToStop, startToEnd); } } @@ -1396,8 +1396,10 @@ void SkXPSDevice::convertToPpm(const SkMaskFilter* filter, SkVector* ppuScale, const SkIRect& clip, SkIRect* clipIRect) { //This action is in unit space, but the ppm is specified in physical space. - ppuScale->set(fCurrentPixelsPerMeter.fX / fCurrentUnitsPerMeter.fX, - fCurrentPixelsPerMeter.fY / fCurrentUnitsPerMeter.fY); + ppuScale->fX = SkScalarDiv(this->fCurrentPixelsPerMeter.fX, + this->fCurrentUnitsPerMeter.fX); + ppuScale->fY = SkScalarDiv(this->fCurrentPixelsPerMeter.fY, + this->fCurrentUnitsPerMeter.fY); matrix->postScale(ppuScale->fX, ppuScale->fY); diff --git a/src/effects/SkCornerPathEffect.cpp b/src/effects/SkCornerPathEffect.cpp index 4b81f261fe..79d4c4cbd3 100644 --- a/src/effects/SkCornerPathEffect.cpp +++ b/src/effects/SkCornerPathEffect.cpp @@ -20,12 +20,13 @@ static bool ComputeStep(const SkPoint& a, const SkPoint& b, SkScalar radius, SkPoint* step) { SkScalar dist = SkPoint::Distance(a, b); - *step = b - a; + step->set(b.fX - a.fX, b.fY - a.fY); + if (dist <= radius * 2) { - *step *= SK_ScalarHalf; + step->scale(SK_ScalarHalf); return false; } else { - *step *= radius / dist; + step->scale(SkScalarDiv(radius, dist)); return true; } } @@ -46,7 +47,6 @@ bool SkCornerPathEffect::filterPath(SkPath* dst, const SkPath& src, bool prevIsValid = true; // to avoid warnings - step.set(0, 0); moveTo.set(0, 0); firstStep.set(0, 0); lastCorner.set(0, 0); diff --git a/src/effects/SkDashPathEffect.cpp b/src/effects/SkDashPathEffect.cpp index 62e6771356..5296f972d5 100644 --- a/src/effects/SkDashPathEffect.cpp +++ b/src/effects/SkDashPathEffect.cpp @@ -248,7 +248,7 @@ bool SkDashPathEffect::asPoints(PointData* results, len2 -= clampedInitialDashLength; // skip initial partial empty } } - int numMidPoints = SkScalarFloorToInt(len2 / fIntervalLength); + int numMidPoints = SkScalarFloorToInt(SkScalarDiv(len2, fIntervalLength)); results->fNumPoints += numMidPoints; len2 -= numMidPoints * fIntervalLength; bool partialLast = false; diff --git a/src/effects/SkDisplacementMapEffect.cpp b/src/effects/SkDisplacementMapEffect.cpp index 2b9665c2c8..6f0911ce68 100644 --- a/src/effects/SkDisplacementMapEffect.cpp +++ b/src/effects/SkDisplacementMapEffect.cpp @@ -56,7 +56,7 @@ void computeDisplacement(const SkVector& scale, SkBitmap* dst, SkBitmap* src, const SkIRect& bounds) { - static const SkScalar Inv8bit = SkScalarInvert(255); + static const SkScalar Inv8bit = SkScalarDiv(SK_Scalar1, 255.0f); const int srcW = src->width(); const int srcH = src->height(); const SkVector scaleForColor = SkVector::Make(SkScalarMul(scale.fX, Inv8bit), @@ -625,8 +625,8 @@ void GrGLDisplacementMapEffect::setData(const GrGLProgramDataManager& pdman, const GrProcessor& proc) { const GrDisplacementMapEffect& displacementMap = proc.cast(); GrTexture* colorTex = displacementMap.texture(1); - SkScalar scaleX = displacementMap.scale().fX / colorTex->width(); - SkScalar scaleY = displacementMap.scale().fY / colorTex->height(); + SkScalar scaleX = SkScalarDiv(displacementMap.scale().fX, SkIntToScalar(colorTex->width())); + SkScalar scaleY = SkScalarDiv(displacementMap.scale().fY, SkIntToScalar(colorTex->height())); pdman.set2f(fScaleUni, SkScalarToFloat(scaleX), colorTex->origin() == kTopLeft_GrSurfaceOrigin ? SkScalarToFloat(scaleY) : SkScalarToFloat(-scaleY)); diff --git a/src/effects/SkEmbossMaskFilter.cpp b/src/effects/SkEmbossMaskFilter.cpp index 59d297835e..8fcd272646 100644 --- a/src/effects/SkEmbossMaskFilter.cpp +++ b/src/effects/SkEmbossMaskFilter.cpp @@ -61,7 +61,7 @@ static void normalize(SkScalar v[3]) { mag = SkScalarSqrt(mag); for (int i = 0; i < 3; i++) { - v[i] /= mag; + v[i] = SkScalarDiv(v[i], mag); } } diff --git a/src/effects/SkLightingImageFilter.cpp b/src/effects/SkLightingImageFilter.cpp index b324cc46d1..39bd6c88a1 100644 --- a/src/effects/SkLightingImageFilter.cpp +++ b/src/effects/SkLightingImageFilter.cpp @@ -30,8 +30,8 @@ typedef GrGLProgramDataManager::UniformHandle UniformHandle; namespace { -const SkScalar gOneThird = SkIntToScalar(1) / 3; -const SkScalar gTwoThirds = SkIntToScalar(2) / 3; +const SkScalar gOneThird = SkScalarInvert(SkIntToScalar(3)); +const SkScalar gTwoThirds = SkScalarDiv(SkIntToScalar(2), SkIntToScalar(3)); const SkScalar gOneHalf = 0.5f; const SkScalar gOneQuarter = 0.25f; diff --git a/src/effects/SkPerlinNoiseShader.cpp b/src/effects/SkPerlinNoiseShader.cpp index c59bd8c120..7114703168 100644 --- a/src/effects/SkPerlinNoiseShader.cpp +++ b/src/effects/SkPerlinNoiseShader.cpp @@ -212,7 +212,8 @@ private: SkScalar highFrequencx = SkScalarCeilToScalar(tileWidth * fBaseFrequency.fX) / tileWidth; // BaseFrequency should be non-negative according to the standard. - if (fBaseFrequency.fX / lowFrequencx < highFrequencx / fBaseFrequency.fX) { + if (SkScalarDiv(fBaseFrequency.fX, lowFrequencx) < + SkScalarDiv(highFrequencx, fBaseFrequency.fX)) { fBaseFrequency.fX = lowFrequencx; } else { fBaseFrequency.fX = highFrequencx; @@ -223,7 +224,8 @@ private: SkScalarFloorToScalar(tileHeight * fBaseFrequency.fY) / tileHeight; SkScalar highFrequency = SkScalarCeilToScalar(tileHeight * fBaseFrequency.fY) / tileHeight; - if (fBaseFrequency.fY / lowFrequency < highFrequency / fBaseFrequency.fY) { + if (SkScalarDiv(fBaseFrequency.fY, lowFrequency) < + SkScalarDiv(highFrequency, fBaseFrequency.fY)) { fBaseFrequency.fY = lowFrequency; } else { fBaseFrequency.fY = highFrequency; @@ -382,9 +384,8 @@ SkScalar SkPerlinNoiseShader::PerlinNoiseShaderContext::calculateTurbulenceValue SkScalar ratio = SK_Scalar1; for (int octave = 0; octave < perlinNoiseShader.fNumOctaves; ++octave) { SkScalar noise = noise2D(channel, stitchData, noiseVector); - SkScalar numer = (perlinNoiseShader.fType == kFractalNoise_Type) ? - noise : SkScalarAbs(noise); - turbulenceFunctionResult += numer / ratio; + turbulenceFunctionResult += SkScalarDiv( + (perlinNoiseShader.fType == kFractalNoise_Type) ? noise : SkScalarAbs(noise), ratio); noiseVector.fX *= 2; noiseVector.fY *= 2; ratio *= 2; @@ -405,7 +406,8 @@ SkScalar SkPerlinNoiseShader::PerlinNoiseShaderContext::calculateTurbulenceValue } if (channel == 3) { // Scale alpha by paint value - turbulenceFunctionResult *= SkIntToScalar(getPaintAlpha()) / 255; + turbulenceFunctionResult = SkScalarMul(turbulenceFunctionResult, + SkScalarDiv(SkIntToScalar(getPaintAlpha()), SkIntToScalar(255))); } // Clamp result @@ -929,7 +931,7 @@ void GrGLPerlinNoise::setData(const GrGLProgramDataManager& pdman, const GrProce const SkVector& baseFrequency = turbulence.baseFrequency(); pdman.set2f(fBaseFrequencyUni, baseFrequency.fX, baseFrequency.fY); - pdman.set1f(fAlphaUni, SkIntToScalar(turbulence.alpha()) / 255); + pdman.set1f(fAlphaUni, SkScalarDiv(SkIntToScalar(turbulence.alpha()), SkIntToScalar(255))); if (turbulence.stitchTiles()) { const SkPerlinNoiseShader::StitchData& stitchData = turbulence.stitchData(); diff --git a/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp b/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp index f7b3eb89b2..bc70d6bca4 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp +++ b/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp @@ -357,7 +357,7 @@ static ConicalType set_matrix_focal_conical(const SkTwoPointConicalGradient& sha // Scale factor 1 / (1 - focalX * focalX) SkScalar oneMinusF2 = 1.f - SkScalarMul(*focalX, *focalX); - SkScalar s = SkScalarInvert(oneMinusF2); + SkScalar s = SkScalarDiv(1.f, oneMinusF2); if (s >= 0.f) { @@ -1115,7 +1115,8 @@ private: : INHERITED(ctx, shader, matrix, tm), fInfo(info) { this->initClassID(); if (shader.getStartRadius() != shader.getEndRadius()) { - fTLimit = shader.getStartRadius() / (shader.getStartRadius() - shader.getEndRadius()); + fTLimit = SkScalarDiv(shader.getStartRadius(), + (shader.getStartRadius() - shader.getEndRadius())); } else { fTLimit = SK_ScalarMin; } diff --git a/src/gpu/GrAAConvexPathRenderer.cpp b/src/gpu/GrAAConvexPathRenderer.cpp index c68410fc6a..fea943b436 100644 --- a/src/gpu/GrAAConvexPathRenderer.cpp +++ b/src/gpu/GrAAConvexPathRenderer.cpp @@ -105,7 +105,7 @@ static void center_of_mass(const SegmentArray& segments, SkPoint* c) { *c = avg; } else { area *= 3; - area = SkScalarInvert(area); + area = SkScalarDiv(SK_Scalar1, area); center.fX = SkScalarMul(center.fX, area); center.fY = SkScalarMul(center.fY, area); // undo the translate of p0 to the origin. diff --git a/src/gpu/GrOvalRenderer.cpp b/src/gpu/GrOvalRenderer.cpp index b562167424..ebac42fcac 100644 --- a/src/gpu/GrOvalRenderer.cpp +++ b/src/gpu/GrOvalRenderer.cpp @@ -1253,11 +1253,11 @@ public: const SkRect& bounds = geom.fBounds; // This adjusts the "radius" to include the half-pixel border - SkScalar offsetDx = geom.fGeoDx / xRadius; - SkScalar offsetDy = geom.fGeoDy / yRadius; + SkScalar offsetDx = SkScalarDiv(geom.fGeoDx, xRadius); + SkScalar offsetDy = SkScalarDiv(geom.fGeoDy, yRadius); - SkScalar innerRatioX = xRadius / geom.fInnerXRadius; - SkScalar innerRatioY = yRadius / geom.fInnerYRadius; + SkScalar innerRatioX = SkScalarDiv(xRadius, geom.fInnerXRadius); + SkScalar innerRatioY = SkScalarDiv(yRadius, geom.fInnerYRadius); verts[0].fPos = SkPoint::Make(bounds.fLeft, bounds.fTop); verts[0].fOuterOffset = SkPoint::Make(-1.0f - offsetDx, -1.0f - offsetDy); @@ -1386,8 +1386,8 @@ static GrBatch* create_diellipse_batch(GrColor color, SkScalar b = viewMatrix[SkMatrix::kMSkewX]; SkScalar c = viewMatrix[SkMatrix::kMSkewY]; SkScalar d = viewMatrix[SkMatrix::kMScaleY]; - SkScalar geoDx = SK_ScalarHalf / SkScalarSqrt(a*a + c*c); - SkScalar geoDy = SK_ScalarHalf / SkScalarSqrt(b*b + d*d); + SkScalar geoDx = SkScalarDiv(SK_ScalarHalf, SkScalarSqrt(a*a + c*c)); + SkScalar geoDy = SkScalarDiv(SK_ScalarHalf, SkScalarSqrt(b*b + d*d)); DIEllipseBatch::Geometry geometry; geometry.fViewMatrix = viewMatrix; diff --git a/src/gpu/GrPathUtils.cpp b/src/gpu/GrPathUtils.cpp index 3e2c3bfe66..2a906664f2 100644 --- a/src/gpu/GrPathUtils.cpp +++ b/src/gpu/GrPathUtils.cpp @@ -29,7 +29,8 @@ SkScalar GrPathUtils::scaleToleranceToSrc(SkScalar devTol, stretch = SkMaxScalar(stretch, mat.mapRadius(SK_Scalar1)); } } - return srcTol / stretch; + srcTol = SkScalarDiv(srcTol, stretch); + return srcTol; } static const int MAX_POINTS_PER_CURVE = 1 << 10; @@ -50,7 +51,7 @@ uint32_t GrPathUtils::quadraticPointCount(const SkPoint points[], // subdivide x = log4(d/tol) times. x subdivisions creates 2^(x) // points. // 2^(log4(x)) = sqrt(x); - SkScalar divSqrt = SkScalarSqrt(d / tol); + SkScalar divSqrt = SkScalarSqrt(SkScalarDiv(d, tol)); if (((SkScalar)SK_MaxS32) <= divSqrt) { return MAX_POINTS_PER_CURVE; } else { @@ -106,11 +107,11 @@ uint32_t GrPathUtils::cubicPointCount(const SkPoint points[], if (d <= tol) { return 1; } else { - SkScalar divSqrt = SkScalarSqrt(d / tol); + SkScalar divSqrt = SkScalarSqrt(SkScalarDiv(d, tol)); if (((SkScalar)SK_MaxS32) <= divSqrt) { return MAX_POINTS_PER_CURVE; } else { - int temp = SkScalarCeilToInt(SkScalarSqrt(d / tol)); + int temp = SkScalarCeilToInt(SkScalarSqrt(SkScalarDiv(d, tol))); int pow2 = GrNextPow2(temp); // Because of NaNs & INFs we can wind up with a degenerate temp // such that pow2 comes out negative. Also, our point generator diff --git a/src/gpu/effects/GrDashingEffect.cpp b/src/gpu/effects/GrDashingEffect.cpp index 1ca56487c2..bd2997cdf3 100644 --- a/src/gpu/effects/GrDashingEffect.cpp +++ b/src/gpu/effects/GrDashingEffect.cpp @@ -135,10 +135,10 @@ static SkScalar calc_end_adjustment(const SkScalar intervals[2], const SkPoint p } SkScalar srcIntervalLen = intervals[0] + intervals[1]; SkScalar totalLen = pts[1].fX - pts[0].fX; - SkScalar temp = totalLen / srcIntervalLen; + SkScalar temp = SkScalarDiv(totalLen, srcIntervalLen); SkScalar numFullIntervals = SkScalarFloorToScalar(temp); *endingInt = totalLen - numFullIntervals * srcIntervalLen + phase; - temp = *endingInt / srcIntervalLen; + temp = SkScalarDiv(*endingInt, srcIntervalLen); *endingInt = *endingInt - SkScalarFloorToScalar(temp) * srcIntervalLen; if (0 == *endingInt) { *endingInt = srcIntervalLen; diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp index 3b0d6f72ae..814504e5e8 100644 --- a/src/pdf/SkPDFDevice.cpp +++ b/src/pdf/SkPDFDevice.cpp @@ -39,12 +39,15 @@ static void emit_pdf_color(SkColor color, SkWStream* result) { SkASSERT(SkColorGetA(color) == 0xFF); // We handle alpha elsewhere. - SkScalar colorScale = SkScalarInvert(0xFF); - SkPDFUtils::AppendScalar(SkColorGetR(color) * colorScale, result); + SkScalar colorMax = SkIntToScalar(0xFF); + SkPDFUtils::AppendScalar( + SkScalarDiv(SkIntToScalar(SkColorGetR(color)), colorMax), result); result->writeText(" "); - SkPDFUtils::AppendScalar(SkColorGetG(color) * colorScale, result); + SkPDFUtils::AppendScalar( + SkScalarDiv(SkIntToScalar(SkColorGetG(color)), colorMax), result); result->writeText(" "); - SkPDFUtils::AppendScalar(SkColorGetB(color) * colorScale, result); + SkPDFUtils::AppendScalar( + SkScalarDiv(SkIntToScalar(SkColorGetB(color)), colorMax), result); result->writeText(" "); } diff --git a/src/pdf/SkPDFGraphicState.cpp b/src/pdf/SkPDFGraphicState.cpp index 6cf66456ab..d063c1505e 100644 --- a/src/pdf/SkPDFGraphicState.cpp +++ b/src/pdf/SkPDFGraphicState.cpp @@ -201,7 +201,7 @@ void SkPDFGraphicState::emitObject(SkWStream* stream, SkAutoTUnref dict(SkNEW_ARGS(SkPDFDict, ("ExtGState"))); dict->insertName("Type", "ExtGState"); - SkScalar alpha = SkIntToScalar(fAlpha) / 0xFF; + SkScalar alpha = SkScalarDiv(fAlpha, 0xFF); dict->insertScalar("CA", alpha); dict->insertScalar("ca", alpha); diff --git a/src/pdf/SkPDFShader.cpp b/src/pdf/SkPDFShader.cpp index c627c14257..c2f0bc4677 100644 --- a/src/pdf/SkPDFShader.cpp +++ b/src/pdf/SkPDFShader.cpp @@ -58,7 +58,7 @@ static void interpolateColorCode(SkScalar range, SkScalar* curColor, // Figure out how to scale each color component. SkScalar multiplier[kColorComponents]; for (int i = 0; i < kColorComponents; i++) { - multiplier[i] = (curColor[i] - prevColor[i]) / range; + multiplier[i] = SkScalarDiv(curColor[i] - prevColor[i], range); } // Calculate when we no longer need to keep a copy of the input parameter t. @@ -1132,7 +1132,7 @@ SkPDFShader::State::State(const SkShader& shader, const SkMatrix& canvasTransfor static const SkScalar kMaxBitmapArea = 1024 * 1024; SkScalar bitmapArea = rasterScale * bbox.width() * rasterScale * bbox.height(); if (bitmapArea > kMaxBitmapArea) { - rasterScale *= SkScalarSqrt(kMaxBitmapArea / bitmapArea); + rasterScale *= SkScalarSqrt(SkScalarDiv(kMaxBitmapArea, bitmapArea)); } SkISize size = SkISize::Make(SkScalarRoundToInt(rasterScale * bbox.width()), diff --git a/src/ports/SkFontHost_FreeType.cpp b/src/ports/SkFontHost_FreeType.cpp index 5c53b9d913..0a69b436e4 100644 --- a/src/ports/SkFontHost_FreeType.cpp +++ b/src/ports/SkFontHost_FreeType.cpp @@ -1198,7 +1198,8 @@ void SkScalerContext_FreeType::generateMetrics(SkGlyph* glyph) { // This means do not try to scale embedded bitmaps; only scale bitmaps in bitmap only fonts. if (!FT_IS_SCALABLE(fFace) && fScaleY && fFace->size->metrics.y_ppem) { // NOTE: both dimensions are scaled by y_ppem. this is WAI. - scaleGlyphMetrics(*glyph, SkFixedToScalar(fScaleY) / fFace->size->metrics.y_ppem); + scaleGlyphMetrics(*glyph, SkScalarDiv(SkFixedToScalar(fScaleY), + SkIntToScalar(fFace->size->metrics.y_ppem))); } #ifdef ENABLE_GLYPH_SPEW diff --git a/src/svg/parser/SkSVGSVG.cpp b/src/svg/parser/SkSVGSVG.cpp index 61ccb3c819..fcce62de9e 100644 --- a/src/svg/parser/SkSVGSVG.cpp +++ b/src/svg/parser/SkSVGSVG.cpp @@ -43,8 +43,11 @@ void SkSVGSVG::translate(SkSVGParser& parser, bool defState) { if (strcmp(wSuffix, "pt") == 0) width = SkScalarMulDiv(width, SK_Scalar1 * 72, SK_Scalar1 * 96); SkParse::FindScalars(f_viewBox.c_str(), viewBox, 4); - SkRect box = SkRect::MakeLTRB(viewBox[0] / width, viewBox[1] / height, - viewBox[2] / width, viewBox[3] / height); + SkRect box; + box.fLeft = SkScalarDiv(viewBox[0], width); + box.fTop = SkScalarDiv(viewBox[1], height); + box.fRight = SkScalarDiv(viewBox[2], width); + box.fBottom = SkScalarDiv(viewBox[3], height); if (box.fLeft == 0 && box.fTop == 0 && box.fRight == SK_Scalar1 && box.fBottom == SK_Scalar1) return; diff --git a/src/utils/SkInterpolator.cpp b/src/utils/SkInterpolator.cpp index 03e7e4a83f..97574e475b 100644 --- a/src/utils/SkInterpolator.cpp +++ b/src/utils/SkInterpolator.cpp @@ -62,7 +62,8 @@ SkScalar SkInterpolatorBase::ComputeRelativeT(SkMSec time, SkMSec prevTime, SkMSec nextTime, const SkScalar blend[4]) { SkASSERT(time > prevTime && time < nextTime); - SkScalar t = (SkScalar)(time - prevTime) / (SkScalar)(nextTime - prevTime); + SkScalar t = SkScalarDiv((SkScalar)(time - prevTime), + (SkScalar)(nextTime - prevTime)); return blend ? SkUnitCubicInterp(t, blend[0], blend[1], blend[2], blend[3]) : t; } diff --git a/src/utils/SkNinePatch.cpp b/src/utils/SkNinePatch.cpp index ce8d4801c6..4e0d1d1a39 100644 --- a/src/utils/SkNinePatch.cpp +++ b/src/utils/SkNinePatch.cpp @@ -161,7 +161,7 @@ void SkNinePatch::DrawMesh(SkCanvas* canvas, const SkRect& bounds, if (bounds.width() >= fixed) stretchX = (bounds.width() - fixed) / stretchSize; else // reuse stretchX, but keep it negative as a signal - stretchX = -bounds.width() / fixed; + stretchX = SkScalarDiv(-bounds.width(), fixed); } if (numYStretch > 0) { @@ -173,7 +173,7 @@ void SkNinePatch::DrawMesh(SkCanvas* canvas, const SkRect& bounds, if (bounds.height() >= fixed) stretchY = (bounds.height() - fixed) / stretchSize; else // reuse stretchX, but keep it negative as a signal - stretchY = -bounds.height() / fixed; + stretchY = SkScalarDiv(-bounds.height(), fixed); } #if 0 diff --git a/tests/DrawBitmapRectTest.cpp b/tests/DrawBitmapRectTest.cpp index 80167b7083..9c522db28e 100644 --- a/tests/DrawBitmapRectTest.cpp +++ b/tests/DrawBitmapRectTest.cpp @@ -124,19 +124,19 @@ static void test_treatAsSprite(skiatest::Reporter* reporter) { REPORTER_ASSERT(reporter, treat_as_sprite(mat, size, bilerBits)); const SkScalar twoThirds = SK_Scalar1 * 2 / 3; - const SkScalar bigScale = (size.width() + twoThirds) / size.width(); + const SkScalar bigScale = SkScalarDiv(size.width() + twoThirds, size.width()); mat.setScale(bigScale, bigScale); REPORTER_ASSERT(reporter, !treat_as_sprite(mat, size, false)); REPORTER_ASSERT(reporter, !treat_as_sprite(mat, size, bilerBits)); const SkScalar oneThird = SK_Scalar1 / 3; - const SkScalar smallScale = (size.width() + oneThird) / size.width(); + const SkScalar smallScale = SkScalarDiv(size.width() + oneThird, size.width()); mat.setScale(smallScale, smallScale); REPORTER_ASSERT(reporter, treat_as_sprite(mat, size, false)); REPORTER_ASSERT(reporter, !treat_as_sprite(mat, size, bilerBits)); const SkScalar oneFortyth = SK_Scalar1 / 40; - const SkScalar tinyScale = (size.width() + oneFortyth) / size.width(); + const SkScalar tinyScale = SkScalarDiv(size.width() + oneFortyth, size.width()); mat.setScale(tinyScale, tinyScale); REPORTER_ASSERT(reporter, treat_as_sprite(mat, size, false)); REPORTER_ASSERT(reporter, treat_as_sprite(mat, size, bilerBits)); diff --git a/tests/MatrixTest.cpp b/tests/MatrixTest.cpp index 72e0dcc021..95d33acabd 100644 --- a/tests/MatrixTest.cpp +++ b/tests/MatrixTest.cpp @@ -270,8 +270,8 @@ static void test_matrix_min_max_scale(skiatest::Reporter* reporter) { mat.mapVectors(vectors, SK_ARRAY_COUNT(vectors)); for (size_t i = 0; i < SK_ARRAY_COUNT(vectors); ++i) { SkScalar d = vectors[i].length(); - REPORTER_ASSERT(reporter, d / maxScale < gVectorScaleTol); - REPORTER_ASSERT(reporter, minScale / d < gVectorScaleTol); + REPORTER_ASSERT(reporter, SkScalarDiv(d, maxScale) < gVectorScaleTol); + REPORTER_ASSERT(reporter, SkScalarDiv(minScale, d) < gVectorScaleTol); if (max < d) { max = d; } @@ -279,8 +279,8 @@ static void test_matrix_min_max_scale(skiatest::Reporter* reporter) { min = d; } } - REPORTER_ASSERT(reporter, max / maxScale >= gCloseScaleTol); - REPORTER_ASSERT(reporter, minScale / min >= gCloseScaleTol); + REPORTER_ASSERT(reporter, SkScalarDiv(max, maxScale) >= gCloseScaleTol); + REPORTER_ASSERT(reporter, SkScalarDiv(minScale, min) >= gCloseScaleTol); } } diff --git a/tests/PathCoverageTest.cpp b/tests/PathCoverageTest.cpp index 303ddcc4cb..0e4a1539f2 100644 --- a/tests/PathCoverageTest.cpp +++ b/tests/PathCoverageTest.cpp @@ -60,7 +60,7 @@ static inline uint32_t compute_pointCount(SkScalar d, SkScalar tol) { if (d < tol) { return 1; } else { - int temp = SkScalarCeilToInt(SkScalarSqrt(d / tol)); + int temp = SkScalarCeilToInt(SkScalarSqrt(SkScalarDiv(d, tol))); uint32_t count = SkMin32(SkNextPow2(temp), MAX_POINTS_PER_CURVE); return count; } diff --git a/tools/PictureRenderer.cpp b/tools/PictureRenderer.cpp index 93701baed9..559413f9b9 100644 --- a/tools/PictureRenderer.cpp +++ b/tools/PictureRenderer.cpp @@ -40,7 +40,7 @@ #include "sk_tool_utils.h" static inline SkScalar scalar_log2(SkScalar x) { - static const SkScalar log2_conversion_factor = SkScalarInvert(SkScalarLog(2)); + static const SkScalar log2_conversion_factor = SkScalarDiv(1, SkScalarLog(2)); return SkScalarLog(x) * log2_conversion_factor; }