mirror of
https://github.com/eliasstepanik/imgui-rs.git
synced 2026-01-11 21:48:36 +00:00
Builder constructors take &Ui instead
This commit is contained in:
parent
a48f0bdbd9
commit
96fe2a8e15
@ -18,8 +18,8 @@
|
||||
|
||||
- Button, selectable, histogram, plotlines, and progress bar accept size with `Into<ImVec2>`
|
||||
- `ImString::new` always succeeds and any interior NULs truncate the string. **Breaking change**
|
||||
- All builder constructor functions (e.g. Window::new) are no longer public.
|
||||
The only safe way to construct builders is through a `&Ui` reference.
|
||||
- All builder constructor functions (e.g. Window::new) now take `&Ui` reference
|
||||
to tie the lifetime of the builder to it.
|
||||
|
||||
### Deprecated
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ pub struct ChildFrame<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> ChildFrame<'ui, 'p> {
|
||||
pub(crate) fn new<S: Into<ImVec2>>(name: &'p ImStr, size: S) -> ChildFrame<'ui, 'p> {
|
||||
pub fn new<S: Into<ImVec2>>(_: &Ui<'ui>, name: &'p ImStr, size: S) -> ChildFrame<'ui, 'p> {
|
||||
ChildFrame {
|
||||
name,
|
||||
size: size.into(),
|
||||
|
||||
14
src/input.rs
14
src/input.rs
@ -135,7 +135,7 @@ pub struct InputText<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> InputText<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr, buf: &'p mut ImString) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr, buf: &'p mut ImString) -> Self {
|
||||
InputText {
|
||||
label: label,
|
||||
buf: buf,
|
||||
@ -172,7 +172,7 @@ pub struct InputInt<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> InputInt<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr, value: &'p mut i32) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr, value: &'p mut i32) -> Self {
|
||||
InputInt {
|
||||
label: label,
|
||||
value: value,
|
||||
@ -209,7 +209,7 @@ pub struct InputFloat<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> InputFloat<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr, value: &'p mut f32) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr, value: &'p mut f32) -> Self {
|
||||
InputFloat {
|
||||
label: label,
|
||||
value: value,
|
||||
@ -249,7 +249,7 @@ macro_rules! impl_input_floatn {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> $InputFloatN<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr, value: &'p mut [f32;$N]) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr, value: &'p mut [f32;$N]) -> Self {
|
||||
$InputFloatN {
|
||||
label: label,
|
||||
value: value,
|
||||
@ -290,7 +290,7 @@ macro_rules! impl_input_intn {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> $InputIntN<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr, value: &'p mut [i32;$N]) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr, value: &'p mut [i32;$N]) -> Self {
|
||||
$InputIntN {
|
||||
label: label,
|
||||
value: value,
|
||||
@ -325,7 +325,7 @@ pub struct ColorEdit3<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> ColorEdit3<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr, value: &'p mut [f32; 3]) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr, value: &'p mut [f32; 3]) -> Self {
|
||||
ColorEdit3 {
|
||||
label: label,
|
||||
value: value,
|
||||
@ -347,7 +347,7 @@ pub struct ColorEdit4<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> ColorEdit4<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr, value: &'p mut [f32; 4]) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr, value: &'p mut [f32; 4]) -> Self {
|
||||
ColorEdit4 {
|
||||
label: label,
|
||||
value: value,
|
||||
|
||||
56
src/lib.rs
56
src/lib.rs
@ -369,7 +369,7 @@ impl<'a> Ui<'a> {
|
||||
|
||||
// Window
|
||||
impl<'ui> Ui<'ui> {
|
||||
pub fn window<'p>(&self, name: &'p ImStr) -> Window<'ui, 'p> { Window::new(name) }
|
||||
pub fn window<'p>(&self, name: &'p ImStr) -> Window<'ui, 'p> { Window::new(self, name) }
|
||||
}
|
||||
|
||||
// Layout
|
||||
@ -501,49 +501,49 @@ impl<'ui> Ui<'ui> {
|
||||
label: &'p ImStr,
|
||||
value: &'p mut [f32; 3])
|
||||
-> ColorEdit3<'ui, 'p> {
|
||||
ColorEdit3::new(label, value)
|
||||
ColorEdit3::new(self, label, value)
|
||||
}
|
||||
pub fn color_edit4<'p>(&self,
|
||||
label: &'p ImStr,
|
||||
value: &'p mut [f32; 4])
|
||||
-> ColorEdit4<'ui, 'p> {
|
||||
ColorEdit4::new(label, value)
|
||||
ColorEdit4::new(self, label, value)
|
||||
}
|
||||
pub fn input_text<'p>(&self, label: &'p ImStr, buf: &'p mut ImString) -> InputText<'ui, 'p> {
|
||||
InputText::new(label, buf)
|
||||
InputText::new(self, label, buf)
|
||||
}
|
||||
pub fn input_float<'p>(&self, label: &'p ImStr, value: &'p mut f32) -> InputFloat<'ui, 'p> {
|
||||
InputFloat::new(label, value)
|
||||
InputFloat::new(self, label, value)
|
||||
}
|
||||
pub fn input_float2<'p>(&self,
|
||||
label: &'p ImStr,
|
||||
value: &'p mut [f32; 2])
|
||||
-> InputFloat2<'ui, 'p> {
|
||||
InputFloat2::new(label, value)
|
||||
InputFloat2::new(self, label, value)
|
||||
}
|
||||
pub fn input_float3<'p>(&self,
|
||||
label: &'p ImStr,
|
||||
value: &'p mut [f32; 3])
|
||||
-> InputFloat3<'ui, 'p> {
|
||||
InputFloat3::new(label, value)
|
||||
InputFloat3::new(self, label, value)
|
||||
}
|
||||
pub fn input_float4<'p>(&self,
|
||||
label: &'p ImStr,
|
||||
value: &'p mut [f32; 4])
|
||||
-> InputFloat4<'ui, 'p> {
|
||||
InputFloat4::new(label, value)
|
||||
InputFloat4::new(self, label, value)
|
||||
}
|
||||
pub fn input_int<'p>(&self, label: &'p ImStr, value: &'p mut i32) -> InputInt<'ui, 'p> {
|
||||
InputInt::new(label, value)
|
||||
InputInt::new(self, label, value)
|
||||
}
|
||||
pub fn input_int2<'p>(&self, label: &'p ImStr, value: &'p mut [i32; 2]) -> InputInt2<'ui, 'p> {
|
||||
InputInt2::new(label, value)
|
||||
InputInt2::new(self, label, value)
|
||||
}
|
||||
pub fn input_int3<'p>(&self, label: &'p ImStr, value: &'p mut [i32; 3]) -> InputInt3<'ui, 'p> {
|
||||
InputInt3::new(label, value)
|
||||
InputInt3::new(self, label, value)
|
||||
}
|
||||
pub fn input_int4<'p>(&self, label: &'p ImStr, value: &'p mut [i32; 4]) -> InputInt4<'ui, 'p> {
|
||||
InputInt4::new(label, value)
|
||||
InputInt4::new(self, label, value)
|
||||
}
|
||||
}
|
||||
|
||||
@ -555,7 +555,7 @@ impl<'ui> Ui<'ui> {
|
||||
min: f32,
|
||||
max: f32)
|
||||
-> SliderFloat<'ui, 'p> {
|
||||
SliderFloat::new(label, value, min, max)
|
||||
SliderFloat::new(self, label, value, min, max)
|
||||
}
|
||||
pub fn slider_float2<'p>(&self,
|
||||
label: &'p ImStr,
|
||||
@ -563,7 +563,7 @@ impl<'ui> Ui<'ui> {
|
||||
min: f32,
|
||||
max: f32)
|
||||
-> SliderFloat2<'ui, 'p> {
|
||||
SliderFloat2::new(label, value, min, max)
|
||||
SliderFloat2::new(self, label, value, min, max)
|
||||
}
|
||||
pub fn slider_float3<'p>(&self,
|
||||
label: &'p ImStr,
|
||||
@ -571,7 +571,7 @@ impl<'ui> Ui<'ui> {
|
||||
min: f32,
|
||||
max: f32)
|
||||
-> SliderFloat3<'ui, 'p> {
|
||||
SliderFloat3::new(label, value, min, max)
|
||||
SliderFloat3::new(self, label, value, min, max)
|
||||
}
|
||||
pub fn slider_float4<'p>(&self,
|
||||
label: &'p ImStr,
|
||||
@ -579,7 +579,7 @@ impl<'ui> Ui<'ui> {
|
||||
min: f32,
|
||||
max: f32)
|
||||
-> SliderFloat4<'ui, 'p> {
|
||||
SliderFloat4::new(label, value, min, max)
|
||||
SliderFloat4::new(self, label, value, min, max)
|
||||
}
|
||||
pub fn slider_int<'p>(&self,
|
||||
label: &'p ImStr,
|
||||
@ -587,7 +587,7 @@ impl<'ui> Ui<'ui> {
|
||||
min: i32,
|
||||
max: i32)
|
||||
-> SliderInt<'ui, 'p> {
|
||||
SliderInt::new(label, value, min, max)
|
||||
SliderInt::new(self, label, value, min, max)
|
||||
}
|
||||
pub fn slider_int2<'p>(&self,
|
||||
label: &'p ImStr,
|
||||
@ -595,7 +595,7 @@ impl<'ui> Ui<'ui> {
|
||||
min: i32,
|
||||
max: i32)
|
||||
-> SliderInt2<'ui, 'p> {
|
||||
SliderInt2::new(label, value, min, max)
|
||||
SliderInt2::new(self, label, value, min, max)
|
||||
}
|
||||
pub fn slider_int3<'p>(&self,
|
||||
label: &'p ImStr,
|
||||
@ -603,7 +603,7 @@ impl<'ui> Ui<'ui> {
|
||||
min: i32,
|
||||
max: i32)
|
||||
-> SliderInt3<'ui, 'p> {
|
||||
SliderInt3::new(label, value, min, max)
|
||||
SliderInt3::new(self, label, value, min, max)
|
||||
}
|
||||
pub fn slider_int4<'p>(&self,
|
||||
label: &'p ImStr,
|
||||
@ -611,15 +611,15 @@ impl<'ui> Ui<'ui> {
|
||||
min: i32,
|
||||
max: i32)
|
||||
-> SliderInt4<'ui, 'p> {
|
||||
SliderInt4::new(label, value, min, max)
|
||||
SliderInt4::new(self, label, value, min, max)
|
||||
}
|
||||
}
|
||||
|
||||
// Widgets: Trees
|
||||
impl<'ui> Ui<'ui> {
|
||||
pub fn tree_node<'p>(&self, id: &'p ImStr) -> TreeNode<'ui, 'p> { TreeNode::new(id) }
|
||||
pub fn tree_node<'p>(&self, id: &'p ImStr) -> TreeNode<'ui, 'p> { TreeNode::new(self, id) }
|
||||
pub fn collapsing_header<'p>(&self, label: &'p ImStr) -> CollapsingHeader<'ui, 'p> {
|
||||
CollapsingHeader::new(label)
|
||||
CollapsingHeader::new(self, label)
|
||||
}
|
||||
}
|
||||
|
||||
@ -655,8 +655,8 @@ impl<'ui> Ui<'ui> {
|
||||
unsafe { imgui_sys::igEndMenuBar() };
|
||||
}
|
||||
}
|
||||
pub fn menu<'p>(&self, label: &'p ImStr) -> Menu<'ui, 'p> { Menu::new(label) }
|
||||
pub fn menu_item<'p>(&self, label: &'p ImStr) -> MenuItem<'ui, 'p> { MenuItem::new(label) }
|
||||
pub fn menu<'p>(&self, label: &'p ImStr) -> Menu<'ui, 'p> { Menu::new(self, label) }
|
||||
pub fn menu_item<'p>(&self, label: &'p ImStr) -> MenuItem<'ui, 'p> { MenuItem::new(self, label) }
|
||||
}
|
||||
|
||||
// Widgets: Popups
|
||||
@ -716,13 +716,13 @@ impl<'ui> Ui<'ui> {
|
||||
|
||||
impl<'ui> Ui<'ui> {
|
||||
pub fn plot_lines<'p>(&self, label: &'p ImStr, values: &'p [f32]) -> PlotLines<'ui, 'p> {
|
||||
PlotLines::new(label, values)
|
||||
PlotLines::new(self, label, values)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'ui> Ui<'ui> {
|
||||
pub fn plot_histogram<'p>(&self, label: &'p ImStr, values: &'p [f32]) -> PlotHistogram<'ui, 'p> {
|
||||
PlotHistogram::new(label, values)
|
||||
PlotHistogram::new(self, label, values)
|
||||
}
|
||||
}
|
||||
|
||||
@ -753,7 +753,7 @@ impl<'ui> Ui<'ui> {
|
||||
/// .overlay_text(im_str!("Progress!"))
|
||||
/// .build();
|
||||
/// ```
|
||||
pub fn progress_bar<'p>(&self, fraction: f32) -> ProgressBar<'ui, 'p> { ProgressBar::new(fraction) }
|
||||
pub fn progress_bar<'p>(&self, fraction: f32) -> ProgressBar<'ui, 'p> { ProgressBar::new(self, fraction) }
|
||||
}
|
||||
|
||||
impl<'ui> Ui<'ui> {
|
||||
@ -777,7 +777,7 @@ impl<'ui> Ui<'ui> {
|
||||
/// ui.text_colored((1.0, 0.0, 0.0, 1.0), im_str!("hello mate!"));
|
||||
/// });
|
||||
/// });
|
||||
pub fn child_frame<'p, S: Into<ImVec2>>(&self, name: &'p ImStr, size: S) -> ChildFrame<'ui, 'p> { ChildFrame::new(name, size.into()) }
|
||||
pub fn child_frame<'p, S: Into<ImVec2>>(&self, name: &'p ImStr, size: S) -> ChildFrame<'ui, 'p> { ChildFrame::new(self, name, size.into()) }
|
||||
}
|
||||
|
||||
impl<'ui> Ui<'ui> {
|
||||
|
||||
@ -12,7 +12,7 @@ pub struct Menu<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> Menu<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr) -> Self {
|
||||
Menu {
|
||||
label: label,
|
||||
enabled: true,
|
||||
@ -43,7 +43,7 @@ pub struct MenuItem<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> MenuItem<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr) -> Self {
|
||||
MenuItem {
|
||||
label: label,
|
||||
shortcut: None,
|
||||
|
||||
@ -18,7 +18,7 @@ pub struct PlotHistogram<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> PlotHistogram<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr, values: &'p [f32]) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr, values: &'p [f32]) -> Self {
|
||||
PlotHistogram {
|
||||
label: label,
|
||||
values: values,
|
||||
|
||||
@ -18,7 +18,7 @@ pub struct PlotLines<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> PlotLines<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr, values: &'p [f32]) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr, values: &'p [f32]) -> Self {
|
||||
PlotLines {
|
||||
label: label,
|
||||
values: values,
|
||||
|
||||
@ -20,7 +20,7 @@ impl<'ui, 'p> ProgressBar<'ui, 'p> {
|
||||
/// The progress bar will be automatically sized to fill
|
||||
/// the entire width of the window if no custom size is
|
||||
/// specified.
|
||||
pub(crate) fn new(fraction: f32) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, fraction: f32) -> Self {
|
||||
ProgressBar {
|
||||
fraction: fraction,
|
||||
size: ImVec2::new(-1.0, 0.0),
|
||||
|
||||
@ -16,7 +16,7 @@ pub struct SliderInt<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> SliderInt<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr, value: &'p mut i32, min: i32, max: i32) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr, value: &'p mut i32, min: i32, max: i32) -> Self {
|
||||
SliderInt {
|
||||
label: label,
|
||||
value: value,
|
||||
@ -55,7 +55,7 @@ macro_rules! impl_slider_intn {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> $SliderIntN<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr, value: &'p mut [i32; $N], min: i32, max: i32) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr, value: &'p mut [i32; $N], min: i32, max: i32) -> Self {
|
||||
$SliderIntN {
|
||||
label: label,
|
||||
value: value,
|
||||
@ -100,7 +100,7 @@ pub struct SliderFloat<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> SliderFloat<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr, value: &'p mut f32, min: f32, max: f32) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr, value: &'p mut f32, min: f32, max: f32) -> Self {
|
||||
SliderFloat {
|
||||
label: label,
|
||||
value: value,
|
||||
@ -147,7 +147,7 @@ macro_rules! impl_slider_floatn {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> $SliderFloatN<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr, value: &'p mut [f32; $N], min: f32, max: f32) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr, value: &'p mut [f32; $N], min: f32, max: f32) -> Self {
|
||||
$SliderFloatN {
|
||||
label: label,
|
||||
value: value,
|
||||
|
||||
@ -116,15 +116,15 @@ impl fmt::Debug for ImStr {
|
||||
|
||||
impl ImStr {
|
||||
#[deprecated(since = "0.0.15", note = "please use ImStr::from_bytes_with_nul_unchecked instead")]
|
||||
pub unsafe fn from_bytes_unchecked<'a>(bytes: &'a [u8]) -> &'a ImStr {
|
||||
pub unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &ImStr {
|
||||
ImStr::from_utf8_with_nul_unchecked(bytes)
|
||||
}
|
||||
pub unsafe fn from_utf8_with_nul_unchecked<'a>(bytes: &'a [u8]) -> &'a ImStr {
|
||||
pub unsafe fn from_utf8_with_nul_unchecked(bytes: &[u8]) -> &ImStr {
|
||||
mem::transmute(bytes)
|
||||
}
|
||||
pub fn as_ptr(&self) -> *const c_char { self.0.as_ptr() }
|
||||
pub fn to_str(&self) -> &str {
|
||||
unsafe { str::from_utf8_unchecked(&self.0.to_bytes()) }
|
||||
unsafe { str::from_utf8_unchecked(self.0.to_bytes()) }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ pub struct TreeNode<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> TreeNode<'ui, 'p> {
|
||||
pub(crate) fn new(id: &'p ImStr) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, id: &'p ImStr) -> Self {
|
||||
TreeNode {
|
||||
id: id,
|
||||
label: None,
|
||||
@ -62,7 +62,7 @@ pub struct CollapsingHeader<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> CollapsingHeader<'ui, 'p> {
|
||||
pub(crate) fn new(label: &'p ImStr) -> Self {
|
||||
pub fn new(_: &Ui<'ui>, label: &'p ImStr) -> Self {
|
||||
CollapsingHeader {
|
||||
label: label,
|
||||
flags: ImGuiTreeNodeFlags::empty(),
|
||||
|
||||
@ -26,7 +26,7 @@ pub struct Window<'ui, 'p> {
|
||||
}
|
||||
|
||||
impl<'ui, 'p> Window<'ui, 'p> {
|
||||
pub(crate) fn new(name: &'p ImStr) -> Window<'ui, 'p> {
|
||||
pub fn new(_: &Ui<'ui>, name: &'p ImStr) -> Window<'ui, 'p> {
|
||||
Window {
|
||||
pos: (0.0, 0.0),
|
||||
pos_cond: ImGuiSetCond::empty(),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user