@ -109,6 +109,7 @@ static void ErrorCallback(int error, const char *description);  
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			/ /  Window  callbacks  events  
			
		 
		
	
		
			
			 
			 
			
			 
			
			static  void  WindowSizeCallback ( GLFWwindow  * window ,  int  width ,  int  height ) ;                  / /  GLFW3  WindowSize  Callback ,  runs  when  window  is  resized  
			
		 
		
	
		
			
			 
			 
			
			 
			
			static  void  WindowPosCallback ( GLFWwindow *  window ,  int  x ,  int  y ) ;                      / /  GLFW3  WindowPos  Callback ,  runs  when  window  is  moved  
			
		 
		
	
		
			
			 
			 
			
			 
			
			static  void  WindowIconifyCallback ( GLFWwindow  * window ,  int  iconified ) ;                       / /  GLFW3  WindowIconify  Callback ,  runs  when  window  is  minimized / restored  
			
		 
		
	
		
			
			 
			 
			
			 
			
			static  void  WindowMaximizeCallback ( GLFWwindow *  window ,  int  maximized ) ;                      / /  GLFW3  Window  Maximize  Callback ,  runs  when  window  is  maximized  
			
		 
		
	
		
			
			 
			 
			
			 
			
			static  void  WindowFocusCallback ( GLFWwindow  * window ,  int  focused ) ;                           / /  GLFW3  WindowFocus  Callback ,  runs  when  window  get / lose  focus  
			
		 
		
	
	
		
			
				
				
					
						 
					 
				
				
					
						 
					 
				
				
				 
			
			 
			
			@ -147,8 +148,8 @@ void ToggleFullscreen(void)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    if  ( ! CORE . Window . fullscreen )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    {   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  Store  previous  window  position  ( in  case  we  exit  fullscreen )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        glfwGetWindowPos ( platform . handle ,  &  CORE. Window . position . x ,  &  CORE . Window . position. y )  ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        CORE . Window . previousPosition  =   CORE . Window . position ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			          
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  monitorCount  =  0 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  monitorIndex  =  GetCurrentMonitor ( ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        GLFWmonitor  * * monitors  =  glfwGetMonitors ( & monitorCount ) ;   
			
		 
		
	
	
		
			
				
				
					
						 
					 
				
				
					
						 
					 
				
				
				 
			
			 
			
			@ -179,7 +180,11 @@ void ToggleFullscreen(void)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        CORE . Window . fullscreen  =  false ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        CORE . Window . flags  & =  ~ FLAG_FULLSCREEN_MODE ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        glfwSetWindowMonitor ( platform . handle ,  NULL ,  CORE . Window . position . x ,  CORE . Window . position . y ,  CORE . Window . screen . width ,  CORE . Window . screen . height ,  GLFW_DONT_CARE ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        glfwSetWindowMonitor ( platform . handle ,  NULL ,  CORE . Window . previousPosition . x ,  CORE . Window . previousPosition . y ,  CORE . Window . screen . width ,  CORE . Window . screen . height ,  GLFW_DONT_CARE ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  we  update  the  window  position  right  away   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        CORE . Window . position . x  =  CORE . Window . previousPosition . x ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        CORE . Window . position . y  =  CORE . Window . previousPosition . y ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    }   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    / /  Try  to  enable  GPU  V - Sync ,  so  frames  are  limited  to  screen  refresh  rate  ( 60 Hz  - >  60  FPS )   
			
		 
		
	
	
		
			
				
				
				
				
					
						 
					 
				
				 
			
			 
			
			@ -190,11 +195,11 @@ void ToggleFullscreen(void)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			/ /  Toggle  borderless  windowed  mode  
			
		 
		
	
		
			
			 
			 
			
			 
			
			void  ToggleBorderlessWindowed ( void )  
			
		 
		
	
		
			
			 
			 
			
			 
			
			{  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    / /  Leave  fullscreen  before  attempting  to  set  borderless  windowed  mode  and  get  screen  position  from  it    
			
		 
		
	
		
			
			 
			 
			
			 
			
			    / /  Leave  fullscreen  before  attempting  to  set  borderless  windowed  mode   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    bool  wasOnFullscreen  =  false ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    if  ( CORE . Window . fullscreen )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    {   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        n">CORE . Window . previousPosition  =  CORE . Window . position ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        o">/ /  fullscreen  already  saves  the  previous  position  so  it  does  not  need  to  be  set  here  again   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        ToggleFullscreen ( ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        wasOnFullscreen  =  true ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    }   
			
		 
		
	
	
		
			
				
				
				
				
					
						 
					 
				
				 
			
			 
			
			@ -213,7 +218,7 @@ void ToggleBorderlessWindowed(void)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			            {   
			
		 
		
	
		
			
			 
			 
			
			 
			
			                / /  Store  screen  position  and  size   
			
		 
		
	
		
			
			 
			 
			
			 
			
			                / /  NOTE :  If  it  was  on  fullscreen ,  screen  position  was  already  stored ,  so  skip  setting  it  here   
			
		 
		
	
		
			
			 
			 
			
			 
			
			                if  ( ! wasOnFullscreen )  glfwGetWindowPos ( platform . handle ,  &  CORE. Window . previousPosition . x ,  & CORE . Window . previousP osition. y )  ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			                if  ( ! wasOnFullscreen )  CORE . Window . previousPosition  =   CORE . Window . position ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			                CORE . Window . previousScreen  =  CORE . Window . screen ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			                / /  Set  undecorated  and  topmost  modes  and  flags   
			
		 
		
	
	
		
			
				
				
					
						 
					 
				
				
					
						 
					 
				
				
				 
			
			 
			
			@ -255,6 +260,9 @@ void ToggleBorderlessWindowed(void)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			                glfwFocusWindow ( platform . handle ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			                CORE . Window . flags  & =  ~ FLAG_BORDERLESS_WINDOWED_MODE ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			                CORE . Window . position . x  =  CORE . Window . previousPosition . x ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			                CORE . Window . position . y  =  CORE . Window . previousPosition . y ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            }   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        }   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        else  TRACELOG ( LOG_WARNING ,  " GLFW: Failed to find video mode for selected monitor " ) ;   
			
		 
		
	
	
		
			
				
				
					
						 
					 
				
				
					
						 
					 
				
				
				 
			
			 
			
			@ -592,6 +600,9 @@ void SetWindowTitle(const char *title)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			/ /  Set  window  position  on  screen  ( windowed  mode )  
			
		 
		
	
		
			
			 
			 
			
			 
			
			void  SetWindowPosition ( int  x ,  int  y )  
			
		 
		
	
		
			
			 
			 
			
			 
			
			{  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    / /  Update  CORE . Window . position  as  well   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    CORE . Window . position . x  =  x ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    CORE . Window . position . y  =  y ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    glfwSetWindowPos ( platform . handle ,  x ,  y ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			}  
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
	
		
			
				
				
				
				
					
						 
					 
				
				 
			
			 
			
			@ -614,8 +625,9 @@ void SetWindowMonitor(int monitor)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        {   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            TRACELOG ( LOG_INFO ,  " GLFW: Selected monitor: [%i] %s " ,  monitor ,  glfwGetMonitorName ( monitors [ monitor ] ) ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			            const  int  screenWidth  =  CORE . Window . screen . width ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            const  int  screenHeight  =  CORE . Window . screen . height ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            / /  Here  the  render  width  has  to  be  used  again  in  case  high  dpi  flag  is  enabled   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            const  int  screenWidth  =  CORE . Window . render . width ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            const  int  screenHeight  =  CORE . Window . render . height ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            int  monitorWorkareaX  =  0 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            int  monitorWorkareaY  =  0 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            int  monitorWorkareaWidth  =  0 ;   
			
		 
		
	
	
		
			
				
				
					
						 
					 
				
				
					
						 
					 
				
				
				 
			
			 
			
			@ -1568,12 +1580,17 @@ int InitPlatform(void)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  monitorWidth  =  0 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  monitorHeight  =  0 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        glfwGetMonitorWorkarea ( monitor ,  & monitorX ,  & monitorY ,  & monitorWidth ,  & monitorHeight ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  posX  =  monitorX  +  ( monitorWidth  -  ( int ) CORE . Window . screen . width ) / 2 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  posY  =  monitorY  +  ( monitorHeight  -  ( int ) CORE . Window . screen . height ) / 2 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			          
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  Here  CORE . Window . render . width / height  should  be  used  instead  of  CORE . Window . screen . width / height  to  center  the  window  correctly  when  the  high  dpi  flag  is  enabled .   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  posX  =  monitorX  +  ( monitorWidth  -  ( int ) CORE . Window . render . width ) / 2 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  posY  =  monitorY  +  ( monitorHeight  -  ( int ) CORE . Window . render . height ) / 2 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        if  ( posX  <  monitorX )  posX  =  monitorX ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        if  ( posY  <  monitorY )  posY  =  monitorY ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        SetWindowPosition ( posX ,  posY ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  Update  CORE . Window . position  here  so  it  is  correct  from  the  start   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        CORE . Window . position . x  =  posX ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        CORE . Window . position . y  =  posY ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    }   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    / /  Load  OpenGL  extensions   
			
		 
		
	
	
		
			
				
				
				
				
					
						 
					 
				
				 
			
			 
			
			@ -1585,6 +1602,7 @@ int InitPlatform(void)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    / / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    / /  Set  window  callback  events   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    glfwSetWindowSizeCallback ( platform . handle ,  WindowSizeCallback ) ;       / /  NOTE :  Resizing  not  allowed  by  default !   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    glfwSetWindowPosCallback ( platform . handle ,  WindowPosCallback ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    glfwSetWindowMaximizeCallback ( platform . handle ,  WindowMaximizeCallback ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    glfwSetWindowIconifyCallback ( platform . handle ,  WindowIconifyCallback ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    glfwSetWindowFocusCallback ( platform . handle ,  WindowFocusCallback ) ;   
			
		 
		
	
	
		
			
				
				
					
						 
					 
				
				
					
						 
					 
				
				
				 
			
			 
			
			@ -1681,7 +1699,12 @@ static void WindowSizeCallback(GLFWwindow *window, int width, int height)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    / /  NOTE :  Postprocessing  texture  is  not  scaled  to  new  size   
			
		 
		
	
		
			
			 
			 
			
			 
			
			}  
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			static  void  WindowPosCallback ( GLFWwindow *  window ,  int  x ,  int  y )  
			
		 
		
	
		
			
			 
			 
			
			 
			
			{  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    / /  Set  current  window  position   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    CORE . Window . position . x  =  x ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    CORE . Window . position . y  =  y ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			}  
			
		 
		
	
		
			
			 
			 
			
			 
			
			static  void  WindowContentScaleCallback ( GLFWwindow  * window ,  float  scalex ,  float  scaley )  
			
		 
		
	
		
			
			 
			 
			
			 
			
			{  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    CORE . Window . screenScale  =  MatrixScale ( scalex ,  scaley ,  1.0f ) ;