use crate::sys;
use bitflags::bitflags;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
macro_rules! impl_input_flag_raw {
($ty:ident) => {
impl $ty {
#[inline]
pub(crate) fn raw(self) -> sys::ImGuiInputTextFlags {
self.bits() as sys::ImGuiInputTextFlags
}
}
#[cfg(feature = "serde")]
impl Serialize for $ty {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
serializer.serialize_i32(self.bits())
}
}
#[cfg(feature = "serde")]
impl<'de> Deserialize<'de> for $ty {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let bits = i32::deserialize(deserializer)?;
Ok(Self::from_bits_retain(bits))
}
}
};
}
bitflags! {
#[repr(transparent)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct InputTextFlags: i32 {
const NONE = sys::ImGuiInputTextFlags_None as i32;
const CHARS_DECIMAL = sys::ImGuiInputTextFlags_CharsDecimal as i32;
const CHARS_HEXADECIMAL = sys::ImGuiInputTextFlags_CharsHexadecimal as i32;
const CHARS_SCIENTIFIC = sys::ImGuiInputTextFlags_CharsScientific as i32;
const CHARS_UPPERCASE = sys::ImGuiInputTextFlags_CharsUppercase as i32;
const CHARS_NO_BLANK = sys::ImGuiInputTextFlags_CharsNoBlank as i32;
const ALLOW_TAB_INPUT = sys::ImGuiInputTextFlags_AllowTabInput as i32;
const ENTER_RETURNS_TRUE = sys::ImGuiInputTextFlags_EnterReturnsTrue as i32;
const ESCAPE_CLEARS_ALL = sys::ImGuiInputTextFlags_EscapeClearsAll as i32;
const READ_ONLY = sys::ImGuiInputTextFlags_ReadOnly as i32;
const PASSWORD = sys::ImGuiInputTextFlags_Password as i32;
const ALWAYS_OVERWRITE = sys::ImGuiInputTextFlags_AlwaysOverwrite as i32;
const AUTO_SELECT_ALL = sys::ImGuiInputTextFlags_AutoSelectAll as i32;
const NO_HORIZONTAL_SCROLL = sys::ImGuiInputTextFlags_NoHorizontalScroll as i32;
const NO_UNDO_REDO = sys::ImGuiInputTextFlags_NoUndoRedo as i32;
const ELIDE_LEFT = sys::ImGuiInputTextFlags_ElideLeft as i32;
const CALLBACK_COMPLETION = sys::ImGuiInputTextFlags_CallbackCompletion as i32;
const CALLBACK_HISTORY = sys::ImGuiInputTextFlags_CallbackHistory as i32;
const CALLBACK_ALWAYS = sys::ImGuiInputTextFlags_CallbackAlways as i32;
const CALLBACK_CHAR_FILTER = sys::ImGuiInputTextFlags_CallbackCharFilter as i32;
const CALLBACK_EDIT = sys::ImGuiInputTextFlags_CallbackEdit as i32;
}
}
bitflags! {
#[repr(transparent)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct InputTextMultilineFlags: i32 {
const NONE = sys::ImGuiInputTextFlags_None as i32;
const CHARS_DECIMAL = sys::ImGuiInputTextFlags_CharsDecimal as i32;
const CHARS_HEXADECIMAL = sys::ImGuiInputTextFlags_CharsHexadecimal as i32;
const CHARS_SCIENTIFIC = sys::ImGuiInputTextFlags_CharsScientific as i32;
const CHARS_UPPERCASE = sys::ImGuiInputTextFlags_CharsUppercase as i32;
const CHARS_NO_BLANK = sys::ImGuiInputTextFlags_CharsNoBlank as i32;
const ALLOW_TAB_INPUT = sys::ImGuiInputTextFlags_AllowTabInput as i32;
const ENTER_RETURNS_TRUE = sys::ImGuiInputTextFlags_EnterReturnsTrue as i32;
const ESCAPE_CLEARS_ALL = sys::ImGuiInputTextFlags_EscapeClearsAll as i32;
const CTRL_ENTER_FOR_NEW_LINE = sys::ImGuiInputTextFlags_CtrlEnterForNewLine as i32;
const READ_ONLY = sys::ImGuiInputTextFlags_ReadOnly as i32;
const ALWAYS_OVERWRITE = sys::ImGuiInputTextFlags_AlwaysOverwrite as i32;
const AUTO_SELECT_ALL = sys::ImGuiInputTextFlags_AutoSelectAll as i32;
const NO_HORIZONTAL_SCROLL = sys::ImGuiInputTextFlags_NoHorizontalScroll as i32;
const NO_UNDO_REDO = sys::ImGuiInputTextFlags_NoUndoRedo as i32;
const WORD_WRAP = sys::ImGuiInputTextFlags_WordWrap as i32;
const CALLBACK_ALWAYS = sys::ImGuiInputTextFlags_CallbackAlways as i32;
const CALLBACK_CHAR_FILTER = sys::ImGuiInputTextFlags_CallbackCharFilter as i32;
const CALLBACK_EDIT = sys::ImGuiInputTextFlags_CallbackEdit as i32;
}
}
bitflags! {
#[repr(transparent)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct InputScalarFlags: i32 {
const NONE = sys::ImGuiInputTextFlags_None as i32;
const CHARS_DECIMAL = sys::ImGuiInputTextFlags_CharsDecimal as i32;
const CHARS_HEXADECIMAL = sys::ImGuiInputTextFlags_CharsHexadecimal as i32;
const CHARS_SCIENTIFIC = sys::ImGuiInputTextFlags_CharsScientific as i32;
const CHARS_UPPERCASE = sys::ImGuiInputTextFlags_CharsUppercase as i32;
const CHARS_NO_BLANK = sys::ImGuiInputTextFlags_CharsNoBlank as i32;
const ESCAPE_CLEARS_ALL = sys::ImGuiInputTextFlags_EscapeClearsAll as i32;
const READ_ONLY = sys::ImGuiInputTextFlags_ReadOnly as i32;
const ALWAYS_OVERWRITE = sys::ImGuiInputTextFlags_AlwaysOverwrite as i32;
const AUTO_SELECT_ALL = sys::ImGuiInputTextFlags_AutoSelectAll as i32;
const PARSE_EMPTY_REF_VAL = sys::ImGuiInputTextFlags_ParseEmptyRefVal as i32;
const DISPLAY_EMPTY_REF_VAL = sys::ImGuiInputTextFlags_DisplayEmptyRefVal as i32;
const NO_HORIZONTAL_SCROLL = sys::ImGuiInputTextFlags_NoHorizontalScroll as i32;
const NO_UNDO_REDO = sys::ImGuiInputTextFlags_NoUndoRedo as i32;
}
}
impl_input_flag_raw!(InputTextFlags);
impl_input_flag_raw!(InputTextMultilineFlags);
impl_input_flag_raw!(InputScalarFlags);