get rendering semi fixed
This commit is contained in:
parent
93af87b482
commit
c2cb73fbc7
3 changed files with 30 additions and 12 deletions
|
@ -35,13 +35,15 @@ impl<'buf, 'win> RenderCtx<'buf, 'win> {
|
|||
}
|
||||
|
||||
pub fn clear(&mut self, color: u32) {
|
||||
self.rect(0, 0, self.win_size.0, self.win_size.1, color)
|
||||
self.rect(0, 0, self.context_size.0, self.context_size.1, color)
|
||||
}
|
||||
|
||||
// draw a rectangle in the context
|
||||
//
|
||||
// coordinates are relative to the context
|
||||
pub fn rect(&mut self, x: u32, y: u32, width: u32, height: u32, color: u32) {
|
||||
/// draw a rectangle in the context
|
||||
///
|
||||
/// coordinates are relative to the context
|
||||
///
|
||||
/// does not check against overflows
|
||||
pub fn rect_unchecked(&mut self, x: u32, y: u32, width: u32, height: u32, color: u32) {
|
||||
// position in buffer coordinates and not relative coordinates
|
||||
let x_buf_pos = self.context_pos.0 + x;
|
||||
let y_buf_pos = self.context_pos.1 + y;
|
||||
|
@ -56,6 +58,25 @@ impl<'buf, 'win> RenderCtx<'buf, 'win> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn rect(&mut self, x: u32, y: u32, width: u32, height: u32, color: u32) {
|
||||
if x >= self.context_size.0 || y >= self.context_size.1 || width == 0 || height == 0 {
|
||||
} else {
|
||||
let width = if (x + width) >= self.context_size.0 {
|
||||
width.saturating_sub((x + width) - self.context_size.0)
|
||||
} else {
|
||||
width
|
||||
};
|
||||
|
||||
let height = if (y + height) >= self.context_size.1 {
|
||||
height.saturating_sub((y + height) - self.context_size.1)
|
||||
} else {
|
||||
height
|
||||
};
|
||||
|
||||
self.rect_unchecked(x, y, width, height, color)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn force_present(self) {
|
||||
self.buffer.present().unwrap()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue