Organic Maps sources as of 02.04.2025 (fad26bbf22ac3da75e01e62aa01e5c8e11861005)

To expand with full Organic Maps and Maps.ME commits history run:
  git remote add om-historic [om-historic.git repo url]
  git fetch --tags om-historic
  git replace squashed-history historic-commits
This commit is contained in:
Konstantin Pastbin
2025-04-13 16:37:30 +07:00
commit e3e4a1985a
12931 changed files with 13195100 additions and 0 deletions

View File

@@ -0,0 +1,150 @@
#include "map_style_reader.hpp"
#include "platform/platform.hpp"
#include "base/file_name_utils.hpp"
#include "base/logging.hpp"
namespace
{
std::string const kSuffixDark = "_dark";
std::string const kSuffixLight = "_light";
std::string const kSuffixDefaultDark = "_default_dark";
std::string const kSuffixDefaultLight = "_default_light";
std::string const kSuffixVehicleDark = "_vehicle_dark";
std::string const kSuffixVehicleLight = "_vehicle_light";
std::string const kSuffixOutdoorsLight = "_outdoors_light";
std::string const kSuffixOutdoorsDark = "_outdoors_dark";
std::string const kStylesOverrideDir = "styles";
#ifdef BUILD_DESIGNER
std::string const kSuffixDesignTool = "_design";
#endif // BUILD_DESIGNER
std::string GetStyleRulesSuffix(MapStyle mapStyle)
{
#ifdef BUILD_DESIGNER
return kSuffixDesignTool;
#else
switch (mapStyle)
{
case MapStyleDefaultDark:
return kSuffixDefaultDark;
case MapStyleDefaultLight:
return kSuffixDefaultLight;
case MapStyleVehicleDark:
return kSuffixVehicleDark;
case MapStyleVehicleLight:
return kSuffixVehicleLight;
case MapStyleOutdoorsLight:
return kSuffixOutdoorsLight;
case MapStyleOutdoorsDark:
return kSuffixOutdoorsDark;
case MapStyleMerged:
return std::string();
case MapStyleCount:
break;
}
LOG(LWARNING, ("Unknown map style", mapStyle));
return kSuffixDefaultLight;
#endif // BUILD_DESIGNER
}
std::string GetStyleResourcesSuffix(MapStyle mapStyle)
{
#ifdef BUILD_DESIGNER
return kSuffixDesignTool;
#else
// We use the same resources for all light/day and dark/night styles
// to avoid textures duplication and package size increasing.
switch (mapStyle)
{
case MapStyleDefaultDark:
case MapStyleVehicleDark:
case MapStyleOutdoorsDark:
return kSuffixDark;
case MapStyleDefaultLight:
case MapStyleVehicleLight:
case MapStyleOutdoorsLight:
return kSuffixLight;
case MapStyleMerged:
return std::string();
case MapStyleCount:
break;
}
LOG(LWARNING, ("Unknown map style", mapStyle));
return kSuffixLight;
#endif // BUILD_DESIGNER
}
} // namespace
StyleReader::StyleReader()
: m_mapStyle(kDefaultMapStyle)
{}
void StyleReader::SetCurrentStyle(MapStyle mapStyle)
{
m_mapStyle = mapStyle;
}
MapStyle StyleReader::GetCurrentStyle() const
{
return m_mapStyle;
}
bool StyleReader::IsCarNavigationStyle() const
{
return m_mapStyle == MapStyle::MapStyleVehicleLight ||
m_mapStyle == MapStyle::MapStyleVehicleDark;
}
ReaderPtr<Reader> StyleReader::GetDrawingRulesReader() const
{
std::string rulesFile =
std::string("drules_proto") + GetStyleRulesSuffix(GetCurrentStyle()) + ".bin";
auto overriddenRulesFile =
base::JoinPath(GetPlatform().WritableDir(), kStylesOverrideDir, rulesFile);
if (Platform::IsFileExistsByFullPath(overriddenRulesFile))
rulesFile = overriddenRulesFile;
#ifdef BUILD_DESIGNER
// For Designer tool we have to look first into the resource folder.
return GetPlatform().GetReader(rulesFile, "rwf");
#else
return GetPlatform().GetReader(rulesFile);
#endif
}
ReaderPtr<Reader> StyleReader::GetResourceReader(std::string const & file,
std::string_view density) const
{
std::string const resourceDir =
std::string("resources-").append(density) + GetStyleResourcesSuffix(GetCurrentStyle());
std::string resFile = base::JoinPath(resourceDir, file);
auto overriddenResFile = base::JoinPath(GetPlatform().WritableDir(), kStylesOverrideDir, resFile);
if (GetPlatform().IsFileExistsByFullPath(overriddenResFile))
resFile = overriddenResFile;
#ifdef BUILD_DESIGNER
// For Designer tool we have to look first into the resource folder.
return GetPlatform().GetReader(resFile, "rwf");
#else
return GetPlatform().GetReader(resFile);
#endif
}
ReaderPtr<Reader> StyleReader::GetDefaultResourceReader(std::string const & file) const
{
return GetPlatform().GetReader(base::JoinPath("resources-default", file));
}
StyleReader & GetStyleReader()
{
static StyleReader instance;
return instance;
}