mirror of
https://github.com/eliasstepanik/imgui-rs.git
synced 2026-01-24 20:08:31 +00:00
ChannelsSplit: Panic when channel index overflows
This commit is contained in:
parent
95577a0d8c
commit
29b0d20fc1
@ -92,21 +92,35 @@ impl<'ui> WindowDrawList<'ui> {
|
|||||||
/// ```
|
/// ```
|
||||||
pub fn channels_split<F: FnOnce(&ChannelsSplit)>(&self, channels_count: u32, f: F) {
|
pub fn channels_split<F: FnOnce(&ChannelsSplit)>(&self, channels_count: u32, f: F) {
|
||||||
unsafe { sys::ImDrawList_ChannelsSplit(self.draw_list, channels_count as i32) };
|
unsafe { sys::ImDrawList_ChannelsSplit(self.draw_list, channels_count as i32) };
|
||||||
f(&ChannelsSplit(self));
|
f(&ChannelsSplit {
|
||||||
|
draw_list: self,
|
||||||
|
channels_count,
|
||||||
|
});
|
||||||
unsafe { sys::ImDrawList_ChannelsMerge(self.draw_list) };
|
unsafe { sys::ImDrawList_ChannelsMerge(self.draw_list) };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Represent the drawing interface within a call to `channels_split`.
|
/// Represent the drawing interface within a call to `channels_split`.
|
||||||
pub struct ChannelsSplit<'ui>(&'ui WindowDrawList<'ui>);
|
pub struct ChannelsSplit<'ui> {
|
||||||
|
draw_list: &'ui WindowDrawList<'ui>,
|
||||||
|
channels_count: u32,
|
||||||
|
}
|
||||||
|
|
||||||
impl<'ui> DrawAPI for ChannelsSplit<'ui> {
|
impl<'ui> DrawAPI for ChannelsSplit<'ui> {
|
||||||
fn draw_list(&self) -> *mut ImDrawList { self.0.draw_list }
|
fn draw_list(&self) -> *mut ImDrawList { self.draw_list.draw_list }
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'ui> ChannelsSplit<'ui> {
|
impl<'ui> ChannelsSplit<'ui> {
|
||||||
/// Change current channel
|
/// Change current channel
|
||||||
|
///
|
||||||
|
/// Panic if channel_index overflows the number of channels.
|
||||||
pub fn channels_set_current(&self, channel_index: u32) {
|
pub fn channels_set_current(&self, channel_index: u32) {
|
||||||
|
assert!(
|
||||||
|
channel_index < self.channels_count,
|
||||||
|
"Channel cannot be set! Provided channel index ({}) is higher than channel count ({}).",
|
||||||
|
channel_index,
|
||||||
|
self.channels_count
|
||||||
|
);
|
||||||
unsafe { sys::ImDrawList_ChannelsSetCurrent(self.draw_list(), channel_index as i32) };
|
unsafe { sys::ImDrawList_ChannelsSetCurrent(self.draw_list(), channel_index as i32) };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user