deinit
Parameters
- self:*PlotWidget
- *PlotWidget
Source
Implementation
pub fn deinit(self: *PlotWidget) void {
defer if (dvui.widgetIsAllocated(self)) dvui.widgetFree(self);
defer self.* = undefined;
dvui.clipSet(self.old_clip);
if (self.data_min.x == self.data_max.x) {
self.data_min.x = self.data_min.x - 1;
self.data_max.x = self.data_max.x + 1;
}
if (self.data_min.y == self.data_max.y) {
self.data_min.y = self.data_min.y - 1;
self.data_max.y = self.data_max.y + 1;
}
// maybe we got no data
if (self.data_min.x == std.math.floatMax(f64)) {
self.data_min = .{ .x = 0, .y = 0 };
self.data_max = .{ .x = 10, .y = 10 };
}
if (self.init_options.x_axis) |x_axis| {
if (x_axis.min == null) {
x_axis.min = self.data_min.x;
}
if (x_axis.max == null) {
x_axis.max = self.data_max.x;
}
} else {
self.x_axis.min = self.data_min.x;
self.x_axis.max = self.data_max.x;
dvui.dataSet(null, self.box.data().id, "_x_axis", self.x_axis.*);
}
if (self.init_options.y_axis) |y_axis| {
if (y_axis.min == null) {
y_axis.min = self.data_min.y;
}
if (y_axis.max == null) {
y_axis.max = self.data_max.y;
}
} else {
self.y_axis.min = self.data_min.y;
self.y_axis.max = self.data_max.y;
dvui.dataSet(null, self.box.data().id, "_y_axis", self.y_axis.*);
}
if (self.hover_data) |hd| {
switch (hd) {
.point => |p| self.hoverLabel("{d}, {d}", .{ p.x, p.y }),
.bar => |b| self.hoverLabel("{d} to {d}, {d} to {d}", .{ b.x, b.x + b.w, b.y, b.y + b.h }),
}
}
self.box.deinit();
}