Index: remoting/client/display/canvas.h |
diff --git a/remoting/client/display/gl_canvas.h b/remoting/client/display/canvas.h |
similarity index 57% |
copy from remoting/client/display/gl_canvas.h |
copy to remoting/client/display/canvas.h |
index 975d79bc9f981b0b691fa91ca846b11b877be416..988375bf6c6fe78abb224f4ba893b6960372b035 100644 |
--- a/remoting/client/display/gl_canvas.h |
+++ b/remoting/client/display/canvas.h |
@@ -2,27 +2,25 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef REMOTING_CLIENT_DISPLAY_GL_CANVAS_H_ |
-#define REMOTING_CLIENT_DISPLAY_GL_CANVAS_H_ |
+#ifndef REMOTING_CLIENT_DISPLAY_CANVAS_H_ |
+#define REMOTING_CLIENT_DISPLAY_CANVAS_H_ |
#include <array> |
#include "base/macros.h" |
-#include "base/threading/thread_checker.h" |
-#include "remoting/client/display/sys_opengl.h" |
+#include "base/memory/weak_ptr.h" |
namespace remoting { |
// This class holds zoom and pan configurations of the canvas and is used to |
// draw textures on the canvas. |
-// Must be constructed after the OpenGL surface is created and destroyed before |
-// the surface is destroyed. |
-class GlCanvas { |
+class Canvas { |
public: |
- // gl_version: version number of the OpenGL ES context. Either 2 or 3. |
- GlCanvas(int gl_version); |
+ Canvas() {} |
+ virtual ~Canvas() {} |
- ~GlCanvas(); |
+ // Clears the frame. |
+ virtual void Clear() = 0; |
// Sets the transformation matrix. This matrix defines how the canvas should |
// be shown on the view. |
@@ -37,10 +35,10 @@ class GlCanvas { |
// For a typical transformation matrix such that m1=m3=m6=m7=0 and m8=1, m0 |
// and m4 defines the scaling factor of the canvas and m2 and m5 defines the |
// offset of the upper-left corner in pixel. |
- void SetTransformationMatrix(const std::array<float, 9>& matrix); |
+ virtual void SetTransformationMatrix(const std::array<float, 9>& matrix) = 0; |
// Sets the size of the view in pixels. |
- void SetViewSize(int width, int height); |
+ virtual void SetViewSize(int width, int height) = 0; |
// Draws the texture on the canvas. Nothing will happen if |
// SetNormalizedTransformation() has not been called. |
@@ -52,43 +50,25 @@ class GlCanvas { |
// alpha_multiplier: Will be multiplied with the alpha channel of the texture. |
// Passing 1 means no change of the transparency of the |
// texture. |
- void DrawTexture(int texture_id, |
- GLuint texture_handle, |
- GLuint vertex_buffer, |
- float alpha_multiplier); |
+ virtual void DrawTexture(int texture_id, |
+ int texture_handle, |
+ int vertex_buffer, |
+ float alpha_multiplier) = 0; |
- // Returns the version number of current OpenGL ES context. Either 2 or 3. |
- int GetGlVersion() const; |
+ // Version if applicable to implementation. Default 0 if unused. |
+ virtual int GetVersion() const = 0; |
// Returns the maximum texture resolution limitation. Neither the width nor |
// the height of the texture can exceed this limitation. |
- int GetMaxTextureSize() const; |
+ virtual int GetMaxTextureSize() const = 0; |
- private: |
- int gl_version_; |
- |
- int max_texture_size_ = 0; |
- bool transformation_set_ = false; |
- bool view_size_set_ = false; |
- |
- // Handles. |
- GLuint vertex_shader_; |
- GLuint fragment_shader_; |
- GLuint program_; |
+ // Intended to be given to a Drawable to draw onto. |
+ virtual base::WeakPtr<Canvas> GetWeakPtr() = 0; |
- // Locations of the corresponding shader attributes. |
- GLuint transform_location_; |
- GLuint view_size_location_; |
- GLuint texture_location_; |
- GLuint alpha_multiplier_location_; |
- GLuint position_location_; |
- GLuint tex_cord_location_; |
- |
- base::ThreadChecker thread_checker_; |
- |
- DISALLOW_COPY_AND_ASSIGN(GlCanvas); |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(Canvas); |
}; |
} // namespace remoting |
-#endif // REMOTING_CLIENT_DISPLAY_GL_CANVAS_H_ |
+#endif // REMOTING_CLIENT_DISPLAY_CANVAS_H_ |