Chromium Code Reviews| 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_ |