MCPcopy Create free account
hub / github.com/comaps/comaps / CacheRouteArrows

Method CacheRouteArrows

libs/drape_frontend/route_shape.cpp:451–481  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

449}
450
451void RouteShape::CacheRouteArrows(ref_ptr<dp::GraphicsContext> context, ref_ptr<dp::TextureManager> mng,
452 m2::PolylineD const & polyline, std::vector<ArrowBorders> const & borders,
453 double baseDepthIndex, SubrouteArrowsData & routeArrowsData)
454{
455 GeometryBufferData<ArrowGeometryBuffer> geometryData;
456 dp::TextureManager::SymbolRegion region;
457 rs::GetArrowTextureRegion(mng, region);
458 auto state = CreateRenderState(gpu::Program::RouteArrow, DepthLayer::GeometryLayer);
459 state.SetColorTexture(region.GetTexture());
460 state.SetTextureIndex(region.GetTextureIndex());
461
462 // Generate arrow geometry.
463 auto depth = static_cast<float>(baseDepthIndex * rs::kDepthPerSubroute) + rs::kArrowsDepth;
464 float const depthStep = (rs::kArrowsDepth - rs::kRouteDepth) / (1 + borders.size());
465
466 std::vector<m2::PointD> points;
467 points.reserve(polyline.GetSize() / 4);
468 for (ArrowBorders const & b : borders)
469 {
470 depth -= depthStep;
471 rs::CalculatePoints(polyline, b.m_startDistance, b.m_endDistance, points);
472 PrepareArrowGeometry(points, routeArrowsData.m_pivot, region.GetTexRect(), depthStep, depth, geometryData);
473 }
474
475 geometryData.m_boundingBox.Scale(kBoundingBoxScale);
476
477 BatchGeometry(context, state, make_ref(geometryData.m_geometry.data()),
478 static_cast<uint32_t>(geometryData.m_geometry.size()), make_ref(geometryData.m_joinsGeometry.data()),
479 static_cast<uint32_t>(geometryData.m_joinsGeometry.size()), geometryData.m_boundingBox,
480 AV::GetBindingInfo(), routeArrowsData.m_renderProperty);
481}
482
483drape_ptr<df::SubrouteData> RouteShape::CacheRoute(ref_ptr<dp::GraphicsContext> context, dp::DrapeID subrouteId,
484 SubrouteConstPtr subroute, size_t styleIndex, int recacheId)

Callers 1

AcceptMessageMethod · 0.45

Calls 14

GetArrowTextureRegionFunction · 0.85
CreateRenderStateFunction · 0.85
CalculatePointsFunction · 0.85
make_refFunction · 0.85
GetBindingInfoFunction · 0.85
SetColorTextureMethod · 0.80
GetTextureMethod · 0.45
SetTextureIndexMethod · 0.45
GetTextureIndexMethod · 0.45
sizeMethod · 0.45
reserveMethod · 0.45
GetSizeMethod · 0.45

Tested by

no test coverage detected