# include <stdio.h>
# include <stdint.h>
# include <stdlib.h>
# include <assert.h>
# include <string.h>
# include "ui.hpp"
# ifndef __APPLE__
# define GLFW_INCLUDE_ES2
# else
# define GLFW_INCLUDE_GLCOREARB
# endif
# define GLFW_INCLUDE_GLEXT
# include <GLFW/glfw3.h>
typedef struct FramebufferState FramebufferState ;
typedef struct TouchState TouchState ;
extern " C " {
FramebufferState * framebuffer_init (
const char * name , int32_t layer , int alpha ,
int * out_w , int * out_h ) {
glfwInit ( ) ;
# ifndef __APPLE__
glfwWindowHint ( GLFW_CLIENT_API , GLFW_OPENGL_ES_API ) ;
glfwWindowHint ( GLFW_CONTEXT_VERSION_MAJOR , 3 ) ;
glfwWindowHint ( GLFW_CONTEXT_VERSION_MINOR , 0 ) ;
# else
glfwWindowHint ( GLFW_OPENGL_FORWARD_COMPAT , GL_TRUE ) ;
glfwWindowHint ( GLFW_OPENGL_PROFILE , GLFW_OPENGL_CORE_PROFILE ) ;
glfwWindowHint ( GLFW_CONTEXT_VERSION_MAJOR , 3 ) ;
glfwWindowHint ( GLFW_CONTEXT_VERSION_MINOR , 2 ) ;
# endif
glfwWindowHint ( GLFW_RESIZABLE , 0 ) ;
GLFWwindow * window ;
window = glfwCreateWindow ( 1920 , 1080 , " ui " , NULL , NULL ) ;
if ( ! window ) {
printf ( " glfwCreateWindow failed \n " ) ;
}
glfwMakeContextCurrent ( window ) ;
glfwSwapInterval ( 1 ) ;
// clear screen
glClearColor ( 0.2f , 0.2f , 0.2f , 1.0f ) ;
glClear ( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ) ;
framebuffer_swap ( ( FramebufferState * ) window ) ;
if ( out_w ) * out_w = 1920 ;
if ( out_h ) * out_h = 1080 ;
return ( FramebufferState * ) window ;
}
void framebuffer_set_power ( FramebufferState * s , int mode ) {
}
void framebuffer_swap ( FramebufferState * s ) {
glfwSwapBuffers ( ( GLFWwindow * ) s ) ;
glfwPollEvents ( ) ;
}
bool set_brightness ( int brightness ) { return true ; }
void touch_init ( TouchState * s ) {
printf ( " touch_init \n " ) ;
}
int touch_poll ( TouchState * s , int * out_x , int * out_y , int timeout ) {
return - 1 ;
}
int touch_read ( TouchState * s , int * out_x , int * out_y ) {
return - 1 ;
}
}
# include "sound.hpp"
bool Sound : : init ( int volume ) { return true ; }
bool Sound : : play ( AudibleAlert alert ) { printf ( " play sound: %d \n " , ( int ) alert ) ; return true ; }
void Sound : : stop ( ) { }
void Sound : : setVolume ( int volume ) { }
Sound : : ~ Sound ( ) { }
# include "common/visionimg.h"
# include <sys/mman.h>
GLuint visionimg_to_gl ( const VisionImg * img , EGLImageKHR * pkhr , void * * pph ) {
unsigned int texture ;
glGenTextures ( 1 , & texture ) ;
glBindTexture ( GL_TEXTURE_2D , texture ) ;
glTexImage2D ( GL_TEXTURE_2D , 0 , GL_RGB , img - > width , img - > height , 0 , GL_RGB , GL_UNSIGNED_BYTE , * pph ) ;
glGenerateMipmap ( GL_TEXTURE_2D ) ;
* pkhr = ( EGLImageKHR ) 1 ; // not NULL
return texture ;
}
void visionimg_destroy_gl ( EGLImageKHR khr , void * ph ) {
// empty
}