Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrachytski <siarhei.rachytski@gmail.com>2013-02-11 18:40:30 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:49:47 +0300
commit7fdac1d3bd3c2858c1025c25d96ef832e2b5b241 (patch)
treeb7b0055ffcbc4750169b90ab80af1641f8e05174
parentaca14466854d86c2890d1ed4f24bbb84b85b6b63 (diff)
added graphics::EDensity and resources naming system similar to Android.
-rw-r--r--android/jni/com/mapswithme/maps/Framework.cpp16
-rw-r--r--data/resources-hdpi/basic.skn (renamed from data/basic_hdpi.skn)2
-rw-r--r--data/resources-hdpi/symbols.png (renamed from data/symbols_hdpi.png)bin121470 -> 121470 bytes
-rw-r--r--data/resources-ldpi/basic.skn (renamed from data/basic_ldpi.skn)2
-rw-r--r--data/resources-ldpi/symbols.png (renamed from data/symbols_ldpi.png)bin47461 -> 47461 bytes
-rw-r--r--data/resources-mdpi/arrow.pngbin0 -> 1724 bytes
-rw-r--r--data/resources-mdpi/basic.skn (renamed from data/basic_mdpi.skn)2
-rw-r--r--data/resources-mdpi/symbols.png (renamed from data/symbols_mdpi.png)bin73462 -> 73462 bytes
-rw-r--r--data/resources-xhdpi/arrow.pngbin0 -> 3450 bytes
-rw-r--r--data/resources-xhdpi/basic.skn (renamed from data/basic_xhdpi.skn)2
-rw-r--r--data/resources-xhdpi/symbols.png (renamed from data/symbols_xhdpi.png)bin162302 -> 162302 bytes
-rw-r--r--graphics/defines.cpp28
-rw-r--r--graphics/defines.hpp19
-rw-r--r--graphics/geometry_batcher.cpp8
-rw-r--r--graphics/geometry_batcher.hpp2
-rw-r--r--graphics/graphics_tests/screengl_test.cpp2
-rw-r--r--graphics/image.cpp51
-rw-r--r--graphics/image.hpp7
-rw-r--r--graphics/opengl/texture.hpp10
-rw-r--r--graphics/resource_cache.cpp13
-rw-r--r--graphics/resource_cache.hpp1
-rw-r--r--graphics/resource_manager.cpp16
-rw-r--r--graphics/resource_manager.hpp5
-rw-r--r--graphics/skin_loader.cpp6
-rw-r--r--graphics/skin_loader.hpp16
-rw-r--r--gui/controller.cpp18
-rw-r--r--gui/controller.hpp10
-rw-r--r--gui/gui_tests/gui_tests.cpp4
-rw-r--r--iphone/Maps/Classes/EAGLView.mm18
-rw-r--r--iphone/Maps/Maps.xcodeproj/project.pbxproj36
-rw-r--r--map/coverage_generator.cpp3
-rw-r--r--map/coverage_generator.hpp2
-rw-r--r--map/framework.cpp2
-rw-r--r--map/render_policy.cpp9
-rw-r--r--map/render_policy.hpp4
-rw-r--r--map/simple_render_policy.cpp1
-rw-r--r--map/tile_renderer.cpp3
-rw-r--r--map/tile_renderer.hpp2
-rw-r--r--map/tiling_render_policy_mt.cpp3
-rw-r--r--map/tiling_render_policy_st.cpp3
-rw-r--r--qt/draw_widget.cpp4
-rw-r--r--qt/qt.pro4
-rw-r--r--qt_tstfrm/gui_test_widget.hpp5
-rw-r--r--qt_tstfrm/tstwidgets.cpp3
-rw-r--r--skin_generator/main.cpp2
-rw-r--r--skin_generator/skin_generator.cpp4
-rwxr-xr-xtools/android/update_assets_for_version.sh5
-rwxr-xr-xtools/unix/generate_symbols.sh8
48 files changed, 230 insertions, 131 deletions
diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp
index 54f1b6ed72..f17d3bba7e 100644
--- a/android/jni/com/mapswithme/maps/Framework.cpp
+++ b/android/jni/com/mapswithme/maps/Framework.cpp
@@ -118,28 +118,24 @@ namespace android
switch (densityDpi)
{
case 120:
- rpParams.m_visualScale = 0.75;
- suffix = "ldpi";
+ rpParams.m_density = graphics::EDensityLDPI;
break;
case 160:
- rpParams.m_visualScale = 1.0;
- suffix = "mdpi";
+ rpParams.m_density = graphics::EDensityMDPI;
break;
case 240:
- rpParams.m_visualScale = 1.5;
- suffix = "hdpi";
+ rpParams.m_density = graphics::EDensityHDPI;
break;
default:
- rpParams.m_visualScale = 2.0;
- suffix = "xhdpi";
+ rpParams.m_density = graphics::EDensityXHDPI;
break;
}
- rpParams.m_skinName = string("basic_") + suffix + ".skn";
- LOG(LINFO, ("Using", suffix, "resources"));
+ rpParams.m_skinName = "basic.skn";
+ LOG(LINFO, ("Using", graphics::convert(rpParams.m_density), "resources"));
rpParams.m_screenWidth = screenWidth;
rpParams.m_screenHeight = screenHeight;
diff --git a/data/basic_hdpi.skn b/data/resources-hdpi/basic.skn
index babe885514..f47a539f9a 100644
--- a/data/basic_hdpi.skn
+++ b/data/resources-hdpi/basic.skn
@@ -1,6 +1,6 @@
<!DOCTYPE skin>
<skin>
- <page width="512" height="512" file="symbols_hdpi.png">
+ <page width="512" height="512" file="symbols.png">
<symbolStyle id="1" name="airport">
<resourceStyle width="40" x="0" y="0" height="40"/>
</symbolStyle>
diff --git a/data/symbols_hdpi.png b/data/resources-hdpi/symbols.png
index d317c7b726..d317c7b726 100644
--- a/data/symbols_hdpi.png
+++ b/data/resources-hdpi/symbols.png
Binary files differ
diff --git a/data/basic_ldpi.skn b/data/resources-ldpi/basic.skn
index 626740bab5..f1d32e5ad1 100644
--- a/data/basic_ldpi.skn
+++ b/data/resources-ldpi/basic.skn
@@ -1,6 +1,6 @@
<!DOCTYPE skin>
<skin>
- <page width="512" height="256" file="symbols_ldpi.png">
+ <page width="512" height="256" file="symbols.png">
<symbolStyle id="1" name="airport">
<resourceStyle width="20" x="0" y="0" height="20"/>
</symbolStyle>
diff --git a/data/symbols_ldpi.png b/data/resources-ldpi/symbols.png
index e158e46a3a..e158e46a3a 100644
--- a/data/symbols_ldpi.png
+++ b/data/resources-ldpi/symbols.png
Binary files differ
diff --git a/data/resources-mdpi/arrow.png b/data/resources-mdpi/arrow.png
new file mode 100644
index 0000000000..9acd3c1e40
--- /dev/null
+++ b/data/resources-mdpi/arrow.png
Binary files differ
diff --git a/data/basic_mdpi.skn b/data/resources-mdpi/basic.skn
index 7d53db7d89..e02c01e7ff 100644
--- a/data/basic_mdpi.skn
+++ b/data/resources-mdpi/basic.skn
@@ -1,6 +1,6 @@
<!DOCTYPE skin>
<skin>
- <page width="512" height="256" file="symbols_mdpi.png">
+ <page width="512" height="256" file="symbols.png">
<symbolStyle id="1" name="airport">
<resourceStyle width="28" x="0" y="0" height="28"/>
</symbolStyle>
diff --git a/data/symbols_mdpi.png b/data/resources-mdpi/symbols.png
index 661355ba69..661355ba69 100644
--- a/data/symbols_mdpi.png
+++ b/data/resources-mdpi/symbols.png
Binary files differ
diff --git a/data/resources-xhdpi/arrow.png b/data/resources-xhdpi/arrow.png
new file mode 100644
index 0000000000..dfd720ee39
--- /dev/null
+++ b/data/resources-xhdpi/arrow.png
Binary files differ
diff --git a/data/basic_xhdpi.skn b/data/resources-xhdpi/basic.skn
index 90ae0039ce..3a756ed15c 100644
--- a/data/basic_xhdpi.skn
+++ b/data/resources-xhdpi/basic.skn
@@ -1,6 +1,6 @@
<!DOCTYPE skin>
<skin>
- <page width="1024" height="512" file="symbols_xhdpi.png">
+ <page width="1024" height="512" file="symbols.png">
<symbolStyle id="1" name="airport">
<resourceStyle width="52" x="0" y="0" height="52"/>
</symbolStyle>
diff --git a/data/symbols_xhdpi.png b/data/resources-xhdpi/symbols.png
index 17faf583e1..17faf583e1 100644
--- a/data/symbols_xhdpi.png
+++ b/data/resources-xhdpi/symbols.png
Binary files differ
diff --git a/graphics/defines.cpp b/graphics/defines.cpp
index 50fd589b8c..0f09e0bac7 100644
--- a/graphics/defines.cpp
+++ b/graphics/defines.cpp
@@ -15,6 +15,34 @@ namespace graphics
};
}
+ Data s_density[] = {
+ {EDensityLDPI, "ldpi"},
+ {EDensityMDPI, "mdpi"},
+ {EDensityHDPI, "hdpi"},
+ {EDensityXHDPI, "xhdpi"}
+ };
+
+ char const * convert(EDensity density)
+ {
+ for (unsigned i = 0; i < ARRAY_SIZE(s_density); ++i)
+ {
+ if (density == s_density[i].m_val)
+ return s_density[i].m_name;
+ }
+ return 0;
+ }
+
+ string const resourcePath(string const & name, EDensity d)
+ {
+ return string("resources-") + convert(d) + "/" + name;
+ }
+
+ double visualScale(EDensity density)
+ {
+ static double const vs [4] = {0.75, 1, 1.5, 2};
+ return vs[density];
+ }
+
Data s_semantics[] = {
{ESemPosition, "Position"},
{ESemNormal, "Normal"},
diff --git a/graphics/defines.hpp b/graphics/defines.hpp
index 7cfd98f79b..92301babce 100644
--- a/graphics/defines.hpp
+++ b/graphics/defines.hpp
@@ -1,10 +1,29 @@
#pragma once
+#include "../std/string.hpp"
+
namespace graphics
{
static const int maxDepth = 20000;
static const int minDepth = -20000;
+ enum EDensity
+ {
+ EDensityLDPI = 0,
+ EDensityMDPI,
+ EDensityHDPI,
+ EDensityXHDPI
+ };
+
+ /// get density name
+ char const * convert(EDensity density);
+
+ /// get resource name for specified density
+ string const resourcePath(string const & name, EDensity density);
+
+ /// get scaling koefficient for specified density
+ double visualScale(EDensity density);
+
/// When adding values here,
/// please check constructor of ResourceManager,
/// and defines.cpp
diff --git a/graphics/geometry_batcher.cpp b/graphics/geometry_batcher.cpp
index 9011dfb220..ff01f5ed32 100644
--- a/graphics/geometry_batcher.cpp
+++ b/graphics/geometry_batcher.cpp
@@ -31,7 +31,8 @@ namespace graphics
GeometryBatcher::Params::Params()
: m_storageType(ELargeStorage),
- m_textureType(ELargeTexture)
+ m_textureType(ELargeTexture),
+ m_density(EDensityLDPI)
{
CheckPointLayout<float>();
CheckPointLayout<double>();
@@ -39,12 +40,13 @@ namespace graphics
GeometryBatcher::GeometryBatcher(Params const & p)
: base_t(p),
- m_isAntiAliased(true)
+ m_isAntiAliased(true),
+ m_density(p.m_density)
{
base_t::applyStates();
vector<shared_ptr<ResourceCache> > caches;
- loadSkin(resourceManager(), p.m_skinName, caches);
+ loadSkin(resourceManager(), p.m_skinName, m_density, caches);
m_staticPagesCount = caches.size();
m_startStaticPage = reservePipelines(caches,
diff --git a/graphics/geometry_batcher.hpp b/graphics/geometry_batcher.hpp
index d90d033f63..30e36343e9 100644
--- a/graphics/geometry_batcher.hpp
+++ b/graphics/geometry_batcher.hpp
@@ -30,6 +30,7 @@ namespace graphics
bool m_isAntiAliased;
int m_aaShift;
+ EDensity m_density;
public:
@@ -47,6 +48,7 @@ namespace graphics
EStorageType m_storageType;
ETextureType m_textureType;
string m_skinName;
+ EDensity m_density;
Params();
};
diff --git a/graphics/graphics_tests/screengl_test.cpp b/graphics/graphics_tests/screengl_test.cpp
index fd6cc2800b..fe68d42468 100644
--- a/graphics/graphics_tests/screengl_test.cpp
+++ b/graphics/graphics_tests/screengl_test.cpp
@@ -1451,7 +1451,7 @@ namespace
{
void DoDraw(shared_ptr<graphics::Screen> const & p)
{
- graphics::Image::Info ii("testing/images/test.png");
+ graphics::Image::Info ii("test.png", graphics::EDensityMDPI);
math::Matrix<double, 3, 3> m =
math::Shift(
diff --git a/graphics/image.cpp b/graphics/image.cpp
index f8fddf5c31..290da18522 100644
--- a/graphics/image.cpp
+++ b/graphics/image.cpp
@@ -10,9 +10,9 @@ namespace gil = boost::gil;
namespace graphics
{
- m2::PointU const GetDimensions(string const & resourceName)
+ m2::PointU const GetDimensions(string const & resName, EDensity density)
{
- ReaderPtr<Reader> reader = GetPlatform().GetReader(resourceName);
+ ReaderPtr<Reader> reader = GetPlatform().GetReader(resourcePath(resName, density));
gil::point2<ptrdiff_t> size = gil::lodepng_read_dimensions(reader);
return m2::PointU(size.x, size.y);
}
@@ -22,20 +22,28 @@ namespace graphics
m_size(0, 0)
{}
- Image::Info::Info(char const * resourceName)
- : Resource::Info(Resource::EImage)
+ Image::Info::Info(char const * name, EDensity density)
+ : Resource::Info(Resource::EImage), m_size(0, 0)
{
- m_size = GetDimensions(resourceName);
- m_data.resize(m_size.x * m_size.y * sizeof(DATA_TRAITS::pixel_t));
+ string resName = graphics::resourcePath(name, density);
- DATA_TRAITS::view_t v = gil::interleaved_view(
- m_size.x, m_size.y,
- (DATA_TRAITS::pixel_t*)&m_data[0],
- m_size.x * sizeof(DATA_TRAITS::pixel_t));
+ try
+ {
+ m_size = GetDimensions(name, density);
+ m_data.resize(m_size.x * m_size.y * sizeof(DATA_TRAITS::pixel_t));
+
+ DATA_TRAITS::view_t v = gil::interleaved_view(
+ m_size.x, m_size.y,
+ (DATA_TRAITS::pixel_t*)&m_data[0],
+ m_size.x * sizeof(DATA_TRAITS::pixel_t));
- ReaderPtr<Reader> reader = GetPlatform().GetReader(resourceName);
+ ReaderPtr<Reader> reader = GetPlatform().GetReader(resName);
- gil::lodepng_read_and_convert_view(reader, v, DATA_TRAITS::color_converter());
+ gil::lodepng_read_and_convert_view(reader, v, DATA_TRAITS::color_converter());
+ }
+ catch (RootException const &)
+ {
+ }
}
unsigned Image::Info::width() const
@@ -94,19 +102,22 @@ namespace graphics
void Image::render(void * dst)
{
- DATA_TRAITS::view_t srcView = gil::interleaved_view(
- m_info.m_size.x, m_info.m_size.y,
- (DATA_TRAITS::pixel_t*)&m_info.m_data[0],
- m_info.m_size.x * sizeof(DATA_TRAITS::pixel_t));
-
DATA_TRAITS::view_t dstView = gil::interleaved_view(
m_info.m_size.x + 4, m_info.m_size.y + 4,
(DATA_TRAITS::pixel_t*)dst,
(m_info.m_size.x + 4) * sizeof(DATA_TRAITS::pixel_t));
- gil::copy_pixels(
- srcView,
- gil::subimage_view(dstView, 2, 2, m_info.m_size.x, m_info.m_size.y));
+ if ((m_info.m_size.x != 0) && (m_info.m_size.y != 0))
+ {
+ DATA_TRAITS::view_t srcView = gil::interleaved_view(
+ m_info.m_size.x, m_info.m_size.y,
+ (DATA_TRAITS::pixel_t*)&m_info.m_data[0],
+ m_info.m_size.x * sizeof(DATA_TRAITS::pixel_t));
+
+ gil::copy_pixels(
+ srcView,
+ gil::subimage_view(dstView, 2, 2, m_info.m_size.x, m_info.m_size.y));
+ }
DATA_TRAITS::pixel_t pxBorder = DATA_TRAITS::createPixel(Color(0, 0, 0, 0));
diff --git a/graphics/image.hpp b/graphics/image.hpp
index c7a5f9a968..cd5752b118 100644
--- a/graphics/image.hpp
+++ b/graphics/image.hpp
@@ -1,5 +1,6 @@
#pragma once
+#include "defines.hpp"
#include "resource.hpp"
#include "../std/string.hpp"
@@ -8,8 +9,8 @@
namespace graphics
{
- /// get dimensions of PNG image specified by it's resourceName.
- m2::PointU const GetDimensions(string const & resourceName);
+ /// get dimensions of PNG image specified by it's resName.
+ m2::PointU const GetDimensions(string const & resName, EDensity density);
struct Image : public Resource
{
@@ -20,7 +21,7 @@ namespace graphics
vector<unsigned char> m_data;
Info();
- Info(char const * resName);
+ Info(char const * resName, EDensity density);
unsigned width() const;
unsigned height() const;
diff --git a/graphics/opengl/texture.hpp b/graphics/opengl/texture.hpp
index c72c04e45a..610f307263 100644
--- a/graphics/opengl/texture.hpp
+++ b/graphics/opengl/texture.hpp
@@ -65,10 +65,10 @@ namespace graphics
public:
- Texture(string const & fileName) : BaseTexture(GetDimensions(fileName))
+ Texture(string const & fileName, EDensity density) : BaseTexture(GetDimensions(fileName, density))
{
typename Traits::image_t image(width(), height());
- ReaderPtr<Reader> reader = GetPlatform().GetReader(fileName);
+ ReaderPtr<Reader> reader = GetPlatform().GetReader(resourcePath(fileName, density));
gil::lodepng_read_and_convert_image(reader, image, typename Traits::color_converter());
upload(&gil::view(image)(0, 0));
}
@@ -144,7 +144,7 @@ namespace graphics
void upload(void * data, m2::RectU const & r);
/// Create the texture loading it from file
- Texture(string const & fileName);
+ Texture(string const & fileName, EDensity density);
/// Create the texture with the predefined dimensions
Texture(size_t width, size_t height);
Texture(m2::RectU const & r);
@@ -189,11 +189,11 @@ namespace graphics
}
template <typename Traits>
- Texture<Traits, true>::Texture(string const & fileName) : ManagedTexture(GetDimensions(fileName), sizeof(pixel_t))
+ Texture<Traits, true>::Texture(string const & fileName, EDensity density) : ManagedTexture(GetDimensions(fileName, density), sizeof(pixel_t))
{
lock();
view_t v = view(width(), height());
- ReaderPtr<Reader> reader = GetPlatform().GetReader(fileName);
+ ReaderPtr<Reader> reader = GetPlatform().GetReader(resourcePath(fileName, density));
gil::lodepng_read_and_convert_view(reader, v, typename Traits::color_converter());
upload(&v(0, 0));
unlock();
diff --git a/graphics/resource_cache.cpp b/graphics/resource_cache.cpp
index 97743965e4..4b1b9dec94 100644
--- a/graphics/resource_cache.cpp
+++ b/graphics/resource_cache.cpp
@@ -20,12 +20,13 @@ namespace graphics
{}
ResourceCache::ResourceCache(shared_ptr<ResourceManager> const & resourceManager,
- char const * name,
- uint8_t pipelineID)
- : m_texture(resourceManager->getTexture(name)),
- m_packer(m_texture->width(), m_texture->height(), 0x00FFFFFF - 1),
- m_textureType(EStaticTexture),
- m_pipelineID(pipelineID)
+ char const * name,
+ EDensity density,
+ uint8_t pipelineID)
+ : m_texture(resourceManager->getTexture(name, density)),
+ m_packer(m_texture->width(), m_texture->height(), 0x00FFFFFF - 1),
+ m_textureType(EStaticTexture),
+ m_pipelineID(pipelineID)
{
}
diff --git a/graphics/resource_cache.hpp b/graphics/resource_cache.hpp
index 496a54941c..8fb7c2f11e 100644
--- a/graphics/resource_cache.hpp
+++ b/graphics/resource_cache.hpp
@@ -84,6 +84,7 @@ namespace graphics
/// creation of a static page
ResourceCache(shared_ptr<ResourceManager> const & resourceManager,
char const * name,
+ EDensity density,
uint8_t pipelineID);
/// creation of a dynamic page
diff --git a/graphics/resource_manager.cpp b/graphics/resource_manager.cpp
index 84a6561b86..2d5744315b 100644
--- a/graphics/resource_manager.cpp
+++ b/graphics/resource_manager.cpp
@@ -376,32 +376,34 @@ namespace
return m_texturePools[type].get();
}
- shared_ptr<gl::BaseTexture> const & ResourceManager::getTexture(string const & fileName)
+ shared_ptr<gl::BaseTexture> const & ResourceManager::getTexture(string const & fileName, EDensity density)
{
- TStaticTextures::const_iterator it = m_staticTextures.find(fileName);
+ pair<string, EDensity> key(fileName, density);
+ TStaticTextures::const_iterator it = m_staticTextures.find(key);
if (it != m_staticTextures.end())
return it->second;
shared_ptr<gl::BaseTexture> texture;
- texture = make_shared_ptr(new TStaticTexture(fileName));
+ texture = make_shared_ptr(new TStaticTexture(fileName, density));
- m_staticTextures[fileName] = texture;
- return m_staticTextures[fileName];
+ m_staticTextures[key] = texture;
+ return m_staticTextures[key];
}
void loadSkin(shared_ptr<ResourceManager> const & rm,
string const & fileName,
+ EDensity density,
vector<shared_ptr<ResourceCache> > & caches)
{
if (fileName.empty())
return;
- SkinLoader loader(rm, caches);
+ SkinLoader loader(rm, caches, density);
try
{
- ReaderPtr<Reader> skinFile(GetPlatform().GetReader(fileName));
+ ReaderPtr<Reader> skinFile(GetPlatform().GetReader(resourcePath(fileName, density)));
ReaderSource<ReaderPtr<Reader> > source(skinFile);
if (!ParseXML(source, loader))
MYTHROW(RootException, ("Error parsing skin file: ", fileName));
diff --git a/graphics/resource_manager.hpp b/graphics/resource_manager.hpp
index bebf984427..623a6a3858 100644
--- a/graphics/resource_manager.hpp
+++ b/graphics/resource_manager.hpp
@@ -209,7 +209,7 @@ namespace graphics
private:
- typedef map<string, shared_ptr<gl::BaseTexture> > TStaticTextures;
+ typedef map<pair<string, EDensity>, shared_ptr<gl::BaseTexture> > TStaticTextures;
TStaticTextures m_staticTextures;
@@ -242,7 +242,7 @@ namespace graphics
TTexturePool * texturePool(ETextureType type);
- shared_ptr<gl::BaseTexture> const & getTexture(string const & fileName);
+ shared_ptr<gl::BaseTexture> const & getTexture(string const & fileName, EDensity density);
Params const & params() const;
@@ -270,6 +270,7 @@ namespace graphics
void loadSkin(shared_ptr<ResourceManager> const & rm,
string const & fileName,
+ EDensity density,
vector<shared_ptr<ResourceCache> > & caches);
}
diff --git a/graphics/skin_loader.cpp b/graphics/skin_loader.cpp
index 299117cb25..d62257df03 100644
--- a/graphics/skin_loader.cpp
+++ b/graphics/skin_loader.cpp
@@ -9,10 +9,12 @@
namespace graphics
{
SkinLoader::SkinLoader(shared_ptr<ResourceManager> const & resourceManager,
- vector<shared_ptr<ResourceCache> > & caches)
+ vector<shared_ptr<ResourceCache> > & caches,
+ EDensity density)
: m_id(-1),
m_texRect(0, 0, 0, 0),
m_fileName(""),
+ m_density(density),
m_resourceManager(resourceManager),
m_caches(caches)
{
@@ -48,7 +50,7 @@ namespace graphics
void SkinLoader::popPage()
{
- m_caches.push_back(make_shared_ptr(new ResourceCache(m_resourceManager, m_fileName.c_str(), m_caches.size())));
+ m_caches.push_back(make_shared_ptr(new ResourceCache(m_resourceManager, m_fileName.c_str(), m_density, m_caches.size())));
TResourceList::iterator prevIt = m_resourceList.end();
diff --git a/graphics/skin_loader.hpp b/graphics/skin_loader.hpp
index 7202c46e51..39fe2948e2 100644
--- a/graphics/skin_loader.hpp
+++ b/graphics/skin_loader.hpp
@@ -1,6 +1,8 @@
/// @author Siarhei Rachytski
#pragma once
+#include "defines.hpp"
+
#include "../geometry/rect2d.hpp"
#include "../std/list.hpp"
#include "../std/shared_ptr.hpp"
@@ -48,7 +50,7 @@ namespace graphics
list<EMode> m_mode;
-/// resourceStyle-specific parameters
+ /// resourceStyle-specific parameters
int32_t m_id;
uint32_t m_texX;
uint32_t m_texY;
@@ -56,16 +58,17 @@ namespace graphics
uint32_t m_texHeight;
m2::RectU m_texRect;
-/// pointStyle-specific parameters
+ /// pointStyle-specific parameters
string m_resID;
-/// skin-page specific parameters
+ /// skin-page specific parameters
string m_fileName;
-///
+ EDensity m_density;
+
shared_ptr<ResourceManager> m_resourceManager;
-/// skin-specific parameters
+ /// skin-specific parameters
vector<shared_ptr<ResourceCache> > & m_caches;
@@ -77,7 +80,8 @@ namespace graphics
public:
SkinLoader(shared_ptr<ResourceManager> const & resourceManager,
- vector<shared_ptr<ResourceCache> > & caches);
+ vector<shared_ptr<ResourceCache> > & caches,
+ EDensity density);
bool Push(string const & element);
void Pop(string const & element);
diff --git a/gui/controller.cpp b/gui/controller.cpp
index 35f2a2aff2..d24681894e 100644
--- a/gui/controller.cpp
+++ b/gui/controller.cpp
@@ -10,18 +10,18 @@
namespace gui
{
Controller::RenderParams::RenderParams()
- : m_VisualScale(0), m_GlyphCache(0)
+ : m_Density(graphics::EDensityMDPI), m_GlyphCache(0)
{}
Controller::Controller()
- : m_VisualScale(0), m_GlyphCache(0)
+ : m_Density(graphics::EDensityMDPI), m_GlyphCache(0)
{}
- Controller::RenderParams::RenderParams(double visualScale,
+ Controller::RenderParams::RenderParams(graphics::EDensity density,
TInvalidateFn invalidateFn,
graphics::GlyphCache * glyphCache,
graphics::Screen * cacheScreen)
- : m_VisualScale(visualScale),
+ : m_Density(density),
m_InvalidateFn(invalidateFn),
m_GlyphCache(glyphCache),
m_CacheScreen(cacheScreen)
@@ -140,11 +140,17 @@ namespace gui
return m_VisualScale;
}
+ graphics::EDensity Controller::GetDensity() const
+ {
+ return m_Density;
+ }
+
void Controller::SetRenderParams(RenderParams const & p)
{
m_GlyphCache = p.m_GlyphCache;
m_InvalidateFn = p.m_InvalidateFn;
- m_VisualScale = p.m_VisualScale;
+ m_Density = p.m_Density;
+ m_VisualScale = graphics::visualScale(p.m_Density);
m_CacheScreen = p.m_CacheScreen;
LayoutElements();
@@ -153,7 +159,7 @@ namespace gui
void Controller::ResetRenderParams()
{
m_GlyphCache = 0;
- m_VisualScale = 0;
+ m_Density = graphics::EDensityLDPI;
m_InvalidateFn.clear();
m_CacheScreen = 0;
diff --git a/gui/controller.hpp b/gui/controller.hpp
index 212b6ba8f7..468cfc56ab 100644
--- a/gui/controller.hpp
+++ b/gui/controller.hpp
@@ -5,6 +5,7 @@
#include "../std/list.hpp"
#include "../geometry/point2d.hpp"
+#include "../graphics/defines.hpp"
#include "../base/strings_bundle.hpp"
@@ -44,6 +45,9 @@ namespace gui
/// Invalidate GUI function
TInvalidateFn m_InvalidateFn;
+ /// Screen density
+ graphics::EDensity m_Density;
+
/// VisualScale to multiply all Device-Independent-Pixels dimensions.
double m_VisualScale;
@@ -77,12 +81,12 @@ namespace gui
struct RenderParams
{
- double m_VisualScale;
+ graphics::EDensity m_Density;
TInvalidateFn m_InvalidateFn;
graphics::GlyphCache * m_GlyphCache;
graphics::Screen * m_CacheScreen;
RenderParams();
- RenderParams(double visualScale,
+ RenderParams(graphics::EDensity density,
TInvalidateFn invalidateFn,
graphics::GlyphCache * glyphCache,
graphics::Screen * cacheScreen);
@@ -102,6 +106,8 @@ namespace gui
void AddElement(shared_ptr<Element> const & e);
/// Get VisualScale parameter
double GetVisualScale() const;
+ /// Get Density parameter
+ graphics::EDensity GetDensity() const;
/// Get localized strings bundle
StringsBundle const * GetStringsBundle() const;
/// Get GlyphCache
diff --git a/gui/gui_tests/gui_tests.cpp b/gui/gui_tests/gui_tests.cpp
index 5457a10709..c552e8a795 100644
--- a/gui/gui_tests/gui_tests.cpp
+++ b/gui/gui_tests/gui_tests.cpp
@@ -31,7 +31,7 @@ struct BalloonTest
bp.m_imageMarginBottom = 5;
bp.m_text = "Active";
- bp.m_image = graphics::Image::Info("testing/images/arrow.png");
+ bp.m_image = graphics::Image::Info("arrow.png", graphics::EDensityMDPI);
m_balloon.reset(new gui::Balloon(bp));
m_balloon->setIsVisible(true);
@@ -132,7 +132,7 @@ struct ImageViewTest
ip.m_pivot = m_pivot;
ip.m_position = graphics::EPosUnder;
- ip.m_image = graphics::Image::Info("testing/images/arrow.png");
+ ip.m_image = graphics::Image::Info("arrow.png", graphics::EDensityMDPI);
m_imageView.reset(new gui::ImageView(ip));
diff --git a/iphone/Maps/Classes/EAGLView.mm b/iphone/Maps/Classes/EAGLView.mm
index d4553778fa..b717978d9b 100644
--- a/iphone/Maps/Classes/EAGLView.mm
+++ b/iphone/Maps/Classes/EAGLView.mm
@@ -88,15 +88,17 @@
CGRect frameRect = [[UIScreen mainScreen] applicationFrame];
CGRect screenRect = [[UIScreen mainScreen] bounds];
- rpParams.m_visualScale = [[UIScreen mainScreen] scale];
+ double vs = [[UIScreen mainScreen] scale];
- rpParams.m_screenWidth = screenRect.size.width * rpParams.m_visualScale;
- rpParams.m_screenHeight = screenRect.size.height * rpParams.m_visualScale;
+ rpParams.m_screenWidth = screenRect.size.width * vs;
+ rpParams.m_screenHeight = screenRect.size.height * vs;
- if (rpParams.m_visualScale > 1.0)
- rpParams.m_skinName = "basic_xhdpi.skn";
+ rpParams.m_skinName = "basic.skn";
+
+ if (vs > 1.0)
+ rpParams.m_density = graphics::EDensityXHDPI;
else
- rpParams.m_skinName = "basic_mdpi.skn";
+ rpParams.m_density = graphics::EDensityMDPI;
rpParams.m_videoTimer = videoTimer;
rpParams.m_useDefaultFB = false;
@@ -114,8 +116,8 @@
frameBuffer = renderPolicy->GetDrawer()->screen()->frameBuffer();
- GetFramework().OnSize(frameRect.size.width * rpParams.m_visualScale,
- frameRect.size.height * rpParams.m_visualScale);
+ GetFramework().OnSize(frameRect.size.width * vs,
+ frameRect.size.height * vs);
GetFramework().SetRenderPolicy(renderPolicy);
}
diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj
index 76a8896351..9bd774118c 100644
--- a/iphone/Maps/Maps.xcodeproj/project.pbxproj
+++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj
@@ -23,6 +23,10 @@
49DE1CA413437D7A00A93417 /* libbzip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 49DE1CA213437D7A00A93417 /* libbzip2.a */; };
573D1AF4165252760093A55D /* location-follow.png in Resources */ = {isa = PBXBuildFile; fileRef = 573D1AF2165252760093A55D /* location-follow.png */; };
573D1AF5165252760093A55D /* location-follow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 573D1AF3165252760093A55D /* location-follow@2x.png */; };
+ 5797B6D516C931EE00FFE6D2 /* resources-mdpi in Resources */ = {isa = PBXBuildFile; fileRef = 5797B6D316C931EE00FFE6D2 /* resources-mdpi */; };
+ 5797B6D616C931EE00FFE6D2 /* resources-mdpi in Resources */ = {isa = PBXBuildFile; fileRef = 5797B6D316C931EE00FFE6D2 /* resources-mdpi */; };
+ 5797B6D716C931EE00FFE6D2 /* resources-xhdpi in Resources */ = {isa = PBXBuildFile; fileRef = 5797B6D416C931EE00FFE6D2 /* resources-xhdpi */; };
+ 5797B6D816C931EE00FFE6D2 /* resources-xhdpi in Resources */ = {isa = PBXBuildFile; fileRef = 5797B6D416C931EE00FFE6D2 /* resources-xhdpi */; };
ED8676FE16A0793800D9A02A /* 22x29-pro.png in Resources */ = {isa = PBXBuildFile; fileRef = ED8676FA16A0793800D9A02A /* 22x29-pro.png */; };
ED8676FF16A0793800D9A02A /* 44x58-pro.png in Resources */ = {isa = PBXBuildFile; fileRef = ED8676FB16A0793800D9A02A /* 44x58-pro.png */; };
ED86770016A0793800D9A02A /* 64-pro.png in Resources */ = {isa = PBXBuildFile; fileRef = ED8676FC16A0793800D9A02A /* 64-pro.png */; };
@@ -31,7 +35,6 @@
EDBB18B816972B0600AF0742 /* libzlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EDBB18B716972B0600AF0742 /* libzlib.a */; };
EDBB18B916972B3000AF0742 /* libzlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EDBB18B716972B0600AF0742 /* libzlib.a */; };
EE026F0611D6AC0D00645242 /* classificator.txt in Resources */ = {isa = PBXBuildFile; fileRef = EE026F0511D6AC0D00645242 /* classificator.txt */; };
- EE026F0D11D6AC2800645242 /* basic_mdpi.skn in Resources */ = {isa = PBXBuildFile; fileRef = EE026F0811D6AC2800645242 /* basic_mdpi.skn */; };
EE12020911CD464100ABDD5D /* libbase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EE1201FF11CD464100ABDD5D /* libbase.a */; };
EE12020A11CD464100ABDD5D /* libcoding.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EE12020011CD464100ABDD5D /* libcoding.a */; };
EE12020C11CD464100ABDD5D /* libexpat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EE12020211CD464100ABDD5D /* libexpat.a */; };
@@ -54,9 +57,6 @@
EEAF65E6134BCBD500A81C82 /* location-search@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = EEAF65E4134BCBD500A81C82 /* location-search@2x.png */; };
EEB7E22211E9079400080A68 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EEB7E22111E9079400080A68 /* CoreLocation.framework */; };
EED10A4511F78D120095FAD4 /* MapViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = EED10A4411F78D120095FAD4 /* MapViewController.mm */; };
- EEE4C93E1298A2F3007231A9 /* symbols_mdpi.png in Resources */ = {isa = PBXBuildFile; fileRef = EEE4C93D1298A2F3007231A9 /* symbols_mdpi.png */; };
- EEE4C9401298A303007231A9 /* symbols_xhdpi.png in Resources */ = {isa = PBXBuildFile; fileRef = EEE4C93F1298A303007231A9 /* symbols_xhdpi.png */; };
- EEE4C9421298A31B007231A9 /* basic_xhdpi.skn in Resources */ = {isa = PBXBuildFile; fileRef = EEE4C9411298A31B007231A9 /* basic_xhdpi.skn */; };
EEF5745512DE1AD50082F472 /* libfribidi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EEF5745412DE1AD50082F472 /* libfribidi.a */; };
EEFC0BBF12B5656A002914FF /* libfreetype.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EE12020311CD464100ABDD5D /* libfreetype.a */; };
EEFE7C1412F8C9E1006AF8C3 /* fonts_blacklist.txt in Resources */ = {isa = PBXBuildFile; fileRef = EEFE7C1212F8C9E1006AF8C3 /* fonts_blacklist.txt */; };
@@ -757,16 +757,12 @@
FAF805311417E3510024E8C1 /* zw@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FAF804331417E3510024E8C1 /* zw@2x.png */; };
FAFB06AB151215EE0041901D /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD73870D9D96C1002E5188 /* MainWindow.xib */; };
FAFB06AC151215EE0041901D /* classificator.txt in Resources */ = {isa = PBXBuildFile; fileRef = EE026F0511D6AC0D00645242 /* classificator.txt */; };
- FAFB06AD151215EE0041901D /* basic_mdpi.skn in Resources */ = {isa = PBXBuildFile; fileRef = EE026F0811D6AC2800645242 /* basic_mdpi.skn */; };
FAFB06AE151215EE0041901D /* MainWindow-iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA065FEC128614C400FEA989 /* MainWindow-iPad.xib */; };
FAFB06AF151215EE0041901D /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FA065FFD1286167A00FEA989 /* Default@2x.png */; };
FAFB06B0151215EE0041901D /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = FA065FFE1286167A00FEA989 /* Default.png */; };
FAFB06B1151215EE0041901D /* Default-Portrait.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0660011286168700FEA989 /* Default-Portrait.png */; };
FAFB06B2151215EE0041901D /* Default-Landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = FA0660021286168700FEA989 /* Default-Landscape.png */; };
FAFB06B9151215EE0041901D /* visibility.txt in Resources */ = {isa = PBXBuildFile; fileRef = FA500587128907F0002961F0 /* visibility.txt */; };
- FAFB06BA151215EE0041901D /* symbols_mdpi.png in Resources */ = {isa = PBXBuildFile; fileRef = EEE4C93D1298A2F3007231A9 /* symbols_mdpi.png */; };
- FAFB06BB151215EE0041901D /* symbols_xhdpi.png in Resources */ = {isa = PBXBuildFile; fileRef = EEE4C93F1298A303007231A9 /* symbols_xhdpi.png */; };
- FAFB06BC151215EE0041901D /* basic_xhdpi.skn in Resources */ = {isa = PBXBuildFile; fileRef = EEE4C9411298A31B007231A9 /* basic_xhdpi.skn */; };
FAFB06BE151215EE0041901D /* unicode_blocks.txt in Resources */ = {isa = PBXBuildFile; fileRef = EE583CBA12F773F00042CBE3 /* unicode_blocks.txt */; };
FAFB06BF151215EE0041901D /* fonts_blacklist.txt in Resources */ = {isa = PBXBuildFile; fileRef = EEFE7C1212F8C9E1006AF8C3 /* fonts_blacklist.txt */; };
FAFB06C0151215EE0041901D /* fonts_whitelist.txt in Resources */ = {isa = PBXBuildFile; fileRef = EEFE7C1312F8C9E1006AF8C3 /* fonts_whitelist.txt */; };
@@ -1375,6 +1371,8 @@
49DE1CA213437D7A00A93417 /* libbzip2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libbzip2.a; sourceTree = SOURCE_ROOT; };
573D1AF2165252760093A55D /* location-follow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "location-follow.png"; sourceTree = "<group>"; };
573D1AF3165252760093A55D /* location-follow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "location-follow@2x.png"; sourceTree = "<group>"; };
+ 5797B6D316C931EE00FFE6D2 /* resources-mdpi */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "resources-mdpi"; path = "../../data/resources-mdpi"; sourceTree = "<group>"; };
+ 5797B6D416C931EE00FFE6D2 /* resources-xhdpi */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "resources-xhdpi"; path = "../../data/resources-xhdpi"; sourceTree = "<group>"; };
8D1107310486CEB800E47090 /* MapsWithMe-Pro.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "MapsWithMe-Pro.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
ED8676FA16A0793800D9A02A /* 22x29-pro.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "22x29-pro.png"; sourceTree = "<group>"; };
ED8676FB16A0793800D9A02A /* 44x58-pro.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "44x58-pro.png"; sourceTree = "<group>"; };
@@ -1383,7 +1381,6 @@
ED8B1A2016772AB4003CAD0A /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; };
EDBB18B716972B0600AF0742 /* libzlib.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libzlib.a; sourceTree = "<group>"; };
EE026F0511D6AC0D00645242 /* classificator.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = classificator.txt; path = ../../data/classificator.txt; sourceTree = SOURCE_ROOT; };
- EE026F0811D6AC2800645242 /* basic_mdpi.skn */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = basic_mdpi.skn; path = ../../data/basic_mdpi.skn; sourceTree = SOURCE_ROOT; };
EE1201FF11CD464100ABDD5D /* libbase.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libbase.a; sourceTree = SOURCE_ROOT; };
EE12020011CD464100ABDD5D /* libcoding.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libcoding.a; sourceTree = SOURCE_ROOT; };
EE12020211CD464100ABDD5D /* libexpat.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libexpat.a; sourceTree = SOURCE_ROOT; };
@@ -1408,9 +1405,6 @@
EEAF65E4134BCBD500A81C82 /* location-search@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "location-search@2x.png"; sourceTree = "<group>"; };
EEB7E22111E9079400080A68 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
EED10A4411F78D120095FAD4 /* MapViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = MapViewController.mm; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
- EEE4C93D1298A2F3007231A9 /* symbols_mdpi.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = symbols_mdpi.png; path = ../../data/symbols_mdpi.png; sourceTree = SOURCE_ROOT; };
- EEE4C93F1298A303007231A9 /* symbols_xhdpi.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = symbols_xhdpi.png; path = ../../data/symbols_xhdpi.png; sourceTree = SOURCE_ROOT; };
- EEE4C9411298A31B007231A9 /* basic_xhdpi.skn */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = basic_xhdpi.skn; path = ../../data/basic_xhdpi.skn; sourceTree = SOURCE_ROOT; };
EEF5745412DE1AD50082F472 /* libfribidi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libfribidi.a; sourceTree = SOURCE_ROOT; };
EEFE7C1212F8C9E1006AF8C3 /* fonts_blacklist.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = fonts_blacklist.txt; path = ../../data/fonts_blacklist.txt; sourceTree = "<group>"; };
EEFE7C1312F8C9E1006AF8C3 /* fonts_whitelist.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = fonts_whitelist.txt; path = ../../data/fonts_whitelist.txt; sourceTree = "<group>"; };
@@ -2306,6 +2300,8 @@
FA065FC61286143F00FEA989 /* External Resources */ = {
isa = PBXGroup;
children = (
+ 5797B6D316C931EE00FFE6D2 /* resources-mdpi */,
+ 5797B6D416C931EE00FFE6D2 /* resources-xhdpi */,
FAAEA7D0161BD26600CCD661 /* synonyms.txt */,
F7FDD822147F30CC005900FA /* drules_proto.bin */,
FAB5841914168E3200CEA40C /* Flags */,
@@ -2325,12 +2321,8 @@
EEFE7C1312F8C9E1006AF8C3 /* fonts_whitelist.txt */,
EE583CBA12F773F00042CBE3 /* unicode_blocks.txt */,
FA46DA2B12D4166E00968C36 /* countries.txt */,
- EEE4C9411298A31B007231A9 /* basic_xhdpi.skn */,
FA85F632145DDDC20090E1A0 /* packed_polygons.bin */,
- EEE4C93F1298A303007231A9 /* symbols_xhdpi.png */,
- EEE4C93D1298A2F3007231A9 /* symbols_mdpi.png */,
FA500587128907F0002961F0 /* visibility.txt */,
- EE026F0811D6AC2800645242 /* basic_mdpi.skn */,
EE026F0511D6AC0D00645242 /* classificator.txt */,
);
name = "External Resources";
@@ -3109,16 +3101,12 @@
files = (
28AD73880D9D96C1002E5188 /* MainWindow.xib in Resources */,
EE026F0611D6AC0D00645242 /* classificator.txt in Resources */,
- EE026F0D11D6AC2800645242 /* basic_mdpi.skn in Resources */,
FA065FED128614C400FEA989 /* MainWindow-iPad.xib in Resources */,
FA065FFF1286167A00FEA989 /* Default@2x.png in Resources */,
FA0660001286167A00FEA989 /* Default.png in Resources */,
FA0660031286168700FEA989 /* Default-Portrait.png in Resources */,
FA0660041286168700FEA989 /* Default-Landscape.png in Resources */,
FA500588128907F0002961F0 /* visibility.txt in Resources */,
- EEE4C93E1298A2F3007231A9 /* symbols_mdpi.png in Resources */,
- EEE4C9401298A303007231A9 /* symbols_xhdpi.png in Resources */,
- EEE4C9421298A31B007231A9 /* basic_xhdpi.skn in Resources */,
FA46DA2C12D4166E00968C36 /* countries.txt in Resources */,
EE583CBB12F773F00042CBE3 /* unicode_blocks.txt in Resources */,
EEFE7C1412F8C9E1006AF8C3 /* fonts_blacklist.txt in Resources */,
@@ -3743,6 +3731,8 @@
ED8676FF16A0793800D9A02A /* 44x58-pro.png in Resources */,
ED86770016A0793800D9A02A /* 64-pro.png in Resources */,
ED86770116A0793800D9A02A /* 320-pro.png in Resources */,
+ 5797B6D516C931EE00FFE6D2 /* resources-mdpi in Resources */,
+ 5797B6D716C931EE00FFE6D2 /* resources-xhdpi in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -3752,16 +3742,12 @@
files = (
FAFB06AB151215EE0041901D /* MainWindow.xib in Resources */,
FAFB06AC151215EE0041901D /* classificator.txt in Resources */,
- FAFB06AD151215EE0041901D /* basic_mdpi.skn in Resources */,
FAFB06AE151215EE0041901D /* MainWindow-iPad.xib in Resources */,
FAFB06AF151215EE0041901D /* Default@2x.png in Resources */,
FAFB06B0151215EE0041901D /* Default.png in Resources */,
FAFB06B1151215EE0041901D /* Default-Portrait.png in Resources */,
FAFB06B2151215EE0041901D /* Default-Landscape.png in Resources */,
FAFB06B9151215EE0041901D /* visibility.txt in Resources */,
- FAFB06BA151215EE0041901D /* symbols_mdpi.png in Resources */,
- FAFB06BB151215EE0041901D /* symbols_xhdpi.png in Resources */,
- FAFB06BC151215EE0041901D /* basic_xhdpi.skn in Resources */,
FAFB06BE151215EE0041901D /* unicode_blocks.txt in Resources */,
FAFB06BF151215EE0041901D /* fonts_blacklist.txt in Resources */,
FAFB06C0151215EE0041901D /* fonts_whitelist.txt in Resources */,
@@ -4350,6 +4336,8 @@
F785EAB816385321003A38A8 /* tail.png in Resources */,
F785EAB916385324003A38A8 /* tail@2x.png in Resources */,
F7264B8C16388E0B00A8E6C0 /* countries.txt in Resources */,
+ 5797B6D616C931EE00FFE6D2 /* resources-mdpi in Resources */,
+ 5797B6D816C931EE00FFE6D2 /* resources-xhdpi in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/map/coverage_generator.cpp b/map/coverage_generator.cpp
index ca836dd1bc..0b3262db5e 100644
--- a/map/coverage_generator.cpp
+++ b/map/coverage_generator.cpp
@@ -15,6 +15,7 @@ bool g_coverageGeneratorDestroyed = false;
CoverageGenerator::CoverageGenerator(
string const & skinName,
+ graphics::EDensity density,
TileRenderer * tileRenderer,
shared_ptr<WindowHandle> const & windowHandle,
shared_ptr<graphics::RenderContext> const & primaryRC,
@@ -30,6 +31,7 @@ CoverageGenerator::CoverageGenerator(
m_countryIndexFn(countryIndexFn),
m_glQueue(glQueue),
m_skinName(skinName),
+ m_density(density),
m_fenceManager(2),
m_currentFenceID(-1),
m_doForceUpdate(false),
@@ -62,6 +64,7 @@ ScreenCoverage * CoverageGenerator::CreateCoverage()
params.m_storageType = graphics::EMediumStorage;
params.m_textureType = graphics::EMediumTexture;
params.m_skinName = m_skinName;
+ params.m_density = m_density;
shared_ptr<graphics::Screen> screen(new graphics::Screen(params));
diff --git a/map/coverage_generator.hpp b/map/coverage_generator.hpp
index e16c2ade30..5ec97c1b23 100644
--- a/map/coverage_generator.hpp
+++ b/map/coverage_generator.hpp
@@ -62,6 +62,7 @@ private:
graphics::PacketsQueue * m_glQueue;
string m_skinName;
+ graphics::EDensity m_density;
FenceManager m_fenceManager;
int m_currentFenceID;
@@ -74,6 +75,7 @@ private:
public:
CoverageGenerator(string const & skinName,
+ graphics::EDensity density,
TileRenderer * tileRenderer,
shared_ptr<WindowHandle> const & windowHandle,
shared_ptr<graphics::RenderContext> const & primaryRC,
diff --git a/map/framework.cpp b/map/framework.cpp
index c3bd8ad663..a94e2dcc8e 100644
--- a/map/framework.cpp
+++ b/map/framework.cpp
@@ -1380,7 +1380,7 @@ void Framework::SetRenderPolicy(RenderPolicy * renderPolicy)
if (m_renderPolicy)
{
- gui::Controller::RenderParams rp(m_renderPolicy->VisualScale(),
+ gui::Controller::RenderParams rp(m_renderPolicy->Density(),
bind(&WindowHandle::invalidate,
renderPolicy->GetWindowHandle().get()),
m_renderPolicy->GetGlyphCache(),
diff --git a/map/render_policy.cpp b/map/render_policy.cpp
index 344b28eb68..b058047d29 100644
--- a/map/render_policy.cpp
+++ b/map/render_policy.cpp
@@ -33,7 +33,8 @@ RenderPolicy::RenderPolicy(Params const & p,
m_primaryRC(p.m_primaryRC),
m_doSupportRotation(doSupportRotation),
m_doForceUpdate(false),
- m_visualScale(p.m_visualScale),
+ m_density(p.m_density),
+ m_visualScale(graphics::visualScale(p.m_density)),
m_skinName(p.m_skinName)
{
LOG(LDEBUG, ("each BaseRule will hold up to", idCacheSize, "cached values"));
@@ -55,6 +56,7 @@ void RenderPolicy::InitCacheScreen()
cp.m_isSynchronized = false;
cp.m_resourceManager = m_resourceManager;
cp.m_renderContext = m_primaryRC;
+ cp.m_density = Density();
m_cacheScreen = make_shared_ptr(new graphics::Screen(cp));
}
@@ -202,6 +204,11 @@ double RenderPolicy::VisualScale() const
return m_visualScale;
}
+graphics::EDensity RenderPolicy::Density() const
+{
+ return m_density;
+}
+
string const & RenderPolicy::SkinName() const
{
return m_skinName;
diff --git a/map/render_policy.hpp b/map/render_policy.hpp
index 1462f11c60..7568b8e0e3 100644
--- a/map/render_policy.hpp
+++ b/map/render_policy.hpp
@@ -66,6 +66,7 @@ protected:
bool m_doSupportRotation;
bool m_doForceUpdate;
m2::AnyRectD m_invalidRect;
+ graphics::EDensity m_density;
double m_visualScale;
string m_skinName;
anim::Controller * m_controller;
@@ -81,7 +82,7 @@ public:
bool m_useDefaultFB;
graphics::ResourceManager::Params m_rmParams;
shared_ptr<graphics::RenderContext> m_primaryRC;
- double m_visualScale;
+ graphics::EDensity m_density;
string m_skinName;
size_t m_screenWidth;
size_t m_screenHeight;
@@ -145,6 +146,7 @@ public:
virtual size_t ScaleEtalonSize() const = 0;
double VisualScale() const;
+ graphics::EDensity Density() const;
string const & SkinName() const;
/// This function is used when we need to prevent race
diff --git a/map/simple_render_policy.cpp b/map/simple_render_policy.cpp
index 23bffa295c..6a3918dc5e 100644
--- a/map/simple_render_policy.cpp
+++ b/map/simple_render_policy.cpp
@@ -99,6 +99,7 @@ SimpleRenderPolicy::SimpleRenderPolicy(Params const & p)
dp.m_visualScale = VisualScale();
dp.m_isSynchronized = true;
dp.m_fastSolidPath = false;
+ dp.m_density = Density();
m_drawer.reset(new Drawer(dp));
diff --git a/map/tile_renderer.cpp b/map/tile_renderer.cpp
index 3d617f390e..2bf42634b9 100644
--- a/map/tile_renderer.cpp
+++ b/map/tile_renderer.cpp
@@ -21,6 +21,7 @@
TileRenderer::TileRenderer(
size_t tileSize,
string const & skinName,
+ graphics::EDensity density,
unsigned executorsCount,
graphics::Color const & bgColor,
RenderPolicy::TRenderFn const & renderFn,
@@ -32,6 +33,7 @@ TileRenderer::TileRenderer(
m_tileSize(tileSize),
m_renderFn(renderFn),
m_skinName(skinName),
+ m_density(density),
m_bgColor(bgColor),
m_sequenceID(0),
m_isExiting(false),
@@ -64,6 +66,7 @@ TileRenderer::TileRenderer(
params.m_doUnbindRT = false;
params.m_isSynchronized = false;
params.m_skinName = m_skinName;
+ params.m_density = m_density;
params.m_renderContext = m_threadData[i].m_renderContext;
/* params.m_isDebugging = true;
params.m_drawPathes = false ;
diff --git a/map/tile_renderer.hpp b/map/tile_renderer.hpp
index 1c4132430e..d4e4be3959 100644
--- a/map/tile_renderer.hpp
+++ b/map/tile_renderer.hpp
@@ -61,6 +61,7 @@ protected:
RenderPolicy::TRenderFn m_renderFn;
string m_skinName;
+ graphics::EDensity m_density;
graphics::Color m_bgColor;
int m_sequenceID;
bool m_isExiting;
@@ -86,6 +87,7 @@ public:
/// constructor.
TileRenderer(size_t tileSize,
string const & skinName,
+ graphics::EDensity density,
unsigned tasksCount,
graphics::Color const & bgColor,
RenderPolicy::TRenderFn const & renderFn,
diff --git a/map/tiling_render_policy_mt.cpp b/map/tiling_render_policy_mt.cpp
index ed6c678027..c3d3c93c54 100644
--- a/map/tiling_render_policy_mt.cpp
+++ b/map/tiling_render_policy_mt.cpp
@@ -133,6 +133,7 @@ TilingRenderPolicyMT::TilingRenderPolicyMT(Params const & p)
dp.m_isSynchronized = false;
dp.m_fastSolidPath = true;
dp.m_renderContext = p.m_primaryRC;
+ dp.m_density = Density();
m_drawer.reset(new Drawer(dp));
@@ -167,6 +168,7 @@ void TilingRenderPolicyMT::SetRenderFn(TRenderFn renderFn)
m_TileRenderer.reset(new TileRenderer(TileSize(),
skinName,
+ Density(),
GetPlatform().CpuCores(),
m_bgColor,
renderFn,
@@ -176,6 +178,7 @@ void TilingRenderPolicyMT::SetRenderFn(TRenderFn renderFn)
0));
m_CoverageGenerator.reset(new CoverageGenerator(skinName,
+ Density(),
m_TileRenderer.get(),
m_windowHandle,
m_primaryRC,
diff --git a/map/tiling_render_policy_st.cpp b/map/tiling_render_policy_st.cpp
index 56a6720217..94798d0459 100644
--- a/map/tiling_render_policy_st.cpp
+++ b/map/tiling_render_policy_st.cpp
@@ -134,6 +134,7 @@ TilingRenderPolicyST::TilingRenderPolicyST(Params const & p)
dp.m_isSynchronized = false;
dp.m_fastSolidPath = true;
dp.m_renderContext = p.m_primaryRC;
+ dp.m_density = Density();
// p.m_isDebugging = true;
@@ -201,6 +202,7 @@ void TilingRenderPolicyST::SetRenderFn(TRenderFn renderFn)
m_TileRenderer.reset(new TileRenderer(TileSize(),
skinName,
+ Density(),
cpuCores,
m_bgColor,
renderFn,
@@ -215,6 +217,7 @@ void TilingRenderPolicyST::SetRenderFn(TRenderFn renderFn)
/// as there are no render-to-texture calls.
// m_QueuedRenderer->SetPartialExecution(cpuCores, true);
m_CoverageGenerator.reset(new CoverageGenerator(skinName,
+ Density(),
m_TileRenderer.get(),
m_windowHandle,
m_primaryRC,
diff --git a/qt/draw_widget.cpp b/qt/draw_widget.cpp
index a06a8c3f27..6228a6e957 100644
--- a/qt/draw_widget.cpp
+++ b/qt/draw_widget.cpp
@@ -232,8 +232,8 @@ namespace qt
rpParams.m_useDefaultFB = true;
rpParams.m_rmParams = rmParams;
rpParams.m_primaryRC = primaryRC;
- rpParams.m_visualScale = 1.0;
- rpParams.m_skinName = "basic_mdpi.skn";
+ rpParams.m_density = graphics::EDensityMDPI;
+ rpParams.m_skinName = "basic.skn";
try
{
diff --git a/qt/qt.pro b/qt/qt.pro
index 49196d145e..f29186afd5 100644
--- a/qt/qt.pro
+++ b/qt/qt.pro
@@ -50,7 +50,7 @@ macx* {
CLASSIFICATOR_RES.files += ../data/drules_proto.txt
}
SKIN_RES.path = Contents/Resources
- SKIN_RES.files = ../data/basic_mdpi.skn ../data/symbols_mdpi.png
+ SKIN_RES.files = ../data/resources-mdpi/basic.skn ../data/resources-mdpi/symbols.png
FONT_RES.path = Contents/Resources
FONT_RES.files = ../data/01_dejavusans.ttf \
../data/02_wqy-microhei.ttf \
@@ -58,7 +58,7 @@ macx* {
../data/04_padauk.ttf \
../data/05_khmeros.ttf \
../data/06_code2000.ttf \
- ../data/fonts_blacklist.txt \
+ ../data/fonts_blacklist.txt \
../data/fonts_whitelist.txt \
../data/unicode_blocks.txt
MWM_RES.path = Contents/Resources
diff --git a/qt_tstfrm/gui_test_widget.hpp b/qt_tstfrm/gui_test_widget.hpp
index 4fb18ef30c..baad545787 100644
--- a/qt_tstfrm/gui_test_widget.hpp
+++ b/qt_tstfrm/gui_test_widget.hpp
@@ -53,17 +53,18 @@ public:
cp.m_threadSlot = 0;
cp.m_storageType = graphics::ETinyStorage;
cp.m_textureType = graphics::ESmallTexture;
- cp.m_skinName = "basic_mdpi.skn";
+ cp.m_skinName = "basic.skn";
cp.m_isSynchronized = false;
cp.m_resourceManager = base_t::m_resourceManager;
cp.m_renderContext = base_t::m_primaryContext;
+ cp.m_density = graphics::EDensityMDPI;
m_cacheScreen = make_shared_ptr(new graphics::Screen(cp));
rp.m_CacheScreen = m_cacheScreen.get();
rp.m_GlyphCache = base_t::m_resourceManager->glyphCache(0);
rp.m_InvalidateFn = bind(&GUITestWidget<TTest>::invalidate, this);
- rp.m_VisualScale = 1.0;
+ rp.m_Density = graphics::EDensityMDPI;
InitImpl(m_controller, bool_tag<has_init_with_controller<TTest, TTest>::value >());
diff --git a/qt_tstfrm/tstwidgets.cpp b/qt_tstfrm/tstwidgets.cpp
index 1cc5f051d3..1d8f85f78e 100644
--- a/qt_tstfrm/tstwidgets.cpp
+++ b/qt_tstfrm/tstwidgets.cpp
@@ -132,7 +132,8 @@ namespace tst
params.m_resourceManager = m_resourceManager;
params.m_threadSlot = m_resourceManager->guiThreadSlot();
params.m_renderContext = m_primaryContext;
- params.m_skinName = "basic_mdpi.skn";
+ params.m_skinName = "basic.skn";
+ params.m_density = graphics::EDensityMDPI;
m_primaryScreen = make_shared_ptr(new graphics::Screen(params));
}
diff --git a/skin_generator/main.cpp b/skin_generator/main.cpp
index 59c310e752..0ea19f0662 100644
--- a/skin_generator/main.cpp
+++ b/skin_generator/main.cpp
@@ -44,7 +44,7 @@ int main(int argc, char *argv[])
gen.renderPages();
- gen.writeToFile(FLAGS_skinName + "_" + FLAGS_skinSuffix);
+ gen.writeToFile(FLAGS_skinName + FLAGS_skinSuffix);
return 0;
}
diff --git a/skin_generator/skin_generator.cpp b/skin_generator/skin_generator.cpp
index ae44d769c4..8e096aad29 100644
--- a/skin_generator/skin_generator.cpp
+++ b/skin_generator/skin_generator.cpp
@@ -293,7 +293,7 @@ namespace tools
page.m_dir = skinName.substr(0, skinName.find_last_of("/") + 1);
page.m_suffix = suffixes[i];
- page.m_fileName = page.m_dir + "symbols_" + page.m_suffix;
+ page.m_fileName = page.m_dir + "symbols" + page.m_suffix;
for (int i = 0; i < fileNames.size(); ++i)
{
@@ -424,7 +424,7 @@ namespace tools
m_svgRenderer.load(it->m_fullFileName);
m_svgRenderer.render(&painter, QRect(0, 0, w, h));
- string dir(page.m_dir + "drawable-" + page.m_suffix + "/");
+ string dir(page.m_dir + "icons/");
QDir().mkpath(QString(dir.c_str()));
string s(dir + it->m_symbolID.toLocal8Bit().constData() + ".png");
img.save(s.c_str());
diff --git a/tools/android/update_assets_for_version.sh b/tools/android/update_assets_for_version.sh
index 225ededf50..2b10a4c90f 100755
--- a/tools/android/update_assets_for_version.sh
+++ b/tools/android/update_assets_for_version.sh
@@ -8,9 +8,8 @@ DST=$1
rm -rf $DST
mkdir $DST
-files=(about.html basic_ldpi.skn basic_mdpi.skn basic_hdpi.skn basic_xhdpi.skn categories.txt classificator.txt
- types.txt fonts_blacklist.txt fonts_whitelist.txt languages.txt \
- symbols_ldpi.png symbols_mdpi.png symbols_hdpi.png symbols_xhdpi.png unicode_blocks.txt \
+files=(about.html resources-ldpi resources-mdpi resources-hdpi resources-xhdpi categories.txt classificator.txt
+ types.txt fonts_blacklist.txt fonts_whitelist.txt languages.txt unicode_blocks.txt \
visibility.txt drules_proto.txt drules_proto.bin external_resources.txt packed_polygons.bin)
for item in ${files[*]}
diff --git a/tools/unix/generate_symbols.sh b/tools/unix/generate_symbols.sh
index 1fc1a3e540..67b42517b5 100755
--- a/tools/unix/generate_symbols.sh
+++ b/tools/unix/generate_symbols.sh
@@ -6,18 +6,18 @@ DATA_PATH="$MY_PATH/../../data"
"$BINARY_PATH" --symbolWidth 16 --symbolHeight 16 \
--symbolsDir "$DATA_PATH/styles/symbols" \
- --skinName "$DATA_PATH/basic" --skinSuffix="ldpi"
+ --skinName "$DATA_PATH/resources-ldpi/basic" --skinSuffix=""
"$BINARY_PATH" --symbolWidth 24 --symbolHeight 24 \
--symbolsDir "$DATA_PATH/styles/symbols" \
- --skinName "$DATA_PATH/basic" --skinSuffix="mdpi"
+ --skinName "$DATA_PATH/resources-mdpi/basic" --skinSuffix=""
"$BINARY_PATH" --symbolWidth 36 --symbolHeight 36 \
--symbolsDir "$DATA_PATH/styles/symbols" \
- --skinName "$DATA_PATH/basic" --skinSuffix="hdpi"
+ --skinName "$DATA_PATH/resources-hdpi/basic" --skinSuffix=""
"$BINARY_PATH" --symbolWidth 48 --symbolHeight 48 \
--symbolsDir "$DATA_PATH/styles/symbols" \
- --skinName "$DATA_PATH/basic" --skinSuffix="xhdpi"
+ --skinName "$DATA_PATH/resources-xhdpi/basic" --skinSuffix=""