| /* |
| * 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]); |
| } |