MCPcopy Create free account
hub / github.com/donkeyteethUX/iced_plot / rebuild_lines

Method rebuild_lines

src/plot_renderer/shader.rs:1146–1248  ·  view source on GitHub ↗
(&mut self, device: &Device, queue: &Queue, state: &PlotState)

Source from the content-addressed store, hash-verified

1144 }
1145
1146 if writer.is_empty() {
1147 return;
1148 }
1149
1150 let data = writer.as_slice();
1151 self.buffers.fills = Some(VertexBuffer {
1152 buffer: device.create_buffer(&BufferDescriptor {
1153 label: Some("fill vb"),
1154 size: data.len() as u64,
1155 usage: BufferUsages::VERTEX | BufferUsages::COPY_DST,
1156 mapped_at_creation: false,
1157 }),
1158 vertex_count: (data.len() / 24) as u32,
1159 });
1160
1161 if let Some(vb) = &self.buffers.fills {
1162 queue.write_buffer(&vb.buffer, 0, data);
1163 }
1164 }
1165
1166 fn rebuild_lines(&mut self, device: &Device, queue: &Queue, state: &PlotState) {
1167 self.buffers.lines = None;
1168 if state.series.iter().all(|s| s.line_style.is_none()) {
1169 return;
1170 }
1171
1172 let mut writer = VertexWriter::new();
1173 let mut segs: Vec<LineSegment> = Vec::new();
1174 for s in state.series.iter() {
1175 let Some(line_style) = s.line_style else {
1176 continue;
1177 };
1178 if s.len < 2 {
1179 continue;
1180 }
1181 let (line_style_u32, style_param) = line_style_params(line_style);
1182 let render_style = LineRenderStyle {
1183 width: line_style.width,
1184 line_style: line_style_u32,
1185 style_param,
1186 };
1187 let points_slice = &state.points[s.start..s.start + s.len];
1188 let mut poly_positions: Vec<[f32; 2]> = Vec::new();
1189 let mut poly_distances: Vec<f32> = Vec::new();
1190 let mut poly_colors: Vec<iced::Color> = Vec::new();
1191 let mut cumulative_distance = 0.0f32;
1192
1193 for (i, point) in points_slice.iter().enumerate() {
1194 let break_segment = i > 0
1195 && s.point_indices
1196 .get(i)
1197 .zip(s.point_indices.get(i - 1))
1198 .is_some_and(|(curr, prev)| *curr != *prev + 1);
1199
1200 if break_segment {
1201 write_polyline_triangles(
1202 &mut writer,
1203 &mut segs,

Callers 1

syncMethod · 0.80

Calls 8

line_style_paramsFunction · 0.85
write_polyline_trianglesFunction · 0.85
allMethod · 0.80
getMethod · 0.80
world_to_render_posMethod · 0.80
is_emptyMethod · 0.80
as_sliceMethod · 0.80
newFunction · 0.50

Tested by

no test coverage detected