@@ -170,7 +170,8 @@ enum struct MetricsDisplayStyle : int {
170170 Lines = 0 ,
171171 Histos = 1 ,
172172 Sparks = 2 ,
173- Table = 3
173+ Table = 3 ,
174+ Stems = 4
174175};
175176
176177void displayDeviceMetrics (const char * label, std::string const & selectedMetricName,
@@ -318,6 +319,21 @@ void displayDeviceMetrics(const char* label, std::string const& selectedMetricNa
318319 ImPlot::EndPlot ();
319320 }
320321 break ;
322+ case MetricsDisplayStyle::Stems:
323+ ImPlot::SetNextPlotLimitsX (minDomain, maxDomain, ImGuiCond_Once);
324+ ImPlot::SetNextPlotLimitsY (minValue, maxValue * 1.2 , ImGuiCond_Always);
325+ ImPlot::SetNextPlotTicksX (minDomain, maxDomain, 5 );
326+ if (ImPlot::BeginPlot (" ##Some plot" , " time" , " value" )) {
327+ for (size_t pi = 0 ; pi < userData.size (); ++pi) {
328+ auto stemsData = reinterpret_cast <const MultiplotData*>(metricsToDisplay[pi]);
329+ // FIXME: display a message for other metrics
330+ if (stemsData->type == MetricType::Uint64) {
331+ ImPlot::PlotStems (deviceNames[pi], (const ImU64*)stemsData->X , (const ImU64*)stemsData->Y , metricSize);
332+ }
333+ }
334+ ImPlot::EndPlot ();
335+ }
336+ break ;
321337 default :
322338 break ;
323339 }
@@ -522,7 +538,8 @@ void displayDeviceHistograms(gui::WorkspaceGUIState& state,
522538 " lines" ,
523539 " histograms" ,
524540 " sparks" ,
525- " table" };
541+ " table" ,
542+ " stems" };
526543 ImGui::SameLine ();
527544 static enum MetricsDisplayStyle currentStyle = MetricsDisplayStyle::Lines;
528545 ImGui::Combo (" ##Select style" , reinterpret_cast <int *>(¤tStyle), plotStyles, IM_ARRAYSIZE (plotStyles));
@@ -560,6 +577,7 @@ void displayDeviceHistograms(gui::WorkspaceGUIState& state,
560577 ImGui::EndGroup ();
561578 if (!currentMetricName.empty ()) {
562579 switch (currentStyle) {
580+ case MetricsDisplayStyle::Stems:
563581 case MetricsDisplayStyle::Histos:
564582 case MetricsDisplayStyle::Lines: {
565583 displayDeviceMetrics (" Metrics" ,
0 commit comments