use crate::enums::{Color, Font, FrameType};
use crate::prelude::*;
use crate::utils::FlString;
use fltk_sys::valuator::*;
use std::{
ffi::{CStr, CString},
os::raw,
};
#[derive(Debug)]
pub struct Slider {
inner: *mut Fl_Slider,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(Slider, Fl_Slider);
crate::macros::widget::impl_widget_base!(Slider, Fl_Slider);
crate::macros::widget::impl_widget_default!(Slider);
crate::macros::valuator::impl_valuator_ext!(Slider, Fl_Slider);
impl Slider {
pub fn slider_size(&self) -> f32 {
unsafe { Fl_Slider_slider_size(self.inner) }
}
pub fn set_slider_size(&mut self, v: f32) {
unsafe { Fl_Slider_set_slider_size(self.inner, v) }
}
pub fn slider_frame(&self) -> FrameType {
unsafe { FrameType::from_i32(Fl_Slider_slider_box(self.inner)) }
}
pub fn set_slider_frame(&mut self, c: FrameType) {
unsafe { Fl_Slider_set_slider_box(self.inner, c.as_i32()) }
}
}
#[derive(Debug)]
pub struct NiceSlider {
inner: *mut Fl_Nice_Slider,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(NiceSlider, Fl_Nice_Slider);
crate::macros::widget::impl_widget_base!(NiceSlider, Fl_Nice_Slider);
crate::macros::widget::impl_widget_default!(NiceSlider);
crate::macros::valuator::impl_valuator_ext!(NiceSlider, Fl_Nice_Slider);
impl NiceSlider {
pub fn slider_size(&self) -> f32 {
unsafe { Fl_Slider_slider_size(self.inner as _) }
}
pub fn set_slider_size(&mut self, v: f32) {
unsafe { Fl_Slider_set_slider_size(self.inner as _, v) }
}
pub fn slider_frame(&self) -> FrameType {
unsafe { FrameType::from_i32(Fl_Slider_slider_box(self.inner as _)) }
}
pub fn set_slider_frame(&mut self, c: FrameType) {
unsafe { Fl_Slider_set_slider_box(self.inner as _, c.as_i32()) }
}
}
#[repr(i32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum SliderType {
Vertical = 0,
Horizontal = 1,
VerticalFill = 2,
HorizontalFill = 3,
VerticalNice = 4,
HorizontalNice = 5,
}
crate::macros::widget::impl_widget_type!(SliderType);
#[derive(Debug)]
pub struct Dial {
inner: *mut Fl_Dial,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(Dial, Fl_Dial);
crate::macros::widget::impl_widget_base!(Dial, Fl_Dial);
crate::macros::widget::impl_widget_default!(Dial);
crate::macros::valuator::impl_valuator_ext!(Dial, Fl_Dial);
impl Dial {
pub fn angles(&self) -> (i32, i32) {
let angle1 = unsafe { Fl_Dial_angle1(self.inner) };
let angle2 = unsafe { Fl_Dial_angle2(self.inner) };
(angle1 as i32, angle2 as i32)
}
pub fn set_angles(&mut self, angle1: i32, angle2: i32) {
if angle1 <= 360 {
unsafe {
Fl_Dial_set_angle1(self.inner, angle1 as _);
}
}
if angle2 <= 360 {
unsafe {
Fl_Dial_set_angle2(self.inner, angle2 as _);
}
}
}
}
#[derive(Debug)]
pub struct LineDial {
inner: *mut Fl_Line_Dial,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(LineDial, Fl_Line_Dial);
crate::macros::widget::impl_widget_base!(LineDial, Fl_Line_Dial);
crate::macros::widget::impl_widget_default!(LineDial);
crate::macros::valuator::impl_valuator_ext!(LineDial, Fl_Line_Dial);
impl LineDial {
pub fn angles(&self) -> (i32, i32) {
let angle1 = unsafe { Fl_Dial_angle1(self.inner as _) };
let angle2 = unsafe { Fl_Dial_angle2(self.inner as _) };
(angle1 as i32, angle2 as i32)
}
pub fn set_angles(&mut self, angle1: i32, angle2: i32) {
if angle1 <= 360 {
unsafe {
Fl_Dial_set_angle1(self.inner as _, angle1 as _);
}
}
if angle2 <= 360 {
unsafe {
Fl_Dial_set_angle2(self.inner as _, angle2 as _);
}
}
}
}
#[repr(i32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum DialType {
Normal = 0,
Line = 1,
Fill = 2,
}
crate::macros::widget::impl_widget_type!(DialType);
#[derive(Debug)]
pub struct Counter {
inner: *mut Fl_Counter,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(Counter, Fl_Counter);
crate::macros::widget::impl_widget_base!(Counter, Fl_Counter);
crate::macros::widget::impl_widget_default!(Counter);
crate::macros::valuator::impl_valuator_ext!(Counter, Fl_Counter);
#[repr(i32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum CounterType {
Normal = 0,
Simple = 1,
}
crate::macros::widget::impl_widget_type!(CounterType);
#[derive(Debug)]
pub struct Scrollbar {
inner: *mut Fl_Scrollbar,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(Scrollbar, Fl_Scrollbar);
crate::macros::widget::impl_widget_base!(Scrollbar, Fl_Scrollbar);
crate::macros::widget::impl_widget_default!(Scrollbar);
crate::macros::valuator::impl_valuator_ext!(Scrollbar, Fl_Scrollbar);
impl Scrollbar {
pub fn slider_size(&self) -> f32 {
unsafe { Fl_Slider_slider_size(self.inner as _) }
}
pub fn set_slider_size(&mut self, v: f32) {
unsafe { Fl_Slider_set_slider_size(self.inner as _, v) }
}
pub fn slider_frame(&self) -> FrameType {
unsafe { FrameType::from_i32(Fl_Slider_slider_box(self.inner as _)) }
}
pub fn set_slider_frame(&mut self, c: FrameType) {
unsafe { Fl_Slider_set_slider_box(self.inner as _, c.as_i32()) }
}
}
#[repr(i32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum ScrollbarType {
Vertical = 0,
Horizontal = 1,
VerticalFill = 2,
HorizontalFill = 3,
VerticalNice = 4,
HorizontalNice = 5,
}
crate::macros::widget::impl_widget_type!(ScrollbarType);
#[derive(Debug)]
pub struct Roller {
inner: *mut Fl_Roller,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(Roller, Fl_Roller);
crate::macros::widget::impl_widget_base!(Roller, Fl_Roller);
crate::macros::widget::impl_widget_default!(Roller);
crate::macros::valuator::impl_valuator_ext!(Roller, Fl_Roller);
#[derive(Debug)]
pub struct ValueSlider {
inner: *mut Fl_Value_Slider,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(ValueSlider, Fl_Value_Slider);
crate::macros::widget::impl_widget_base!(ValueSlider, Fl_Value_Slider);
crate::macros::widget::impl_widget_default!(ValueSlider);
crate::macros::valuator::impl_valuator_ext!(ValueSlider, Fl_Value_Slider);
impl ValueSlider {
pub fn text_font(&self) -> Font {
assert!(!self.was_deleted());
unsafe { std::mem::transmute(Fl_Value_Slider_text_font(self.inner)) }
}
pub fn set_text_font(&mut self, f: Font) {
assert!(!self.was_deleted());
unsafe { Fl_Value_Slider_set_text_font(self.inner, f.bits()) }
}
pub fn text_size(&self) -> i32 {
assert!(!self.was_deleted());
unsafe { Fl_Value_Slider_text_size(self.inner) }
}
pub fn set_text_size(&mut self, s: i32) {
assert!(!self.was_deleted());
unsafe { Fl_Value_Slider_set_text_size(self.inner, s) }
}
pub fn text_color(&self) -> Color {
assert!(!self.was_deleted());
unsafe { std::mem::transmute(Fl_Value_Slider_text_color(self.inner)) }
}
pub fn set_text_color(&mut self, color: Color) {
assert!(!self.was_deleted());
unsafe { Fl_Value_Slider_set_text_color(self.inner, color.bits()) }
}
pub fn slider_size(&self) -> f32 {
unsafe { Fl_Slider_slider_size(self.inner as _) }
}
pub fn set_slider_size(&mut self, v: f32) {
unsafe { Fl_Slider_set_slider_size(self.inner as _, v) }
}
pub fn slider_frame(&self) -> FrameType {
unsafe { FrameType::from_i32(Fl_Slider_slider_box(self.inner as _)) }
}
pub fn set_slider_frame(&mut self, c: FrameType) {
unsafe { Fl_Slider_set_slider_box(self.inner as _, c.as_i32()) }
}
}
#[derive(Debug)]
pub struct Adjuster {
inner: *mut Fl_Adjuster,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(Adjuster, Fl_Adjuster);
crate::macros::widget::impl_widget_base!(Adjuster, Fl_Adjuster);
crate::macros::widget::impl_widget_default!(Adjuster);
crate::macros::valuator::impl_valuator_ext!(Adjuster, Fl_Adjuster);
#[derive(Debug)]
pub struct ValueInput {
inner: *mut Fl_Value_Input,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(ValueInput, Fl_Value_Input);
crate::macros::widget::impl_widget_base!(ValueInput, Fl_Value_Input);
crate::macros::widget::impl_widget_default!(ValueInput);
crate::macros::valuator::impl_valuator_ext!(ValueInput, Fl_Value_Input);
impl ValueInput {
pub fn text_font(&self) -> Font {
assert!(!self.was_deleted());
unsafe { std::mem::transmute(Fl_Value_Input_text_font(self.inner)) }
}
pub fn set_text_font(&mut self, f: Font) {
assert!(!self.was_deleted());
unsafe { Fl_Value_Input_set_text_font(self.inner, f.bits()) }
}
pub fn text_size(&self) -> i32 {
assert!(!self.was_deleted());
unsafe { Fl_Value_Input_text_size(self.inner) }
}
pub fn set_text_size(&mut self, s: i32) {
assert!(!self.was_deleted());
unsafe { Fl_Value_Input_set_text_size(self.inner, s) }
}
pub fn text_color(&self) -> Color {
assert!(!self.was_deleted());
unsafe { std::mem::transmute(Fl_Value_Input_text_color(self.inner)) }
}
pub fn set_text_color(&mut self, color: Color) {
assert!(!self.was_deleted());
unsafe { Fl_Value_Input_set_text_color(self.inner, color.bits()) }
}
pub fn soft(&self) -> bool {
assert!(!self.was_deleted());
unsafe { Fl_Value_Input_soft(self.inner) != 0 }
}
pub fn set_soft(&mut self, val: bool) {
assert!(!self.was_deleted());
unsafe { Fl_Value_Input_set_soft(self.inner, val as raw::c_char) }
}
}
#[derive(Debug)]
pub struct ValueOutput {
inner: *mut Fl_Value_Output,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(ValueOutput, Fl_Value_Output);
crate::macros::widget::impl_widget_base!(ValueOutput, Fl_Value_Output);
crate::macros::widget::impl_widget_default!(ValueOutput);
crate::macros::valuator::impl_valuator_ext!(ValueOutput, Fl_Value_Output);
impl ValueOutput {
pub fn text_font(&self) -> Font {
assert!(!self.was_deleted());
unsafe { std::mem::transmute(Fl_Value_Output_text_font(self.inner)) }
}
pub fn set_text_font(&mut self, f: Font) {
assert!(!self.was_deleted());
unsafe { Fl_Value_Output_set_text_font(self.inner, f.bits()) }
}
pub fn text_size(&self) -> i32 {
assert!(!self.was_deleted());
unsafe { Fl_Value_Output_text_size(self.inner) }
}
pub fn set_text_size(&mut self, s: i32) {
assert!(!self.was_deleted());
unsafe { Fl_Value_Output_set_text_size(self.inner, s) }
}
pub fn text_color(&self) -> Color {
assert!(!self.was_deleted());
unsafe { std::mem::transmute(Fl_Value_Output_text_color(self.inner)) }
}
pub fn set_text_color(&mut self, color: Color) {
assert!(!self.was_deleted());
unsafe { Fl_Value_Output_set_text_color(self.inner, color.bits()) }
}
}
#[derive(Debug)]
pub struct FillSlider {
inner: *mut Fl_Fill_Slider,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(FillSlider, Fl_Fill_Slider);
crate::macros::widget::impl_widget_base!(FillSlider, Fl_Fill_Slider);
crate::macros::widget::impl_widget_default!(FillSlider);
crate::macros::valuator::impl_valuator_ext!(FillSlider, Fl_Fill_Slider);
#[derive(Debug)]
pub struct FillDial {
inner: *mut Fl_Fill_Dial,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(FillDial, Fl_Fill_Dial);
crate::macros::widget::impl_widget_base!(FillDial, Fl_Fill_Dial);
crate::macros::widget::impl_widget_default!(FillDial);
crate::macros::valuator::impl_valuator_ext!(FillDial, Fl_Fill_Dial);
impl FillDial {
pub fn angles(&self) -> (i32, i32) {
let angle1 = unsafe { Fl_Dial_angle1(self.inner as _) };
let angle2 = unsafe { Fl_Dial_angle2(self.inner as _) };
(angle1 as i32, angle2 as i32)
}
pub fn set_angles(&mut self, angle1: i32, angle2: i32) {
if angle1 <= 360 {
unsafe {
Fl_Dial_set_angle1(self.inner as _, angle1 as _);
}
}
if angle2 <= 360 {
unsafe {
Fl_Dial_set_angle2(self.inner as _, angle2 as _);
}
}
}
}
#[derive(Debug)]
pub struct HorSlider {
inner: *mut Fl_Hor_Slider,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(HorSlider, Fl_Hor_Slider);
crate::macros::widget::impl_widget_base!(HorSlider, Fl_Hor_Slider);
crate::macros::widget::impl_widget_default!(HorSlider);
crate::macros::valuator::impl_valuator_ext!(HorSlider, Fl_Hor_Slider);
impl HorSlider {
pub fn slider_size(&self) -> f32 {
unsafe { Fl_Slider_slider_size(self.inner as _) }
}
pub fn set_slider_size(&mut self, v: f32) {
unsafe { Fl_Slider_set_slider_size(self.inner as _, v) }
}
pub fn slider_frame(&self) -> FrameType {
unsafe { FrameType::from_i32(Fl_Slider_slider_box(self.inner as _)) }
}
pub fn set_slider_frame(&mut self, c: FrameType) {
unsafe { Fl_Slider_set_slider_box(self.inner as _, c.as_i32()) }
}
}
#[derive(Debug)]
pub struct HorFillSlider {
inner: *mut Fl_Hor_Fill_Slider,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(HorFillSlider, Fl_Hor_Fill_Slider);
crate::macros::widget::impl_widget_base!(HorFillSlider, Fl_Hor_Fill_Slider);
crate::macros::widget::impl_widget_default!(HorFillSlider);
crate::macros::valuator::impl_valuator_ext!(HorFillSlider, Fl_Hor_Fill_Slider);
impl HorFillSlider {
pub fn slider_size(&self) -> f32 {
unsafe { Fl_Slider_slider_size(self.inner as _) }
}
pub fn set_slider_size(&mut self, v: f32) {
unsafe { Fl_Slider_set_slider_size(self.inner as _, v) }
}
pub fn slider_frame(&self) -> FrameType {
unsafe { FrameType::from_i32(Fl_Slider_slider_box(self.inner as _)) }
}
pub fn set_slider_frame(&mut self, c: FrameType) {
unsafe { Fl_Slider_set_slider_box(self.inner as _, c.as_i32()) }
}
}
#[derive(Debug)]
pub struct HorNiceSlider {
inner: *mut Fl_Hor_Nice_Slider,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(HorNiceSlider, Fl_Hor_Nice_Slider);
crate::macros::widget::impl_widget_base!(HorNiceSlider, Fl_Hor_Nice_Slider);
crate::macros::widget::impl_widget_default!(HorNiceSlider);
crate::macros::valuator::impl_valuator_ext!(HorNiceSlider, Fl_Hor_Nice_Slider);
impl HorNiceSlider {
pub fn slider_size(&self) -> f32 {
unsafe { Fl_Slider_slider_size(self.inner as _) }
}
pub fn set_slider_size(&mut self, v: f32) {
unsafe { Fl_Slider_set_slider_size(self.inner as _, v) }
}
pub fn slider_frame(&self) -> FrameType {
unsafe { FrameType::from_i32(Fl_Slider_slider_box(self.inner as _)) }
}
pub fn set_slider_frame(&mut self, c: FrameType) {
unsafe { Fl_Slider_set_slider_box(self.inner as _, c.as_i32()) }
}
}
#[derive(Debug)]
pub struct HorValueSlider {
inner: *mut Fl_Hor_Value_Slider,
tracker: crate::widget::WidgetTracker,
is_derived: bool,
}
crate::macros::widget::impl_widget_ext!(HorValueSlider, Fl_Hor_Value_Slider);
crate::macros::widget::impl_widget_base!(HorValueSlider, Fl_Hor_Value_Slider);
crate::macros::widget::impl_widget_default!(HorValueSlider);
crate::macros::valuator::impl_valuator_ext!(HorValueSlider, Fl_Hor_Value_Slider);
impl HorValueSlider {
pub fn text_font(&self) -> Font {
assert!(!self.was_deleted());
unsafe { std::mem::transmute(Fl_Hor_Value_Slider_text_font(self.inner)) }
}
pub fn set_text_font(&mut self, f: Font) {
assert!(!self.was_deleted());
unsafe { Fl_Hor_Value_Slider_set_text_font(self.inner, f.bits()) }
}
pub fn text_size(&self) -> i32 {
assert!(!self.was_deleted());
unsafe { Fl_Hor_Value_Slider_text_size(self.inner) }
}
pub fn set_text_size(&mut self, s: i32) {
assert!(!self.was_deleted());
unsafe { Fl_Hor_Value_Slider_set_text_size(self.inner, s) }
}
pub fn text_color(&self) -> Color {
assert!(!self.was_deleted());
unsafe { std::mem::transmute(Fl_Hor_Value_Slider_text_color(self.inner)) }
}
pub fn set_text_color(&mut self, color: Color) {
assert!(!self.was_deleted());
unsafe { Fl_Hor_Value_Slider_set_text_color(self.inner, color.bits()) }
}
pub fn slider_size(&self) -> f32 {
unsafe { Fl_Slider_slider_size(self.inner as _) }
}
pub fn set_slider_size(&mut self, v: f32) {
unsafe { Fl_Slider_set_slider_size(self.inner as _, v) }
}
pub fn slider_frame(&self) -> FrameType {
unsafe { FrameType::from_i32(Fl_Slider_slider_box(self.inner as _)) }
}
pub fn set_slider_frame(&mut self, c: FrameType) {
unsafe { Fl_Slider_set_slider_box(self.inner as _, c.as_i32()) }
}
}