mirror of
https://github.com/eliasstepanik/imgui-rs.git
synced 2026-01-11 13:38:35 +00:00
delete use of the chlorine crate
This commit is contained in:
parent
8445334450
commit
4d56a476b6
@ -26,7 +26,6 @@ exclude = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
chlorine = "1.0.7"
|
|
||||||
mint = "0.5.6"
|
mint = "0.5.6"
|
||||||
cfg-if = "1"
|
cfg-if = "1"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -1,24 +1,4 @@
|
|||||||
#![no_std]
|
#![no_std]
|
||||||
// We use `chlorine` over (the more well known) `cty` right now since `cty`
|
|
||||||
// doesn't fully match std::os::raw (leading to issues like
|
|
||||||
// https://github.com/japaric/cty/issues/18). Chlorine *does* match std::os::raw
|
|
||||||
// (and libc), but has a longer and more confusing name, so we just alias it.
|
|
||||||
// Also, this makes it easier to switch to something else/back easier, if we
|
|
||||||
// decide to.
|
|
||||||
//
|
|
||||||
// Note that with the exception of bugs like the above, which crate we use (cty,
|
|
||||||
// chlorine, libc, std::os::raw, ...) shouldn't matter to end user code¹, since
|
|
||||||
// these are type aliases that should all be equivalent. This means that we're
|
|
||||||
// free to switch back iff the bug is fixed, and users are free to use whichever
|
|
||||||
// they prefer regardless of what we chose.
|
|
||||||
//
|
|
||||||
// (TODO: using extern crate for this is a hack, we probably should replace this
|
|
||||||
// with `use chlorine as cty` in the binding files eventually, but lets punt on
|
|
||||||
// it for a bit)
|
|
||||||
//
|
|
||||||
// ¹ The exception to this is that `std::os::raw` isn't there for `no_std`, and
|
|
||||||
// `libc` has potentially undesirable linking impacts on windows.
|
|
||||||
pub extern crate chlorine as cty;
|
|
||||||
|
|
||||||
cfg_if::cfg_if! {
|
cfg_if::cfg_if! {
|
||||||
if #[cfg(feature = "wasm")] {
|
if #[cfg(feature = "wasm")] {
|
||||||
|
|||||||
@ -304,7 +304,7 @@ where
|
|||||||
sys::igInputTextWithHint(
|
sys::igInputTextWithHint(
|
||||||
label,
|
label,
|
||||||
hint,
|
hint,
|
||||||
ptr as *mut sys::cty::c_char,
|
ptr as *mut core::ffi::c_char,
|
||||||
capacity,
|
capacity,
|
||||||
self.flags.bits() as i32,
|
self.flags.bits() as i32,
|
||||||
Some(callback::<T>),
|
Some(callback::<T>),
|
||||||
@ -315,7 +315,7 @@ where
|
|||||||
|
|
||||||
sys::igInputText(
|
sys::igInputText(
|
||||||
label,
|
label,
|
||||||
ptr as *mut sys::cty::c_char,
|
ptr as *mut core::ffi::c_char,
|
||||||
capacity,
|
capacity,
|
||||||
self.flags.bits() as i32,
|
self.flags.bits() as i32,
|
||||||
Some(callback::<T>),
|
Some(callback::<T>),
|
||||||
@ -461,7 +461,7 @@ impl<'ui, 'p, T: InputTextCallbackHandler, L: AsRef<str>> InputTextMultiline<'ui
|
|||||||
let o = unsafe {
|
let o = unsafe {
|
||||||
sys::igInputTextMultiline(
|
sys::igInputTextMultiline(
|
||||||
self.ui.scratch_txt(self.label),
|
self.ui.scratch_txt(self.label),
|
||||||
ptr as *mut sys::cty::c_char,
|
ptr as *mut core::ffi::c_char,
|
||||||
capacity,
|
capacity,
|
||||||
self.size.into(),
|
self.size.into(),
|
||||||
self.flags.bits() as i32,
|
self.flags.bits() as i32,
|
||||||
|
|||||||
@ -236,7 +236,7 @@ impl Ui {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Internal method to push a single text to our scratch buffer.
|
/// Internal method to push a single text to our scratch buffer.
|
||||||
fn scratch_txt(&self, txt: impl AsRef<str>) -> *const sys::cty::c_char {
|
fn scratch_txt(&self, txt: impl AsRef<str>) -> *const core::ffi::c_char {
|
||||||
unsafe {
|
unsafe {
|
||||||
let handle = &mut *self.buffer.get();
|
let handle = &mut *self.buffer.get();
|
||||||
handle.scratch_txt(txt)
|
handle.scratch_txt(txt)
|
||||||
@ -244,7 +244,7 @@ impl Ui {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Internal method to push an option text to our scratch buffer.
|
/// Internal method to push an option text to our scratch buffer.
|
||||||
fn scratch_txt_opt(&self, txt: Option<impl AsRef<str>>) -> *const sys::cty::c_char {
|
fn scratch_txt_opt(&self, txt: Option<impl AsRef<str>>) -> *const core::ffi::c_char {
|
||||||
unsafe {
|
unsafe {
|
||||||
let handle = &mut *self.buffer.get();
|
let handle = &mut *self.buffer.get();
|
||||||
handle.scratch_txt_opt(txt)
|
handle.scratch_txt_opt(txt)
|
||||||
@ -255,7 +255,7 @@ impl Ui {
|
|||||||
&self,
|
&self,
|
||||||
txt_0: impl AsRef<str>,
|
txt_0: impl AsRef<str>,
|
||||||
txt_1: impl AsRef<str>,
|
txt_1: impl AsRef<str>,
|
||||||
) -> (*const sys::cty::c_char, *const sys::cty::c_char) {
|
) -> (*const core::ffi::c_char, *const core::ffi::c_char) {
|
||||||
unsafe {
|
unsafe {
|
||||||
let handle = &mut *self.buffer.get();
|
let handle = &mut *self.buffer.get();
|
||||||
handle.scratch_txt_two(txt_0, txt_1)
|
handle.scratch_txt_two(txt_0, txt_1)
|
||||||
@ -266,7 +266,7 @@ impl Ui {
|
|||||||
&self,
|
&self,
|
||||||
txt_0: impl AsRef<str>,
|
txt_0: impl AsRef<str>,
|
||||||
txt_1: Option<impl AsRef<str>>,
|
txt_1: Option<impl AsRef<str>>,
|
||||||
) -> (*const sys::cty::c_char, *const sys::cty::c_char) {
|
) -> (*const core::ffi::c_char, *const core::ffi::c_char) {
|
||||||
unsafe {
|
unsafe {
|
||||||
let handle = &mut *self.buffer.get();
|
let handle = &mut *self.buffer.get();
|
||||||
handle.scratch_txt_with_opt(txt_0, txt_1)
|
handle.scratch_txt_with_opt(txt_0, txt_1)
|
||||||
@ -418,7 +418,7 @@ impl Ui {
|
|||||||
|
|
||||||
/// Create [`Id`] from a pointer
|
/// Create [`Id`] from a pointer
|
||||||
pub fn new_id_ptr<T>(&self, input: &T) -> Id {
|
pub fn new_id_ptr<T>(&self, input: &T) -> Id {
|
||||||
let p = input as *const T as *const sys::cty::c_void;
|
let p = input as *const T as *const core::ffi::c_void;
|
||||||
let value = unsafe { sys::igGetID_Ptr(p) };
|
let value = unsafe { sys::igGetID_Ptr(p) };
|
||||||
Id(value)
|
Id(value)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,7 +22,7 @@ impl UiBuffer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Internal method to push a single text to our scratch buffer.
|
/// Internal method to push a single text to our scratch buffer.
|
||||||
pub fn scratch_txt(&mut self, txt: impl AsRef<str>) -> *const sys::cty::c_char {
|
pub fn scratch_txt(&mut self, txt: impl AsRef<str>) -> *const core::ffi::c_char {
|
||||||
self.refresh_buffer();
|
self.refresh_buffer();
|
||||||
|
|
||||||
let start_of_substr = self.push(txt);
|
let start_of_substr = self.push(txt);
|
||||||
@ -30,7 +30,7 @@ impl UiBuffer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Internal method to push an option text to our scratch buffer.
|
/// Internal method to push an option text to our scratch buffer.
|
||||||
pub fn scratch_txt_opt(&mut self, txt: Option<impl AsRef<str>>) -> *const sys::cty::c_char {
|
pub fn scratch_txt_opt(&mut self, txt: Option<impl AsRef<str>>) -> *const core::ffi::c_char {
|
||||||
match txt {
|
match txt {
|
||||||
Some(v) => self.scratch_txt(v),
|
Some(v) => self.scratch_txt(v),
|
||||||
None => ptr::null(),
|
None => ptr::null(),
|
||||||
@ -42,7 +42,7 @@ impl UiBuffer {
|
|||||||
&mut self,
|
&mut self,
|
||||||
txt_0: impl AsRef<str>,
|
txt_0: impl AsRef<str>,
|
||||||
txt_1: impl AsRef<str>,
|
txt_1: impl AsRef<str>,
|
||||||
) -> (*const sys::cty::c_char, *const sys::cty::c_char) {
|
) -> (*const core::ffi::c_char, *const core::ffi::c_char) {
|
||||||
self.refresh_buffer();
|
self.refresh_buffer();
|
||||||
|
|
||||||
let first_offset = self.push(txt_0);
|
let first_offset = self.push(txt_0);
|
||||||
@ -56,7 +56,7 @@ impl UiBuffer {
|
|||||||
&mut self,
|
&mut self,
|
||||||
txt_0: impl AsRef<str>,
|
txt_0: impl AsRef<str>,
|
||||||
txt_1: Option<impl AsRef<str>>,
|
txt_1: Option<impl AsRef<str>>,
|
||||||
) -> (*const sys::cty::c_char, *const sys::cty::c_char) {
|
) -> (*const core::ffi::c_char, *const core::ffi::c_char) {
|
||||||
match txt_1 {
|
match txt_1 {
|
||||||
Some(value) => self.scratch_txt_two(txt_0, value),
|
Some(value) => self.scratch_txt_two(txt_0, value),
|
||||||
None => (self.scratch_txt(txt_0), ptr::null()),
|
None => (self.scratch_txt(txt_0), ptr::null()),
|
||||||
@ -76,7 +76,7 @@ impl UiBuffer {
|
|||||||
/// # Safety
|
/// # Safety
|
||||||
/// This can return a pointer to undefined data if given a `pos >= self.buffer.len()`.
|
/// This can return a pointer to undefined data if given a `pos >= self.buffer.len()`.
|
||||||
/// This is marked as unsafe to reflect that.
|
/// This is marked as unsafe to reflect that.
|
||||||
pub unsafe fn offset(&self, pos: usize) -> *const sys::cty::c_char {
|
pub unsafe fn offset(&self, pos: usize) -> *const core::ffi::c_char {
|
||||||
self.buffer.as_ptr().add(pos) as *const _
|
self.buffer.as_ptr().add(pos) as *const _
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@ impl TextFilter {
|
|||||||
let ptr = filter.as_mut_ptr();
|
let ptr = filter.as_mut_ptr();
|
||||||
Self {
|
Self {
|
||||||
id: label,
|
id: label,
|
||||||
raw: unsafe { sys::ImGuiTextFilter_ImGuiTextFilter(ptr as *mut sys::cty::c_char) },
|
raw: unsafe { sys::ImGuiTextFilter_ImGuiTextFilter(ptr as *mut core::ffi::c_char) },
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ impl TextFilter {
|
|||||||
let mut id = self.id.clone();
|
let mut id = self.id.clone();
|
||||||
id.push('\0');
|
id.push('\0');
|
||||||
let ptr = id.as_mut_ptr();
|
let ptr = id.as_mut_ptr();
|
||||||
sys::ImGuiTextFilter_Draw(self.raw, ptr as *mut sys::cty::c_char, size);
|
sys::ImGuiTextFilter_Draw(self.raw, ptr as *mut core::ffi::c_char, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ impl TextFilter {
|
|||||||
buf.push('\0');
|
buf.push('\0');
|
||||||
let ptr = buf.as_mut_ptr();
|
let ptr = buf.as_mut_ptr();
|
||||||
unsafe {
|
unsafe {
|
||||||
sys::ImGuiTextFilter_PassFilter(self.raw, ptr as *mut sys::cty::c_char, ptr::null())
|
sys::ImGuiTextFilter_PassFilter(self.raw, ptr as *mut core::ffi::c_char, ptr::null())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,8 +81,8 @@ impl TextFilter {
|
|||||||
unsafe {
|
unsafe {
|
||||||
sys::ImGuiTextFilter_PassFilter(
|
sys::ImGuiTextFilter_PassFilter(
|
||||||
self.raw,
|
self.raw,
|
||||||
b_ptr as *mut sys::cty::c_char,
|
b_ptr as *mut core::ffi::c_char,
|
||||||
e_ptr as *mut sys::cty::c_char,
|
e_ptr as *mut core::ffi::c_char,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user