Added header for ImPlot utility and functions for drawing horizontal/vertical lines and boxes.

This commit is contained in:
Patrick Wuttke 2025-09-22 10:39:50 +02:00
parent 5ebd609507
commit 9bc56a2748

View File

@ -0,0 +1,60 @@
#pragma once
#if !defined(RAID_PUBLIC_RAID_IMRAID_PLOT_HPP_INCLUDED)
#define RAID_PUBLIC_RAID_IMRAID_PLOT_HPP_INCLUDED 1
#include <imgui.h>
#include <implot.h>
#include <implot_internal.h>
namespace ImRaid::Plot
{
inline void AddVerticalLine(double xValue, ImU32 color, float thickness = 1.f, ImAxis dataAxis = ImAxis_X1)
{
const ImVec2 plotPos = ImPlot::GetPlotPos();
const ImVec2 plotSize = ImPlot::GetPlotSize();
const float xScaled = ImPlot::GetCurrentPlot()->Axes[dataAxis].PlotToPixels(xValue);
const ImVec2 v0 = ImVec2(xScaled, plotPos.y);
const ImVec2 v1 = ImVec2(xScaled, plotPos.y + plotSize.y);
ImPlot::GetPlotDrawList()->AddLine(v0, v1, color, thickness);
}
inline void AddHorizontalLine(double yValue, ImU32 color, float thickness = 1.f, ImAxis dataAxis = ImAxis_Y1)
{
const ImVec2 plotPos = ImPlot::GetPlotPos();
const ImVec2 plotSize = ImPlot::GetPlotSize();
const float yScaled = ImPlot::GetCurrentPlot()->Axes[dataAxis].PlotToPixels(yValue);
const ImVec2 v0 = ImVec2(plotPos.y, yScaled);
const ImVec2 v1 = ImVec2(plotPos.y + plotSize.y, yScaled);
ImPlot::GetPlotDrawList()->AddLine(v0, v1, color, thickness);
}
inline void AddVerticalRect(double xStart, double xEnd, ImU32 color, ImAxis dataAxis = ImAxis_X1)
{
const ImVec2 plotPos = ImPlot::GetPlotPos();
const ImVec2 plotSize = ImPlot::GetPlotSize();
const float xStartScaled = ImPlot::GetCurrentPlot()->Axes[dataAxis].PlotToPixels(xStart);
const float xEndScaled = ImPlot::GetCurrentPlot()->Axes[dataAxis].PlotToPixels(xEnd);
const ImVec2 v0 = ImVec2(xStartScaled, plotPos.y);
const ImVec2 v1 = ImVec2(xEndScaled, plotPos.y + plotSize.y);
ImPlot::GetPlotDrawList()->AddRectFilled(v0, v1, color);
}
inline void AddHorizontalRect(double yStart, double yEnd, ImU32 color, ImAxis dataAxis = ImAxis_Y1)
{
const ImVec2 plotPos = ImPlot::GetPlotPos();
const ImVec2 plotSize = ImPlot::GetPlotSize();
const float yStartScaled = ImPlot::GetCurrentPlot()->Axes[dataAxis].PlotToPixels(yStart);
const float yEndScaled = ImPlot::GetCurrentPlot()->Axes[dataAxis].PlotToPixels(yEnd);
const ImVec2 v0 = ImVec2(plotPos.x, yStartScaled);
const ImVec2 v1 = ImVec2(plotPos.x + plotSize.x, yEndScaled);
ImPlot::GetPlotDrawList()->AddRectFilled(v0, v1, color);
}
}
#endif // !defined(RAID_PUBLIC_RAID_IMRAID_PLOT_HPP_INCLUDED)