mirror of
https://github.com/love2d/love-android.git
synced 2026-08-12 08:31:04 +02:00
love.window.getPixelScale now works properly on Android.
This commit is contained in:
@@ -16,6 +16,7 @@ LOCAL_C_INCLUDES := \
|
||||
${LOCAL_PATH}/src/libraries/ \
|
||||
${LOCAL_PATH}/src/libraries/enet/libenet/include \
|
||||
${LOCAL_PATH}/../SDL2-2.0.1/include \
|
||||
${LOCAL_PATH}/../SDL2-2.0.1/src \
|
||||
${LOCAL_PATH}/../devil-1.7.8/include \
|
||||
${LOCAL_PATH}/../devil-1.7.8/src-IL/include \
|
||||
${LOCAL_PATH}/../jasper-1.900.1/src/libjasper/include \
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Copyright (c) 2006-2014 LOVE Development Team
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
**/
|
||||
|
||||
#include "android.h"
|
||||
|
||||
#ifdef LOVE_ANDROID
|
||||
|
||||
// SDL
|
||||
#include "core/android/SDL_android.h"
|
||||
|
||||
namespace love
|
||||
{
|
||||
namespace android
|
||||
{
|
||||
|
||||
double getScreenScale()
|
||||
{
|
||||
JNIEnv *env = Android_JNI_GetEnv();
|
||||
|
||||
jclass activity = env->FindClass("org/love2d/android/GameActivity");
|
||||
jmethodID getMetrics = env->GetStaticMethodID(activity, "getMetrics", "()Landroid/util/DisplayMetrics;");
|
||||
jobject metrics = env->CallStaticObjectMethod(activity, getMetrics);
|
||||
jclass metricsClass = env->GetObjectClass(metrics);
|
||||
|
||||
return env->GetFloatField(metrics, env->GetFieldID(metricsClass, "density", "F"));
|
||||
}
|
||||
|
||||
} // android
|
||||
} // love
|
||||
|
||||
#endif // LOVE_ANDROID
|
||||
@@ -0,0 +1,43 @@
|
||||
/**
|
||||
* Copyright (c) 2006-2014 LOVE Development Team
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
**/
|
||||
|
||||
#ifndef LOVE_ANDROID_H
|
||||
#define LOVE_ANDROID_H
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#ifdef LOVE_ANDROID
|
||||
|
||||
namespace love
|
||||
{
|
||||
namespace android
|
||||
{
|
||||
|
||||
/**
|
||||
* Gets the scale factor of the window's screen, e.g. on Retina displays this
|
||||
* will return 2.0.
|
||||
**/
|
||||
double getScreenScale();
|
||||
|
||||
} // android
|
||||
} // love
|
||||
|
||||
#endif // LOVE_ANDROID
|
||||
#endif // LOVE_ANDROID_H
|
||||
@@ -23,6 +23,10 @@
|
||||
#include "graphics/Graphics.h"
|
||||
#include "Window.h"
|
||||
|
||||
#ifdef LOVE_ANDROID
|
||||
#include "common/android.h"
|
||||
#endif
|
||||
|
||||
// C++
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
@@ -671,7 +675,9 @@ double Window::getPixelScale() const
|
||||
{
|
||||
double scale = 1.0;
|
||||
|
||||
#if SDL_VERSION_ATLEAST(2,0,1)
|
||||
#ifdef LOVE_ANDROID
|
||||
scale = love::android::getScreenScale();
|
||||
#elif SDL_VERSION_ATLEAST(2,0,1)
|
||||
if (window)
|
||||
{
|
||||
int wheight;
|
||||
|
||||
Reference in New Issue
Block a user