blob: 5a333244b29526af6c7a33811d9d2afa0211d500 [file] [log] [blame]
egdaniel64c47282015-11-13 06:54:19 -08001/*
2* Copyright 2015 Google Inc.
3*
4* Use of this source code is governed by a BSD-style license that can be
5* found in the LICENSE file.
6*/
7
8#include "GrGLSLUtil.h"
9#include "SkMatrix.h"
10
11template<> void GrGLSLGetMatrix<3>(float* dest, const SkMatrix& src) {
12 // Col 0
13 dest[0] = SkScalarToFloat(src[SkMatrix::kMScaleX]);
14 dest[1] = SkScalarToFloat(src[SkMatrix::kMSkewY]);
15 dest[2] = SkScalarToFloat(src[SkMatrix::kMPersp0]);
16
17 // Col 1
18 dest[3] = SkScalarToFloat(src[SkMatrix::kMSkewX]);
19 dest[4] = SkScalarToFloat(src[SkMatrix::kMScaleY]);
20 dest[5] = SkScalarToFloat(src[SkMatrix::kMPersp1]);
21
22 // Col 2
23 dest[6] = SkScalarToFloat(src[SkMatrix::kMTransX]);
24 dest[7] = SkScalarToFloat(src[SkMatrix::kMTransY]);
25 dest[8] = SkScalarToFloat(src[SkMatrix::kMPersp2]);
26}
27
28template<> void GrGLSLGetMatrix<4>(float* dest, const SkMatrix& src) {
29 // Col 0
30 dest[0] = SkScalarToFloat(src[SkMatrix::kMScaleX]);
31 dest[1] = SkScalarToFloat(src[SkMatrix::kMSkewY]);
32 dest[2] = 0;
33 dest[3] = SkScalarToFloat(src[SkMatrix::kMPersp0]);
34
35 // Col 1
36 dest[4] = SkScalarToFloat(src[SkMatrix::kMSkewX]);
37 dest[5] = SkScalarToFloat(src[SkMatrix::kMScaleY]);
38 dest[6] = 0;
39 dest[7] = SkScalarToFloat(src[SkMatrix::kMPersp1]);
40
41 // Col 2
42 dest[8] = 0;
43 dest[9] = 0;
44 dest[10] = 1;
45 dest[11] = 0;
46
47 // Col 3
48 dest[12] = SkScalarToFloat(src[SkMatrix::kMTransX]);
49 dest[13] = SkScalarToFloat(src[SkMatrix::kMTransY]);
50 dest[14] = 0;
51 dest[15] = SkScalarToFloat(src[SkMatrix::kMPersp2]);
52}