remove some memory-based methods, add rc()

Change-Id: I44d6f67dcd3d042127ad20ebdaa332e94f1b0829
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266216
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index fcba8f7..cfb126f 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -33,6 +33,7 @@
 #include "src/core/SkImageFilter_Base.h"
 #include "src/core/SkLatticeIter.h"
 #include "src/core/SkMSAN.h"
+#include "src/core/SkMatrixPriv.h"
 #include "src/core/SkMatrixUtils.h"
 #include "src/core/SkPaintPriv.h"
 #include "src/core/SkRasterClip.h"
@@ -1516,7 +1517,7 @@
 }
 
 void SkCanvas::experimental_concat44(const SkM44& m) {
-    this->experimental_concat44(m.asColMajor());
+    this->experimental_concat44(SkMatrixPriv::M44ColMajor(m));
 }
 
 void SkCanvas::internalSetMatrix(const SkMatrix& matrix) {
diff --git a/src/core/SkCanvasMatrix.h b/src/core/SkCanvasMatrix.h
index 4d83836..bc25a63 100644
--- a/src/core/SkCanvasMatrix.h
+++ b/src/core/SkCanvasMatrix.h
@@ -23,16 +23,16 @@
     operator SkMatrix() const { return this->asM33(); }
     // the legacy check was just for the 3x3 portion, so we only check those
     bool isScaleTranslate() const {
-        return this->atColMajor(1) == 0 && this->atColMajor(3) == 0 &&
-               this->atColMajor(4) == 0 && this->atColMajor(7) == 0 &&
-               this->atColMajor(15) == 1;
+        return this->rc(1,0) == 0 && this->rc(3,0) == 0 &&
+               this->rc(0,1) == 0 && this->rc(3,1) == 0 &&
+               this->rc(3,3) == 1;
     }
     bool rectStaysRect() const { return this->asM33().rectStaysRect(); }
 
-    float getScaleX() const { return this->atColMajor(0); }
-    float getScaleY() const { return this->atColMajor(5); }
-    float getTranslateX() const { return this->atColMajor(12); }
-    float getTranslateY() const { return this->atColMajor(13); }
+    float getScaleX() const     { return this->rc(0,0); }
+    float getScaleY() const     { return this->rc(1,1); }
+    float getTranslateX() const { return this->rc(0,3); }
+    float getTranslateY() const { return this->rc(1,3); }
 
     bool mapRect(SkRect* dst, const SkRect& src) { return this->asM33().mapRect(dst, src); }
 };
diff --git a/src/core/SkMatrixPriv.h b/src/core/SkMatrixPriv.h
index 3c65eba..72e8739 100644
--- a/src/core/SkMatrixPriv.h
+++ b/src/core/SkMatrixPriv.h
@@ -10,6 +10,7 @@
 
 #include "include/core/SkFilterQuality.h"
 #include "include/core/SkMatrix.h"
+#include "include/private/SkM44.h"
 #include "include/private/SkNx.h"
 #include "src/core/SkPointPriv.h"
 
@@ -158,6 +159,8 @@
     static bool CheapEqual(const SkMatrix& a, const SkMatrix& b) {
         return &a == &b || 0 == memcmp(a.fMat, b.fMat, sizeof(a.fMat));
     }
+
+    static const SkScalar* M44ColMajor(const SkM44& m) { return m.fMat; }
 };
 
 #endif
diff --git a/src/core/SkRecordDraw.cpp b/src/core/SkRecordDraw.cpp
index 3cac677..d3b922b 100644
--- a/src/core/SkRecordDraw.cpp
+++ b/src/core/SkRecordDraw.cpp
@@ -93,7 +93,7 @@
 }
 
 DRAW(SetMatrix, setMatrix(SkMatrix::Concat(fInitialCTM, r.matrix)));
-DRAW(Concat44, experimental_concat44(r.matrix.asColMajor()));
+DRAW(Concat44, experimental_concat44(r.matrix));
 DRAW(Concat, concat(r.matrix));
 DRAW(Translate, translate(r.dx, r.dy));
 DRAW(Scale, scale(r.sx, r.sy));
diff --git a/src/core/SkYUVMath.cpp b/src/core/SkYUVMath.cpp
index 67f4a13..fe5cc9c 100644
--- a/src/core/SkYUVMath.cpp
+++ b/src/core/SkYUVMath.cpp
@@ -116,23 +116,23 @@
 // input: ignore the bottom row
 // output: inject identity row/column for alpha
 static void matrix44_to_colormatrix(const SkM44& src, float dst[20]) {
-    dst[0] = src.atColMajor(0);
-    dst[1] = src.atColMajor(4);
-    dst[2] = src.atColMajor(8);
+    dst[0] = src.rc(0,0);
+    dst[1] = src.rc(0,1);
+    dst[2] = src.rc(0,2);
     dst[3] = 0;
-    dst[4] = src.atColMajor(12);    // tx
+    dst[4] = src.rc(0,3);    // tx
 
-    dst[5] = src.atColMajor(1);
-    dst[6] = src.atColMajor(5);
-    dst[7] = src.atColMajor(9);
+    dst[5] = src.rc(1,0);
+    dst[6] = src.rc(1,1);
+    dst[7] = src.rc(1,2);
     dst[8] = 0;
-    dst[9] = src.atColMajor(13);    // ty
+    dst[9] = src.rc(1,3);    // ty
 
-    dst[10] = src.atColMajor(2);
-    dst[11] = src.atColMajor(6);
-    dst[12] = src.atColMajor(10);
+    dst[10] = src.rc(2,0);
+    dst[11] = src.rc(2,1);
+    dst[12] = src.rc(2,2);
     dst[13] = 0;
-    dst[14] = src.atColMajor(14);   // tz
+    dst[14] = src.rc(2,3);   // tz
 
     dst[15] = dst[16] = dst[17] = dst[19] = 0;
     dst[18] = 1;
diff --git a/src/gpu/glsl/GrGLSLProgramDataManager.cpp b/src/gpu/glsl/GrGLSLProgramDataManager.cpp
index 141ba65..d73eebc 100644
--- a/src/gpu/glsl/GrGLSLProgramDataManager.cpp
+++ b/src/gpu/glsl/GrGLSLProgramDataManager.cpp
@@ -9,6 +9,7 @@
 
 #include "include/core/SkMatrix.h"
 #include "include/private/SkM44.h"
+#include "src/core/SkMatrixPriv.h"
 
 void GrGLSLProgramDataManager::setSkMatrix(UniformHandle u, const SkMatrix& matrix) const {
     float mt[] = {
@@ -26,5 +27,5 @@
 }
 
 void GrGLSLProgramDataManager::setSkM44(UniformHandle u, const SkM44& matrix) const {
-    this->setMatrix4f(u, matrix.asColMajor());
+    this->setMatrix4f(u, SkMatrixPriv::M44ColMajor(matrix));
 }