JeVois  1.17
JeVois Smart Embedded Machine Vision Toolkit
Share this page:
VideoDisplayBackend.H
Go to the documentation of this file.
1 // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2 //
3 // JeVois Smart Embedded Machine Vision Toolkit - Copyright (C) 2020 by Laurent Itti, the University of Southern
4 // California (USC), and iLab at USC. See http://iLab.usc.edu and http://jevois.org for information about this project.
5 //
6 // This file is part of the JeVois Smart Embedded Machine Vision Toolkit. This program is free software; you can
7 // redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software
8 // Foundation, version 2. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
9 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
10 // License for more details. You should have received a copy of the GNU General Public License along with this program;
11 // if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
12 //
13 // Contact information: Laurent Itti - 3641 Watt Way, HNB-07A - Los Angeles, CA 90089-2520 - USA.
14 // Tel: +1 213 740 3527 - itti@pollux.usc.edu - http://iLab.usc.edu - http://jevois.org
15 // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
16 /*! \file */
17 
18 #pragma once
19 
20 #ifdef JEVOIS_PRO
21 
22 #include <jevois/GPU/OpenGL.H>
23 
24 namespace jevois
25 {
26  //! Backend for VideoDisplay on JeVois-Pro
27  /*! This abstract base class provides an interface used by VideoDisplayGL. Derived implementations are available for
28  X11+OpenGL-ES 3.2 (to be used on JeVois-Pro host) and Mali framebuffer + OpenGL-ES 3.2 (to be used on JeVois-Pro
29  platform). \ingroup core */
31  {
32  public:
33  //! Constructor
35 
36  //! Virtual destructor for safe inheritance, free resources
37  virtual ~VideoDisplayBackend();
38 
39  //! Initialize the underlying engine that will process events, create windows, etc
40  /*! The init starts with the given initial framebuffer size. Note that on MALI, fullscreen parameter is ignored
41  and we always run full-screen. */
42  virtual void init(unsigned short w, unsigned short h, bool fullscreen = false) = 0;
43 
44  //! Poll events such as mouse movements, buttons, keyboard, joystick, and pass to VideoDisplay
45  /*! Returns true if some events were received, which can be used to turn on mouse pointer and GUI. */
46  virtual bool pollEvents(bool & shouldclose) = 0;
47 
48  //! Start a new frame and clear the window/framebuffer
49  virtual void newFrame();
50 
51  //! Render the VideoDisplay graphics
52  virtual void render();
53 
54  // Returns current window size
55  /*! Returns 0,0 if display has not been initialized. */
56  virtual void getWindowSize(unsigned short & w, unsigned short & h) const;
57 
58  //! Access our display
59  /*! May return nullptr if init() has not yet been called. */
60  EGLDisplay getDisplay() const;
61 
62  protected:
63  //! Initialize the underlying engine that will process events, create windows, etc
64  /*! The init starts with the given initial window/framebuffer size. In the base class, we only initialize
65  OpenGL. Derived classes should first create a window or framebuffer as needed. */
66  virtual void init(unsigned short w, unsigned short h, EGLNativeWindowType win);
67 
68  //! Un-initialize the underlying engine, close windows, etc
69  /*! In the base class, we only close OpenGL. */
70  virtual void uninit();
71 
72  std::string const itsName;
73  EGLDisplay itsDisplay = 0;
74  EGLConfig itsConfig = 0;
75  EGLContext itsContext = 0;
76  EGLSurface itsSurface = 0;
77  };
78 
79 } // namespace jevois
80 
81 #endif // JEVOIS_PRO
jevois::VideoDisplayBackend::newFrame
virtual void newFrame()
Start a new frame and clear the window/framebuffer.
Definition: VideoDisplayBackend.C:220
jevois::VideoDisplayBackend::render
virtual void render()
Render the VideoDisplay graphics.
Definition: VideoDisplayBackend.C:233
jevois::VideoDisplayBackend::VideoDisplayBackend
VideoDisplayBackend()
Constructor.
Definition: VideoDisplayBackend.C:46
jevois::VideoDisplayBackend::itsContext
EGLContext itsContext
Definition: VideoDisplayBackend.H:75
jevois::VideoDisplayBackend
Backend for VideoDisplay on JeVois-Pro.
Definition: VideoDisplayBackend.H:30
OpenGL.H
jevois::VideoDisplayBackend::itsConfig
EGLConfig itsConfig
Definition: VideoDisplayBackend.H:74
jevois::VideoDisplayBackend::itsSurface
EGLSurface itsSurface
Definition: VideoDisplayBackend.H:76
jevois::VideoDisplayBackend::~VideoDisplayBackend
virtual ~VideoDisplayBackend()
Virtual destructor for safe inheritance, free resources.
Definition: VideoDisplayBackend.C:50
jevois
Definition: Concepts.dox:1
jevois::VideoDisplayBackend::getWindowSize
virtual void getWindowSize(unsigned short &w, unsigned short &h) const
Definition: VideoDisplayBackend.C:240
jevois::VideoDisplayBackend::uninit
virtual void uninit()
Un-initialize the underlying engine, close windows, etc.
Definition: VideoDisplayBackend.C:209
jevois::VideoDisplayBackend::pollEvents
virtual bool pollEvents(bool &shouldclose)=0
Poll events such as mouse movements, buttons, keyboard, joystick, and pass to VideoDisplay.
jevois::VideoDisplayBackend::init
virtual void init(unsigned short w, unsigned short h, bool fullscreen=false)=0
Initialize the underlying engine that will process events, create windows, etc.
jevois::VideoDisplayBackend::getDisplay
EGLDisplay getDisplay() const
Access our display.
Definition: VideoDisplayBackend.C:256
h
int h
Definition: GUIhelper.C:2157
jevois::VideoDisplayBackend::itsName
const std::string itsName
Definition: VideoDisplayBackend.H:72
jevois::VideoDisplayBackend::itsDisplay
EGLDisplay itsDisplay
Definition: VideoDisplayBackend.H:73