Add window.scale, let window width/height and mouse events be in logical points

This commit is contained in:
Joshua Granick
2015-10-05 13:18:54 -07:00
parent f86b10df73
commit 283e13386b
8 changed files with 45 additions and 32 deletions

View File

@@ -536,9 +536,8 @@ namespace lime {
case SDL_WINDOWEVENT_SIZE_CHANGED:
windowEvent.type = WINDOW_RESIZE;
SDL_GL_GetDrawableSize (SDL_GetWindowFromID (event->window.windowID), &windowEvent.width, &windowEvent.height);
//windowEvent.width = event->window.data1;
//windowEvent.height = event->window.data2;
windowEvent.width = event->window.data1;
windowEvent.height = event->window.data2;
break;
case SDL_WINDOWEVENT_RESTORED: windowEvent.type = WINDOW_RESTORE; break;

View File

@@ -85,6 +85,24 @@ namespace lime {
}
double SDLRenderer::GetScale () {
int outputWidth;
int outputHeight;
SDL_GetRendererOutputSize (sdlRenderer, &outputWidth, &outputHeight);
int width;
int height;
SDL_GetWindowSize (sdlWindow, &width, &height);
double scale = outputWidth / width;
return scale;
}
value SDLRenderer::Lock () {
int width;

View File

@@ -18,6 +18,7 @@ namespace lime {
virtual void Flip ();
virtual void* GetContext ();
virtual double GetScale ();
virtual value Lock ();
virtual void MakeCurrent ();
virtual const char* Type ();

View File

@@ -173,19 +173,7 @@ namespace lime {
int width;
int height;
SDL_GL_GetDrawableSize (sdlWindow, &width, &height);
SDL_Renderer* sdlRenderer = SDL_GetRenderer (sdlWindow);
if (sdlRenderer) {
SDL_GetRendererOutputSize (sdlRenderer, &width, &height);
} else {
SDL_GetWindowSize (sdlWindow, &width, &height);
}
SDL_GetWindowSize (sdlWindow, &width, &height);
return height;
@@ -204,17 +192,7 @@ namespace lime {
int width;
int height;
SDL_Renderer* sdlRenderer = SDL_GetRenderer (sdlWindow);
if (sdlRenderer) {
SDL_GetRendererOutputSize (sdlRenderer, &width, &height);
} else {
SDL_GetWindowSize (sdlWindow, &width, &height);
}
SDL_GetWindowSize (sdlWindow, &width, &height);
return width;