#![allow(non_upper_case_globals)]
use bitflags::bitflags;
use std::os::raw::{c_char, c_int};
use crate::render::renderer::TextureId;
use crate::string::ImStr;
use crate::widget::color_editors::*;
use crate::widget::combo_box::*;
use crate::widget::image::{Image, ImageButton};
use crate::widget::menu::*;
use crate::widget::progress_bar::ProgressBar;
use crate::widget::selectable::*;
use crate::window::{Window, WindowFlags, WindowFocusedFlags};
use crate::{Id, Ui};
#[deprecated(since = "0.2.0", note = "use ColorEditFlags instead")]
pub type ImGuiColorEditFlags = ColorEditFlags;
#[deprecated(since = "0.2.0", note = "use ComboFlags instead")]
pub type ImGuiComboFlags = ComboBoxFlags;
bitflags!(
#[repr(C)]
pub struct ImGuiDragDropFlags: c_int {
const SourceNoPreviewTooltip = 1;
const SourceNoDisableHover = 1 << 1;
const SourceNoHoldToOpenOthers = 1 << 2;
const SourceAllowNullID = 1 << 3;
const SourceExtern = 1 << 4;
const SourceAutoExpirePayload = 1 << 5;
const AcceptBeforeDelivery = 1 << 10;
const AcceptNoDrawDefaultRect = 1 << 11;
const AcceptNoPreviewTooltip = 1 << 12;
const AcceptPeekOnly = ImGuiDragDropFlags::AcceptBeforeDelivery.bits
| ImGuiDragDropFlags::AcceptNoDrawDefaultRect.bits;
}
);
bitflags!(
#[repr(C)]
pub struct ImDrawCornerFlags: c_int {
const TopLeft = 1;
const TopRight = 1 << 1;
const BotLeft = 1 << 2;
const BotRight = 1 << 3;
const Top = ImDrawCornerFlags::TopLeft.bits
| ImDrawCornerFlags::TopRight.bits;
const Bot = ImDrawCornerFlags::BotLeft.bits
| ImDrawCornerFlags::BotRight.bits;
const Left = ImDrawCornerFlags::TopLeft.bits
| ImDrawCornerFlags::BotLeft.bits;
const Right = ImDrawCornerFlags::TopRight.bits
| ImDrawCornerFlags::BotRight.bits;
const All = 0xF;
}
);
bitflags!(
#[repr(C)]
pub struct ImDrawListFlags: c_int {
const AntiAliasedLines = 1;
const AntiAliasedFill = 1 << 1;
}
);
bitflags!(
#[repr(C)]
pub struct ImGuiInputTextFlags: c_int {
const CharsDecimal = 1;
const CharsHexadecimal = 1 << 1;
const CharsUppercase = 1 << 2;
const CharsNoBlank = 1 << 3;
const AutoSelectAll = 1 << 4;
const EnterReturnsTrue = 1 << 5;
const CallbackCompletion = 1 << 6;
const CallbackHistory = 1 << 7;
const CallbackAlways = 1 << 8;
const CallbackCharFilter = 1 << 9;
const AllowTabInput = 1 << 10;
const CtrlEnterForNewLine = 1 << 11;
const NoHorizontalScroll = 1 << 12;
const AlwaysInsertMode = 1 << 13;
const ReadOnly = 1 << 14;
const Password = 1 << 15;
const NoUndoRedo = 1 << 16;
const CharsScientific = 1 << 17;
const CallbackResize = 1 << 18;
}
);
#[deprecated(since = "0.2.0", note = "use SelectableFlags instead")]
pub type ImGuiSelectableFlags = SelectableFlags;
bitflags!(
#[repr(C)]
pub struct ImGuiTreeNodeFlags: c_int {
const Selected = 1;
const Framed = 1 << 1;
const AllowItemOverlap = 1 << 2;
const NoTreePushOnOpen = 1 << 3;
const NoAutoOpenOnLog = 1 << 4;
const DefaultOpen = 1 << 5;
const OpenOnDoubleClick = 1 << 6;
const OpenOnArrow = 1 << 7;
const Leaf = 1 << 8;
const Bullet = 1 << 9;
const FramePadding = 1 << 10;
const NavLeftJumpsBackHere = 1 << 13;
const CollapsingHeader =
ImGuiTreeNodeFlags::Framed.bits | ImGuiTreeNodeFlags::NoTreePushOnOpen.bits |
ImGuiTreeNodeFlags::NoAutoOpenOnLog.bits;
}
);
#[deprecated(since = "0.2.0", note = "use WindowFlags instead")]
pub type ImGuiWindowFlags = WindowFlags;
impl<'ui> Ui<'ui> {
#[deprecated(since = "0.2.0", note = "use imgui::Window::new(...) instead")]
pub fn window<'p>(&self, name: &'p ImStr) -> Window<'p> {
Window::new(name)
}
#[deprecated(since = "0.2.0", note = "use Ui::window_size instead")]
pub fn get_window_size(&self) -> [f32; 2] {
let size = unsafe { sys::igGetWindowSize_nonUDT2() };
size.into()
}
#[deprecated(since = "0.2.0", note = "use Ui::window_pos instead")]
pub fn get_window_pos(&self) -> [f32; 2] {
let size = unsafe { sys::igGetWindowPos_nonUDT2() };
size.into()
}
#[deprecated(since = "0.2.0", note = "use Ui::content_region_max instead")]
pub fn get_content_region_max(&self) -> [f32; 2] {
let size = unsafe { sys::igGetContentRegionMax_nonUDT2() };
size.into()
}
#[deprecated(since = "0.2.0", note = "use Ui::content_region_avail instead")]
pub fn get_content_region_avail(&self) -> [f32; 2] {
let size = unsafe { sys::igGetContentRegionAvail_nonUDT2() };
size.into()
}
#[deprecated(since = "0.2.0", note = "use Ui::window_content_region_min instead")]
pub fn get_window_content_region_min(&self) -> [f32; 2] {
let size = unsafe { sys::igGetWindowContentRegionMin_nonUDT2() };
size.into()
}
#[deprecated(since = "0.2.0", note = "use Ui::window_content_region_max instead")]
pub fn get_window_content_region_max(&self) -> [f32; 2] {
let size = unsafe { sys::igGetWindowContentRegionMax_nonUDT2() };
size.into()
}
#[deprecated(
since = "0.2.0",
note = "use Ui::is_window_focused(WindowFlags::RootWindow) instead"
)]
pub fn is_root_window_focused(&self) -> bool {
unsafe { sys::igIsWindowFocused(WindowFocusedFlags::ROOT_WINDOW.bits() as i32) }
}
#[deprecated(
since = "0.2.0",
note = "use Ui::is_window_focused(WindowFlags::ChildWindows) instead"
)]
pub fn is_child_window_focused(&self) -> bool {
unsafe { sys::igIsWindowFocused(WindowFocusedFlags::CHILD_WINDOWS.bits() as i32) }
}
}
impl<'ui> Ui<'ui> {
#[deprecated(since = "0.2.0", note = "use imgui::ProgressBar::new(...) instead")]
pub fn progress_bar<'p>(&self, fraction: f32) -> ProgressBar<'p> {
ProgressBar::new(fraction)
}
}
impl<'ui> Ui<'ui> {
#[deprecated(since = "0.2.0", note = "use imgui::ColorEdit::new(...) instead")]
pub fn color_edit<'p, V: Into<EditableColor<'p>>>(
&self,
label: &'p ImStr,
value: V,
) -> ColorEdit<'p> {
ColorEdit::new(label, value.into())
}
#[deprecated(since = "0.2.0", note = "use imgui::ColorPicker::new(...) instead")]
pub fn color_picker<'p, V: Into<EditableColor<'p>>>(
&self,
label: &'p ImStr,
value: V,
) -> ColorPicker<'p> {
ColorPicker::new(label, value.into())
}
#[deprecated(since = "0.2.0", note = "use imgui::ColorButton::new(...) instead")]
pub fn color_button<'p>(&self, desc_id: &'p ImStr, color: [f32; 4]) -> ColorButton<'p> {
ColorButton::new(desc_id, color.into())
}
}
impl<'ui> Ui<'ui> {
#[deprecated(since = "0.2.0", note = "use Ui::cursor_screen_pos instead")]
pub fn get_cursor_screen_pos(&self) -> [f32; 2] {
let size = unsafe { sys::igGetCursorScreenPos_nonUDT2() };
size.into()
}
#[deprecated(since = "0.2.0", note = "use Ui::cursor_pos instead")]
pub fn get_cursor_pos(&self) -> [f32; 2] {
let size = unsafe { sys::igGetCursorPos_nonUDT2() };
size.into()
}
#[deprecated(
since = "0.2.0",
note = "use Ui::text_line_height_with_spacing instead"
)]
pub fn get_text_line_height_with_spacing(&self) -> f32 {
unsafe { sys::igGetTextLineHeightWithSpacing() }
}
}
impl<'ui> Ui<'ui> {
#[deprecated(since = "0.2.0", note = "use Ui::current_column_index instead")]
pub fn get_column_index(&self) -> i32 {
unsafe { sys::igGetColumnIndex() }
}
#[deprecated(since = "0.2.0", note = "use Ui::column_offset instead")]
pub fn get_column_offset(&self, column_index: i32) -> f32 {
unsafe { sys::igGetColumnOffset(column_index) }
}
#[deprecated(since = "0.2.0", note = "use Ui::column_width instead")]
pub fn get_column_width(&self, column_index: i32) -> f32 {
unsafe { sys::igGetColumnWidth(column_index) }
}
#[deprecated(since = "0.2.0", note = "use Ui::column_count instead")]
pub fn get_columns_count(&self) -> i32 {
unsafe { sys::igGetColumnsCount() }
}
}
impl<'ui> Ui<'ui> {
#[deprecated(since = "0.2.0", note = "use Ui::push_id instead")]
pub fn with_id<'a, F, I>(&self, id: I, f: F)
where
F: FnOnce(),
I: Into<Id<'a>>,
{
let _token = self.push_id(id);
f();
}
}
impl<'ui> Ui<'ui> {
#[deprecated(since = "0.2.0", note = "use Ui::item_rect_size instead")]
pub fn get_item_rect_size(&self) -> [f32; 2] {
let size = unsafe { sys::igGetItemRectSize_nonUDT2() };
size.into()
}
}
impl<'ui> Ui<'ui> {
#[deprecated(since = "0.2.0", note = "use imgui::Image::new(...) instead")]
pub fn image(&self, texture: TextureId, size: [f32; 2]) -> Image {
Image::new(texture, size)
}
#[deprecated(since = "0.2.0", note = "use imgui::ImageButton::new(...) instead")]
pub fn image_button(&self, texture: TextureId, size: [f32; 2]) -> ImageButton {
ImageButton::new(texture, size)
}
}
impl<'ui> Ui<'ui> {
#[deprecated(
since = "0.2.0",
note = "use imgui::ComboBox::new(...), and either build_simple(), build_simple_string(), or custom rendering (e.g. selectables) instead"
)]
pub fn combo<'p, StringType: AsRef<ImStr> + ?Sized>(
&self,
label: &'p ImStr,
current_item: &mut i32,
items: &'p [&'p StringType],
height_in_items: i32,
) -> bool {
let items_inner: Vec<*const c_char> = items
.into_iter()
.map(|item| item.as_ref().as_ptr())
.collect();
unsafe {
sys::igCombo(
label.as_ptr(),
current_item,
items_inner.as_ptr() as *mut *const c_char,
items_inner.len() as i32,
height_in_items,
)
}
}
}
impl<'ui> Ui<'ui> {
#[deprecated(since = "0.2.0", note = "use imgui::Selectable::new(...) instead")]
pub fn selectable(
&self,
label: &ImStr,
selected: bool,
flags: SelectableFlags,
size: [f32; 2],
) -> bool {
unsafe { sys::igSelectable(label.as_ptr(), selected, flags.bits() as i32, size.into()) }
}
}
impl<'ui> Ui<'ui> {
#[deprecated(since = "0.2.0", note = "use imgui::MenuItem::new(...) instead")]
pub fn menu_item<'a>(&self, label: &'a ImStr) -> MenuItem<'a> {
MenuItem::new(label)
}
}