forked from organicmaps/organicmaps
Android. Using exact DPI for visual scale calculation.
This commit is contained in:
parent
bf73c9b36e
commit
8f2a4f0cd1
3 changed files with 5 additions and 36 deletions
|
@ -31,6 +31,7 @@
|
|||
|
||||
#include "base/math.hpp"
|
||||
#include "base/logging.hpp"
|
||||
#include "base/visual_scale.hpp"
|
||||
|
||||
android::Framework * g_framework = 0;
|
||||
|
||||
|
@ -102,35 +103,6 @@ void Framework::UpdateCompassSensor(int ind, float * arr)
|
|||
m_sensors[ind].Next(arr);
|
||||
}
|
||||
|
||||
float Framework::GetBestDensity(int densityDpi)
|
||||
{
|
||||
typedef pair<int, float> P;
|
||||
P dens[] = {
|
||||
P(120, 0.75f),
|
||||
P(160, 1.0f),
|
||||
P(240, 1.5f),
|
||||
P(320, 2.0f),
|
||||
P(480, 3.0f)
|
||||
};
|
||||
|
||||
int prevRange = numeric_limits<int>::max();
|
||||
int bestRangeIndex = 0;
|
||||
for (int i = 0; i < ARRAY_SIZE(dens); i++)
|
||||
{
|
||||
int currRange = abs(densityDpi - dens[i].first);
|
||||
if (currRange <= prevRange)
|
||||
{
|
||||
// it is better, take index
|
||||
bestRangeIndex = i;
|
||||
prevRange = currRange;
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
return dens[bestRangeIndex].second;
|
||||
}
|
||||
|
||||
void Framework::MyPositionModeChanged(location::EMyPositionMode mode)
|
||||
{
|
||||
if (m_myPositionModeSignal != nullptr)
|
||||
|
@ -144,11 +116,10 @@ bool Framework::CreateDrapeEngine(JNIEnv * env, jobject jSurface, int densityDpi
|
|||
if (!factory->IsValid())
|
||||
return false;
|
||||
|
||||
float visualScale = GetBestDensity(densityDpi);
|
||||
::Framework::DrapeCreationParams p;
|
||||
p.m_surfaceWidth = factory->GetWidth();
|
||||
p.m_surfaceHeight = factory->GetHeight();
|
||||
p.m_visualScale = visualScale;
|
||||
p.m_visualScale = VisualScale(densityDpi);
|
||||
p.m_hasMyPositionState = m_isCurrentModeInitialized;
|
||||
p.m_initialMyPositionState = m_currentMode;
|
||||
ASSERT(!m_guiPositions.empty(), ("GUI elements must be set-up before engine is created"));
|
||||
|
|
|
@ -50,8 +50,6 @@ namespace android
|
|||
|
||||
map<gui::EWidget, gui::Position> m_guiPositions;
|
||||
|
||||
float GetBestDensity(int densityDpi);
|
||||
|
||||
void MyPositionModeChanged(location::EMyPositionMode mode);
|
||||
|
||||
location::TMyPositionModeChanged m_myPositionModeSignal;
|
||||
|
|
|
@ -145,10 +145,10 @@ public class MapFragment extends BaseMwmFragment
|
|||
final Rect rect = surfaceHolder.getSurfaceFrame();
|
||||
setupWidgets(rect.width(), rect.height());
|
||||
|
||||
final DisplayMetrics metrics = new DisplayMetrics();
|
||||
getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
|
||||
final DisplayMetrics dm = getActivity().getResources().getDisplayMetrics();
|
||||
final float exactDensityDpi = (dm.xdpi + dm.ydpi) / 2;
|
||||
|
||||
mEngineCreated = nativeCreateEngine(surface, metrics.densityDpi);
|
||||
mEngineCreated = nativeCreateEngine(surface, (int)exactDensityDpi);
|
||||
if (mEngineCreated)
|
||||
onRenderingInitialized();
|
||||
else
|
||||
|
|
Loading…
Add table
Reference in a new issue