| 1903 | |
| 1904 | template <typename _Getter> |
| 1905 | void PlotLineEx(const char* label_id, const _Getter& getter, const ImPlotSpec& spec) { |
| 1906 | if (BeginItemEx(label_id, Fitter1<_Getter>(getter), spec, spec.LineColor, spec.Marker)) { |
| 1907 | if (getter.Count <= 0) { |
| 1908 | EndItem(); |
| 1909 | return; |
| 1910 | } |
| 1911 | const ImPlotNextItemData& s = GetItemData(); |
| 1912 | if (getter.Count > 1) { |
| 1913 | if (ImHasFlag(spec.Flags, ImPlotLineFlags_Shaded) && s.RenderFill) { |
| 1914 | GetterOverrideY<_Getter> getter2(getter, 0); |
| 1915 | if (s.Spec.FillColors != nullptr) { |
| 1916 | GetterIdxColor color_getter(s.Spec.FillColors, getter.Count, s.Spec.FillAlpha); |
| 1917 | RenderPrimitives3<RendererShaded>(getter,getter2,color_getter); |
| 1918 | } else { |
| 1919 | const ImU32 col_fill = ImGui::GetColorU32(s.Spec.FillColor); |
| 1920 | GetterConstColor color_getter(col_fill, s.Spec.FillAlpha); |
| 1921 | RenderPrimitives3<RendererShaded>(getter,getter2,color_getter); |
| 1922 | } |
| 1923 | } |
| 1924 | if (s.RenderLine) { |
| 1925 | const ImU32 col_line = ImGui::GetColorU32(s.Spec.LineColor); |
| 1926 | if (ImHasFlag(spec.Flags,ImPlotLineFlags_Segments)) { |
| 1927 | if (s.Spec.LineColors != nullptr) { |
| 1928 | GetterIdxColor color_getter(s.Spec.LineColors, getter.Count); |
| 1929 | RenderPrimitives2<RendererLineSegments1>(getter,color_getter,s.Spec.LineWeight); |
| 1930 | } else { |
| 1931 | GetterConstColor color_getter(col_line); |
| 1932 | RenderPrimitives2<RendererLineSegments1>(getter,color_getter,s.Spec.LineWeight); |
| 1933 | } |
| 1934 | } |
| 1935 | else if (ImHasFlag(spec.Flags, ImPlotLineFlags_Loop)) { |
| 1936 | if (s.Spec.LineColors != nullptr) { |
| 1937 | GetterIdxColor color_getter(s.Spec.LineColors, getter.Count); |
| 1938 | if (ImHasFlag(spec.Flags, ImPlotLineFlags_SkipNaN)) |
| 1939 | RenderPrimitives2<RendererLineStripSkip>(GetterLoop<_Getter>(getter),color_getter,s.Spec.LineWeight); |
| 1940 | else |
| 1941 | RenderPrimitives2<RendererLineStrip>(GetterLoop<_Getter>(getter),color_getter,s.Spec.LineWeight); |
| 1942 | } else { |
| 1943 | GetterConstColor color_getter(col_line); |
| 1944 | if (ImHasFlag(spec.Flags, ImPlotLineFlags_SkipNaN)) |
| 1945 | RenderPrimitives2<RendererLineStripSkip>(GetterLoop<_Getter>(getter),color_getter,s.Spec.LineWeight); |
| 1946 | else |
| 1947 | RenderPrimitives2<RendererLineStrip>(GetterLoop<_Getter>(getter),color_getter,s.Spec.LineWeight); |
| 1948 | } |
| 1949 | } |
| 1950 | else { |
| 1951 | if (s.Spec.LineColors != nullptr) { |
| 1952 | GetterIdxColor color_getter(s.Spec.LineColors, getter.Count); |
| 1953 | if (ImHasFlag(spec.Flags, ImPlotLineFlags_SkipNaN)) |
| 1954 | RenderPrimitives2<RendererLineStripSkip>(getter,color_getter,s.Spec.LineWeight); |
| 1955 | else |
| 1956 | RenderPrimitives2<RendererLineStrip>(getter,color_getter,s.Spec.LineWeight); |
| 1957 | } else { |
| 1958 | GetterConstColor color_getter(col_line); |
| 1959 | if (ImHasFlag(spec.Flags, ImPlotLineFlags_SkipNaN)) |
| 1960 | RenderPrimitives2<RendererLineStripSkip>(getter,color_getter,s.Spec.LineWeight); |
| 1961 | else |
| 1962 | RenderPrimitives2<RendererLineStrip>(getter,color_getter,s.Spec.LineWeight); |
no test coverage detected