@@ -110,20 +110,31 @@ void MarkerRenderer::drawMarkers(Gfx::ICanvas &canvas,
110110
111111 draw (canvas, painter, circle, 1 , false );
112112
113- blended.marker .prevMainMarker .visit (
114- [this , &blended, &canvas, &painter](
115- ::Anim::InterpolateIndex index,
116- const auto &value)
117- {
118- draw (canvas,
119- painter,
120- ConnectingMarker{ctx (),
121- blended.marker ,
122- index,
123- Gen::ShapeType::line},
124- value.weight ,
125- true );
126- });
113+ auto drawMarker = [this , &blended, &canvas, &painter](
114+ ::Anim::InterpolateIndex index,
115+ const auto &value)
116+ {
117+ draw (canvas,
118+ painter,
119+ ConnectingMarker{ctx (),
120+ blended.marker ,
121+ index,
122+ Gen::ShapeType::line},
123+ value.weight ,
124+ true );
125+ };
126+
127+ if (blended.marker .prevMainMarker .interpolates ())
128+ blended.marker .prevMainMarker .visit (drawMarker);
129+ else {
130+ auto index =
131+ getOptions ()
132+ .geometry .get_index (Gen::ShapeType::line)
133+ .value ();
134+ drawMarker (index,
135+ blended.marker .prevMainMarker .get_or_first (
136+ index));
137+ }
127138 }
128139 else {
129140 std::optional<AbstractMarker> other;
@@ -178,9 +189,7 @@ void MarkerRenderer::drawMarkers(Gfx::ICanvas &canvas,
178189 if (containsSingle) {
179190 auto lineIndex =
180191 isConnecting (
181- getOptions ()
182- .geometry .get_or_first (::Anim::first)
183- .value )
192+ getOptions ().geometry .values [0 ].value )
184193 ? ::Anim::first
185194 : ::Anim::second;
186195
@@ -195,9 +204,8 @@ void MarkerRenderer::drawMarkers(Gfx::ICanvas &canvas,
195204 }
196205 else
197206 drawMarker (::Anim::first,
198- ::Anim::Weighted{blended.marker .prevMainMarker
199- .get_or_first (::Anim::first)
200- .value ,
207+ ::Anim::Weighted{
208+ blended.marker .prevMainMarker .values [0 ].value ,
201209 sum_weight});
202210 }
203211 }
@@ -211,7 +219,7 @@ void MarkerRenderer::drawLabels(Gfx::ICanvas &canvas) const
211219 if (blended.marker .enabled == false ) continue ;
212220 drawLabel (canvas,
213221 blended,
214- axis.unit .get_or_first (::Anim::first) .value ,
222+ axis.unit .values [ 0 ] .value ,
215223 keepMeasure,
216224 ::Anim::first);
217225 drawLabel (canvas,
@@ -270,7 +278,11 @@ void MarkerRenderer::draw(Gfx::ICanvas &canvas,
270278 {Geom::Line (p0, p1), false }))) {
271279 painter.drawStraightLine (line,
272280 abstractMarker.lineWidth ,
273- static_cast <double >(abstractMarker.linear ));
281+ getOptions ().coordSystem .factor (
282+ Gen::CoordSystem::cartesian)
283+ == 1.0
284+ ? 1.0
285+ : static_cast <double >(abstractMarker.linear ));
274286
275287 renderedChart.emplace (
276288 Draw::Marker{abstractMarker.marker .enabled != false ,
0 commit comments