Ginga  0.13.6.2086-83aa
The iTV middleware.
PlayerHTML.h
Go to the documentation of this file.
1 /* Copyright (C) 2006-2018 PUC-Rio/Laboratorio TeleMidia
2 
3 This file is part of Ginga (Ginga-NCL).
4 
5 Ginga is free software: you can redistribute it and/or modify it
6 under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9 
10 Ginga is distributed in the hope that it will be useful, but WITHOUT
11 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
13 License for more details.
14 
15 You should have received a copy of the GNU General Public License
16 along with Ginga. If not, see <https://www.gnu.org/licenses/>. */
17 
29 #ifndef HTML_PLAYER_H
30 #define HTML_PLAYER_H
31 
32 #include "aux-ginga.h"
33 
34 #include "Player.h"
35 
36 GINGA_PRAGMA_DIAG_PUSH ()
37 GINGA_PRAGMA_DIAG_IGNORE (-Wunused - parameter)
38 // GINGA_PRAGMA_DIAG_IGNORE (-Wunused-const-variable)
39 #include <cef_app.h>
40 #include <cef_client.h>
41 #include <cef_render_handler.h>
42 #include <cef_life_span_handler.h>
43 #include <cef_load_handler.h>
44 #include <wrapper/cef_helpers.h>
45 GINGA_PRAGMA_DIAG_POP ()
46 
47 GINGA_NAMESPACE_BEGIN
48 
55 class GingaCefHandler : public CefRenderHandler
56 {
57 public:
66  GingaCefHandler (int width, int height, SDL_Renderer *renderer);
67 
73  virtual ~GingaCefHandler ();
74 
80  int getWidth ();
81 
90  void setWidth (int width);
91 
97  int getHeight ();
98 
107  void setHeight (int height);
108 
114  SDL_Renderer *getRenderer ();
115 
125  void setRenderer (SDL_Renderer *renderer);
126 
132  SDL_Texture *getTexture ();
133 
145  bool GetViewRect (CefRefPtr<CefBrowser> browser, CefRect &rect) override;
146 
161  void OnPaint (CefRefPtr<CefBrowser> browser, PaintElementType type,
162  const RectList &dirtyRects, const void *buffer, int width,
163  int height) override;
164 
165 private:
169  int _width;
170 
174  int _height;
175 
179  SDL_Texture *_texture;
180 
184  SDL_Renderer *_renderer; //
185 
191  IMPLEMENT_REFCOUNTING (GingaCefHandler)
192 };
193 
199 class GingaCefClient : public CefClient,
200  public CefLifeSpanHandler,
201  public CefLoadHandler
202 {
203 public:
210  GingaCefClient (CefRefPtr<CefRenderHandler> handler);
211 
217  virtual ~GingaCefClient ();
218 
224  virtual CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler () override;
225 
231  virtual CefRefPtr<CefLoadHandler> GetLoadHandler () override;
232 
238  virtual CefRefPtr<CefRenderHandler> GetRenderHandler () override;
239 
240 private:
244  CefRefPtr<CefRenderHandler> _handler;
245 
251  IMPLEMENT_REFCOUNTING (GingaCefClient)
252 };
253 
261 class PlayerHTML : public Player, public IEventListener
262 {
263 public:
270  explicit PlayerHTML (const string &location);
271 
277  virtual ~PlayerHTML ();
278 
287  virtual bool play () override;
288 
298  virtual void stop () override;
299 
311  virtual void handleKeyEvent (SDL_EventType type,
312  SDL_Keycode key) override;
313 
314  virtual void handleTickEvent (Time, Time, int) override{};
315 
316 private:
322  GINGA_MUTEX_DEFN ()
323 
324 
337  static bool displayJobCallbackWrapper (DisplayJob *job,
338  SDL_Renderer *renderer,
339  void *self);
340 
356  bool displayJobCallback (DisplayJob *job, SDL_Renderer *renderer);
357 
368  void mouseInputCallback (SDL_EventType type, int x, int y);
369 
376  int getPlayerKey (SDL_Keycode key);
377 
382  CefRefPtr<GingaCefHandler> _handler;
383 
388  CefRefPtr<GingaCefClient> _client;
389 
393  CefRefPtr<CefBrowser> _browser;
394 
399 };
400 
401 GINGA_NAMESPACE_END
402 
403 #endif /* HTML_PLAYER_H */
virtual ~GingaCefClient()
Default destructor for GingaCefClient.
Definition: PlayerHTML.cpp:400
void mouseInputCallback(SDL_EventType type, int x, int y)
Process mouse input events.
Definition: PlayerHTML.cpp:137
virtual CefRefPtr< CefRenderHandler > GetRenderHandler() override
Return the handler for off-screen rendering events.
Definition: PlayerHTML.cpp:417
virtual ~PlayerHTML()
Default destructor for PlayerHTML.
Definition: PlayerHTML.cpp:44
CefRefPtr< CefRenderHandler > _handler
Keep the current render handler.
Definition: PlayerHTML.h:244
SDL_Renderer * _renderer
Keep the current renderer.
Definition: PlayerHTML.h:184
int getPlayerKey(SDL_Keycode key)
Translate a SDL key code to a CEF key code.
Definition: PlayerHTML.cpp:154
CefRefPtr< GingaCefHandler > _handler
Keep the active handler instance, needed to create a new client instance.
Definition: PlayerHTML.h:382
CefRefPtr< CefBrowser > _browser
Keep the active browser instance.
Definition: PlayerHTML.h:393
int _height
Keep the current window height.
Definition: PlayerHTML.h:174
A player class for HTML.
Definition: PlayerHTML.h:261
CefRefPtr< GingaCefClient > _client
Keep the active client instance, needed to create a new browser instance.
Definition: PlayerHTML.h:388
GingaCefClient(CefRefPtr< CefRenderHandler > handler)
Default constructor for GingaCefClient.
Definition: PlayerHTML.cpp:395
virtual void stop() override
Stop the presentation.
Definition: PlayerHTML.cpp:60
virtual CefRefPtr< CefLoadHandler > GetLoadHandler() override
Return the handler for browser load status events.
Definition: PlayerHTML.cpp:411
virtual void handleKeyEvent(SDL_EventType type, SDL_Keycode key) override
Process keyboard input events.
Definition: PlayerHTML.cpp:109
virtual bool play() override
Start the presentation.
Definition: PlayerHTML.cpp:50
int _width
Keep the current window width.
Definition: PlayerHTML.h:169
virtual CefRefPtr< CefLifeSpanHandler > GetLifeSpanHandler() override
Return the handler for browser life span events.
Definition: PlayerHTML.cpp:405
bool _isPlaying
Keep execution player status.
Definition: PlayerHTML.h:398
A render handler class of CEF for Ginga.
Definition: PlayerHTML.h:55
static bool displayJobCallbackWrapper(DisplayJob *job, SDL_Renderer *renderer, void *self)
Defines mutex methods.
Definition: PlayerHTML.cpp:74
Definition: Player.h:28
A client class of CEF for Ginga.
Definition: PlayerHTML.h:199
bool displayJobCallback(DisplayJob *job, SDL_Renderer *renderer)
Defines the job actions to be executed by the renderer.
Definition: PlayerHTML.cpp:81
PlayerHTML(const string &location)
Default constructor for PlayerHTML.
Definition: PlayerHTML.cpp:33
SDL_Texture * _texture
Keep the local texture.
Definition: PlayerHTML.h:179