static void WriteTrace(TextWriter &writer, const ContestTraceVector &trace) { JSON::ArrayWriter array(writer); const ContestTracePoint *previous = NULL; for (auto i = trace.begin(), end = trace.end(); i != end; ++i) { array.WriteElement(WritePoint, *i, previous); previous = &*i; } }
void TrailRenderer::Draw(Canvas &canvas, const WindowProjection &projection, const ContestTraceVector &trace) { points.GrowDiscard(trace.size()); unsigned n = 0; for (auto i = trace.begin(), end = trace.end(); i != end; ++i) points[n++] = projection.GeoToScreen(i->get_location()); canvas.DrawPolyline(points.begin(), n); }