diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown index 7dae934..14d3031 100644 --- a/CHANGELOG.markdown +++ b/CHANGELOG.markdown @@ -5,6 +5,7 @@ ### Added - Window scrolling API +- Full support for the column API ### Changed diff --git a/src/columns.rs b/src/columns.rs new file mode 100644 index 0000000..23879fa --- /dev/null +++ b/src/columns.rs @@ -0,0 +1,57 @@ +use crate::string::ImStr; +use crate::sys; +use crate::Ui; + +/// # Columns +impl<'ui> Ui<'ui> { + pub fn columns(&self, count: i32, id: &ImStr, border: bool) { + unsafe { sys::igColumns(count, id.as_ptr(), border) } + } + /// Switches to the next column. + /// + /// If the current row is finished, switches to first column of the next row + pub fn next_column(&self) { + unsafe { sys::igNextColumn() } + } + /// Returns the index of the current column + pub fn current_column_index(&self) -> i32 { + unsafe { sys::igGetColumnIndex() } + } + /// Returns the width of the current column (in pixels) + pub fn current_column_width(&self) -> f32 { + unsafe { sys::igGetColumnWidth(-1) } + } + /// Returns the width of the given column (in pixels) + pub fn column_width(&self, column_index: i32) -> f32 { + unsafe { sys::igGetColumnWidth(column_index) } + } + /// Sets the width of the current column (in pixels) + pub fn set_current_column_width(&self, width: f32) { + unsafe { sys::igSetColumnWidth(-1, width) }; + } + /// Sets the width of the given column (in pixels) + pub fn set_column_width(&self, column_index: i32, width: f32) { + unsafe { sys::igSetColumnWidth(column_index, width) }; + } + /// Returns the offset of the current column (in pixels from the left side of the content + /// region) + pub fn current_column_offset(&self) -> f32 { + unsafe { sys::igGetColumnOffset(-1) } + } + /// Returns the offset of the given column (in pixels from the left side of the content region) + pub fn column_offset(&self, column_index: i32) -> f32 { + unsafe { sys::igGetColumnOffset(column_index) } + } + /// Sets the offset of the current column (in pixels from the left side of the content region) + pub fn set_current_column_offset(&self, offset_x: f32) { + unsafe { sys::igSetColumnOffset(-1, offset_x) }; + } + /// Sets the offset of the given column (in pixels from the left side of the content region) + pub fn set_column_offset(&self, column_index: i32, offset_x: f32) { + unsafe { sys::igSetColumnOffset(column_index, offset_x) }; + } + /// Returns the current amount of columns + pub fn column_count(&self) -> i32 { + unsafe { sys::igGetColumnsCount() } + } +} diff --git a/src/legacy.rs b/src/legacy.rs index eda5d6c..a387c82 100644 --- a/src/legacy.rs +++ b/src/legacy.rs @@ -351,3 +351,22 @@ impl<'ui> Ui<'ui> { 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() } + } +} diff --git a/src/lib.rs b/src/lib.rs index faf98f7..14e493e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -51,6 +51,7 @@ use internal::RawCast; mod child_frame; mod clipboard; +mod columns; mod context; mod drag; mod fonts; @@ -204,37 +205,6 @@ impl<'ui> Ui<'ui> { } } -// Layout -impl<'ui> Ui<'ui> { - pub fn columns<'p>(&self, count: i32, id: &'p ImStr, border: bool) { - unsafe { sys::igColumns(count, id.as_ptr(), border) } - } - - pub fn next_column(&self) { - unsafe { sys::igNextColumn() } - } - - pub fn get_column_index(&self) -> i32 { - unsafe { sys::igGetColumnIndex() } - } - - pub fn get_column_offset(&self, column_index: i32) -> f32 { - unsafe { sys::igGetColumnOffset(column_index) } - } - - pub fn set_column_offset(&self, column_index: i32, offset_x: f32) { - unsafe { sys::igSetColumnOffset(column_index, offset_x) } - } - - pub fn get_column_width(&self, column_index: i32) -> f32 { - unsafe { sys::igGetColumnWidth(column_index) } - } - - pub fn get_columns_count(&self) -> i32 { - unsafe { sys::igGetColumnsCount() } - } -} - pub enum ImId<'a> { Int(i32), Str(&'a str),