Ginga  0.13.6.1771-df200
The iTV middleware.
PlayerHTML.h
Go to the documentation of this file.
1 /* Copyright (C) 2006-2017 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 <http://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 
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>
46 
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,
162  PaintElementType type,
163  const RectList &dirtyRects,
164  const void * buffer,
165  int width, int height) override;
166 
167 private:
171  int _width;
172 
176  int _height;
177 
181  SDL_Texture* _texture;
182 
186  SDL_Renderer* _renderer;//
187 
193  IMPLEMENT_REFCOUNTING(GingaCefHandler)
194 };
195 
202  public CefClient,
203  public CefLifeSpanHandler,
204  public CefLoadHandler
205 {
206 public:
213  GingaCefClient(CefRefPtr<CefRenderHandler> handler);
214 
220  virtual ~GingaCefClient();
221 
227  virtual CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler () override;
228 
234  virtual CefRefPtr<CefLoadHandler> GetLoadHandler () override;
235 
241  virtual CefRefPtr<CefRenderHandler> GetRenderHandler () override;
242 
243 private:
247  CefRefPtr<CefRenderHandler> _handler;
248 
254  IMPLEMENT_REFCOUNTING(GingaCefClient)
255 };
256 
264 class PlayerHTML :
265  public Player, public IEventListener
266 {
267 public:
274  explicit PlayerHTML (const string &location);
275 
281  virtual ~PlayerHTML ();
282 
291  virtual bool play () override;
292 
302  virtual void stop () override;
303 
315  virtual void handleKeyEvent (SDL_EventType type, SDL_Keycode key) override;
316 
317  virtual void handleTickEvent (Time, Time, int) override { };
318 
319 private:
325  GINGA_MUTEX_DEFN ()
326 
327 
339  static bool displayJobCallbackWrapper (DisplayJob *job,
340  SDL_Renderer *renderer, void* self);
341 
355  bool displayJobCallback (DisplayJob *job, SDL_Renderer *renderer);
356 
367  void mouseInputCallback (SDL_EventType type, int x, int y);
368 
375  int getPlayerKey(SDL_Keycode key);
376 
381  CefRefPtr<GingaCefHandler> _handler;
382 
387  CefRefPtr<GingaCefClient> _client;
388 
392  CefRefPtr<CefBrowser> _browser;
393 
398 };
399 
401 
402 #endif /* HTML_PLAYER_H */
#define GINGA_PRAGMA_DIAG_PUSH
Definition: aux-ginga.h:29
virtual ~GingaCefClient()
Default destructor for GingaCefClient.
Definition: PlayerHTML.cpp:404
#define GINGA_PRAGMA_DIAG_POP
Definition: aux-ginga.h:30
virtual CefRefPtr< CefRenderHandler > GetRenderHandler() override
Return the handler for off-screen rendering events.
Definition: PlayerHTML.cpp:422
CefRefPtr< CefRenderHandler > _handler
Keep the current render handler.
Definition: PlayerHTML.h:247
SDL_Renderer * _renderer
Keep the current renderer.
Definition: PlayerHTML.h:186
CefRefPtr< GingaCefHandler > _handler
Keep the active handler instance, needed to create a new client instance.
Definition: PlayerHTML.h:381
CefRefPtr< CefBrowser > _browser
Keep the active browser instance.
Definition: PlayerHTML.h:392
int _height
Keep the current window height.
Definition: PlayerHTML.h:176
A player class for HTML.
Definition: PlayerHTML.h:264
#define GINGA_NAMESPACE_END
Definition: aux-ginga.h:62
CefRefPtr< GingaCefClient > _client
Keep the active client instance, needed to create a new browser instance.
Definition: PlayerHTML.h:387
GingaCefClient(CefRefPtr< CefRenderHandler > handler)
Default constructor for GingaCefClient.
Definition: PlayerHTML.cpp:399
#define GINGA_PRAGMA_DIAG_IGNORE
Definition: aux-ginga.h:31
virtual CefRefPtr< CefLoadHandler > GetLoadHandler() override
Return the handler for browser load status events.
Definition: PlayerHTML.cpp:416
#define GINGA_NAMESPACE_BEGIN
Definition: aux-ginga.h:61
int _width
Keep the current window width.
Definition: PlayerHTML.h:171
virtual CefRefPtr< CefLifeSpanHandler > GetLifeSpanHandler() override
Return the handler for browser life span events.
Definition: PlayerHTML.cpp:410
bool _isPlaying
Keep execution player status.
Definition: PlayerHTML.h:397
A render handler class of CEF for Ginga.
Definition: PlayerHTML.h:55
Definition: Player.h:27
A client class of CEF for Ginga.
Definition: PlayerHTML.h:201
virtual void handleTickEvent(Time, Time, int) override
Definition: PlayerHTML.h:317
GstClockTime Time
Definition: aux-ginga.h:115
SDL_Texture * _texture
Keep the local texture.
Definition: PlayerHTML.h:181