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..be24a7062cd3cb0656a38cfe5763aefd1f4a5031 |
--- /dev/null |
+++ b/remoting/client/gl_math.h |
@@ -0,0 +1,67 @@ |
+// 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(std::array<float, 9>& mat, |
Sergey Ulanov
2016/07/19 00:42:48
matrix
Sergey Ulanov
2016/07/19 00:42:48
use pointer instead of a reference here and move t
Yuwei
2016/07/19 20:34:24
Done.
|
+ int view_width, |
+ int view_height, |
+ int canvas_width, |
+ int canvas_height); |
+ |
+// 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(std::array<float, 8>& positions, |
+ float left, |
+ float top, |
+ float width, |
+ float height); |
+ |
+// interpolates vector |dest| between [vec1, vec2]. |
+// dest = (1 - percent) * vec1 + percent * vec2 |
+// dimension: length of dest, vec1, vec2 |
+template<typename NumberType> |
+void LinearInterpolate(NumberType* dest, |
Sergey Ulanov
2016/07/19 00:42:48
Do you need this as a template? It's used in only
Yuwei
2016/07/19 20:34:23
Obsolete. Removed.
|
+ const NumberType* vec1, |
+ const NumberType* vec2, |
+ float percent, |
+ int dimension) { |
+ for (int i = 0; i < dimension; i++) { |
+ dest[i] = (1.f - percent) * vec1[i] + percent * vec2[i]; |
Sergey Ulanov
2016/07/19 00:42:48
you convert values from int to float and then back
Yuwei
2016/07/19 04:11:52
Maybe something like:
((100 - percent) * vec1[i]
Yuwei
2016/07/19 20:34:23
Removed.
|
+ } |
+} |
+ |
+// 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_ |