mirror of
https://github.com/eliasstepanik/imgui-rs.git
synced 2026-01-23 19:38:27 +00:00
Merge pull request #119 from malikolivier/update-cimgui-to-1.53.1
Update cimgui to 1.53.1
This commit is contained in:
commit
c838bc1939
@ -2,6 +2,60 @@
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- New things in imgui/cimgui 1.53.1
|
||||||
|
- Style: Add `PopupRounding`, `FrameBorderSize`, `WindowBorderSize`, `PopupBorderSize`.
|
||||||
|
- DemoWindow: Add `no_close` state.
|
||||||
|
- Input: Add `no_undo_redo` method.
|
||||||
|
- *imgui-sys*:
|
||||||
|
- `igStyleColorsDark` and `igStyleColorsLight`
|
||||||
|
- DragDrop low level API
|
||||||
|
- `igGetFrameHeight`
|
||||||
|
- `igBeginCombo`, `igEndCombo`
|
||||||
|
- `igSetItemDefaultFocus`
|
||||||
|
- `igGetOverlayDrawList` and `igGetDrawListSharedData`
|
||||||
|
- `ImFontConfig_DefaultConstructor`
|
||||||
|
- `ImDrawList_AddImageRounded`
|
||||||
|
- Input: Add `read_only` and `password` methods.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Upgrade to imgui/cimgui 1.53.1
|
||||||
|
- Rename `Ui::show_test_window` to `Ui::show_demo_window`. Keep redirection.
|
||||||
|
- Rename `sys::igGetItemsLineHeightWithSpacing` to `sys::igGetFrameHeightWithSpacing`.
|
||||||
|
Keep redirection.
|
||||||
|
- Rename `ImGuiTreeNodeFlags::AllowOverlapMode` to `ImGuiTreeNodeFlags::AllowItemOverlap`.
|
||||||
|
`sys::igSetNextWindowContentSize()`. Keep redirection.
|
||||||
|
- Rename `sys::ImGuiTextBuffer_append()` helper to `appendf()`.
|
||||||
|
- Rename `ImGuiStyleVar::ChildWindowRounding` to `ImGuiStyleVar::ChildRounding`.
|
||||||
|
Keep redirection.
|
||||||
|
- Rename `StyleVar::ChildWindowRounding` to `StyleVar::ChildRounding`.
|
||||||
|
Keep redirection.
|
||||||
|
- Rename `ImGuiCol::ChildWindowBg` to `ImGuiCol::ChildBg`.
|
||||||
|
Keep redirection.
|
||||||
|
|
||||||
|
### Deprecated
|
||||||
|
|
||||||
|
- Various imgui-sys things that were deprecated in imgui/cimgui 1.53.1
|
||||||
|
- Obsolete `sys::igIsRootWindowFocused()` in favor of using
|
||||||
|
`sys::igIsWindowFocused(ImGuiFocusedFlags::RootWindow)`.
|
||||||
|
- Obsolete `sys::igIsRootWindowOrAnyChildFocused()` in favor of using
|
||||||
|
`sys::igIsWindowFocused(ImGuiFocusedFlags::RootAndChildWindows)`.
|
||||||
|
- Obsolete `sys::igIsRootWindowOrAnyChildHovered()` in favor of using
|
||||||
|
`sys::igIsWindowHovered(ImGuiHoveredFlags::RootAndChildWindows)`.
|
||||||
|
- Obsolete `sys::SetNextWindowContentWidth()` in favor of using
|
||||||
|
- Obsolete `Window::show_borders`. Use `StyleVar` instead.
|
||||||
|
- Obsolete `ImGuiCol::ComboBg`. Use `PopupBg` instead.
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
- Features that were removed in imgui/cimgui 1.53.1
|
||||||
|
- Remove `anti_aliased: bool` final parameter of `sys::ImDrawList_AddPolyline`
|
||||||
|
and `sys::ImDrawList_AddConvexPolyFilled`.
|
||||||
|
- Remove `ImGuiWindowFlags::ShowBorders` window flag. Borders are now fully
|
||||||
|
set up in the ImGuiStyle structure.
|
||||||
|
|
||||||
## [0.0.18] - 2017-12-23
|
## [0.0.18] - 2017-12-23
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@ -9,7 +9,7 @@ const CLEAR_COLOR: [f32; 4] = [0.2, 0.2, 0.2, 1.0];
|
|||||||
fn main() {
|
fn main() {
|
||||||
support::run("test_window.rs".to_owned(), CLEAR_COLOR, |ui| {
|
support::run("test_window.rs".to_owned(), CLEAR_COLOR, |ui| {
|
||||||
let mut open = true;
|
let mut open = true;
|
||||||
ui.show_test_window(&mut open);
|
ui.show_demo_window(&mut open);
|
||||||
open
|
open
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,12 +23,12 @@ struct State {
|
|||||||
show_app_metrics: bool,
|
show_app_metrics: bool,
|
||||||
show_app_about: bool,
|
show_app_about: bool,
|
||||||
no_titlebar: bool,
|
no_titlebar: bool,
|
||||||
no_border: bool,
|
|
||||||
no_resize: bool,
|
no_resize: bool,
|
||||||
no_move: bool,
|
no_move: bool,
|
||||||
no_scrollbar: bool,
|
no_scrollbar: bool,
|
||||||
no_collapse: bool,
|
no_collapse: bool,
|
||||||
no_menu: bool,
|
no_menu: bool,
|
||||||
|
no_close: bool,
|
||||||
wrap_width: f32,
|
wrap_width: f32,
|
||||||
buf: ImString,
|
buf: ImString,
|
||||||
item: i32,
|
item: i32,
|
||||||
@ -72,12 +72,12 @@ impl Default for State {
|
|||||||
show_app_metrics: false,
|
show_app_metrics: false,
|
||||||
show_app_about: false,
|
show_app_about: false,
|
||||||
no_titlebar: false,
|
no_titlebar: false,
|
||||||
no_border: true,
|
|
||||||
no_resize: false,
|
no_resize: false,
|
||||||
no_move: false,
|
no_move: false,
|
||||||
no_scrollbar: false,
|
no_scrollbar: false,
|
||||||
no_collapse: false,
|
no_collapse: false,
|
||||||
no_menu: false,
|
no_menu: false,
|
||||||
|
no_close: false,
|
||||||
wrap_width: 200.0,
|
wrap_width: 200.0,
|
||||||
buf: buf,
|
buf: buf,
|
||||||
item: 0,
|
item: 0,
|
||||||
@ -267,17 +267,18 @@ fn show_test_window(ui: &Ui, state: &mut State, opened: &mut bool) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
ui.window(im_str!("ImGui Demo"))
|
let mut window = ui.window(im_str!("ImGui Demo"))
|
||||||
.title_bar(!state.no_titlebar)
|
.title_bar(!state.no_titlebar)
|
||||||
.show_borders(!state.no_border)
|
|
||||||
.resizable(!state.no_resize)
|
.resizable(!state.no_resize)
|
||||||
.movable(!state.no_move)
|
.movable(!state.no_move)
|
||||||
.scroll_bar(!state.no_scrollbar)
|
.scroll_bar(!state.no_scrollbar)
|
||||||
.collapsible(!state.no_collapse)
|
.collapsible(!state.no_collapse)
|
||||||
.menu_bar(!state.no_menu)
|
.menu_bar(!state.no_menu)
|
||||||
.size((550.0, 680.0), ImGuiCond::FirstUseEver)
|
.size((550.0, 680.0), ImGuiCond::FirstUseEver);
|
||||||
.opened(opened)
|
if !state.no_close {
|
||||||
.build(|| {
|
window = window.opened(opened)
|
||||||
|
}
|
||||||
|
window.build(|| {
|
||||||
ui.push_item_width(-140.0);
|
ui.push_item_width(-140.0);
|
||||||
ui.text(format!("dear imgui says hello. ({})", imgui::get_version()));
|
ui.text(format!("dear imgui says hello. ({})", imgui::get_version()));
|
||||||
ui.menu_bar(|| {
|
ui.menu_bar(|| {
|
||||||
@ -344,15 +345,15 @@ fn show_test_window(ui: &Ui, state: &mut State, opened: &mut bool) {
|
|||||||
if ui.collapsing_header(im_str!("Window options")).build() {
|
if ui.collapsing_header(im_str!("Window options")).build() {
|
||||||
ui.checkbox(im_str!("No titlebar"), &mut state.no_titlebar);
|
ui.checkbox(im_str!("No titlebar"), &mut state.no_titlebar);
|
||||||
ui.same_line(150.0);
|
ui.same_line(150.0);
|
||||||
ui.checkbox(im_str!("No border"), &mut state.no_border);
|
|
||||||
ui.same_line(300.0);
|
|
||||||
ui.checkbox(im_str!("No resize"), &mut state.no_resize);
|
|
||||||
ui.checkbox(im_str!("No move"), &mut state.no_move);
|
|
||||||
ui.same_line(150.0);
|
|
||||||
ui.checkbox(im_str!("No scrollbar"), &mut state.no_scrollbar);
|
ui.checkbox(im_str!("No scrollbar"), &mut state.no_scrollbar);
|
||||||
ui.same_line(300.0);
|
ui.same_line(300.0);
|
||||||
ui.checkbox(im_str!("No collapse"), &mut state.no_collapse);
|
|
||||||
ui.checkbox(im_str!("No menu"), &mut state.no_menu);
|
ui.checkbox(im_str!("No menu"), &mut state.no_menu);
|
||||||
|
ui.checkbox(im_str!("No move"), &mut state.no_move);
|
||||||
|
ui.same_line(150.0);
|
||||||
|
ui.checkbox(im_str!("No resize"), &mut state.no_resize);
|
||||||
|
ui.same_line(300.0);
|
||||||
|
ui.checkbox(im_str!("No collapse"), &mut state.no_collapse);
|
||||||
|
ui.checkbox(im_str!("No close"), &mut state.no_close);
|
||||||
|
|
||||||
ui.tree_node(im_str!("Style")).build(|| {
|
ui.tree_node(im_str!("Style")).build(|| {
|
||||||
ui.show_default_style_editor()
|
ui.show_default_style_editor()
|
||||||
|
|||||||
@ -13,6 +13,7 @@ build = "build.rs"
|
|||||||
travis-ci = { repository = "Gekkio/imgui-rs" }
|
travis-ci = { repository = "Gekkio/imgui-rs" }
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
libc = "0.2"
|
||||||
bitflags = "1.0"
|
bitflags = "1.0"
|
||||||
glium = { version = "0.21", default-features = false, optional = true }
|
glium = { version = "0.21", default-features = false, optional = true }
|
||||||
gfx = { version = "0.17", optional = true }
|
gfx = { version = "0.17", optional = true }
|
||||||
|
|||||||
@ -3,6 +3,8 @@
|
|||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate bitflags;
|
extern crate bitflags;
|
||||||
|
|
||||||
|
extern crate libc;
|
||||||
|
|
||||||
#[cfg(feature = "gfx")]
|
#[cfg(feature = "gfx")]
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate gfx;
|
extern crate gfx;
|
||||||
@ -13,7 +15,6 @@ extern crate glium;
|
|||||||
use std::convert::From;
|
use std::convert::From;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::os::raw::{c_char, c_float, c_int, c_short, c_uchar, c_uint, c_ushort, c_void};
|
use std::os::raw::{c_char, c_float, c_int, c_short, c_uchar, c_uint, c_ushort, c_void};
|
||||||
use std::ptr;
|
|
||||||
use std::slice;
|
use std::slice;
|
||||||
|
|
||||||
#[cfg(feature = "gfx")]
|
#[cfg(feature = "gfx")]
|
||||||
@ -44,7 +45,7 @@ pub enum ImGuiCol {
|
|||||||
Text,
|
Text,
|
||||||
TextDisabled,
|
TextDisabled,
|
||||||
WindowBg,
|
WindowBg,
|
||||||
ChildWindowBg,
|
ChildBg,
|
||||||
PopupBg,
|
PopupBg,
|
||||||
Border,
|
Border,
|
||||||
BorderShadow,
|
BorderShadow,
|
||||||
@ -59,7 +60,6 @@ pub enum ImGuiCol {
|
|||||||
ScrollbarGrab,
|
ScrollbarGrab,
|
||||||
ScrollbarGrabHovered,
|
ScrollbarGrabHovered,
|
||||||
ScrollbarGrabActive,
|
ScrollbarGrabActive,
|
||||||
ComboBg,
|
|
||||||
CheckMark,
|
CheckMark,
|
||||||
SliderGrab,
|
SliderGrab,
|
||||||
SliderGrabActive,
|
SliderGrabActive,
|
||||||
@ -84,15 +84,21 @@ pub enum ImGuiCol {
|
|||||||
PlotHistogramHovered,
|
PlotHistogramHovered,
|
||||||
TextSelectedBg,
|
TextSelectedBg,
|
||||||
ModalWindowDarkening,
|
ModalWindowDarkening,
|
||||||
|
DragDropTarget,
|
||||||
}
|
}
|
||||||
impl ImGuiCol {
|
impl ImGuiCol {
|
||||||
|
#[deprecated(since = "0.0.19", note = "ComboBg has been merged with PopupBg. Please use PopupBg instead")]
|
||||||
|
pub const ComboBg: ImGuiCol = ImGuiCol::PopupBg;
|
||||||
|
#[deprecated(since = "0.0.19", note = "please use ChildBg instead")]
|
||||||
|
pub const ChildWindowBg: ImGuiCol = ImGuiCol::ChildBg;
|
||||||
|
|
||||||
pub fn values() -> &'static [ImGuiCol] {
|
pub fn values() -> &'static [ImGuiCol] {
|
||||||
use ImGuiCol::*;
|
use ImGuiCol::*;
|
||||||
static values: &'static [ImGuiCol] = &[
|
static values: &'static [ImGuiCol] = &[
|
||||||
Text,
|
Text,
|
||||||
TextDisabled,
|
TextDisabled,
|
||||||
WindowBg,
|
WindowBg,
|
||||||
ChildWindowBg,
|
ChildBg,
|
||||||
PopupBg,
|
PopupBg,
|
||||||
Border,
|
Border,
|
||||||
BorderShadow,
|
BorderShadow,
|
||||||
@ -107,7 +113,6 @@ impl ImGuiCol {
|
|||||||
ScrollbarGrab,
|
ScrollbarGrab,
|
||||||
ScrollbarGrabHovered,
|
ScrollbarGrabHovered,
|
||||||
ScrollbarGrabActive,
|
ScrollbarGrabActive,
|
||||||
ComboBg,
|
|
||||||
CheckMark,
|
CheckMark,
|
||||||
SliderGrab,
|
SliderGrab,
|
||||||
SliderGrabActive,
|
SliderGrabActive,
|
||||||
@ -132,6 +137,7 @@ impl ImGuiCol {
|
|||||||
PlotHistogramHovered,
|
PlotHistogramHovered,
|
||||||
TextSelectedBg,
|
TextSelectedBg,
|
||||||
ModalWindowDarkening,
|
ModalWindowDarkening,
|
||||||
|
DragDropTarget,
|
||||||
];
|
];
|
||||||
values
|
values
|
||||||
}
|
}
|
||||||
@ -145,17 +151,27 @@ pub enum ImGuiStyleVar {
|
|||||||
Alpha,
|
Alpha,
|
||||||
WindowPadding,
|
WindowPadding,
|
||||||
WindowRounding,
|
WindowRounding,
|
||||||
|
WindowBorderSize,
|
||||||
WindowMinSize,
|
WindowMinSize,
|
||||||
ChildWindowRounding,
|
ChildRounding,
|
||||||
|
ChildBorderSize,
|
||||||
|
PopupRounding,
|
||||||
|
PopupBorderSize,
|
||||||
FramePadding,
|
FramePadding,
|
||||||
FrameRounding,
|
FrameRounding,
|
||||||
|
FrameBorderSize,
|
||||||
ItemSpacing,
|
ItemSpacing,
|
||||||
ItemInnerSpacing,
|
ItemInnerSpacing,
|
||||||
IndentSpacing,
|
IndentSpacing,
|
||||||
GrabMinSize,
|
GrabMinSize,
|
||||||
ButtonTextAlign,
|
ButtonTextAlign,
|
||||||
}
|
}
|
||||||
pub const ImGuiStyleVar_COUNT: usize = 12;
|
pub const ImGuiStyleVar_COUNT: usize = 17;
|
||||||
|
|
||||||
|
impl ImGuiStyleVar {
|
||||||
|
#[deprecated(since = "0.0.19", note = "please use ChildRounding instead")]
|
||||||
|
pub const ChildWindowRounding: ImGuiStyleVar = ImGuiStyleVar::ChildRounding;
|
||||||
|
}
|
||||||
|
|
||||||
/// A key identifier (ImGui-side enum)
|
/// A key identifier (ImGui-side enum)
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
@ -235,7 +251,6 @@ bitflags!(
|
|||||||
const NoScrollWithMouse = 1 << 4;
|
const NoScrollWithMouse = 1 << 4;
|
||||||
const NoCollapse = 1 << 5;
|
const NoCollapse = 1 << 5;
|
||||||
const AlwaysAutoResize = 1 << 6;
|
const AlwaysAutoResize = 1 << 6;
|
||||||
const ShowBorders = 1 << 7;
|
|
||||||
const NoSavedSettings = 1 << 8;
|
const NoSavedSettings = 1 << 8;
|
||||||
const NoInputs = 1 << 9;
|
const NoInputs = 1 << 9;
|
||||||
const MenuBar = 1 << 10;
|
const MenuBar = 1 << 10;
|
||||||
@ -245,6 +260,7 @@ bitflags!(
|
|||||||
const AlwaysVerticalScrollbar = 1 << 14;
|
const AlwaysVerticalScrollbar = 1 << 14;
|
||||||
const AlwaysHorizontalScrollbar = 1 << 15;
|
const AlwaysHorizontalScrollbar = 1 << 15;
|
||||||
const AlwaysUseWindowPadding = 1 << 16;
|
const AlwaysUseWindowPadding = 1 << 16;
|
||||||
|
const ResizeFromAnySide = 1 << 17;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -279,6 +295,7 @@ bitflags!(
|
|||||||
const AlwaysInsertMode = 1 << 13;
|
const AlwaysInsertMode = 1 << 13;
|
||||||
const ReadOnly = 1 << 14;
|
const ReadOnly = 1 << 14;
|
||||||
const Password = 1 << 15;
|
const Password = 1 << 15;
|
||||||
|
const NoUndoRedo = 1 << 16;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -298,7 +315,9 @@ bitflags!(
|
|||||||
pub struct ImGuiTreeNodeFlags: c_int {
|
pub struct ImGuiTreeNodeFlags: c_int {
|
||||||
const Selected = 1;
|
const Selected = 1;
|
||||||
const Framed = 1 << 1;
|
const Framed = 1 << 1;
|
||||||
|
#[deprecated(since = "0.0.19", note = "please use AllowItemOverlap instead")]
|
||||||
const AllowOverlapMode = 1 << 2;
|
const AllowOverlapMode = 1 << 2;
|
||||||
|
const AllowItemOverlap = 1 << 2;
|
||||||
const NoTreePushOnOpen = 1 << 3;
|
const NoTreePushOnOpen = 1 << 3;
|
||||||
const NoAutoOpenOnLog = 1 << 4;
|
const NoAutoOpenOnLog = 1 << 4;
|
||||||
const DefaultOpen = 1 << 5;
|
const DefaultOpen = 1 << 5;
|
||||||
@ -312,16 +331,94 @@ bitflags!(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
bitflags!(
|
||||||
|
/// Flags for window focus check
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct ImGuiFocusedFlags: c_int {
|
||||||
|
const ChildWindows = 1 << 0;
|
||||||
|
const RootWindow = 1 << 1;
|
||||||
|
const RootAndChildWindows =
|
||||||
|
ImGuiFocusedFlags::RootWindow.bits | ImGuiFocusedFlags::ChildWindows.bits;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
bitflags!(
|
bitflags!(
|
||||||
/// Flags for hover checks
|
/// Flags for hover checks
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
pub struct ImGuiHoveredFlags: c_int {
|
pub struct ImGuiHoveredFlags: c_int {
|
||||||
const AllowWhenBlockedByPopup = 1;
|
const ChildWindows = 1 << 0;
|
||||||
const AllowWhenBlockedByActiveItem = 1 << 2;
|
const RootWindow = 1 << 1;
|
||||||
const AllowWhenOverlapped = 1 << 3;
|
const AllowWhenBlockedByPopup = 1 << 2;
|
||||||
|
const AllowWhenBlockedByActiveItem = 1 << 4;
|
||||||
|
const AllowWhenOverlapped = 1 << 5;
|
||||||
const RectOnly = ImGuiHoveredFlags::AllowWhenBlockedByPopup.bits
|
const RectOnly = ImGuiHoveredFlags::AllowWhenBlockedByPopup.bits
|
||||||
| ImGuiHoveredFlags::AllowWhenBlockedByActiveItem.bits
|
| ImGuiHoveredFlags::AllowWhenBlockedByActiveItem.bits
|
||||||
| ImGuiHoveredFlags::AllowWhenOverlapped.bits;
|
| ImGuiHoveredFlags::AllowWhenOverlapped.bits;
|
||||||
|
const RootAndChildWindows = ImGuiFocusedFlags::RootWindow.bits
|
||||||
|
| ImGuiFocusedFlags::ChildWindows.bits;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
bitflags!(
|
||||||
|
/// Flags for igBeginCombo
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct ImGuiComboFlags: c_int {
|
||||||
|
/// Align the popup toward the left by default
|
||||||
|
const PopupAlignLeft = 1 << 0;
|
||||||
|
/// Max ~4 items visible.
|
||||||
|
/// Tip: If you want your combo popup to be a specific size you can use
|
||||||
|
/// igSetNextWindowSizeConstraints() prior to calling igBeginCombo()
|
||||||
|
const HeightSmall = 1 << 1;
|
||||||
|
/// Max ~8 items visible (default)
|
||||||
|
const HeightRegular = 1 << 2;
|
||||||
|
/// Max ~20 items visible
|
||||||
|
const HeightLarge = 1 << 3;
|
||||||
|
/// As many fitting items as possible
|
||||||
|
const HeightLargest = 1 << 4;
|
||||||
|
const HeightMask = ImGuiComboFlags::HeightSmall.bits
|
||||||
|
| ImGuiComboFlags::HeightRegular.bits
|
||||||
|
| ImGuiComboFlags::HeightLarge.bits
|
||||||
|
| ImGuiComboFlags::HeightLargest.bits;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
bitflags!(
|
||||||
|
/// Flags for igBeginDragDropSource(), igAcceptDragDropPayload()
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct ImGuiDragDropFlags: c_int {
|
||||||
|
// BeginDragDropSource() flags
|
||||||
|
/// By default, a successful call to igBeginDragDropSource opens a
|
||||||
|
/// tooltip so you can display a preview or description of the source
|
||||||
|
/// contents. This flag disable this behavior.
|
||||||
|
const SourceNoPreviewTooltip = 1 << 0;
|
||||||
|
/// By default, when dragging we clear data so that igIsItemHovered()
|
||||||
|
/// will return true, to avoid subsequent user code submitting tooltips.
|
||||||
|
/// This flag disable this behavior so you can still call
|
||||||
|
/// igIsItemHovered() on the source item.
|
||||||
|
const SourceNoDisableHover = 1 << 1;
|
||||||
|
/// Disable the behavior that allows to open tree nodes and collapsing
|
||||||
|
/// header by holding over them while dragging a source item.
|
||||||
|
const SourceNoHoldToOpenOthers = 1 << 2;
|
||||||
|
/// Allow items such as igText(), igImage() that have no unique
|
||||||
|
/// identifier to be used as drag source, by manufacturing a temporary
|
||||||
|
/// identifier based on their window-relative position. This is
|
||||||
|
/// extremely unusual within the dear imgui ecosystem and so we made it
|
||||||
|
/// explicit.
|
||||||
|
const SourceAllowNullID = 1 << 3;
|
||||||
|
/// External source (from outside of imgui), won't attempt to read
|
||||||
|
/// current item/window info. Will always return true. Only one Extern
|
||||||
|
/// source can be active simultaneously.
|
||||||
|
const SourceExtern = 1 << 4;
|
||||||
|
// AcceptDragDropPayload() flags
|
||||||
|
/// igAcceptDragDropPayload() will returns true even before the mouse
|
||||||
|
/// button is released. You can then call igIsDelivery() to test if the
|
||||||
|
/// payload needs to be delivered.
|
||||||
|
const AcceptBeforeDelivery = 1 << 10;
|
||||||
|
/// Do not draw the default highlight rectangle when hovering over target.
|
||||||
|
const AcceptNoDrawDefaultRect = 1 << 11;
|
||||||
|
/// For peeking ahead and inspecting the payload before delivery.
|
||||||
|
const AcceptPeekOnly = ImGuiDragDropFlags::AcceptBeforeDelivery.bits
|
||||||
|
| ImGuiDragDropFlags::AcceptNoDrawDefaultRect.bits;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -331,8 +428,8 @@ bitflags!(
|
|||||||
pub struct ImDrawCornerFlags: c_int {
|
pub struct ImDrawCornerFlags: c_int {
|
||||||
const TopLeft = 1 << 0;
|
const TopLeft = 1 << 0;
|
||||||
const TopRight = 1 << 1;
|
const TopRight = 1 << 1;
|
||||||
const BotRight = 1 << 2;
|
const BotLeft = 1 << 2;
|
||||||
const BotLeft = 1 << 3;
|
const BotRight = 1 << 3;
|
||||||
const Top = ImDrawCornerFlags::TopLeft.bits
|
const Top = ImDrawCornerFlags::TopLeft.bits
|
||||||
| ImDrawCornerFlags::TopRight.bits;
|
| ImDrawCornerFlags::TopRight.bits;
|
||||||
const Bot = ImDrawCornerFlags::BotLeft.bits
|
const Bot = ImDrawCornerFlags::BotLeft.bits
|
||||||
@ -345,6 +442,14 @@ bitflags!(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
bitflags!(
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct ImDrawListFlags: c_int {
|
||||||
|
const AntiAliasedLines = 1 << 0;
|
||||||
|
const AntiAliasedFill = 1 << 1;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
pub type ImGuiTextEditCallback = Option<
|
pub type ImGuiTextEditCallback = Option<
|
||||||
extern "C" fn(data: *mut ImGuiTextEditCallbackData) -> c_int,
|
extern "C" fn(data: *mut ImGuiTextEditCallbackData) -> c_int,
|
||||||
>;
|
>;
|
||||||
@ -443,19 +548,29 @@ pub struct ImGuiStyle {
|
|||||||
pub alpha: c_float,
|
pub alpha: c_float,
|
||||||
/// Padding within a window
|
/// Padding within a window
|
||||||
pub window_padding: ImVec2,
|
pub window_padding: ImVec2,
|
||||||
/// Minimum window size
|
|
||||||
pub window_min_size: ImVec2,
|
|
||||||
/// Radius of window corners rounding. Set to 0.0f to have rectangular windows
|
/// Radius of window corners rounding. Set to 0.0f to have rectangular windows
|
||||||
pub window_rounding: c_float,
|
pub window_rounding: c_float,
|
||||||
|
/// Thickness of border around windows. Generally set to 0.0f or 1.0f. Other values not well tested.
|
||||||
|
pub window_border_size: c_float,
|
||||||
|
/// Minimum window size
|
||||||
|
pub window_min_size: ImVec2,
|
||||||
/// Alignment for title bar text. Defaults to (0.0f, 0.5f) for left-aligned, vertically centered
|
/// Alignment for title bar text. Defaults to (0.0f, 0.5f) for left-aligned, vertically centered
|
||||||
pub window_title_align: ImVec2,
|
pub window_title_align: ImVec2,
|
||||||
/// Radius of child window corners rounding. Set to 0.0f to have rectangular child windows
|
/// Radius of child window corners rounding. Set to 0.0f to have rectangular child windows
|
||||||
pub child_window_rounding: c_float,
|
pub child_rounding: c_float,
|
||||||
|
/// Thickness of border around child windows. Generally set to 0.0f or 1.0f. Other values not well tested.
|
||||||
|
pub child_border_size: c_float,
|
||||||
|
/// Radius of popup window corners rounding. Set to 0.0f to have rectangular child windows
|
||||||
|
pub popup_rounding: c_float,
|
||||||
|
/// Thickness of border around popup or tooltip windows. Generally set to 0.0f or 1.0f. Other values not well tested.
|
||||||
|
pub popup_border_size: c_float,
|
||||||
/// Padding within a framed rectangle (used by most widgets)
|
/// Padding within a framed rectangle (used by most widgets)
|
||||||
pub frame_padding: ImVec2,
|
pub frame_padding: ImVec2,
|
||||||
/// Radius of frame corners rounding. Set to 0.0f to have rectangular frames (used by most
|
/// Radius of frame corners rounding. Set to 0.0f to have rectangular frames (used by most
|
||||||
/// widgets).
|
/// widgets).
|
||||||
pub frame_rounding: c_float,
|
pub frame_rounding: c_float,
|
||||||
|
/// Thickness of border around frames. Generally set to 0.0f or 1.0f. Other values not well tested.
|
||||||
|
pub frame_border_size: c_float,
|
||||||
/// Horizontal and vertical spacing between widgets/lines
|
/// Horizontal and vertical spacing between widgets/lines
|
||||||
pub item_spacing: ImVec2,
|
pub item_spacing: ImVec2,
|
||||||
/// Horizontal and vertical spacing between within elements of a composed
|
/// Horizontal and vertical spacing between within elements of a composed
|
||||||
@ -490,7 +605,7 @@ pub struct ImGuiStyle {
|
|||||||
/// Enable anti-aliasing on lines/borders. Disable if you are really short on CPU/GPU.
|
/// Enable anti-aliasing on lines/borders. Disable if you are really short on CPU/GPU.
|
||||||
pub anti_aliased_lines: bool,
|
pub anti_aliased_lines: bool,
|
||||||
/// Enable anti-aliasing on filled shapes (rounded rectangles, circles, etc.)
|
/// Enable anti-aliasing on filled shapes (rounded rectangles, circles, etc.)
|
||||||
pub anti_aliased_shapes: bool,
|
pub anti_aliased_fill: bool,
|
||||||
/// Tessellation tolerance. Decrease for highly tessellated curves (higher quality, more
|
/// Tessellation tolerance. Decrease for highly tessellated curves (higher quality, more
|
||||||
/// polygons), increase to reduce quality.
|
/// polygons), increase to reduce quality.
|
||||||
pub curve_tessellation_tol: c_float,
|
pub curve_tessellation_tol: c_float,
|
||||||
@ -522,7 +637,8 @@ pub struct ImGuiIO {
|
|||||||
pub display_visible_min: ImVec2,
|
pub display_visible_min: ImVec2,
|
||||||
pub display_visible_max: ImVec2,
|
pub display_visible_max: ImVec2,
|
||||||
|
|
||||||
pub osx_behaviors: bool,
|
pub opt_mac_osx_behaviors: bool,
|
||||||
|
pub opt_cursor_blink: bool,
|
||||||
|
|
||||||
pub render_draw_lists_fn: Option<extern "C" fn(data: *mut ImDrawData)>,
|
pub render_draw_lists_fn: Option<extern "C" fn(data: *mut ImDrawData)>,
|
||||||
|
|
||||||
@ -567,6 +683,7 @@ pub struct ImGuiIO {
|
|||||||
mouse_down_owned: [bool; 5],
|
mouse_down_owned: [bool; 5],
|
||||||
mouse_down_duration: [c_float; 5],
|
mouse_down_duration: [c_float; 5],
|
||||||
mouse_down_duration_prev: [c_float; 5],
|
mouse_down_duration_prev: [c_float; 5],
|
||||||
|
mouse_drag_max_distance_abs: [ImVec2; 5],
|
||||||
mouse_drag_max_distance_sqr: [c_float; 5],
|
mouse_drag_max_distance_sqr: [c_float; 5],
|
||||||
keys_down_duration: [c_float; 512],
|
keys_down_duration: [c_float; 512],
|
||||||
keys_down_duration_prev: [c_float; 512],
|
keys_down_duration_prev: [c_float; 512],
|
||||||
@ -597,6 +714,28 @@ pub struct ImGuiTextFilter {
|
|||||||
pub count_grep: c_int,
|
pub count_grep: c_int,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Data payload for Drag and Drop operations
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct ImGuiPayload {
|
||||||
|
/// Data (copied and owned by dear imgui)
|
||||||
|
pub data: *const c_void,
|
||||||
|
/// Data size
|
||||||
|
pub data_size: c_int,
|
||||||
|
|
||||||
|
/// Source item id
|
||||||
|
source_id: ImGuiID,
|
||||||
|
/// Source parent id (if available)
|
||||||
|
source_parent_id: ImGuiID,
|
||||||
|
/// Data timestamp
|
||||||
|
data_frame_count: c_int,
|
||||||
|
/// Data type tag (short user-supplied string)
|
||||||
|
data_type: [c_char; 8 + 1],
|
||||||
|
/// Set when AcceptDragDropPayload() was called and mouse has been hovering the target item (nb: handle overlapping drag targets)
|
||||||
|
preview: bool,
|
||||||
|
/// Set when AcceptDragDropPayload() was called and mouse button is released over the target item.
|
||||||
|
delivery: bool,
|
||||||
|
}
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
pub struct ImGuiTextBuffer {
|
pub struct ImGuiTextBuffer {
|
||||||
pub buf: ImVector<c_char>,
|
pub buf: ImVector<c_char>,
|
||||||
@ -706,6 +845,8 @@ pub struct ImDrawList {
|
|||||||
pub idx_buffer: ImVector<ImDrawIdx>,
|
pub idx_buffer: ImVector<ImDrawIdx>,
|
||||||
pub vtx_buffer: ImVector<ImDrawVert>,
|
pub vtx_buffer: ImVector<ImDrawVert>,
|
||||||
|
|
||||||
|
flags: ImDrawListFlags,
|
||||||
|
data: *const ImDrawListSharedData,
|
||||||
owner_name: *const c_char,
|
owner_name: *const c_char,
|
||||||
vtx_current_idx: c_uint,
|
vtx_current_idx: c_uint,
|
||||||
vtx_write_ptr: *mut ImDrawVert,
|
vtx_write_ptr: *mut ImDrawVert,
|
||||||
@ -718,6 +859,20 @@ pub struct ImDrawList {
|
|||||||
channels: ImVector<ImDrawChannel>,
|
channels: ImVector<ImDrawChannel>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct ImDrawListSharedData {
|
||||||
|
/// UV of white pixel in the atlas
|
||||||
|
tex_uv_white_pixel: ImVec2,
|
||||||
|
/// Current/default font (optional, for simplified AddText overload)
|
||||||
|
font: *mut ImFont,
|
||||||
|
/// Current/default font size (optional, for simplified AddText overload)
|
||||||
|
font_size: c_float,
|
||||||
|
curve_tessellation_tol: c_float,
|
||||||
|
/// Value for PushClipRectFullscreen()
|
||||||
|
clip_rect_fullscreen: ImVec4,
|
||||||
|
circle_vtx12: [ImVec2; 12],
|
||||||
|
}
|
||||||
|
|
||||||
/// All draw command lists required to render the frame
|
/// All draw command lists required to render the frame
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
pub struct ImDrawData {
|
pub struct ImDrawData {
|
||||||
@ -756,31 +911,6 @@ pub struct ImFontConfig {
|
|||||||
name: [c_char; 32],
|
name: [c_char; 32],
|
||||||
dst_font: *mut ImFont,
|
dst_font: *mut ImFont,
|
||||||
}
|
}
|
||||||
impl ImFontConfig {
|
|
||||||
// This function only exists because cimgui does not provide a wrapper around
|
|
||||||
// `ImGuiConfig::ImGuiConfig()`. This code is based off that constructor.
|
|
||||||
pub fn new() -> ImFontConfig {
|
|
||||||
ImFontConfig {
|
|
||||||
font_data: ptr::null_mut(),
|
|
||||||
font_data_size: 0,
|
|
||||||
font_data_owned_by_atlas: true,
|
|
||||||
font_no: 0,
|
|
||||||
size_pixels: 0.0,
|
|
||||||
oversample_h: 3,
|
|
||||||
oversample_v: 1,
|
|
||||||
pixel_snap_h: false,
|
|
||||||
glyph_extra_spacing: ImVec2::zero(),
|
|
||||||
glyph_offset: ImVec2::zero(),
|
|
||||||
glyph_ranges: ptr::null(),
|
|
||||||
merge_mode: false,
|
|
||||||
rasterizer_flags: 0,
|
|
||||||
rasterizer_multiply: 1.0,
|
|
||||||
|
|
||||||
name: [0; 32],
|
|
||||||
dst_font: ptr::null_mut(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
#[derive(Copy, Clone, Debug, Default)]
|
#[derive(Copy, Clone, Debug, Default)]
|
||||||
@ -855,17 +985,26 @@ extern "C" {
|
|||||||
pub fn igGetDrawData() -> *mut ImDrawData;
|
pub fn igGetDrawData() -> *mut ImDrawData;
|
||||||
pub fn igNewFrame();
|
pub fn igNewFrame();
|
||||||
pub fn igRender();
|
pub fn igRender();
|
||||||
|
pub fn igEndFrame();
|
||||||
pub fn igShutdown();
|
pub fn igShutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Demo/Debug/Info
|
// Demo/Debug/Info
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn igShowTestWindow(opened: *mut bool);
|
pub fn igShowDemoWindow(opened: *mut bool);
|
||||||
pub fn igShowMetricsWindow(opened: *mut bool);
|
pub fn igShowMetricsWindow(opened: *mut bool);
|
||||||
pub fn igShowStyleEditor(style: *mut ImGuiStyle);
|
pub fn igShowStyleEditor(style: *mut ImGuiStyle);
|
||||||
|
pub fn igShowStyleSelector(label: *const c_char);
|
||||||
|
pub fn igShowFontSelector(label: *const c_char);
|
||||||
pub fn igShowUserGuide();
|
pub fn igShowUserGuide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(non_snake_case)]
|
||||||
|
#[deprecated(since = "0.0.19", note = "please use igShowDemoWindow instead")]
|
||||||
|
pub unsafe fn igShowTestWindow(opened: *mut bool) {
|
||||||
|
igShowDemoWindow(opened)
|
||||||
|
}
|
||||||
|
|
||||||
// Window
|
// Window
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn igBegin(name: *const c_char, open: *mut bool, flags: ImGuiWindowFlags) -> bool;
|
pub fn igBegin(name: *const c_char, open: *mut bool, flags: ImGuiWindowFlags) -> bool;
|
||||||
@ -907,7 +1046,6 @@ extern "C" {
|
|||||||
custom_callback_data: *mut c_void,
|
custom_callback_data: *mut c_void,
|
||||||
);
|
);
|
||||||
pub fn igSetNextWindowContentSize(size: ImVec2);
|
pub fn igSetNextWindowContentSize(size: ImVec2);
|
||||||
pub fn igSetNextWindowContentWidth(width: c_float);
|
|
||||||
pub fn igSetNextWindowCollapsed(collapsed: bool, cond: ImGuiCond);
|
pub fn igSetNextWindowCollapsed(collapsed: bool, cond: ImGuiCond);
|
||||||
pub fn igSetNextWindowFocus();
|
pub fn igSetNextWindowFocus();
|
||||||
pub fn igSetWindowPos(pos: ImVec2, cond: ImGuiCond);
|
pub fn igSetWindowPos(pos: ImVec2, cond: ImGuiCond);
|
||||||
@ -927,7 +1065,6 @@ extern "C" {
|
|||||||
pub fn igSetScrollY(scroll_y: c_float);
|
pub fn igSetScrollY(scroll_y: c_float);
|
||||||
pub fn igSetScrollHere(center_y_ratio: c_float);
|
pub fn igSetScrollHere(center_y_ratio: c_float);
|
||||||
pub fn igSetScrollFromPosY(pos_y: c_float, center_y_ratio: c_float);
|
pub fn igSetScrollFromPosY(pos_y: c_float, center_y_ratio: c_float);
|
||||||
pub fn igSetKeyboardFocusHere(offset: c_int);
|
|
||||||
pub fn igSetStateStorage(tree: *mut ImGuiStorage);
|
pub fn igSetStateStorage(tree: *mut ImGuiStorage);
|
||||||
pub fn igGetStateStorage() -> *mut ImGuiStorage;
|
pub fn igGetStateStorage() -> *mut ImGuiStorage;
|
||||||
}
|
}
|
||||||
@ -940,6 +1077,15 @@ pub unsafe fn igSetNextWindowPosCenter(cond: ImGuiCond) {
|
|||||||
let pivot = ImVec2::new(0.5, 0.5);
|
let pivot = ImVec2::new(0.5, 0.5);
|
||||||
igSetNextWindowPos(pos, cond, pivot);
|
igSetNextWindowPos(pos, cond, pivot);
|
||||||
}
|
}
|
||||||
|
/// Set next window content's width.
|
||||||
|
///
|
||||||
|
/// Original non-deprecated version preserved last Y value set by
|
||||||
|
/// [`igSetNextWindowContentSize`].
|
||||||
|
#[allow(non_snake_case)]
|
||||||
|
#[deprecated(since = "0.0.19", note = "please use igSetNextWindowContentSize instead")]
|
||||||
|
pub unsafe fn igSetNextWindowContentWidth(width: c_float) {
|
||||||
|
igSetNextWindowContentSize(ImVec2 { x: width, y: 0.0 })
|
||||||
|
}
|
||||||
|
|
||||||
// Parameter stack (shared)
|
// Parameter stack (shared)
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -996,13 +1142,20 @@ extern "C" {
|
|||||||
pub fn igAlignTextToFramePadding();
|
pub fn igAlignTextToFramePadding();
|
||||||
pub fn igGetTextLineHeight() -> c_float;
|
pub fn igGetTextLineHeight() -> c_float;
|
||||||
pub fn igGetTextLineHeightWithSpacing() -> c_float;
|
pub fn igGetTextLineHeightWithSpacing() -> c_float;
|
||||||
pub fn igGetItemsLineHeightWithSpacing() -> c_float;
|
pub fn igGetFrameHeight() -> c_float;
|
||||||
|
pub fn igGetFrameHeightWithSpacing() -> c_float;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
#[deprecated(since = "0.0.18", note = "please use igAlignTextToFramePadding instead")]
|
#[deprecated(since = "0.0.18", note = "please use igAlignTextToFramePadding instead")]
|
||||||
pub unsafe fn igAlignFirstTextHeightToWidgets() { igAlignTextToFramePadding(); }
|
pub unsafe fn igAlignFirstTextHeightToWidgets() { igAlignTextToFramePadding(); }
|
||||||
|
|
||||||
|
#[allow(non_snake_case)]
|
||||||
|
#[deprecated(since = "0.0.19", note = "please use igGetFrameHeightWithSpacing instead")]
|
||||||
|
pub unsafe fn igGetItemsLineHeightWithSpacing() -> c_float {
|
||||||
|
igGetFrameHeightWithSpacing()
|
||||||
|
}
|
||||||
|
|
||||||
// Columns
|
// Columns
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn igColumns(count: c_int, id: *const c_char, border: bool);
|
pub fn igColumns(count: c_int, id: *const c_char, border: bool);
|
||||||
@ -1067,28 +1220,6 @@ extern "C" {
|
|||||||
pub fn igCheckboxFlags(label: *const c_char, flags: *mut c_uint, flags_value: c_uint) -> bool;
|
pub fn igCheckboxFlags(label: *const c_char, flags: *mut c_uint, flags_value: c_uint) -> bool;
|
||||||
pub fn igRadioButtonBool(label: *const c_char, active: bool) -> bool;
|
pub fn igRadioButtonBool(label: *const c_char, active: bool) -> bool;
|
||||||
pub fn igRadioButton(label: *const c_char, v: *mut c_int, v_button: c_int) -> bool;
|
pub fn igRadioButton(label: *const c_char, v: *mut c_int, v_button: c_int) -> bool;
|
||||||
pub fn igCombo(
|
|
||||||
label: *const c_char,
|
|
||||||
current_item: *mut c_int,
|
|
||||||
items: *const *const c_char,
|
|
||||||
items_count: c_int,
|
|
||||||
height_in_items: c_int,
|
|
||||||
) -> bool;
|
|
||||||
pub fn igCombo2(
|
|
||||||
label: *const c_char,
|
|
||||||
current_item: *mut c_int,
|
|
||||||
items_separated_by_zeros: *const c_char,
|
|
||||||
height_in_items: c_int,
|
|
||||||
) -> bool;
|
|
||||||
pub fn igCombo3(
|
|
||||||
label: *const c_char,
|
|
||||||
current_item: *mut c_int,
|
|
||||||
items_getter: extern "C" fn(data: *mut c_void, idx: c_int, out_text: *mut *const c_char)
|
|
||||||
-> bool,
|
|
||||||
data: *mut c_void,
|
|
||||||
items_count: c_int,
|
|
||||||
height_in_items: c_int,
|
|
||||||
) -> bool;
|
|
||||||
pub fn igPlotLines(
|
pub fn igPlotLines(
|
||||||
label: *const c_char,
|
label: *const c_char,
|
||||||
values: *const c_float,
|
values: *const c_float,
|
||||||
@ -1136,6 +1267,37 @@ extern "C" {
|
|||||||
pub fn igProgressBar(fraction: c_float, size_arg: *const ImVec2, overlay: *const c_char);
|
pub fn igProgressBar(fraction: c_float, size_arg: *const ImVec2, overlay: *const c_char);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Combo
|
||||||
|
extern "C" {
|
||||||
|
pub fn igBeginCombo(
|
||||||
|
label: *const c_char,
|
||||||
|
preview_value: *const c_char,
|
||||||
|
flags: ImGuiComboFlags,
|
||||||
|
) -> bool;
|
||||||
|
pub fn igEndCombo();
|
||||||
|
pub fn igCombo(
|
||||||
|
label: *const c_char,
|
||||||
|
current_item: *mut c_int,
|
||||||
|
items: *const *const c_char,
|
||||||
|
items_count: c_int,
|
||||||
|
height_in_items: c_int,
|
||||||
|
) -> bool;
|
||||||
|
pub fn igCombo2(
|
||||||
|
label: *const c_char,
|
||||||
|
current_item: *mut c_int,
|
||||||
|
items_separated_by_zeros: *const c_char,
|
||||||
|
height_in_items: c_int,
|
||||||
|
) -> bool;
|
||||||
|
pub fn igCombo3(
|
||||||
|
label: *const c_char,
|
||||||
|
current_item: *mut c_int,
|
||||||
|
items_getter: extern "C" fn(data: *mut c_void, idx: c_int, out_text: *mut *const c_char) -> bool,
|
||||||
|
data: *mut c_void,
|
||||||
|
items_count: c_int,
|
||||||
|
height_in_items: c_int,
|
||||||
|
) -> bool;
|
||||||
|
}
|
||||||
|
|
||||||
// Widgets: Color Editor/Picker
|
// Widgets: Color Editor/Picker
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn igColorEdit3(
|
pub fn igColorEdit3(
|
||||||
@ -1564,6 +1726,24 @@ extern "C" {
|
|||||||
pub fn igLogText(fmt: *const c_char, ...);
|
pub fn igLogText(fmt: *const c_char, ...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DragDrop
|
||||||
|
extern "C" {
|
||||||
|
/// Call when current ID is active.
|
||||||
|
///
|
||||||
|
/// When this returns true you need to:
|
||||||
|
///
|
||||||
|
/// 1. call [`igSetDragDropPayload`] exactly once,
|
||||||
|
/// 2. you may render the payload visual/description,
|
||||||
|
/// 3. pcall [`igEndDragDropSource`]
|
||||||
|
pub fn igBeginDragDropSource(flags: ImGuiDragDropFlags, mouse_button: c_int) -> bool;
|
||||||
|
/// Use 'cond' to choose to submit payload on drag start or every frame
|
||||||
|
pub fn igSetDragDropPayload(type_: *const c_char, data: *const c_void, size: libc::size_t, cond: ImGuiCond) -> bool;
|
||||||
|
pub fn igEndDragDropSource();
|
||||||
|
pub fn igBeginDragDropTarget() -> bool;
|
||||||
|
pub fn igAcceptDragDropPayload(type_: *const c_char, flags: ImGuiDragDropFlags) -> *const ImGuiPayload;
|
||||||
|
pub fn igEndDragDropTarget();
|
||||||
|
}
|
||||||
|
|
||||||
// Clipping
|
// Clipping
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn igPushClipRect(
|
pub fn igPushClipRect(
|
||||||
@ -1577,6 +1757,14 @@ extern "C" {
|
|||||||
// Styles
|
// Styles
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn igStyleColorsClassic(dst: *mut ImGuiStyle);
|
pub fn igStyleColorsClassic(dst: *mut ImGuiStyle);
|
||||||
|
pub fn igStyleColorsDark(dst: *mut ImGuiStyle);
|
||||||
|
pub fn igStyleColorsLight(dst: *mut ImGuiStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Focus
|
||||||
|
extern "C" {
|
||||||
|
pub fn igSetItemDefaultFocus();
|
||||||
|
pub fn igSetKeyboardFocusHere(offset: c_int);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Utilities
|
// Utilities
|
||||||
@ -1591,11 +1779,8 @@ extern "C" {
|
|||||||
pub fn igGetItemRectMax(out: *mut ImVec2);
|
pub fn igGetItemRectMax(out: *mut ImVec2);
|
||||||
pub fn igGetItemRectSize(out: *mut ImVec2);
|
pub fn igGetItemRectSize(out: *mut ImVec2);
|
||||||
pub fn igSetItemAllowOverlap();
|
pub fn igSetItemAllowOverlap();
|
||||||
pub fn igIsWindowFocused() -> bool;
|
pub fn igIsWindowFocused(flags: ImGuiFocusedFlags) -> bool;
|
||||||
pub fn igIsWindowHovered(flags: ImGuiHoveredFlags) -> bool;
|
pub fn igIsWindowHovered(flags: ImGuiHoveredFlags) -> bool;
|
||||||
pub fn igIsRootWindowFocused() -> bool;
|
|
||||||
pub fn igIsRootWindowOrAnyChildFocused() -> bool;
|
|
||||||
pub fn igIsRootWindowOrAnyChildHovered(flags: ImGuiHoveredFlags) -> bool;
|
|
||||||
pub fn igIsAnyWindowHovered() -> bool;
|
pub fn igIsAnyWindowHovered() -> bool;
|
||||||
pub fn igIsRectVisible(item_size: ImVec2) -> bool;
|
pub fn igIsRectVisible(item_size: ImVec2) -> bool;
|
||||||
pub fn igIsRectVisible2(rect_min: *const ImVec2, rect_max: *const ImVec2) -> bool;
|
pub fn igIsRectVisible2(rect_min: *const ImVec2, rect_max: *const ImVec2) -> bool;
|
||||||
@ -1645,6 +1830,28 @@ extern "C" {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(non_snake_case)]
|
||||||
|
#[deprecated(since = "0.0.19", note = "please use igIsWindowFocused(ImGuiFocusedFlags::RootWindow) instead")]
|
||||||
|
pub unsafe fn igIsRootWindowFocused() -> bool {
|
||||||
|
igIsWindowFocused(ImGuiFocusedFlags::RootWindow)
|
||||||
|
}
|
||||||
|
#[allow(non_snake_case)]
|
||||||
|
#[deprecated(since = "0.0.19", note = "please use igIsWindowFocused(ImGuiFocusedFlags::RootAndChildWindows) instead")]
|
||||||
|
pub unsafe fn igIsRootWindowOrAnyChildFocused() -> bool {
|
||||||
|
igIsWindowFocused(ImGuiFocusedFlags::RootAndChildWindows)
|
||||||
|
}
|
||||||
|
#[allow(non_snake_case)]
|
||||||
|
#[deprecated(since = "0.0.19", note = "please use igIsWindowFocused(ImGuiFocusedFlags::RootAndChildWindows) instead")]
|
||||||
|
pub unsafe fn igIsRootWindowOrAnyChildHovered(_flags: ImGuiHoveredFlags) -> bool {
|
||||||
|
igIsWindowHovered(ImGuiHoveredFlags::RootAndChildWindows)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DrawList
|
||||||
|
extern "C" {
|
||||||
|
pub fn igGetOverlayDrawList() -> *mut ImDrawList;
|
||||||
|
pub fn igGetDrawListSharedData() -> *mut ImDrawListSharedData;
|
||||||
|
}
|
||||||
|
|
||||||
// Inputs
|
// Inputs
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn igGetKeyIndex(imgui_key: ImGuiKey) -> c_int;
|
pub fn igGetKeyIndex(imgui_key: ImGuiKey) -> c_int;
|
||||||
@ -1701,6 +1908,10 @@ extern "C" {
|
|||||||
pub fn igSetCurrentContext(ctx: *mut ImGuiContext);
|
pub fn igSetCurrentContext(ctx: *mut ImGuiContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
pub fn ImFontConfig_DefaultConstructor(config: *mut ImFontConfig);
|
||||||
|
}
|
||||||
|
|
||||||
// ImGuiIO
|
// ImGuiIO
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn ImGuiIO_AddInputCharacter(c: c_ushort);
|
pub fn ImGuiIO_AddInputCharacter(c: c_ushort);
|
||||||
@ -1739,7 +1950,7 @@ extern "C" {
|
|||||||
pub fn ImGuiTextBuffer_empty(buffer: *mut ImGuiTextBuffer) -> bool;
|
pub fn ImGuiTextBuffer_empty(buffer: *mut ImGuiTextBuffer) -> bool;
|
||||||
pub fn ImGuiTextBuffer_clear(buffer: *mut ImGuiTextBuffer);
|
pub fn ImGuiTextBuffer_clear(buffer: *mut ImGuiTextBuffer);
|
||||||
pub fn ImGuiTextBuffer_c_str(buffer: *const ImGuiTextBuffer) -> *const c_char;
|
pub fn ImGuiTextBuffer_c_str(buffer: *const ImGuiTextBuffer) -> *const c_char;
|
||||||
pub fn ImGuiTextBuffer_append(buffer: *const ImGuiTextBuffer, fmt: *const c_char, ...);
|
pub fn ImGuiTextBuffer_appendf(buffer: *const ImGuiTextBuffer, fmt: *const c_char, ...);
|
||||||
// pub fn ImGuiTextBuffer_appendv(
|
// pub fn ImGuiTextBuffer_appendv(
|
||||||
// buffer: *const ImGuiTextBuffer,
|
// buffer: *const ImGuiTextBuffer,
|
||||||
// fmt: *const c_char,
|
// fmt: *const c_char,
|
||||||
@ -1967,6 +2178,17 @@ extern "C" {
|
|||||||
uv_d: ImVec2,
|
uv_d: ImVec2,
|
||||||
col: ImU32,
|
col: ImU32,
|
||||||
);
|
);
|
||||||
|
pub fn ImDrawList_AddImageRounded(
|
||||||
|
list: *mut ImDrawList,
|
||||||
|
user_texture_id: ImTextureID,
|
||||||
|
a: ImVec2,
|
||||||
|
b: ImVec2,
|
||||||
|
uv_a: ImVec2,
|
||||||
|
uv_b: ImVec2,
|
||||||
|
col: ImU32,
|
||||||
|
rounding: c_float,
|
||||||
|
rounding_corners: c_int,
|
||||||
|
);
|
||||||
pub fn ImDrawList_AddPolyLine(
|
pub fn ImDrawList_AddPolyLine(
|
||||||
list: *mut ImDrawList,
|
list: *mut ImDrawList,
|
||||||
points: *const ImVec2,
|
points: *const ImVec2,
|
||||||
@ -1974,14 +2196,12 @@ extern "C" {
|
|||||||
col: ImU32,
|
col: ImU32,
|
||||||
closed: bool,
|
closed: bool,
|
||||||
thickness: c_float,
|
thickness: c_float,
|
||||||
anti_aliased: bool,
|
|
||||||
);
|
);
|
||||||
pub fn ImDrawList_AddConvexPolyFilled(
|
pub fn ImDrawList_AddConvexPolyFilled(
|
||||||
list: *mut ImDrawList,
|
list: *mut ImDrawList,
|
||||||
points: *const ImVec2,
|
points: *const ImVec2,
|
||||||
num_points: c_int,
|
num_points: c_int,
|
||||||
col: ImU32,
|
col: ImU32,
|
||||||
anti_aliased: bool,
|
|
||||||
);
|
);
|
||||||
pub fn ImDrawList_AddBezierCurve(
|
pub fn ImDrawList_AddBezierCurve(
|
||||||
list: *mut ImDrawList,
|
list: *mut ImDrawList,
|
||||||
@ -2183,6 +2403,7 @@ extern "C" {
|
|||||||
pub fn ImFont_SetFallbackChar(font: *mut ImFont, c: ImWchar);
|
pub fn ImFont_SetFallbackChar(font: *mut ImFont, c: ImWchar);
|
||||||
pub fn ImFont_GetCharAdvance(font: *const ImFont, c: ImWchar) -> c_float;
|
pub fn ImFont_GetCharAdvance(font: *const ImFont, c: ImWchar) -> c_float;
|
||||||
pub fn ImFont_IsLoaded(font: *const ImFont) -> bool;
|
pub fn ImFont_IsLoaded(font: *const ImFont) -> bool;
|
||||||
|
pub fn ImFont_GetDebugName(font: *const ImFont) -> *const c_char;
|
||||||
pub fn ImFont_CalcTextSizeA(
|
pub fn ImFont_CalcTextSizeA(
|
||||||
font: *const ImFont,
|
font: *const ImFont,
|
||||||
out: *mut ImVec2,
|
out: *mut ImVec2,
|
||||||
@ -2256,12 +2477,15 @@ fn test_default_style() {
|
|||||||
let style = unsafe { &*igGetStyle() };
|
let style = unsafe { &*igGetStyle() };
|
||||||
assert_eq!(style.alpha, 1.0);
|
assert_eq!(style.alpha, 1.0);
|
||||||
assert_eq!(style.window_padding, ImVec2::new(8.0, 8.0));
|
assert_eq!(style.window_padding, ImVec2::new(8.0, 8.0));
|
||||||
|
assert_eq!(style.window_rounding, 7.0);
|
||||||
|
assert_eq!(style.window_border_size, 0.0);
|
||||||
assert_eq!(style.window_min_size, ImVec2::new(32.0, 32.0));
|
assert_eq!(style.window_min_size, ImVec2::new(32.0, 32.0));
|
||||||
assert_eq!(style.window_rounding, 9.0);
|
|
||||||
assert_eq!(style.window_title_align, ImVec2::new(0.0, 0.5));
|
assert_eq!(style.window_title_align, ImVec2::new(0.0, 0.5));
|
||||||
assert_eq!(style.child_window_rounding, 0.0);
|
assert_eq!(style.popup_rounding, 0.0);
|
||||||
|
assert_eq!(style.popup_border_size, 1.0);
|
||||||
assert_eq!(style.frame_padding, ImVec2::new(4.0, 3.0));
|
assert_eq!(style.frame_padding, ImVec2::new(4.0, 3.0));
|
||||||
assert_eq!(style.frame_rounding, 0.0);
|
assert_eq!(style.frame_rounding, 0.0);
|
||||||
|
assert_eq!(style.frame_border_size, 0.0);
|
||||||
assert_eq!(style.item_spacing, ImVec2::new(8.0, 4.0));
|
assert_eq!(style.item_spacing, ImVec2::new(8.0, 4.0));
|
||||||
assert_eq!(style.item_inner_spacing, ImVec2::new(4.0, 4.0));
|
assert_eq!(style.item_inner_spacing, ImVec2::new(4.0, 4.0));
|
||||||
assert_eq!(style.touch_extra_padding, ImVec2::new(0.0, 0.0));
|
assert_eq!(style.touch_extra_padding, ImVec2::new(0.0, 0.0));
|
||||||
@ -2275,6 +2499,6 @@ fn test_default_style() {
|
|||||||
assert_eq!(style.display_window_padding, ImVec2::new(22.0, 22.0));
|
assert_eq!(style.display_window_padding, ImVec2::new(22.0, 22.0));
|
||||||
assert_eq!(style.display_safe_area_padding, ImVec2::new(4.0, 4.0));
|
assert_eq!(style.display_safe_area_padding, ImVec2::new(4.0, 4.0));
|
||||||
assert_eq!(style.anti_aliased_lines, true);
|
assert_eq!(style.anti_aliased_lines, true);
|
||||||
assert_eq!(style.anti_aliased_shapes, true);
|
assert_eq!(style.anti_aliased_fill, true);
|
||||||
assert_eq!(style.curve_tessellation_tol, 1.25);
|
assert_eq!(style.curve_tessellation_tol, 1.25);
|
||||||
}
|
}
|
||||||
|
|||||||
2
imgui-sys/third-party/cimgui
vendored
2
imgui-sys/third-party/cimgui
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 511218914b6dde6d5e52c0d98454ead3369eb38d
|
Subproject commit 0781f921354a3f7a9eefd7aaab557a89cb14baea
|
||||||
@ -7,6 +7,7 @@ use super::{ImStr, ImVec2, ImGuiWindowFlags, Ui};
|
|||||||
pub struct ChildFrame<'ui, 'p> {
|
pub struct ChildFrame<'ui, 'p> {
|
||||||
name: &'p ImStr,
|
name: &'p ImStr,
|
||||||
size: ImVec2,
|
size: ImVec2,
|
||||||
|
border: bool,
|
||||||
flags: ImGuiWindowFlags,
|
flags: ImGuiWindowFlags,
|
||||||
_phantom: PhantomData<&'ui Ui<'ui>>,
|
_phantom: PhantomData<&'ui Ui<'ui>>,
|
||||||
}
|
}
|
||||||
@ -16,6 +17,7 @@ impl<'ui, 'p> ChildFrame<'ui, 'p> {
|
|||||||
ChildFrame {
|
ChildFrame {
|
||||||
name: name,
|
name: name,
|
||||||
size: size.into(),
|
size: size.into(),
|
||||||
|
border: false,
|
||||||
flags: ImGuiWindowFlags::empty(),
|
flags: ImGuiWindowFlags::empty(),
|
||||||
_phantom: PhantomData,
|
_phantom: PhantomData,
|
||||||
}
|
}
|
||||||
@ -47,7 +49,7 @@ impl<'ui, 'p> ChildFrame<'ui, 'p> {
|
|||||||
}
|
}
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn show_borders(mut self, value: bool) -> Self {
|
pub fn show_borders(mut self, value: bool) -> Self {
|
||||||
self.flags.set(ImGuiWindowFlags::ShowBorders, value);
|
self.border = value;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
#[inline]
|
#[inline]
|
||||||
@ -103,12 +105,8 @@ impl<'ui, 'p> ChildFrame<'ui, 'p> {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
pub fn build<F: FnOnce()>(self, f: F) {
|
pub fn build<F: FnOnce()>(self, f: F) {
|
||||||
// See issue for history.
|
|
||||||
// https://github.com/Gekkio/imgui-rs/pull/58
|
|
||||||
let show_border = false;
|
|
||||||
|
|
||||||
let render_child_frame =
|
let render_child_frame =
|
||||||
unsafe { sys::igBeginChild(self.name.as_ptr(), self.size, show_border, self.flags) };
|
unsafe { sys::igBeginChild(self.name.as_ptr(), self.size, self.border, self.flags) };
|
||||||
if render_child_frame {
|
if render_child_frame {
|
||||||
f();
|
f();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -156,7 +156,11 @@ impl ImFontConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn make_config(self) -> sys::ImFontConfig {
|
fn make_config(self) -> sys::ImFontConfig {
|
||||||
let mut config = sys::ImFontConfig::new();
|
let mut config = unsafe {
|
||||||
|
let mut config = mem::uninitialized();
|
||||||
|
sys::ImFontConfig_DefaultConstructor(&mut config);
|
||||||
|
config
|
||||||
|
};
|
||||||
config.size_pixels = self.size_pixels;
|
config.size_pixels = self.size_pixels;
|
||||||
config.oversample_h = self.oversample_h as c_int;
|
config.oversample_h = self.oversample_h as c_int;
|
||||||
config.oversample_v = self.oversample_v as c_int;
|
config.oversample_v = self.oversample_v as c_int;
|
||||||
|
|||||||
18
src/input.rs
18
src/input.rs
@ -89,6 +89,24 @@ macro_rules! impl_text_flags {
|
|||||||
self.flags.set(ImGuiInputTextFlags::AlwaysInsertMode, value);
|
self.flags.set(ImGuiInputTextFlags::AlwaysInsertMode, value);
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn read_only(mut self, value: bool) -> Self {
|
||||||
|
self.flags.set(ImGuiInputTextFlags::ReadOnly, value);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn password(mut self, value: bool) -> Self {
|
||||||
|
self.flags.set(ImGuiInputTextFlags::Password, value);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn no_undo_redo(mut self, value: bool) -> Self {
|
||||||
|
self.flags.set(ImGuiInputTextFlags::NoUndoRedo, value);
|
||||||
|
self
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
23
src/lib.rs
23
src/lib.rs
@ -421,9 +421,13 @@ impl<'ui> Ui<'ui> {
|
|||||||
sys::igShowStyleEditor(style as *mut ImGuiStyle);
|
sys::igShowStyleEditor(style as *mut ImGuiStyle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#[deprecated(since = "0.0.19", note = "please use show_demo_window instead")]
|
||||||
pub fn show_test_window(&self, opened: &mut bool) {
|
pub fn show_test_window(&self, opened: &mut bool) {
|
||||||
|
self.show_demo_window(opened)
|
||||||
|
}
|
||||||
|
pub fn show_demo_window(&self, opened: &mut bool) {
|
||||||
unsafe {
|
unsafe {
|
||||||
sys::igShowTestWindow(opened);
|
sys::igShowDemoWindow(opened);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn show_metrics_window(&self, opened: &mut bool) {
|
pub fn show_metrics_window(&self, opened: &mut bool) {
|
||||||
@ -1198,12 +1202,25 @@ impl<'ui> Ui<'ui> {
|
|||||||
Alpha(v) => unsafe { igPushStyleVar(ImGuiStyleVar::Alpha, v) },
|
Alpha(v) => unsafe { igPushStyleVar(ImGuiStyleVar::Alpha, v) },
|
||||||
WindowPadding(v) => unsafe { igPushStyleVarVec(ImGuiStyleVar::WindowPadding, v) },
|
WindowPadding(v) => unsafe { igPushStyleVarVec(ImGuiStyleVar::WindowPadding, v) },
|
||||||
WindowRounding(v) => unsafe { igPushStyleVar(ImGuiStyleVar::WindowRounding, v) },
|
WindowRounding(v) => unsafe { igPushStyleVar(ImGuiStyleVar::WindowRounding, v) },
|
||||||
|
WindowBorderSize(v) => unsafe { igPushStyleVar(ImGuiStyleVar::WindowBorderSize, v) },
|
||||||
WindowMinSize(v) => unsafe { igPushStyleVarVec(ImGuiStyleVar::WindowMinSize, v) },
|
WindowMinSize(v) => unsafe { igPushStyleVarVec(ImGuiStyleVar::WindowMinSize, v) },
|
||||||
ChildWindowRounding(v) => unsafe {
|
ChildRounding(v) => unsafe {
|
||||||
igPushStyleVar(ImGuiStyleVar::ChildWindowRounding, v)
|
igPushStyleVar(ImGuiStyleVar::ChildRounding, v)
|
||||||
|
},
|
||||||
|
ChildBorderSize(v) => unsafe {
|
||||||
|
igPushStyleVar(ImGuiStyleVar::ChildBorderSize, v)
|
||||||
|
},
|
||||||
|
PopupRounding(v) => unsafe {
|
||||||
|
igPushStyleVar(ImGuiStyleVar::PopupRounding, v)
|
||||||
|
},
|
||||||
|
PopupBorderSize(v) => unsafe {
|
||||||
|
igPushStyleVar(ImGuiStyleVar::PopupBorderSize, v)
|
||||||
},
|
},
|
||||||
FramePadding(v) => unsafe { igPushStyleVarVec(ImGuiStyleVar::FramePadding, v) },
|
FramePadding(v) => unsafe { igPushStyleVarVec(ImGuiStyleVar::FramePadding, v) },
|
||||||
FrameRounding(v) => unsafe { igPushStyleVar(ImGuiStyleVar::FrameRounding, v) },
|
FrameRounding(v) => unsafe { igPushStyleVar(ImGuiStyleVar::FrameRounding, v) },
|
||||||
|
FrameBorderSize(v) => unsafe {
|
||||||
|
igPushStyleVar(ImGuiStyleVar::FrameBorderSize, v)
|
||||||
|
},
|
||||||
ItemSpacing(v) => unsafe { igPushStyleVarVec(ImGuiStyleVar::ItemSpacing, v) },
|
ItemSpacing(v) => unsafe { igPushStyleVarVec(ImGuiStyleVar::ItemSpacing, v) },
|
||||||
ItemInnerSpacing(v) => unsafe { igPushStyleVarVec(ImGuiStyleVar::ItemInnerSpacing, v) },
|
ItemInnerSpacing(v) => unsafe { igPushStyleVarVec(ImGuiStyleVar::ItemInnerSpacing, v) },
|
||||||
IndentSpacing(v) => unsafe { igPushStyleVar(ImGuiStyleVar::IndentSpacing, v) },
|
IndentSpacing(v) => unsafe { igPushStyleVar(ImGuiStyleVar::IndentSpacing, v) },
|
||||||
|
|||||||
15
src/style.rs
15
src/style.rs
@ -5,13 +5,26 @@ pub enum StyleVar {
|
|||||||
Alpha(f32),
|
Alpha(f32),
|
||||||
WindowPadding(ImVec2),
|
WindowPadding(ImVec2),
|
||||||
WindowRounding(f32),
|
WindowRounding(f32),
|
||||||
|
WindowBorderSize(f32),
|
||||||
WindowMinSize(ImVec2),
|
WindowMinSize(ImVec2),
|
||||||
ChildWindowRounding(f32),
|
ChildRounding(f32),
|
||||||
|
ChildBorderSize(f32),
|
||||||
|
PopupRounding(f32),
|
||||||
|
PopupBorderSize(f32),
|
||||||
FramePadding(ImVec2),
|
FramePadding(ImVec2),
|
||||||
FrameRounding(f32),
|
FrameRounding(f32),
|
||||||
|
FrameBorderSize(f32),
|
||||||
ItemSpacing(ImVec2),
|
ItemSpacing(ImVec2),
|
||||||
ItemInnerSpacing(ImVec2),
|
ItemInnerSpacing(ImVec2),
|
||||||
IndentSpacing(f32),
|
IndentSpacing(f32),
|
||||||
GrabMinSize(f32),
|
GrabMinSize(f32),
|
||||||
ButtonTextAlign(ImVec2),
|
ButtonTextAlign(ImVec2),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl StyleVar {
|
||||||
|
#[allow(non_snake_case)]
|
||||||
|
#[deprecated(since = "0.0.19", note = "please use ChildRounding instead")]
|
||||||
|
pub fn ChildWindowRounding(value: f32) -> Self {
|
||||||
|
StyleVar::ChildRounding(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ use sys;
|
|||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
|
||||||
use super::{ImGuiCond, ImGuiWindowFlags, ImStr, ImVec2, Ui};
|
use super::{ImGuiCond, ImGuiStyleVar, ImGuiWindowFlags, ImStr, ImVec2, Ui};
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub struct Window<'ui, 'p> {
|
pub struct Window<'ui, 'p> {
|
||||||
@ -13,6 +13,8 @@ pub struct Window<'ui, 'p> {
|
|||||||
name: &'p ImStr,
|
name: &'p ImStr,
|
||||||
opened: Option<&'p mut bool>,
|
opened: Option<&'p mut bool>,
|
||||||
flags: ImGuiWindowFlags,
|
flags: ImGuiWindowFlags,
|
||||||
|
// Deprecated. Should be removed along with Window::show_borders
|
||||||
|
border: bool,
|
||||||
_phantom: PhantomData<&'ui Ui<'ui>>,
|
_phantom: PhantomData<&'ui Ui<'ui>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -26,6 +28,7 @@ impl<'ui, 'p> Window<'ui, 'p> {
|
|||||||
name: name,
|
name: name,
|
||||||
opened: None,
|
opened: None,
|
||||||
flags: ImGuiWindowFlags::empty(),
|
flags: ImGuiWindowFlags::empty(),
|
||||||
|
border: false,
|
||||||
_phantom: PhantomData,
|
_phantom: PhantomData,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -87,8 +90,9 @@ impl<'ui, 'p> Window<'ui, 'p> {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
#[inline]
|
#[inline]
|
||||||
|
#[deprecated(since = "0.0.19", note = "please use StyleVar instead")]
|
||||||
pub fn show_borders(mut self, value: bool) -> Self {
|
pub fn show_borders(mut self, value: bool) -> Self {
|
||||||
self.flags.set(ImGuiWindowFlags::ShowBorders, value);
|
self.border = value;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
#[inline]
|
#[inline]
|
||||||
@ -156,6 +160,9 @@ impl<'ui, 'p> Window<'ui, 'p> {
|
|||||||
if !self.size_cond.is_empty() {
|
if !self.size_cond.is_empty() {
|
||||||
sys::igSetNextWindowSize(self.size.into(), self.size_cond);
|
sys::igSetNextWindowSize(self.size.into(), self.size_cond);
|
||||||
}
|
}
|
||||||
|
if self.border {
|
||||||
|
sys::igPushStyleVar(ImGuiStyleVar::WindowBorderSize, 1.0);
|
||||||
|
}
|
||||||
sys::igBegin(
|
sys::igBegin(
|
||||||
self.name.as_ptr(),
|
self.name.as_ptr(),
|
||||||
self.opened.map(|x| x as *mut bool).unwrap_or(
|
self.opened.map(|x| x as *mut bool).unwrap_or(
|
||||||
@ -167,6 +174,11 @@ impl<'ui, 'p> Window<'ui, 'p> {
|
|||||||
if render {
|
if render {
|
||||||
f();
|
f();
|
||||||
}
|
}
|
||||||
unsafe { sys::igEnd() };
|
unsafe {
|
||||||
|
sys::igEnd();
|
||||||
|
if self.border {
|
||||||
|
sys::igPopStyleVar(1);
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user