drawGroupLabels method
List<MarkElement<ElementStyle> >
drawGroupLabels(
- List<
Attributes> group, - CoordConv coord,
- Offset origin
override
Renders label elements of all tuples of a group.
Implementation
@override
List<MarkElement> drawGroupLabels(
List<Attributes> group, CoordConv coord, Offset origin) {
final rst = <MarkElement>[];
if (coord is RectCoordConv) {
// Bar and histogram.
for (var item in group) {
bool nan = false;
for (var point in item.position) {
if (!point.dy.isFinite) {
nan = true;
break;
}
}
if (!nan && item.label != null) {
final start = coord.convert(item.position[0]);
final end = coord.convert(item.position[1]);
rst.add(_drawRectLabel(
item,
start + (end - start) * (item.shape as RectShape).labelPosition,
coord,
));
}
}
} else if (coord is PolarCoordConv) {
// All sector interval shapes dosen't allow NaN value.
if (coord.transposed) {
if (coord.dimCount == 1) {
// Pie.
for (var item in group) {
if (item.label != null) {
final position = item.position;
rst.add(_drawSectorLabel(
item,
coord.convert(Offset(
(item.shape as RectShape).labelPosition,
(position[1].dy + position[0].dy) / 2,
)),
coord,
));
}
}
} else {
// Race track.
for (var item in group) {
if (item.label != null && item.label!.haveText) {
final position = item.position;
final labelAnchor = coord.convert(position[0] +
(position[1] - position[0]) *
(item.shape as RectShape).labelPosition);
final anchorOffset = labelAnchor - coord.center;
rst.add(LabelElement(
text: item.label!.text!,
anchor: labelAnchor,
defaultAlign: radialLabelAlign(anchorOffset) * -1,
style: item.label!.style,
tag: item.tag,
));
}
}
}
} else {
// Bull eye and rose.
for (var item in group) {
if (item.label != null) {
rst.add(_drawSectorLabel(
item,
coord.convert(item.position[0] +
(item.position[1] - item.position[0]) *
(item.shape as RectShape).labelPosition),
coord));
}
}
}
}
return rst;
}