Add matrix constructing helpers to SkMatrix

Review URL: https://codereview.chromium.org/1034273002
diff --git a/bench/DashBench.cpp b/bench/DashBench.cpp
index 17a9234..bf0d456 100644
--- a/bench/DashBench.cpp
+++ b/bench/DashBench.cpp
@@ -153,8 +153,7 @@
 
 static void make_poly(SkPath* path) {
     make_unit_star(path, 9);
-    SkMatrix matrix;
-    matrix.setScale(SkIntToScalar(100), SkIntToScalar(100));
+    const SkMatrix matrix = SkMatrix::MakeScale(SkIntToScalar(100), SkIntToScalar(100));
     path->transform(matrix);
 }
 
diff --git a/bench/HairlinePathBench.cpp b/bench/HairlinePathBench.cpp
index 5b77ff8..67f5476 100644
--- a/bench/HairlinePathBench.cpp
+++ b/bench/HairlinePathBench.cpp
@@ -59,8 +59,7 @@
         SkPath path;
         this->makePath(&path);
         if (fFlags & kBig_Flag) {
-            SkMatrix m;
-            m.setScale(SkIntToScalar(3), SkIntToScalar(3));
+            const SkMatrix m = SkMatrix::MakeScale(SkIntToScalar(3), SkIntToScalar(3));
             path.transform(m);
         }
 
diff --git a/bench/PathBench.cpp b/bench/PathBench.cpp
index a429e2f..710179a 100644
--- a/bench/PathBench.cpp
+++ b/bench/PathBench.cpp
@@ -57,8 +57,7 @@
         SkPath path;
         this->makePath(&path);
         if (fFlags & kBig_Flag) {
-            SkMatrix m;
-            m.setScale(SkIntToScalar(10), SkIntToScalar(10));
+            const SkMatrix m = SkMatrix::MakeScale(SkIntToScalar(10), SkIntToScalar(10));
             path.transform(m);
         }
 
diff --git a/bench/SKPBench.cpp b/bench/SKPBench.cpp
index 3f52179..6f74ff9 100644
--- a/bench/SKPBench.cpp
+++ b/bench/SKPBench.cpp
@@ -116,9 +116,8 @@
     } else {
         for (int i = 0; i < loops; i++) {
             for (int j = 0; j < fTileRects.count(); ++j) {
-                SkMatrix trans;
-                trans.setTranslate(-fTileRects[j].fLeft / fScale,
-                                   -fTileRects[j].fTop / fScale);
+                const SkMatrix trans = SkMatrix::MakeTrans(-fTileRects[j].fLeft / fScale,
+                                                           -fTileRects[j].fTop / fScale);
                 fSurfaces[j]->getCanvas()->drawPicture(fPic, &trans, NULL);
             }
 
diff --git a/gm/aarectmodes.cpp b/gm/aarectmodes.cpp
index f4889a8..205876b 100644
--- a/gm/aarectmodes.cpp
+++ b/gm/aarectmodes.cpp
@@ -113,8 +113,7 @@
     *bm.getAddr32(1, 0) = *bm.getAddr32(0, 1) = SkPackARGB32(0xFF, 0xCC,
                                                              0xCC, 0xCC);
 
-    SkMatrix m;
-    m.setScale(SkIntToScalar(6), SkIntToScalar(6));
+    const SkMatrix m = SkMatrix::MakeScale(SkIntToScalar(6), SkIntToScalar(6));
     SkShader* s = SkShader::CreateBitmapShader(bm,
                                                SkShader::kRepeat_TileMode,
                                                SkShader::kRepeat_TileMode,
diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
index 03f4634..294de55 100644
--- a/gm/convexpolyeffect.cpp
+++ b/gm/convexpolyeffect.cpp
@@ -191,9 +191,8 @@
                     SkDEBUGFAIL("Couldn't get Gr test target.");
                     return;
                 }
-                SkMatrix m;
+                const SkMatrix m = SkMatrix::MakeTrans(x, y);
                 SkPath p;
-                m.setTranslate(x, y);
                 path->transform(m, &p);
 
                 GrPrimitiveEdgeType edgeType = (GrPrimitiveEdgeType) et;
diff --git a/gm/multipicturedraw.cpp b/gm/multipicturedraw.cpp
index 0625b5a..f31b698 100644
--- a/gm/multipicturedraw.cpp
+++ b/gm/multipicturedraw.cpp
@@ -423,8 +423,8 @@
 
             SkCanvas* subCanvas = step.fSurf->getCanvas();
 
-            SkMatrix trans;
-            trans.setTranslate(-SkIntToScalar(x*kTileWidth), -SkIntToScalar(y*kTileHeight));
+            const SkMatrix trans = SkMatrix::MakeTrans(-SkIntToScalar(x*kTileWidth), 
+                                                       -SkIntToScalar(y*kTileHeight));
 
             create_content(mpd, pfGen, pictures, subCanvas, trans);
         }
diff --git a/gm/texturedomaineffect.cpp b/gm/texturedomaineffect.cpp
index b85d208..6104d46 100644
--- a/gm/texturedomaineffect.cpp
+++ b/gm/texturedomaineffect.cpp
@@ -124,8 +124,7 @@
                     if (!fp) {
                         continue;
                     }
-                    SkMatrix viewMatrix;
-                    viewMatrix.setTranslate(x, y);
+                    const SkMatrix viewMatrix = SkMatrix::MakeTrans(x, y);
                     GrPipelineBuilder pipelineBuilder;
                     pipelineBuilder.setRenderTarget(rt);
                     pipelineBuilder.addColorProcessor(fp);
diff --git a/include/core/SkMatrix.h b/include/core/SkMatrix.h
index d00beda..89bd793 100644
--- a/include/core/SkMatrix.h
+++ b/include/core/SkMatrix.h
@@ -23,6 +23,18 @@
 */
 class SK_API SkMatrix {
 public:
+    static SkMatrix SK_WARN_UNUSED_RESULT MakeScale(SkScalar sx, SkScalar sy) {
+        SkMatrix m;
+        m.setScale(sx, sy);
+        return m;
+    }
+
+    static SkMatrix SK_WARN_UNUSED_RESULT MakeTrans(SkScalar dx, SkScalar dy) {
+        SkMatrix m;
+        m.setTranslate(dx, dy);
+        return m;
+    }
+
     /** Enum of bit fields for the mask return by getType().
         Use this to identify the complexity of the matrix.
     */