use crate::enums::*;
use crate::image::Image;
use crate::prelude::*;
use crate::utils::*;
use fltk_sys::valuator::*;
use std::{
ffi::{CStr, CString},
mem,
os::raw,
};
#[derive(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct Slider {
inner: *mut Fl_Slider,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
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 { mem::transmute(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(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct NiceSlider {
inner: *mut Fl_Nice_Slider,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
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 { mem::transmute(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(WidgetType, Debug, Copy, Clone, PartialEq)]
pub enum SliderType {
Vertical = 0,
Horizontal = 1,
VerticalFill = 2,
HorizontalFill = 3,
VerticalNice = 4,
HorizontalNice = 5,
}
#[derive(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct Dial {
inner: *mut Fl_Dial,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
impl Dial {
pub fn angles(&self) -> (i32, i32) {
let angle1 = unsafe { Fl_Dial_angle1(self.inner) };
let angle2 = unsafe { Fl_Dial_angle1(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(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct LineDial {
inner: *mut Fl_Line_Dial,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
impl LineDial {
pub fn angles(&self) -> (i32, i32) {
let angle1 = unsafe { Fl_Dial_angle1(self.inner as _) };
let angle2 = unsafe { Fl_Dial_angle1(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(WidgetType, Debug, Copy, Clone, PartialEq)]
pub enum DialType {
Normal = 0,
Line = 1,
Fill = 2,
}
#[derive(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct Counter {
inner: *mut Fl_Counter,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
#[repr(i32)]
#[derive(WidgetType, Debug, Copy, Clone, PartialEq)]
pub enum CounterType {
Normal = 0,
Simple = 1,
}
#[derive(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct Scrollbar {
inner: *mut Fl_Scrollbar,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
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 { mem::transmute(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(WidgetType, Debug, Copy, Clone, PartialEq)]
pub enum ScrollbarType {
Vertical = 0,
Horizontal = 1,
VerticalFill = 2,
HorizontalFill = 3,
VerticalNice = 4,
HorizontalNice = 5,
}
#[derive(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct Roller {
inner: *mut Fl_Roller,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
#[derive(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct ValueSlider {
inner: *mut Fl_Value_Slider,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
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() as i32) }
}
pub fn text_size(&self) -> i32 {
assert!(!self.was_deleted());
unsafe { Fl_Value_Slider_text_size(self.inner) as i32 }
}
pub fn set_text_size(&mut self, s: i32) {
assert!(!self.was_deleted());
unsafe { Fl_Value_Slider_set_text_size(self.inner, s as i32) }
}
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() as u32) }
}
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 { mem::transmute(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(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct Adjuster {
inner: *mut Fl_Adjuster,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
#[derive(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct ValueInput {
inner: *mut Fl_Value_Input,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
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() as i32) }
}
pub fn text_size(&self) -> i32 {
assert!(!self.was_deleted());
unsafe { Fl_Value_Input_text_size(self.inner) as i32 }
}
pub fn set_text_size(&mut self, s: i32) {
assert!(!self.was_deleted());
unsafe { Fl_Value_Input_set_text_size(self.inner, s as i32) }
}
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() as u32) }
}
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(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct ValueOutput {
inner: *mut Fl_Value_Output,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
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() as i32) }
}
pub fn text_size(&self) -> i32 {
assert!(!self.was_deleted());
unsafe { Fl_Value_Output_text_size(self.inner) as i32 }
}
pub fn set_text_size(&mut self, s: i32) {
assert!(!self.was_deleted());
unsafe { Fl_Value_Output_set_text_size(self.inner, s as i32) }
}
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() as u32) }
}
}
#[derive(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct FillSlider {
inner: *mut Fl_Fill_Slider,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
#[derive(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct FillDial {
inner: *mut Fl_Fill_Dial,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
impl FillDial {
pub fn angles(&self) -> (i32, i32) {
let angle1 = unsafe { Fl_Dial_angle1(self.inner as _) };
let angle2 = unsafe { Fl_Dial_angle1(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(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct HorSlider {
inner: *mut Fl_Hor_Slider,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
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 { mem::transmute(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(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct HorFillSlider {
inner: *mut Fl_Hor_Fill_Slider,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
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 { mem::transmute(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(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct HorNiceSlider {
inner: *mut Fl_Hor_Nice_Slider,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
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 { mem::transmute(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(WidgetBase, WidgetExt, ValuatorExt, Debug)]
pub struct HorValueSlider {
inner: *mut Fl_Hor_Value_Slider,
tracker: *mut fltk_sys::fl::Fl_Widget_Tracker,
}
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() as i32) }
}
pub fn text_size(&self) -> i32 {
assert!(!self.was_deleted());
unsafe { Fl_Hor_Value_Slider_text_size(self.inner) as i32 }
}
pub fn set_text_size(&mut self, s: i32) {
assert!(!self.was_deleted());
unsafe { Fl_Hor_Value_Slider_set_text_size(self.inner, s as i32) }
}
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() as u32) }
}
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 { mem::transmute(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) }
}
}