Skip to content

Commit 5e27ca0

Browse files
committed
refactor: avoid duplicated code in marker rendering
1 parent 8d702bc commit 5e27ca0

File tree

1 file changed

+28
-76
lines changed

1 file changed

+28
-76
lines changed

implot_items.cpp

Lines changed: 28 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1829,6 +1829,30 @@ void RenderMarkers(const _Getter& getter, ImPlotMarker marker, float size, bool
18291829
}
18301830
}
18311831

1832+
template <typename _Getter>
1833+
void RenderColoredMarkers(const _Getter& getter, const ImPlotNextItemData& s) {
1834+
const ImU32 col_line = ImGui::GetColorU32(s.Spec.MarkerLineColor);
1835+
const ImU32 col_fill = ImGui::GetColorU32(s.Spec.MarkerFillColor);
1836+
1837+
if (s.Spec.MarkerFillColors != nullptr && s.Spec.MarkerLineColors != nullptr) {
1838+
GetterIdxColor fill_getter(s.Spec.MarkerFillColors, getter.Count, s.Spec.FillAlpha);
1839+
GetterIdxColor line_getter(s.Spec.MarkerLineColors, getter.Count);
1840+
RenderMarkers<_Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
1841+
} else if (s.Spec.MarkerFillColors != nullptr) {
1842+
GetterIdxColor fill_getter(s.Spec.MarkerFillColors, getter.Count, s.Spec.FillAlpha);
1843+
GetterConstColor line_getter(col_line);
1844+
RenderMarkers<_Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
1845+
} else if (s.Spec.MarkerLineColors != nullptr) {
1846+
GetterConstColor fill_getter(col_fill);
1847+
GetterIdxColor line_getter(s.Spec.MarkerLineColors, getter.Count);
1848+
RenderMarkers<_Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
1849+
} else {
1850+
GetterConstColor fill_getter(col_fill);
1851+
GetterConstColor line_getter(col_line);
1852+
RenderMarkers<_Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
1853+
}
1854+
}
1855+
18321856
//-----------------------------------------------------------------------------
18331857
// [SECTION] PlotLine
18341858
//-----------------------------------------------------------------------------
@@ -1902,25 +1926,7 @@ void PlotLineEx(const char* label_id, const _Getter& getter, const ImPlotSpec& s
19021926
PopPlotClipRect();
19031927
PushPlotClipRect(s.Spec.MarkerSize);
19041928
}
1905-
const ImU32 col_line = ImGui::GetColorU32(s.Spec.MarkerLineColor);
1906-
const ImU32 col_fill = ImGui::GetColorU32(s.Spec.MarkerFillColor);
1907-
if (s.Spec.MarkerFillColors != nullptr && s.Spec.MarkerLineColors != nullptr) {
1908-
GetterIdxColor fill_getter(s.Spec.MarkerFillColors, getter.Count, s.Spec.FillAlpha);
1909-
GetterIdxColor line_getter(s.Spec.MarkerLineColors, getter.Count);
1910-
RenderMarkers<_Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
1911-
} else if (s.Spec.MarkerFillColors != nullptr) {
1912-
GetterIdxColor fill_getter(s.Spec.MarkerFillColors, getter.Count, s.Spec.FillAlpha);
1913-
GetterConstColor line_getter(col_line);
1914-
RenderMarkers<_Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
1915-
} else if (s.Spec.MarkerLineColors != nullptr) {
1916-
GetterConstColor fill_getter(col_fill);
1917-
GetterIdxColor line_getter(s.Spec.MarkerLineColors, getter.Count);
1918-
RenderMarkers<_Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
1919-
} else {
1920-
GetterConstColor fill_getter(col_fill);
1921-
GetterConstColor line_getter(col_line);
1922-
RenderMarkers<_Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
1923-
}
1929+
RenderColoredMarkers(getter, s);
19241930
}
19251931
EndItem();
19261932
}
@@ -1969,25 +1975,7 @@ void PlotScatterEx(const char* label_id, const Getter& getter, const ImPlotSpec&
19691975
PopPlotClipRect();
19701976
PushPlotClipRect(s.Spec.MarkerSize);
19711977
}
1972-
const ImU32 col_line = ImGui::GetColorU32(s.Spec.MarkerLineColor);
1973-
const ImU32 col_fill = ImGui::GetColorU32(s.Spec.MarkerFillColor);
1974-
if (s.Spec.MarkerFillColors != nullptr && s.Spec.MarkerLineColors != nullptr) {
1975-
GetterIdxColor fill_getter(s.Spec.MarkerFillColors, getter.Count, s.Spec.FillAlpha);
1976-
GetterIdxColor line_getter(s.Spec.MarkerLineColors, getter.Count);
1977-
RenderMarkers<Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
1978-
} else if (s.Spec.MarkerFillColors != nullptr) {
1979-
GetterIdxColor fill_getter(s.Spec.MarkerFillColors, getter.Count, s.Spec.FillAlpha);
1980-
GetterConstColor line_getter(col_line);
1981-
RenderMarkers<Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
1982-
} else if (s.Spec.MarkerLineColors != nullptr) {
1983-
GetterConstColor fill_getter(col_fill);
1984-
GetterIdxColor line_getter(s.Spec.MarkerLineColors, getter.Count);
1985-
RenderMarkers<Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
1986-
} else {
1987-
GetterConstColor fill_getter(col_fill);
1988-
GetterConstColor line_getter(col_line);
1989-
RenderMarkers<Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
1990-
}
1978+
RenderColoredMarkers(getter, s);
19911979
}
19921980
EndItem();
19931981
}
@@ -2131,25 +2119,7 @@ void PlotStairsEx(const char* label_id, const Getter& getter, const ImPlotSpec&
21312119
if (s.RenderMarkers) {
21322120
PopPlotClipRect();
21332121
PushPlotClipRect(s.Spec.MarkerSize);
2134-
const ImU32 col_line = ImGui::GetColorU32(s.Spec.MarkerLineColor);
2135-
const ImU32 col_fill = ImGui::GetColorU32(s.Spec.MarkerFillColor);
2136-
if (s.Spec.MarkerFillColors != nullptr && s.Spec.MarkerLineColors != nullptr) {
2137-
GetterIdxColor fill_getter(s.Spec.MarkerFillColors, getter.Count, s.Spec.FillAlpha);
2138-
GetterIdxColor line_getter(s.Spec.MarkerLineColors, getter.Count);
2139-
RenderMarkers<Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
2140-
} else if (s.Spec.MarkerFillColors != nullptr) {
2141-
GetterIdxColor fill_getter(s.Spec.MarkerFillColors, getter.Count, s.Spec.FillAlpha);
2142-
GetterConstColor line_getter(col_line);
2143-
RenderMarkers<Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
2144-
} else if (s.Spec.MarkerLineColors != nullptr) {
2145-
GetterConstColor fill_getter(col_fill);
2146-
GetterIdxColor line_getter(s.Spec.MarkerLineColors, getter.Count);
2147-
RenderMarkers<Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
2148-
} else {
2149-
GetterConstColor fill_getter(col_fill);
2150-
GetterConstColor line_getter(col_line);
2151-
RenderMarkers<Getter>(getter, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
2152-
}
2122+
RenderColoredMarkers(getter, s);
21532123
}
21542124
EndItem();
21552125
}
@@ -2576,25 +2546,7 @@ void PlotStemsEx(const char* label_id, const _GetterM& getter_mark, const _Gette
25762546
if (s.RenderMarkers) {
25772547
PopPlotClipRect();
25782548
PushPlotClipRect(s.Spec.MarkerSize);
2579-
const ImU32 col_line = ImGui::GetColorU32(s.Spec.MarkerLineColor);
2580-
const ImU32 col_fill = ImGui::GetColorU32(s.Spec.MarkerFillColor);
2581-
if (s.Spec.MarkerFillColors != nullptr && s.Spec.MarkerLineColors != nullptr) {
2582-
GetterIdxColor fill_getter(s.Spec.MarkerFillColors, getter_mark.Count);
2583-
GetterIdxColor line_getter(s.Spec.MarkerLineColors, getter_mark.Count);
2584-
RenderMarkers<_GetterM>(getter_mark, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
2585-
} else if (s.Spec.MarkerFillColors != nullptr) {
2586-
GetterIdxColor fill_getter(s.Spec.MarkerFillColors, getter_mark.Count);
2587-
GetterConstColor line_getter(col_line);
2588-
RenderMarkers<_GetterM>(getter_mark, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
2589-
} else if (s.Spec.MarkerLineColors != nullptr) {
2590-
GetterConstColor fill_getter(col_fill);
2591-
GetterIdxColor line_getter(s.Spec.MarkerLineColors, getter_mark.Count);
2592-
RenderMarkers<_GetterM>(getter_mark, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
2593-
} else {
2594-
GetterConstColor fill_getter(col_fill);
2595-
GetterConstColor line_getter(col_line);
2596-
RenderMarkers<_GetterM>(getter_mark, s.Spec.Marker, s.Spec.MarkerSize, s.RenderMarkerFill, fill_getter, s.RenderMarkerLine, line_getter, s.Spec.LineWeight);
2597-
}
2549+
RenderColoredMarkers(getter_mark, s);
25982550
}
25992551
EndItem();
26002552
}

0 commit comments

Comments
 (0)