Index: remoting/client/gl_math.h |
diff --git a/remoting/client/gl_math.h b/remoting/client/gl_math.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3ea6731f82db464c7334338ca036d8a7f4b6acd0 |
--- /dev/null |
+++ b/remoting/client/gl_math.h |
@@ -0,0 +1,53 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef REMOTING_CLIENT_OPENGL_GL_MATH_H_ |
+#define REMOTING_CLIENT_OPENGL_GL_MATH_H_ |
+ |
+#include <array> |
+#include <string> |
+ |
+#include "base/macros.h" |
+ |
+namespace remoting { |
+ |
+// See GlCanvas::SetNormalizedTransformation for definition of the |
+// transformation matrix. |
+// |
+// Converts a pixel based transformation matrix to a texture coordinates based |
+// transformation matrix. |
+// 3 by 3 transformation matrix, [ m0, m1, m2, m3, m4, m5, m6, m7, m8 ]. |
+// |
+// | m0, m1, m2, | | x | |
+// | m3, m4, m5, | * | y | |
+// | m6, m7, m8 | | 1 | |
+void NormalizeTransformationMatrix(int view_width, |
+ int view_height, |
+ int canvas_width, |
+ int canvas_height, |
+ std::array<float, 9>* matrix); |
+ |
+// Given left, top, width, height of a rectangle, fills |positions| with |
+// coordinates of four vertices of the rectangle. |
+// positions: [ x_upperleft, y_upperleft, x_lowerleft, y_lowerleft, |
+// x_upperright, y_upperright, x_lowerright, y_lowerright ] |
+void FillRectangleVertexPositions(float left, |
+ float top, |
+ float width, |
+ float height, |
+ std::array<float, 8>* positions); |
+ |
+// Returns the string representation of the matrix for debugging. |
+// |
+// For example: |
+// [ |
+// 1, 0, 0, |
+// 0, 1, 0, |
+// 0, 0, 1, |
+// ] |
+std::string MatrixToString(const float* mat, int num_rows, int num_cols); |
+ |
+} // namespace remoting |
+ |
+#endif // REMOTING_CLIENT_OPENGL_GL_MATH_H_ |