ginga 1.0
The Ginga iTV middleware
Loading...
Searching...
No Matches
PlayerHTML.h
Go to the documentation of this file.
1/* Copyright (C) 2006-2018 PUC-Rio/Laboratorio TeleMidia
2
3This file is part of Ginga (Ginga-NCL).
4
5Ginga is free software: you can redistribute it and/or modify it
6under the terms of the GNU General Public License as published by
7the Free Software Foundation, either version 2 of the License, or
8(at your option) any later version.
9
10Ginga is distributed in the hope that it will be useful, but WITHOUT
11ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
13License for more details.
14
15You should have received a copy of the GNU General Public License
16along 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
36GINGA_PRAGMA_DIAG_PUSH ()
37GINGA_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>
45GINGA_PRAGMA_DIAG_POP ()
46
47namespace ginga {
48
55class GingaCefHandler : public CefRenderHandler
56{
57public:
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
165private:
170
175
179 SDL_Texture *_texture;
180
184 SDL_Renderer *_renderer; //
185
191 IMPLEMENT_REFCOUNTING (GingaCefHandler)
192};
193
199class GingaCefClient : public CefClient,
200 public CefLifeSpanHandler,
201 public CefLoadHandler
202{
203public:
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
240private:
244 CefRefPtr<CefRenderHandler> _handler;
245
251 IMPLEMENT_REFCOUNTING (GingaCefClient)
252};
253
261class PlayerHTML : public Player, public IEventListener
262{
263public:
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
316private:
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}
402
403#endif /* HTML_PLAYER_H */
A client class of CEF for Ginga.
Definition PlayerHTML.h:202
virtual CefRefPtr< CefLoadHandler > GetLoadHandler() override
Return the handler for browser load status events.
Definition PlayerHTML.cpp:411
GingaCefClient(CefRefPtr< CefRenderHandler > handler)
Default constructor for GingaCefClient.
Definition PlayerHTML.cpp:395
virtual CefRefPtr< CefRenderHandler > GetRenderHandler() override
Return the handler for off-screen rendering events.
Definition PlayerHTML.cpp:417
CefRefPtr< CefRenderHandler > _handler
Keep the current render handler.
Definition PlayerHTML.h:244
virtual ~GingaCefClient()
Default destructor for GingaCefClient.
Definition PlayerHTML.cpp:400
virtual CefRefPtr< CefLifeSpanHandler > GetLifeSpanHandler() override
Return the handler for browser life span events.
Definition PlayerHTML.cpp:405
A render handler class of CEF for Ginga.
Definition PlayerHTML.h:56
int getHeight()
Return the current window height.
Definition PlayerHTML.cpp:337
bool GetViewRect(CefRefPtr< CefBrowser > browser, CefRect &rect) override
Set the view rectangle.
Definition PlayerHTML.cpp:371
int _height
Keep the current window height.
Definition PlayerHTML.h:174
GingaCefHandler(int width, int height, SDL_Renderer *renderer)
Default constructor for GingaCefHandler.
Definition PlayerHTML.cpp:311
void OnPaint(CefRefPtr< CefBrowser > browser, PaintElementType type, const RectList &dirtyRects, const void *buffer, int width, int height) override
Paint an element.
Definition PlayerHTML.cpp:379
void setWidth(int width)
Set the current window width.
Definition PlayerHTML.cpp:331
SDL_Renderer * _renderer
Keep the current renderer.
Definition PlayerHTML.h:184
SDL_Texture * _texture
Keep the local texture.
Definition PlayerHTML.h:179
int _width
Keep the current window width.
Definition PlayerHTML.h:169
void setRenderer(SDL_Renderer *renderer)
Set the current renderer.
Definition PlayerHTML.cpp:355
virtual ~GingaCefHandler()
Default destructor for GingaCefHandler.
Definition PlayerHTML.cpp:319
int getWidth()
Return the current window width.
Definition PlayerHTML.cpp:325
void setHeight(int height)
Set the current window height.
Definition PlayerHTML.cpp:343
SDL_Renderer * getRenderer()
Return the current renderer.
Definition PlayerHTML.cpp:349
SDL_Texture * getTexture()
Return the local texture.
Definition PlayerHTML.cpp:365
A player class for HTML.
Definition PlayerHTML.h:262
static bool displayJobCallbackWrapper(DisplayJob *job, SDL_Renderer *renderer, void *self)
Defines mutex methods.
Definition PlayerHTML.cpp:74
bool _isPlaying
Keep execution player status.
Definition PlayerHTML.h:398
virtual void stop() override
Stop the presentation.
Definition PlayerHTML.cpp:60
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
virtual ~PlayerHTML()
Default destructor for PlayerHTML.
Definition PlayerHTML.cpp:44
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
CefRefPtr< CefBrowser > _browser
Keep the active browser instance.
Definition PlayerHTML.h:393
void mouseInputCallback(SDL_EventType type, int x, int y)
Process mouse input events.
Definition PlayerHTML.cpp:137
CefRefPtr< GingaCefClient > _client
Keep the active client instance, needed to create a new browser instance.
Definition PlayerHTML.h:388
CefRefPtr< GingaCefHandler > _handler
Keep the active handler instance, needed to create a new client instance.
Definition PlayerHTML.h:382
int getPlayerKey(SDL_Keycode key)
Translate a SDL key code to a CEF key code.
Definition PlayerHTML.cpp:154
Definition Player.h:29