diff options
Diffstat (limited to 'gfx/skia/skia/src/gpu/glsl/GrGLSLUtil.cpp')
-rw-r--r-- | gfx/skia/skia/src/gpu/glsl/GrGLSLUtil.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/gfx/skia/skia/src/gpu/glsl/GrGLSLUtil.cpp b/gfx/skia/skia/src/gpu/glsl/GrGLSLUtil.cpp new file mode 100644 index 000000000..5a333244b --- /dev/null +++ b/gfx/skia/skia/src/gpu/glsl/GrGLSLUtil.cpp @@ -0,0 +1,52 @@ +/* +* 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]); +} |