/* * Copyright 2015 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "GrGLSLUtil.h" #include "SkMatrix.h" template<> void GrGLSLGetMatrix<3>(float* dest, const SkMatrix& src) { // Col 0 dest[0] = SkScalarToFloat(src[SkMatrix::kMScaleX]); dest[1] = SkScalarToFloat(src[SkMatrix::kMSkewY]); dest[2] = SkScalarToFloat(src[SkMatrix::kMPersp0]); // Col 1 dest[3] = SkScalarToFloat(src[SkMatrix::kMSkewX]); dest[4] = SkScalarToFloat(src[SkMatrix::kMScaleY]); dest[5] = SkScalarToFloat(src[SkMatrix::kMPersp1]); // Col 2 dest[6] = SkScalarToFloat(src[SkMatrix::kMTransX]); dest[7] = SkScalarToFloat(src[SkMatrix::kMTransY]); dest[8] = SkScalarToFloat(src[SkMatrix::kMPersp2]); } template<> void GrGLSLGetMatrix<4>(float* dest, const SkMatrix& src) { // Col 0 dest[0] = SkScalarToFloat(src[SkMatrix::kMScaleX]); dest[1] = SkScalarToFloat(src[SkMatrix::kMSkewY]); dest[2] = 0; dest[3] = SkScalarToFloat(src[SkMatrix::kMPersp0]); // Col 1 dest[4] = SkScalarToFloat(src[SkMatrix::kMSkewX]); dest[5] = SkScalarToFloat(src[SkMatrix::kMScaleY]); dest[6] = 0; dest[7] = SkScalarToFloat(src[SkMatrix::kMPersp1]); // Col 2 dest[8] = 0; dest[9] = 0; dest[10] = 1; dest[11] = 0; // Col 3 dest[12] = SkScalarToFloat(src[SkMatrix::kMTransX]); dest[13] = SkScalarToFloat(src[SkMatrix::kMTransY]); dest[14] = 0; dest[15] = SkScalarToFloat(src[SkMatrix::kMPersp2]); }