(&mut self, device: &Device, queue: &Queue, state: &PlotState)
| 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 | } |
no test coverage detected