drawGrid method
void
drawGrid(
[ - bool drawY = true
])
override
Implementation
@override
void drawGrid([bool drawY = true]) {
_gridElem.innerHTML = ''.toJS;
if (points == 0) return;
final radians = 2*pi/points.toDouble();
final r = min(_svgElem.clientWidth, _svgElem.clientHeight)/2;
final dx = max(_svgElem.clientWidth/2 - r, 0);
final dy = max(_svgElem.clientHeight/2 - r, 0);
var gridR = r - gridLineWidth - textMargin/4 - maxLabelWidth;
List<List<double>>? outerPolygons;
while (gridR > 10) {
var polygons = <List<double>>[];
for (var i = 0; i < points; i++) {
polygons.add([
gridR*sin((radians*i)+pi) + r + dx,
gridR*cos((radians*i)+pi) + r + dy,
]);
}
outerPolygons ??= polygons;
var pointStr = polygons.map((e) => e.join(' ')).join(', ');
_gridElem.insertAdjacentHTML('beforeend', '<polygon points="$pointStr" stroke="$gridLineStrokeStyle" fill="none" stroke-width="$gridLineWidth" />'.toJS);
gridR = gridR - pointIntervalRadiusWidth;
if (gridR <= 10) break;
}
if (outerPolygons != null) {
for (var p in outerPolygons) {
_gridElem.insertAdjacentHTML('beforeend', '<line x1="${r+dx}" y1="${r+dy}" x2="${p[0]}" y2="${p[1]}" stroke-width="$gridLineWidth" stroke="$gridLineStrokeStyle" />'.toJS);
}
}
}