Skip to content

Commit d08012a

Browse files
committed
fix "empty" channel split, clang-tidy, fix tests
1 parent adb17ec commit d08012a

File tree

9 files changed

+60
-52
lines changed

9 files changed

+60
-52
lines changed

src/base/alg/merge.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#ifndef ALG_MERGE_H
22
#define ALG_MERGE_H
33

4+
#include <algorithm>
45
#include <cstdint>
56
#include <functional>
67
#include <ranges>

src/chart/generator/axis.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,10 @@ DimensionAxis interpolate(const DimensionAxis &op0,
295295
DimensionAxis res;
296296

297297
res.factor = factor;
298+
res.hasMarker = !Math::Floating::is_zero(
299+
Math::Niebloid::interpolate(op0.hasMarker,
300+
op1.hasMarker,
301+
factor));
298302
using Val = DimensionAxis::Values::value_type;
299303

300304
const Val *latest1{};
@@ -387,7 +391,7 @@ interpolate(const SplitAxis &op0, const SplitAxis &op1, double factor)
387391
if (needMerge) {
388392
if (firstSpecial) {
389393
firstSpecial = false;
390-
return merger(val, {{}, {1.0}});
394+
return merger(val, {});
391395
}
392396

393397
Math::Range<> range{0.0, 1.0};
@@ -410,15 +414,15 @@ interpolate(const SplitAxis &op0, const SplitAxis &op1, double factor)
410414
res.parts,
411415
Alg::merge_args{.projection = &PartPair::first,
412416
.transformer_1 =
413-
one_side(merger(factor), op1.parts.empty()),
417+
one_side(merger(factor), op1.parts.size() <= 1),
414418
.transformer_2 =
415-
one_side(merger(1 - factor), op0.parts.empty()),
419+
one_side(merger(1 - factor), op0.parts.size() <= 1),
416420
.need_merge = {needMerge},
417421
.merger = merger(factor)});
418422

419423
if (!needMerge && op0.parts.empty() != op1.parts.empty()
420-
&& (!op0.dimension.empty() || op0.measure.enabled.get())
421-
&& (!op1.dimension.empty() || op1.measure.enabled.get()))
424+
&& (op0.dimension.hasMarker || op0.measure.enabled.get())
425+
&& (op1.dimension.hasMarker || op1.measure.enabled.get()))
422426
res.parts.insert({std::nullopt,
423427
{.weight = op0.parts.empty() ? 1 - factor : factor}});
424428

src/chart/generator/axis.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ struct DimensionAxis
129129
using Values = std::multimap<Data::SliceIndex, Item>;
130130

131131
double factor{};
132+
bool hasMarker{};
132133

133134
DimensionAxis() = default;
134135
bool add(const Data::SliceIndex &index,

src/chart/generator/plotbuilder.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,7 @@ void PlotBuilder::calcLegendAndLabel(const Data::DataTable &dataTable)
426426
true,
427427
merge))
428428
++count;
429+
calcLegend.dimension.hasMarker = true;
429430
}
430431

431432
if (auto &&series = plot->getOptions()->labelSeries(type);
@@ -448,7 +449,6 @@ void PlotBuilder::calcAxis(const Data::DataTable &dataTable,
448449
AxisId type)
449450
{
450451
const auto &scale = plot->getOptions()->getChannels().at(type);
451-
if (scale.isEmpty()) return;
452452

453453
auto &axisProps =
454454
plot->getOptions()->getChannels().axisPropsAt(type);
@@ -495,6 +495,8 @@ void PlotBuilder::calcAxis(const Data::DataTable &dataTable,
495495
{},
496496
false,
497497
merge);
498+
499+
axis.dimension.hasMarker = true;
498500
}
499501
if (auto &&series = plot->getOptions()->labelSeries(type);
500502
!axis.dimension.setLabels(axisProps.step.getValue(1.0))

src/chart/rendering/markers/connectingmarker.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ ConnectingMarker::ConnectingMarker(const DrawingContext &ctx,
5555
linear = !polar || horizontal
5656
|| Math::FuzzyBool::And(
5757
!isHorizontal
58-
&& !ctx.plot->axises.at(Gen::AxisId::x)
59-
.dimension.empty(),
58+
&& ctx.plot->axises.at(Gen::AxisId::x)
59+
.dimension.hasMarker,
6060
ctx.plot->axises.at(Gen::AxisId::x)
6161
.measure.enabled.factor(false),
6262
!horizontal);

0 commit comments

Comments
 (0)