mirror of
https://github.com/eliasstepanik/imgui-rs.git
synced 2026-01-11 05:28:35 +00:00
init
This commit is contained in:
parent
d6037316a0
commit
f334bfb106
@ -47,27 +47,29 @@ fn example_1(ui: &Ui, state: &mut State) {
|
||||
ui.text(state.notify_text);
|
||||
|
||||
ui.text("This button is black:");
|
||||
if ColorButton::new("Black color", [0.0, 0.0, 0.0, 1.0]).build(ui) {
|
||||
if ui.color_button("Black color", [0.0, 0.0, 0.0, 1.0]) {
|
||||
state.notify_text = "*** Black button was clicked";
|
||||
}
|
||||
|
||||
ui.text("This button is red:");
|
||||
if ColorButton::new("Red color", [1.0, 0.0, 0.0, 1.0]).build(ui) {
|
||||
if ui.color_button("Red color", [1.0, 0.0, 0.0, 1.0]) {
|
||||
state.notify_text = "*** Red button was clicked";
|
||||
}
|
||||
|
||||
ui.text("This button is BIG because it has a custom size:");
|
||||
if ColorButton::new("Green color", [0.0, 1.0, 0.0, 1.0])
|
||||
if ui
|
||||
.color_button_config("Green color", [0.0, 1.0, 0.0, 1.0])
|
||||
.size([100.0, 50.0])
|
||||
.build(ui)
|
||||
.build()
|
||||
{
|
||||
state.notify_text = "*** BIG button was clicked";
|
||||
}
|
||||
|
||||
ui.text("This button doesn't use the tooltip at all:");
|
||||
if ColorButton::new("No tooltip", [0.0, 0.0, 1.0, 1.0])
|
||||
if ui
|
||||
.color_button_config("No tooltip", [0.0, 0.0, 1.0, 1.0])
|
||||
.tooltip(false)
|
||||
.build(ui)
|
||||
.build()
|
||||
{
|
||||
state.notify_text = "*** No tooltip button was clicked";
|
||||
}
|
||||
@ -87,9 +89,9 @@ fn example_2(ui: &Ui) {
|
||||
);
|
||||
|
||||
ui.text("This button ignores the alpha component:");
|
||||
ColorButton::new("Red color", [1.0, 0.0, 0.0, 0.5])
|
||||
ui.color_button_config("Red color", [1.0, 0.0, 0.0, 0.5])
|
||||
.alpha(false)
|
||||
.build(ui);
|
||||
.build();
|
||||
|
||||
ui.spacing();
|
||||
ui.spacing();
|
||||
@ -101,27 +103,27 @@ fn example_2(ui: &Ui) {
|
||||
|
||||
ui.separator();
|
||||
ui.text_wrapped("ColorPreview::Opaque (default) doesn't show the alpha component at all");
|
||||
ColorButton::new("Red + ColorPreview::Opaque", [1.0, 0.0, 0.0, 0.5])
|
||||
ui.color_button_config("Red + ColorPreview::Opaque", [1.0, 0.0, 0.0, 0.5])
|
||||
.preview(ColorPreview::Opaque)
|
||||
.build(ui);
|
||||
.build();
|
||||
|
||||
ui.separator();
|
||||
ui.text_wrapped(
|
||||
"ColorPreview::HalfAlpha divides the color area into two halves and uses a \
|
||||
checkerboard pattern in one half to illustrate the alpha component",
|
||||
);
|
||||
ColorButton::new("Red + ColorPreview::HalfAlpha", [1.0, 0.0, 0.0, 0.5])
|
||||
ui.color_button_config("Red + ColorPreview::HalfAlpha", [1.0, 0.0, 0.0, 0.5])
|
||||
.preview(ColorPreview::HalfAlpha)
|
||||
.build(ui);
|
||||
.build();
|
||||
|
||||
ui.separator();
|
||||
ui.text_wrapped(
|
||||
"ColorPreview::Alpha uses a checkerboard pattern in the entire color area to \
|
||||
illustrate the alpha component",
|
||||
);
|
||||
ColorButton::new("Red + ColorPreview::Alpha", [1.0, 0.0, 0.0, 0.5])
|
||||
ui.color_button_config("Red + ColorPreview::Alpha", [1.0, 0.0, 0.0, 0.5])
|
||||
.preview(ColorPreview::Alpha)
|
||||
.build(ui);
|
||||
.build();
|
||||
});
|
||||
}
|
||||
|
||||
@ -132,13 +134,13 @@ fn example_3(ui: &Ui) {
|
||||
.position([20.0, 140.0], Condition::Appearing);
|
||||
w.build(|| {
|
||||
ui.text("This button interprets the input value [1.0, 0.0, 0.0, 1.0] as RGB(A) (default):");
|
||||
ColorButton::new("RGBA red", [1.0, 0.0, 0.0, 1.0]).build(ui);
|
||||
ui.color_button("RGBA red", [1.0, 0.0, 0.0, 1.0]);
|
||||
|
||||
ui.separator();
|
||||
ui.text("This button interprets the input value [1.0, 0.0, 0.0, 1.0] as HSV(A):");
|
||||
ColorButton::new("HSVA black", [1.0, 0.0, 0.0, 1.0])
|
||||
ui.color_button_config("HSVA black", [1.0, 0.0, 0.0, 1.0])
|
||||
.input_mode(ColorEditInputMode::HSV)
|
||||
.build(ui);
|
||||
.build();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -533,8 +533,9 @@ fn show_test_window(ui: &Ui, state: &mut State, opened: &mut bool) {
|
||||
Drag::new("drag float").range(-1.0, 1.0).speed(0.001).build(ui, &mut state.f0);
|
||||
ui.input_float3("input float3", &mut state.vec3f)
|
||||
.build();
|
||||
ColorEdit3::new("color 1", &mut state.col1).build(ui);
|
||||
ColorEdit4::new("color 2", &mut state.col2).build(ui);
|
||||
|
||||
ui.color_edit3("color 1", &mut state.col1);
|
||||
ui.color_edit4("color 2", &mut state.col2);
|
||||
|
||||
ui.input_scalar("input scalar i64", &mut state.u0).build();
|
||||
ui.input_scalar("input scalar f64", &mut state.d0).build();
|
||||
@ -595,22 +596,22 @@ fn show_test_window(ui: &Ui, state: &mut State, opened: &mut bool) {
|
||||
"Click on the colored square to open a color picker.
|
||||
CTRL+click on individual component to input value.\n",
|
||||
);
|
||||
ColorEdit4::new("MyColor##1", &mut s.color)
|
||||
ui.color_edit4_config("MyColor##1", &mut s.color)
|
||||
.flags(misc_flags)
|
||||
.alpha(false)
|
||||
.build(ui);
|
||||
.build();
|
||||
|
||||
ui.text("Color widget HSV with Alpha:");
|
||||
ColorEdit4::new("MyColor##2", &mut s.color)
|
||||
ui.color_edit4_config("MyColor##2", &mut s.color)
|
||||
.flags(misc_flags)
|
||||
.input_mode(ColorEditInputMode::HSV)
|
||||
.build(ui);
|
||||
.build();
|
||||
|
||||
ui.text("Color widget with Float Display:");
|
||||
ColorEdit4::new("MyColor##2f", &mut s.color)
|
||||
ui.color_edit4_config("MyColor##2f", &mut s.color)
|
||||
.flags(misc_flags)
|
||||
.format(ColorFormat::Float)
|
||||
.build(ui);
|
||||
.build();
|
||||
|
||||
ui.text("Color button with Picker:");
|
||||
ui.same_line();
|
||||
@ -621,11 +622,11 @@ CTRL+click on individual component to input value.\n",
|
||||
With the label(false) function you can pass a non-empty label which \
|
||||
will only be used for the tooltip and picker popup.",
|
||||
);
|
||||
ColorEdit4::new("MyColor##3", &mut s.color)
|
||||
ui.color_edit4_config("MyColor##3", &mut s.color)
|
||||
.flags(misc_flags)
|
||||
.inputs(false)
|
||||
.label(false)
|
||||
.build(ui);
|
||||
.build();
|
||||
|
||||
ui.text("Color picker:");
|
||||
ui.checkbox("With Alpha", &mut s.alpha);
|
||||
@ -636,13 +637,13 @@ CTRL+click on individual component to input value.\n",
|
||||
ui.checkbox("With Ref Color", &mut s.ref_color);
|
||||
if s.ref_color {
|
||||
ui.same_line();
|
||||
ColorEdit4::new("##RefColor", &mut s.ref_color_v)
|
||||
ui.color_edit4_config("##RefColor", &mut s.ref_color_v)
|
||||
.flags(misc_flags)
|
||||
.inputs(false)
|
||||
.build(ui);
|
||||
.build();
|
||||
}
|
||||
}
|
||||
let mut b = ColorPicker4::new
|
||||
let mut b = ui.color_picker4_config
|
||||
("MyColor##4", &mut s.color)
|
||||
.flags(misc_flags)
|
||||
.alpha(s.alpha)
|
||||
@ -653,7 +654,7 @@ CTRL+click on individual component to input value.\n",
|
||||
if s.ref_color {
|
||||
b = b.reference_color(s.ref_color_v)
|
||||
}
|
||||
b.build(ui);
|
||||
b.build();
|
||||
}
|
||||
}
|
||||
|
||||
@ -801,7 +802,7 @@ CTRL+click on individual component to input value.\n",
|
||||
let items = &["aaaa", "bbbb", "cccc", "dddd", "eeee"];
|
||||
ui.combo_simple_string("Combo", &mut state.stacked_modals_item, items);
|
||||
|
||||
ColorEdit4::new("color", &mut state.stacked_modals_color).build(ui);
|
||||
ui.color_edit4_config("color", &mut state.stacked_modals_color).build();
|
||||
|
||||
if ui.button("Add another modal..") {
|
||||
ui.open_popup("Stacked 2") ;
|
||||
@ -970,7 +971,7 @@ fn show_example_app_custom_rendering(ui: &Ui, state: &mut CustomRenderingState,
|
||||
.build(|| {
|
||||
ui.text("Primitives");
|
||||
// TODO: Add DragFloat to change value of sz
|
||||
ColorEdit3::new("Color", &mut state.col).build(ui);
|
||||
ui.color_edit3("Color", &mut state.col);
|
||||
let draw_list = ui.get_window_draw_list();
|
||||
let p = ui.cursor_screen_pos();
|
||||
let spacing = 8.0;
|
||||
|
||||
@ -186,25 +186,27 @@ bitflags! {
|
||||
/// ```
|
||||
#[derive(Debug)]
|
||||
#[must_use]
|
||||
pub struct ColorEdit3<'a, T, C> {
|
||||
label: T,
|
||||
pub struct ColorEdit3<'ui, 'a, Label, C> {
|
||||
label: Label,
|
||||
value: &'a mut C,
|
||||
flags: ColorEditFlags,
|
||||
ui: &'ui Ui,
|
||||
}
|
||||
|
||||
impl<'a, T, C> ColorEdit3<'a, T, C>
|
||||
impl<'ui, 'a, Label, C> ColorEdit3<'ui, 'a, Label, C>
|
||||
where
|
||||
T: AsRef<str>,
|
||||
Label: AsRef<str>,
|
||||
C: Copy + Into<MintVec3>,
|
||||
MintVec3: Into<C> + Into<[f32; 3]>,
|
||||
{
|
||||
/// Constructs a new color editor builder.
|
||||
#[doc(alias = "ColorEdit3")]
|
||||
pub fn new(label: T, value: &'a mut C) -> Self {
|
||||
#[deprecated(since = "0.9.0", note = "Use `ui.color_edit3(...)` instead")]
|
||||
pub fn new(ui: &'ui Ui, label: Label, value: &'a mut C) -> Self {
|
||||
ColorEdit3 {
|
||||
label,
|
||||
value,
|
||||
flags: ColorEditFlags::empty(),
|
||||
ui,
|
||||
}
|
||||
}
|
||||
/// Replaces all current settings with the given flags.
|
||||
@ -326,8 +328,7 @@ where
|
||||
/// Builds the color editor.
|
||||
///
|
||||
/// Returns true if the color value was changed.
|
||||
pub fn build(mut self, ui: &Ui) -> bool {
|
||||
// if let EditableColor::Float3(_) = self.value {
|
||||
pub fn build(mut self) -> bool {
|
||||
self.flags.insert(ColorEditFlags::NO_ALPHA);
|
||||
|
||||
let as_vec3: MintVec3 = (*self.value).into();
|
||||
@ -335,7 +336,7 @@ where
|
||||
|
||||
let changed = unsafe {
|
||||
sys::igColorEdit3(
|
||||
ui.scratch_txt(self.label),
|
||||
self.ui.scratch_txt(self.label),
|
||||
as_vec3.as_mut_ptr(),
|
||||
self.flags.bits() as _,
|
||||
)
|
||||
@ -352,6 +353,44 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl Ui {
|
||||
/// Edits a color of 3 channels. Use [color_edit3_config](Self::color_edit3_config)
|
||||
/// for a builder to customize this widget.
|
||||
pub fn color_edit3<Label, C>(&self, label: Label, value: &mut C) -> bool
|
||||
where
|
||||
Label: AsRef<str>,
|
||||
C: Copy + Into<MintVec3>,
|
||||
MintVec3: Into<C> + Into<[f32; 3]>,
|
||||
{
|
||||
ColorEdit3 {
|
||||
label,
|
||||
value,
|
||||
flags: ColorEditFlags::empty(),
|
||||
ui: self,
|
||||
}
|
||||
.build()
|
||||
}
|
||||
|
||||
/// Constructs a new color editor builder.
|
||||
pub fn color_edit3_config<'a, Label, C>(
|
||||
&self,
|
||||
label: Label,
|
||||
value: &'a mut C,
|
||||
) -> ColorEdit3<'_, 'a, Label, C>
|
||||
where
|
||||
Label: AsRef<str>,
|
||||
C: Copy + Into<MintVec3>,
|
||||
MintVec3: Into<C> + Into<[f32; 3]>,
|
||||
{
|
||||
ColorEdit3 {
|
||||
label,
|
||||
value,
|
||||
flags: ColorEditFlags::empty(),
|
||||
ui: self,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Builder for a color editor widget.
|
||||
///
|
||||
/// # Examples
|
||||
@ -368,25 +407,27 @@ where
|
||||
/// ```
|
||||
#[derive(Debug)]
|
||||
#[must_use]
|
||||
pub struct ColorEdit4<'a, T, C> {
|
||||
pub struct ColorEdit4<'ui, 'a, T, C> {
|
||||
label: T,
|
||||
value: &'a mut C,
|
||||
flags: ColorEditFlags,
|
||||
ui: &'ui Ui,
|
||||
}
|
||||
|
||||
impl<'a, T, C> ColorEdit4<'a, T, C>
|
||||
impl<'ui, 'a, T, C> ColorEdit4<'ui, 'a, T, C>
|
||||
where
|
||||
T: AsRef<str>,
|
||||
C: Copy + Into<MintVec4>,
|
||||
MintVec4: Into<C> + Into<[f32; 4]>,
|
||||
{
|
||||
/// Constructs a new color editor builder.
|
||||
#[doc(alias = "ColorEdit4")]
|
||||
pub fn new(label: T, value: &'a mut C) -> Self {
|
||||
#[deprecated(since = "0.9.0", note = "Use `ui.color_edit4(...)` instead")]
|
||||
pub fn new(ui: &'ui Ui, label: T, value: &'a mut C) -> Self {
|
||||
Self {
|
||||
label,
|
||||
value,
|
||||
flags: ColorEditFlags::empty(),
|
||||
ui,
|
||||
}
|
||||
}
|
||||
/// Replaces all current settings with the given flags.
|
||||
@ -508,13 +549,13 @@ where
|
||||
/// Builds the color editor.
|
||||
///
|
||||
/// Returns true if the color value was changed.
|
||||
pub fn build(self, ui: &Ui) -> bool {
|
||||
pub fn build(self) -> bool {
|
||||
let as_vec4: MintVec4 = (*self.value).into();
|
||||
let mut as_vec4: [f32; 4] = as_vec4.into();
|
||||
|
||||
let changed = unsafe {
|
||||
sys::igColorEdit4(
|
||||
ui.scratch_txt(self.label),
|
||||
self.ui.scratch_txt(self.label),
|
||||
as_vec4.as_mut_ptr(),
|
||||
self.flags.bits() as _,
|
||||
)
|
||||
@ -531,6 +572,44 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl Ui {
|
||||
/// Edits a color of 4 channels. Use [color_edit4_config](Self::color_edit4_config)
|
||||
/// for a builder to customize this widget.
|
||||
pub fn color_edit4<Label, C>(&self, label: Label, value: &mut C) -> bool
|
||||
where
|
||||
Label: AsRef<str>,
|
||||
C: Copy + Into<MintVec4>,
|
||||
MintVec4: Into<C> + Into<[f32; 4]>,
|
||||
{
|
||||
ColorEdit4 {
|
||||
label,
|
||||
value,
|
||||
flags: ColorEditFlags::empty(),
|
||||
ui: self,
|
||||
}
|
||||
.build()
|
||||
}
|
||||
|
||||
/// Constructs a new color editor builder.
|
||||
pub fn color_edit4_config<'a, Label, C>(
|
||||
&self,
|
||||
label: Label,
|
||||
value: &'a mut C,
|
||||
) -> ColorEdit4<'_, 'a, Label, C>
|
||||
where
|
||||
Label: AsRef<str>,
|
||||
C: Copy + Into<MintVec4>,
|
||||
MintVec4: Into<C> + Into<[f32; 4]>,
|
||||
{
|
||||
ColorEdit4 {
|
||||
label,
|
||||
value,
|
||||
flags: ColorEditFlags::empty(),
|
||||
ui: self,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Builder for a color picker widget.
|
||||
///
|
||||
/// # Examples
|
||||
@ -547,25 +626,27 @@ where
|
||||
/// ```
|
||||
#[derive(Debug)]
|
||||
#[must_use]
|
||||
pub struct ColorPicker3<'a, Label, Color> {
|
||||
pub struct ColorPicker3<'ui, 'a, Label, Color> {
|
||||
label: Label,
|
||||
value: &'a mut Color,
|
||||
flags: ColorEditFlags,
|
||||
ui: &'ui Ui,
|
||||
}
|
||||
|
||||
impl<'a, Label, Color> ColorPicker3<'a, Label, Color>
|
||||
impl<'ui, 'a, Label, Color> ColorPicker3<'ui, 'a, Label, Color>
|
||||
where
|
||||
Label: AsRef<str>,
|
||||
Color: Copy + Into<MintVec3>,
|
||||
MintVec3: Into<Color> + Into<[f32; 3]>,
|
||||
{
|
||||
/// Constructs a new color picker builder.
|
||||
#[doc(alias = "ColorPicker3")]
|
||||
pub fn new(label: Label, value: &'a mut Color) -> Self {
|
||||
#[deprecated(since = "0.9.0", note = "Use `ui.color_picker3(...)` instead")]
|
||||
pub fn new(ui: &'ui Ui, label: Label, value: &'a mut Color) -> Self {
|
||||
ColorPicker3 {
|
||||
label,
|
||||
value,
|
||||
flags: ColorEditFlags::empty(),
|
||||
ui,
|
||||
}
|
||||
}
|
||||
/// Replaces all current settings with the given flags.
|
||||
@ -694,12 +775,12 @@ where
|
||||
/// Builds the color picker.
|
||||
///
|
||||
/// Returns true if the color value was changed.
|
||||
pub fn build(mut self, ui: &Ui) -> bool {
|
||||
pub fn build(mut self) -> bool {
|
||||
self.flags.insert(ColorEditFlags::NO_ALPHA);
|
||||
let mut value: [f32; 3] = (*self.value).into().into();
|
||||
let changed = unsafe {
|
||||
sys::igColorPicker3(
|
||||
ui.scratch_txt(self.label),
|
||||
self.ui.scratch_txt(self.label),
|
||||
value.as_mut_ptr(),
|
||||
self.flags.bits() as _,
|
||||
)
|
||||
@ -715,6 +796,44 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl Ui {
|
||||
/// Edits a color of 3 channels. Use [color_picker3](Self::color_picker3)
|
||||
/// for a builder to customize this widget.
|
||||
pub fn color_picker3<Label, C>(&self, label: Label, value: &mut C) -> bool
|
||||
where
|
||||
Label: AsRef<str>,
|
||||
C: Copy + Into<MintVec3>,
|
||||
MintVec3: Into<C> + Into<[f32; 3]>,
|
||||
{
|
||||
ColorPicker3 {
|
||||
label,
|
||||
value,
|
||||
flags: ColorEditFlags::empty(),
|
||||
ui: self,
|
||||
}
|
||||
.build()
|
||||
}
|
||||
|
||||
/// Constructs a new color picker editor builder.
|
||||
pub fn color_picker3_config<'a, Label, C>(
|
||||
&self,
|
||||
label: Label,
|
||||
value: &'a mut C,
|
||||
) -> ColorPicker3<'_, 'a, Label, C>
|
||||
where
|
||||
Label: AsRef<str>,
|
||||
C: Copy + Into<MintVec3>,
|
||||
MintVec3: Into<C> + Into<[f32; 3]>,
|
||||
{
|
||||
ColorPicker3 {
|
||||
label,
|
||||
value,
|
||||
flags: ColorEditFlags::empty(),
|
||||
ui: self,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Builder for a color picker widget.
|
||||
///
|
||||
/// # Examples
|
||||
@ -731,27 +850,29 @@ where
|
||||
/// ```
|
||||
#[derive(Debug)]
|
||||
#[must_use]
|
||||
pub struct ColorPicker4<'a, Label, Color> {
|
||||
pub struct ColorPicker4<'ui, 'a, Label, Color> {
|
||||
label: Label,
|
||||
value: &'a mut Color,
|
||||
flags: ColorEditFlags,
|
||||
ref_color: Option<[f32; 4]>,
|
||||
ui: &'ui Ui,
|
||||
}
|
||||
|
||||
impl<'a, Label, Color> ColorPicker4<'a, Label, Color>
|
||||
impl<'ui, 'a, Label, Color> ColorPicker4<'ui, 'a, Label, Color>
|
||||
where
|
||||
Label: AsRef<str>,
|
||||
Color: Copy + Into<MintVec4>,
|
||||
MintVec4: Into<Color> + Into<[f32; 4]>,
|
||||
{
|
||||
/// Constructs a new color picker builder.
|
||||
#[doc(alias = "ColorPicker4")]
|
||||
pub fn new(label: Label, value: &'a mut Color) -> Self {
|
||||
#[deprecated(since = "0.9.0", note = "Use `ui.color_picker4(...)` instead")]
|
||||
pub fn new(ui: &'ui Ui, label: Label, value: &'a mut Color) -> Self {
|
||||
Self {
|
||||
label,
|
||||
value,
|
||||
flags: ColorEditFlags::empty(),
|
||||
ref_color: None,
|
||||
ui,
|
||||
}
|
||||
}
|
||||
/// Replaces all current settings with the given flags.
|
||||
@ -886,13 +1007,13 @@ where
|
||||
/// Builds the color picker.
|
||||
///
|
||||
/// Returns true if the color value was changed.
|
||||
pub fn build(self, ui: &Ui) -> bool {
|
||||
pub fn build(self) -> bool {
|
||||
let mut value: [f32; 4] = (*self.value).into().into();
|
||||
let ref_color = self.ref_color.map(|c| c.as_ptr()).unwrap_or(ptr::null());
|
||||
|
||||
let changed = unsafe {
|
||||
sys::igColorPicker4(
|
||||
ui.scratch_txt(self.label),
|
||||
self.ui.scratch_txt(self.label),
|
||||
value.as_mut_ptr(),
|
||||
self.flags.bits() as _,
|
||||
ref_color,
|
||||
@ -909,6 +1030,46 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl Ui {
|
||||
/// Edits a color of 4 channels. Use [color_picker4_config](Self::color_picker4_config)
|
||||
/// for a builder to customize this widget.
|
||||
pub fn color_picker4<Label, C>(&self, label: Label, value: &mut C) -> bool
|
||||
where
|
||||
Label: AsRef<str>,
|
||||
C: Copy + Into<MintVec4>,
|
||||
MintVec4: Into<C> + Into<[f32; 4]>,
|
||||
{
|
||||
ColorPicker4 {
|
||||
label,
|
||||
value,
|
||||
flags: ColorEditFlags::empty(),
|
||||
ref_color: None,
|
||||
ui: self,
|
||||
}
|
||||
.build()
|
||||
}
|
||||
|
||||
/// Constructs a new color picker editor builder.
|
||||
pub fn color_picker4_config<'a, Label, C>(
|
||||
&self,
|
||||
label: Label,
|
||||
value: &'a mut C,
|
||||
) -> ColorPicker4<'_, 'a, Label, C>
|
||||
where
|
||||
Label: AsRef<str>,
|
||||
C: Copy + Into<MintVec4>,
|
||||
MintVec4: Into<C> + Into<[f32; 4]>,
|
||||
{
|
||||
ColorPicker4 {
|
||||
label,
|
||||
value,
|
||||
flags: ColorEditFlags::empty(),
|
||||
ref_color: None,
|
||||
ui: self,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Builder for a color button widget.
|
||||
///
|
||||
/// # Examples
|
||||
@ -922,21 +1083,24 @@ where
|
||||
/// ```
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[must_use]
|
||||
pub struct ColorButton<T> {
|
||||
pub struct ColorButton<'ui, T> {
|
||||
desc_id: T,
|
||||
color: [f32; 4],
|
||||
flags: ColorEditFlags,
|
||||
size: [f32; 2],
|
||||
ui: &'ui Ui,
|
||||
}
|
||||
|
||||
impl<T: AsRef<str>> ColorButton<T> {
|
||||
impl<'ui, T: AsRef<str>> ColorButton<'ui, T> {
|
||||
/// Constructs a new color button builder.
|
||||
pub fn new(desc_id: T, color: impl Into<MintVec4>) -> Self {
|
||||
#[deprecated(since = "0.9.0", note = "Use `ui.color_button_config(...)` instead")]
|
||||
pub fn new(ui: &'ui Ui, desc_id: T, color: impl Into<MintVec4>) -> Self {
|
||||
ColorButton {
|
||||
desc_id,
|
||||
color: color.into().into(),
|
||||
flags: ColorEditFlags::empty(),
|
||||
size: [0.0, 0.0],
|
||||
ui,
|
||||
}
|
||||
}
|
||||
/// Replaces all current settings with the given flags.
|
||||
@ -1008,10 +1172,10 @@ impl<T: AsRef<str>> ColorButton<T> {
|
||||
/// Builds the color button.
|
||||
///
|
||||
/// Returns true if this color button was clicked.
|
||||
pub fn build(self, ui: &Ui) -> bool {
|
||||
pub fn build(self) -> bool {
|
||||
unsafe {
|
||||
sys::igColorButton(
|
||||
ui.scratch_txt(self.desc_id),
|
||||
self.ui.scratch_txt(self.desc_id),
|
||||
self.color.into(),
|
||||
self.flags.bits() as _,
|
||||
self.size.into(),
|
||||
@ -1020,6 +1184,41 @@ impl<T: AsRef<str>> ColorButton<T> {
|
||||
}
|
||||
}
|
||||
|
||||
impl Ui {
|
||||
/// Builds a [ColorButton].
|
||||
///
|
||||
/// Returns true if this color button was clicked.
|
||||
pub fn color_button<Label: AsRef<str>>(
|
||||
&self,
|
||||
desc_id: Label,
|
||||
color: impl Into<MintVec4>,
|
||||
) -> bool {
|
||||
ColorButton {
|
||||
desc_id,
|
||||
color: color.into().into(),
|
||||
flags: ColorEditFlags::empty(),
|
||||
size: [0.0, 0.0],
|
||||
ui: self,
|
||||
}
|
||||
.build()
|
||||
}
|
||||
|
||||
/// Returns a [ColorButton] builder.
|
||||
pub fn color_button_config<Label: AsRef<str>>(
|
||||
&self,
|
||||
desc_id: Label,
|
||||
color: impl Into<MintVec4>,
|
||||
) -> ColorButton<'_, Label> {
|
||||
ColorButton {
|
||||
desc_id,
|
||||
color: color.into().into(),
|
||||
flags: ColorEditFlags::empty(),
|
||||
size: [0.0, 0.0],
|
||||
ui: self,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// # Widgets: Color Editor/Picker
|
||||
impl Ui {
|
||||
/// Initializes current color editor/picker options (generally on application startup) if you
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user