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

Method rebuild_selection

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

Source from the content-addressed store, hash-verified

1369 }
1370
1371 if writer.is_empty() {
1372 return;
1373 }
1374
1375 let data = writer.as_slice();
1376 self.buffers.reflines = Some(LineBuffer {
1377 buffer: device.create_buffer(&BufferDescriptor {
1378 label: Some("refline vb"),
1379 size: data.len() as u64,
1380 usage: BufferUsages::VERTEX | BufferUsages::COPY_DST,
1381 mapped_at_creation: false,
1382 }),
1383 segments: segs,
1384 });
1385
1386 if let Some(lb) = &self.buffers.reflines {
1387 queue.write_buffer(&lb.buffer, 0, data);
1388 }
1389 }
1390
1391 fn rebuild_selection(&mut self, device: &Device, queue: &Queue, state: &PlotState) {
1392 let w = self.bounds_w.max(1) as f32;
1393 let h = self.bounds_h.max(1) as f32;
1394 if w <= 1.0 || h <= 1.0 {
1395 return;
1396 }
1397 if state.selection.active || state.selection.moved {
1398 let p0 = state.selection.start * self.scale_factor;
1399 let p1 = state.selection.end * self.scale_factor;
1400 let min_x = p0.x.min(p1.x);
1401 let max_x = p0.x.max(p1.x);
1402 let min_y = p0.y.min(p1.y);
1403 let max_y = p0.y.max(p1.y);
1404 let tl = self.screen_to_clip(min_x, min_y);
1405 let br = self.screen_to_clip(max_x, max_y);
1406 let tr = [br[0], tl[1]];
1407 let bl = [tl[0], br[1]];
1408 let mut data: Vec<f32> = Vec::new();
1409 for v in [tl, tr, bl, br] {
1410 data.extend_from_slice(&v);
1411 data.extend_from_slice(&SELECTION_FILL_RGBA);
1412 }

Callers 1

syncMethod · 0.80

Calls 2

screen_to_clipMethod · 0.80
newFunction · 0.50

Tested by

no test coverage detected