mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-30 09:34:06 +00:00
[core] Switch to ankerl::unordered_dense
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
This commit is contained in:
@@ -196,7 +196,15 @@ m2::PointF GetOffset(int offsetX, int offsetY)
|
||||
|
||||
bool IsSymbolRoadShield(ftypes::RoadShield const & shield)
|
||||
{
|
||||
return shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Green || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Blue || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Red || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Turkey || shield.m_type == ftypes::RoadShieldType::US_Interstate || shield.m_type == ftypes::RoadShieldType::US_Highway || shield.m_type == ftypes::RoadShieldType::Italy_Autostrada || shield.m_type == ftypes::RoadShieldType::Hungary_Green || shield.m_type == ftypes::RoadShieldType::Hungary_Blue;
|
||||
return shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Green ||
|
||||
shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Blue ||
|
||||
shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Red ||
|
||||
shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Turkey ||
|
||||
shield.m_type == ftypes::RoadShieldType::US_Interstate ||
|
||||
shield.m_type == ftypes::RoadShieldType::US_Highway ||
|
||||
shield.m_type == ftypes::RoadShieldType::Italy_Autostrada ||
|
||||
shield.m_type == ftypes::RoadShieldType::Hungary_Green ||
|
||||
shield.m_type == ftypes::RoadShieldType::Hungary_Blue;
|
||||
}
|
||||
|
||||
std::string GetRoadShieldSymbolName(ftypes::RoadShield const & shield, double fontScale)
|
||||
@@ -232,8 +240,7 @@ std::string GetRoadShieldSymbolName(ftypes::RoadShield const & shield, double fo
|
||||
|
||||
bool IsColoredRoadShield(ftypes::RoadShield const & shield)
|
||||
{
|
||||
return shield.m_type == ftypes::RoadShieldType::Default ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_White ||
|
||||
return shield.m_type == ftypes::RoadShieldType::Default || shield.m_type == ftypes::RoadShieldType::Generic_White ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Green ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Blue ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Red ||
|
||||
@@ -337,11 +344,15 @@ dp::Color GetRoadShieldTextColor(dp::Color const & baseColor, ftypes::RoadShield
|
||||
|
||||
float GetRoadShieldOutlineWidth(float baseWidth, ftypes::RoadShield const & shield)
|
||||
{
|
||||
if (shield.m_type == ftypes::RoadShieldType::Generic_White || shield.m_type == ftypes::RoadShieldType::Generic_Green ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Blue || shield.m_type == ftypes::RoadShieldType::Generic_Red ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Orange || shield.m_type == ftypes::RoadShieldType::Generic_Pill_White || shield.m_type == ftypes::RoadShieldType::Generic_Pill_Green ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Pill_Blue || shield.m_type == ftypes::RoadShieldType::Generic_Pill_Red ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Pill_Orange || shield.m_type == ftypes::RoadShieldType::UK_Highway)
|
||||
if (shield.m_type == ftypes::RoadShieldType::Generic_White ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Green || shield.m_type == ftypes::RoadShieldType::Generic_Blue ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Red || shield.m_type == ftypes::RoadShieldType::Generic_Orange ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Pill_White ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Pill_Green ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Pill_Blue ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Pill_Red ||
|
||||
shield.m_type == ftypes::RoadShieldType::Generic_Pill_Orange ||
|
||||
shield.m_type == ftypes::RoadShieldType::UK_Highway)
|
||||
return 0.0f;
|
||||
|
||||
return baseWidth;
|
||||
|
||||
@@ -9,9 +9,10 @@
|
||||
|
||||
#include <mutex>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
#include "3party/ankerl/unordered_dense.h"
|
||||
|
||||
namespace df
|
||||
{
|
||||
struct DrapeApiLineData
|
||||
@@ -52,7 +53,7 @@ struct DrapeApiLineData
|
||||
class DrapeApi
|
||||
{
|
||||
public:
|
||||
using TLines = std::unordered_map<std::string, DrapeApiLineData>;
|
||||
using TLines = ankerl::unordered_dense::map<std::string, DrapeApiLineData>;
|
||||
|
||||
DrapeApi() = default;
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
#include "platform/settings.hpp"
|
||||
|
||||
#include <unordered_map>
|
||||
#include "3party/ankerl/unordered_dense.h"
|
||||
|
||||
namespace df
|
||||
{
|
||||
@@ -240,7 +240,7 @@ void DrapeEngine::UpdateUserMarks(UserMarksProvider * provider, bool firstTime)
|
||||
auto justCreatedIdCollection = make_unique_dp<IDCollections>();
|
||||
auto removedIdCollection = make_unique_dp<IDCollections>();
|
||||
|
||||
std::unordered_map<kml::MarkGroupId, drape_ptr<IDCollections>> groupsVisibleIds;
|
||||
ankerl::unordered_dense::map<kml::MarkGroupId, drape_ptr<IDCollections>> groupsVisibleIds;
|
||||
|
||||
auto const groupFilter = [&](kml::MarkGroupId groupId)
|
||||
{ return provider->IsGroupVisible(groupId) && (provider->GetBecameVisibleGroupIds().count(groupId) == 0); };
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
#include <memory>
|
||||
#include <mutex>
|
||||
#include <numeric>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
#include "3party/ankerl/unordered_dense.h"
|
||||
|
||||
namespace df
|
||||
{
|
||||
class DrapeMeasurer
|
||||
@@ -183,7 +184,7 @@ private:
|
||||
uint32_t m_minFPS = std::numeric_limits<uint32_t>::max();
|
||||
double m_totalFPS = 0.0;
|
||||
uint32_t m_totalFPSCount = 0;
|
||||
std::unordered_map<uint32_t, uint32_t> m_fpsDistribution;
|
||||
ankerl::unordered_dense::map<uint32_t, uint32_t> m_fpsDistribution;
|
||||
|
||||
std::chrono::time_point<std::chrono::steady_clock> m_startImmediateRenderingTime;
|
||||
uint32_t m_immediateRenderingMinFps = std::numeric_limits<uint32_t>::max();
|
||||
|
||||
@@ -1821,8 +1821,8 @@ void FrontendRenderer::BuildOverlayTree(ScreenBase const & modelView)
|
||||
|
||||
BeginUpdateOverlayTree(modelView);
|
||||
|
||||
for (auto const layerId :
|
||||
{DepthLayer::OverlayUnderBuildingLayer, DepthLayer::OverlayLayer, DepthLayer::RoutingBottomMarkLayer, DepthLayer::RoutingMarkLayer})
|
||||
for (auto const layerId : {DepthLayer::OverlayUnderBuildingLayer, DepthLayer::OverlayLayer,
|
||||
DepthLayer::RoutingBottomMarkLayer, DepthLayer::RoutingMarkLayer})
|
||||
{
|
||||
RenderLayer & overlay = m_layers[static_cast<size_t>(layerId)];
|
||||
overlay.Sort(make_ref(m_overlayTree));
|
||||
@@ -2512,7 +2512,9 @@ void FrontendRenderer::UpdateScene(ScreenBase const & modelView)
|
||||
uint32_t constexpr kMaxGenerationRange = 5;
|
||||
TileKey const & key = group->GetTileKey();
|
||||
|
||||
return ((GetDepthLayer(group->GetState()) == DepthLayer::OverlayLayer || GetDepthLayer(group->GetState()) == DepthLayer::OverlayUnderBuildingLayer) && key.m_zoomLevel > GetCurrentZoom()) ||
|
||||
return ((GetDepthLayer(group->GetState()) == DepthLayer::OverlayLayer ||
|
||||
GetDepthLayer(group->GetState()) == DepthLayer::OverlayUnderBuildingLayer) &&
|
||||
key.m_zoomLevel > GetCurrentZoom()) ||
|
||||
(m_maxGeneration - key.m_generation > kMaxGenerationRange) ||
|
||||
(group->IsUserMark() && (m_maxUserMarksGeneration - key.m_userMarksGeneration > kMaxGenerationRange));
|
||||
};
|
||||
|
||||
@@ -11,11 +11,12 @@
|
||||
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <unordered_set>
|
||||
|
||||
#include "3party/ankerl/unordered_dense.h"
|
||||
|
||||
namespace gui
|
||||
{
|
||||
using TAlphabet = std::unordered_set<strings::UniChar>;
|
||||
using TAlphabet = ankerl::unordered_dense::set<strings::UniChar>;
|
||||
|
||||
class StaticLabel
|
||||
{
|
||||
|
||||
@@ -16,12 +16,14 @@
|
||||
#include <set>
|
||||
#include <vector>
|
||||
|
||||
#include "3party/ankerl/unordered_dense.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
struct MetalineData
|
||||
{
|
||||
std::vector<FeatureID> m_features;
|
||||
std::set<FeatureID> m_reversed;
|
||||
ankerl::unordered_dense::set<FeatureID> m_reversed;
|
||||
};
|
||||
|
||||
std::vector<MetalineData> ReadMetalinesFromFile(MwmSet::MwmId const & mwmId)
|
||||
@@ -58,12 +60,12 @@ std::vector<MetalineData> ReadMetalinesFromFile(MwmSet::MwmId const & mwmId)
|
||||
}
|
||||
}
|
||||
|
||||
std::map<FeatureID, std::vector<m2::PointD>> ReadPoints(df::MapDataProvider & model, MetalineData const & metaline)
|
||||
ankerl::unordered_dense::map<FeatureID, std::vector<m2::PointD>> ReadPoints(df::MapDataProvider & model,
|
||||
MetalineData const & metaline)
|
||||
{
|
||||
auto features = metaline.m_features;
|
||||
std::sort(features.begin(), features.end());
|
||||
|
||||
std::map<FeatureID, std::vector<m2::PointD>> result;
|
||||
ankerl::unordered_dense::map<FeatureID, std::vector<m2::PointD>> result;
|
||||
model.ReadFeatures([&metaline, &result](FeatureType & ft)
|
||||
{
|
||||
ft.ParseGeometry(FeatureType::BEST_GEOMETRY);
|
||||
@@ -89,7 +91,7 @@ std::map<FeatureID, std::vector<m2::PointD>> ReadPoints(df::MapDataProvider & mo
|
||||
return result;
|
||||
}
|
||||
|
||||
std::vector<m2::PointD> MergePoints(std::map<FeatureID, std::vector<m2::PointD>> && points,
|
||||
std::vector<m2::PointD> MergePoints(ankerl::unordered_dense::map<FeatureID, std::vector<m2::PointD>> && points,
|
||||
std::vector<FeatureID> const & featuresOrder)
|
||||
{
|
||||
if (points.size() == 1)
|
||||
@@ -164,8 +166,10 @@ bool ReadMetalineTask::UpdateCache(MetalineCache & cache)
|
||||
if (m_metalines.empty())
|
||||
return false;
|
||||
|
||||
cache.merge(m_metalines);
|
||||
m_metalines.clear();
|
||||
// Merge maps
|
||||
auto data = std::move(m_metalines).extract();
|
||||
cache.insert(std::make_move_iterator(data.begin()), std::make_move_iterator(data.end()));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,13 +5,14 @@
|
||||
#include "geometry/spline.hpp"
|
||||
|
||||
#include <atomic>
|
||||
#include <map>
|
||||
|
||||
#include "3party/ankerl/unordered_dense.h"
|
||||
|
||||
namespace df
|
||||
{
|
||||
class MapDataProvider;
|
||||
|
||||
using MetalineCache = std::map<FeatureID, m2::SharedSpline>;
|
||||
using MetalineCache = ankerl::unordered_dense::map<FeatureID, m2::SharedSpline>;
|
||||
|
||||
class ReadMetalineTask
|
||||
{
|
||||
|
||||
@@ -7,12 +7,17 @@ namespace
|
||||
using namespace df;
|
||||
|
||||
std::array<RenderStateExtension, static_cast<size_t>(DepthLayer::LayersCount)> kStateExtensions = {
|
||||
RenderStateExtension(DepthLayer::GeometryLayer), RenderStateExtension(DepthLayer::Geometry3dLayer),
|
||||
RenderStateExtension(DepthLayer::UserLineLayer), RenderStateExtension(DepthLayer::OverlayLayer),
|
||||
RenderStateExtension(DepthLayer::TransitSchemeLayer), RenderStateExtension(DepthLayer::UserMarkLayer),
|
||||
RenderStateExtension(DepthLayer::RoutingBottomMarkLayer), RenderStateExtension(DepthLayer::RoutingMarkLayer),
|
||||
RenderStateExtension(DepthLayer::SearchMarkLayer), RenderStateExtension(DepthLayer::GuiLayer),
|
||||
RenderStateExtension(DepthLayer::OverlayUnderBuildingLayer)};
|
||||
RenderStateExtension(DepthLayer::GeometryLayer),
|
||||
RenderStateExtension(DepthLayer::Geometry3dLayer),
|
||||
RenderStateExtension(DepthLayer::UserLineLayer),
|
||||
RenderStateExtension(DepthLayer::OverlayLayer),
|
||||
RenderStateExtension(DepthLayer::TransitSchemeLayer),
|
||||
RenderStateExtension(DepthLayer::UserMarkLayer),
|
||||
RenderStateExtension(DepthLayer::RoutingBottomMarkLayer),
|
||||
RenderStateExtension(DepthLayer::RoutingMarkLayer),
|
||||
RenderStateExtension(DepthLayer::SearchMarkLayer),
|
||||
RenderStateExtension(DepthLayer::GuiLayer),
|
||||
RenderStateExtension(DepthLayer::OverlayUnderBuildingLayer)};
|
||||
|
||||
struct RenderStateExtensionFactory
|
||||
{
|
||||
|
||||
@@ -10,9 +10,10 @@
|
||||
#include "geometry/polyline2d.hpp"
|
||||
|
||||
#include <functional>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
#include "3party/ankerl/unordered_dense.h"
|
||||
|
||||
namespace dp
|
||||
{
|
||||
class TextureManager;
|
||||
@@ -48,6 +49,6 @@ private:
|
||||
m2::PolylineD m_polyline;
|
||||
double m_baseDepthIndex = 0.0;
|
||||
};
|
||||
std::unordered_map<dp::DrapeID, RouteCacheData> m_routeCache;
|
||||
ankerl::unordered_dense::map<dp::DrapeID, RouteCacheData> m_routeCache;
|
||||
};
|
||||
} // namespace df
|
||||
|
||||
@@ -14,10 +14,10 @@
|
||||
#include <chrono>
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
#include <vector>
|
||||
|
||||
#include "3party/ankerl/unordered_dense.h"
|
||||
|
||||
namespace df
|
||||
{
|
||||
extern std::string const kRouteColor;
|
||||
@@ -119,13 +119,13 @@ private:
|
||||
double m_distanceFromBegin;
|
||||
bool m_followingEnabled;
|
||||
Subroutes m_subroutes;
|
||||
std::unordered_set<dp::DrapeID> m_hiddenSubroutes;
|
||||
ankerl::unordered_dense::set<dp::DrapeID> m_hiddenSubroutes;
|
||||
|
||||
PreviewPointsRequestCallback m_previewPointsRequest;
|
||||
std::vector<drape_ptr<CirclesPackRenderData>> m_previewRenderData;
|
||||
std::vector<std::pair<CirclesPackHandle *, size_t>> m_previewHandlesCache;
|
||||
bool m_waitForPreviewRenderData;
|
||||
std::unordered_map<dp::DrapeID, PreviewInfo> m_previewSegments;
|
||||
ankerl::unordered_dense::map<dp::DrapeID, PreviewInfo> m_previewSegments;
|
||||
m2::PointD m_previewPivot = m2::PointD::Zero();
|
||||
};
|
||||
} // namespace df
|
||||
|
||||
@@ -363,7 +363,9 @@ void RuleDrawer::ProcessLineStyle(FeatureType & f, Stylist const & s, TInsertSha
|
||||
df::RoadClass m_roadClass;
|
||||
};
|
||||
static Checker const checkers[] = {
|
||||
{{HighwayClass::Motorway, HighwayClass::Trunk, HighwayClass::Primary}, kRoadClass0ZoomLevel, df::RoadClass::Class0},
|
||||
{{HighwayClass::Motorway, HighwayClass::Trunk, HighwayClass::Primary},
|
||||
kRoadClass0ZoomLevel,
|
||||
df::RoadClass::Class0},
|
||||
{{HighwayClass::Secondary, HighwayClass::Tertiary}, kRoadClass1ZoomLevel, df::RoadClass::Class1},
|
||||
{{HighwayClass::LivingStreet, HighwayClass::Service, HighwayClass::ServiceMinor},
|
||||
kRoadClass2ZoomLevel,
|
||||
|
||||
@@ -17,7 +17,8 @@
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <unordered_set>
|
||||
|
||||
#include "3party/ankerl/unordered_dense.h"
|
||||
|
||||
class FeatureType;
|
||||
|
||||
@@ -69,7 +70,7 @@ private:
|
||||
ref_ptr<EngineContext> m_context;
|
||||
CustomFeaturesContextPtr m_customFeaturesContext;
|
||||
int8_t m_deviceLang;
|
||||
std::unordered_set<m2::Spline const *> m_usedMetalines;
|
||||
ankerl::unordered_dense::set<m2::Spline const *> m_usedMetalines;
|
||||
|
||||
m2::RectD m_globalRect;
|
||||
double m_currentScaleGtoP;
|
||||
|
||||
@@ -60,15 +60,17 @@ void CaptionDescription::Init(FeatureType & f, int8_t deviceLang, int zoomLevel,
|
||||
f.GetReadableName(true /* allowTranslit */, deviceLang, out);
|
||||
}
|
||||
m_mainText = out.GetPrimary();
|
||||
|
||||
if (ftypes::IsPublicTransportStopChecker::Instance()(feature::TypesHolder(f))) {
|
||||
|
||||
if (ftypes::IsPublicTransportStopChecker::Instance()(feature::TypesHolder(f)))
|
||||
{
|
||||
auto const lRef = f.GetMetadata(feature::Metadata::FMD_LOCAL_REF);
|
||||
if (!m_mainText.empty() && !lRef.empty()) {
|
||||
//m_mainText.append(" (").append(lRef).append(")");
|
||||
if (!m_mainText.empty() && !lRef.empty())
|
||||
{
|
||||
// m_mainText.append(" (").append(lRef).append(")");
|
||||
m_auxText = lRef;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ASSERT(m_auxText.empty() || !m_mainText.empty(), ("auxText without mainText"));
|
||||
|
||||
uint8_t constexpr kLongCaptionsMaxZoom = 4;
|
||||
|
||||
@@ -19,9 +19,10 @@
|
||||
#include <array>
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
#include "3party/ankerl/unordered_dense.h"
|
||||
|
||||
namespace dp
|
||||
{
|
||||
class GraphicsContext;
|
||||
@@ -150,7 +151,7 @@ struct TrafficCircleStaticVertex
|
||||
TTexCoord m_colorTexCoord;
|
||||
};
|
||||
|
||||
using TrafficTexCoords = std::unordered_map<size_t, glsl::vec2>;
|
||||
using TrafficTexCoords = ankerl::unordered_dense::map<size_t, glsl::vec2>;
|
||||
|
||||
class TrafficGenerator final
|
||||
{
|
||||
|
||||
@@ -654,7 +654,7 @@ void TransitSchemeBuilder::CollectShapesPT(TransitDisplayInfo const & transitDis
|
||||
CHECK_EQUAL(transitDisplayInfo.m_transitVersion, ::transit::TransitVersion::AllPublicTransport, ());
|
||||
|
||||
float curDepth = kBaseLineDepth;
|
||||
std::unordered_map<std::string, float> routeColorToDepth;
|
||||
ankerl::unordered_dense::map<std::string, float> routeColorToDepth;
|
||||
|
||||
for (auto const & [lineId, metaData] : transitDisplayInfo.m_linesMetadataPT)
|
||||
{
|
||||
|
||||
@@ -112,7 +112,7 @@ struct StopNodeParamsPT
|
||||
std::map<::transit::TransitId, StopInfo> m_stopsInfo;
|
||||
};
|
||||
|
||||
using IdToIdSet = std::unordered_map<::transit::TransitId, ::transit::IdSet>;
|
||||
using IdToIdSet = ankerl::unordered_dense::map<::transit::TransitId, ::transit::IdSet>;
|
||||
|
||||
struct RouteSegment
|
||||
{
|
||||
|
||||
@@ -53,7 +53,7 @@ private:
|
||||
MarksIDGroups const & indexesGroups, ref_ptr<dp::TextureManager> textures,
|
||||
dp::Batcher & batcher) const;
|
||||
|
||||
std::unordered_set<kml::MarkGroupId> m_groupsVisibility;
|
||||
ankerl::unordered_dense::set<kml::MarkGroupId> m_groupsVisibility;
|
||||
MarksIDGroups m_groups;
|
||||
|
||||
UserMarksRenderCollection m_marks;
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
|
||||
#include <limits>
|
||||
#include <memory>
|
||||
#include <unordered_map>
|
||||
|
||||
#include "3party/ankerl/unordered_dense.h"
|
||||
|
||||
namespace df
|
||||
{
|
||||
@@ -65,8 +66,8 @@ struct UserLineRenderParams
|
||||
std::vector<m2::SharedSpline> m_splines;
|
||||
};
|
||||
|
||||
using UserMarksRenderCollection = std::unordered_map<kml::MarkId, drape_ptr<UserMarkRenderParams>>;
|
||||
using UserLinesRenderCollection = std::unordered_map<kml::MarkId, drape_ptr<UserLineRenderParams>>;
|
||||
using UserMarksRenderCollection = ankerl::unordered_dense::map<kml::MarkId, drape_ptr<UserMarkRenderParams>>;
|
||||
using UserLinesRenderCollection = ankerl::unordered_dense::map<kml::MarkId, drape_ptr<UserLineRenderParams>>;
|
||||
|
||||
struct UserMarkRenderData
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user