(&self, transform: &PlotTransform, highlighted: bool, shapes: &mut Vec<Shape>)
| 329 | } |
| 330 | |
| 331 | pub(in crate::items) fn add_shapes(&self, transform: &PlotTransform, highlighted: bool, shapes: &mut Vec<Shape>) { |
| 332 | let (stroke, fill) = if highlighted { |
| 333 | highlighted_color(self.stroke, self.fill) |
| 334 | } else { |
| 335 | (self.stroke, self.fill) |
| 336 | }; |
| 337 | |
| 338 | let rect = transform.rect_from_values( |
| 339 | &self.point_at(self.argument - self.box_width / 2.0, self.spread.quartile1), |
| 340 | &self.point_at(self.argument + self.box_width / 2.0, self.spread.quartile3), |
| 341 | ); |
| 342 | let rect = Shape::Rect(RectShape::new( |
| 343 | rect, |
| 344 | CornerRadius::ZERO, |
| 345 | fill, |
| 346 | stroke, |
| 347 | egui::StrokeKind::Inside, |
| 348 | )); |
| 349 | shapes.push(rect); |
| 350 | |
| 351 | let line_between = |v1, v2| { |
| 352 | Shape::line_segment( |
| 353 | [transform.position_from_point(&v1), transform.position_from_point(&v2)], |
| 354 | stroke, |
| 355 | ) |
| 356 | }; |
| 357 | let median = line_between( |
| 358 | self.point_at(self.argument - self.box_width / 2.0, self.spread.median), |
| 359 | self.point_at(self.argument + self.box_width / 2.0, self.spread.median), |
| 360 | ); |
| 361 | shapes.push(median); |
| 362 | |
| 363 | if self.spread.upper_whisker > self.spread.quartile3 { |
| 364 | let high_whisker = line_between( |
| 365 | self.point_at(self.argument, self.spread.quartile3), |
| 366 | self.point_at(self.argument, self.spread.upper_whisker), |
| 367 | ); |
| 368 | shapes.push(high_whisker); |
| 369 | if self.box_width > 0.0 { |
| 370 | let high_whisker_end = line_between( |
| 371 | self.point_at(self.argument - self.whisker_width / 2.0, self.spread.upper_whisker), |
| 372 | self.point_at(self.argument + self.whisker_width / 2.0, self.spread.upper_whisker), |
| 373 | ); |
| 374 | shapes.push(high_whisker_end); |
| 375 | } |
| 376 | } |
| 377 | |
| 378 | if self.spread.lower_whisker < self.spread.quartile1 { |
| 379 | let low_whisker = line_between( |
| 380 | self.point_at(self.argument, self.spread.quartile1), |
| 381 | self.point_at(self.argument, self.spread.lower_whisker), |
| 382 | ); |
| 383 | shapes.push(low_whisker); |
| 384 | if self.box_width > 0.0 { |
| 385 | let low_whisker_end = line_between( |
| 386 | self.point_at(self.argument - self.whisker_width / 2.0, self.spread.lower_whisker), |
| 387 | self.point_at(self.argument + self.whisker_width / 2.0, self.spread.lower_whisker), |
| 388 | ); |
no test coverage detected