use super::{SdlGpuRenderer, apply_solid_color, sdl_pixel_rect};
use crate::draw::path::Path;
use crate::types::{Color, Fixed, Rect};
impl SdlGpuRenderer<'_> {
pub(super) fn stroke_rect_inner(
&mut self,
area: &Rect,
clip: &Rect,
width: Fixed,
color: &Color,
radius: Fixed,
opa: u8,
) {
if radius == Fixed::ZERO && width == Fixed::ONE {
let phys_area = self.viewport.rect_to_physical(*area);
let phys_clip = self.viewport.rect_to_physical(*clip);
if let Some(sdl_rect) = sdl_pixel_rect(&phys_area, &phys_clip) {
apply_solid_color(self.canvas, color, opa);
let _ = self.canvas.draw_rect(sdl_rect);
}
return;
}
let path = Path::rounded_rect(
area.x + width / 2,
area.y + width / 2,
area.w - width,
area.h - width,
(radius - width / 2).max(Fixed::ZERO),
);
self.stroke_path_inner(&path, clip, width, color, opa);
}
}