From c0bd63f0c4fe1152fdcd0c3107fae3f7bc7ef22c Mon Sep 17 00:00:00 2001 From: Mohammed Alyousef Date: Wed, 29 Sep 2021 17:03:05 +0300 Subject: [PATCH] refactor and rename colors --- Cargo.toml | 4 +- README.md | 8 +- bind.sh | 1 - build.rs | 9 -- examples/aqua_dark.rs | 16 +- examples/fluent.rs | 6 +- examples/fluent_dark.rs | 48 ++++++ screenshots/aqua.jpg | Bin 18250 -> 0 bytes screenshots/aqua_classic.jpg | Bin 0 -> 19590 bytes src/cocoa_helper.h | 90 ----------- src/cocoa_helper.m | 4 - src/cocoa_helper.rs | 117 -------------- src/lib.rs | 4 +- src/widget_schemes/aqua.rs | 290 +++++++++++++++++++---------------- src/widget_schemes/fluent.rs | 4 +- 15 files changed, 231 insertions(+), 370 deletions(-) delete mode 100755 bind.sh delete mode 100644 build.rs create mode 100644 examples/fluent_dark.rs delete mode 100755 screenshots/aqua.jpg create mode 100644 screenshots/aqua_classic.jpg delete mode 100644 src/cocoa_helper.h delete mode 100644 src/cocoa_helper.m delete mode 100644 src/cocoa_helper.rs diff --git a/Cargo.toml b/Cargo.toml index 02222dd..8c58315 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,5 +16,5 @@ exclude = ["/screenshots", "./examples"] fltk = "1.1.6" lazy_static = "1.4" -[target.'cfg(target_os = "macos")'.build-dependencies] -cc = "1" \ No newline at end of file +[target.'cfg(target_os = "macos")'.dependencies] +cocoa-colors = "0.1" \ No newline at end of file diff --git a/README.md b/README.md index e2f25a5..48a6f5f 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ use fltk_theme::{widget_themes, WidgetTheme, ThemeType}; fn main() { let a = app::App::default(); - let widget_theme = WidgetTheme::new(ThemeType::Aqua); + let widget_theme = WidgetTheme::new(ThemeType::AquaClassic); widget_theme.apply(); let mut win = window::Window::default().with_size(400, 300); let mut btn = button::Button::new(160, 200, 80, 30, "Hello"); @@ -77,8 +77,8 @@ fn main() { - Aero (Windows 7 theme) - ![alt_test](screenshots/aero.jpg) -- Aqua (MacOS theme) -- ![alt_test](screenshots/aqua.jpg) +- AquaClassic (classic MacOS theme), +- ![alt_test](screenshots/aqua_classic.jpg) - Dark - ![alt_test](screenshots/dark.jpg) @@ -153,7 +153,7 @@ You can check the frames example to see all `FrameType`'s you can apply to you w ## Widget Schemes These provide schemes for widgets without color theming. Currently there are 6 schemes: -- Aqua: Tries to mimic MacOS's styles. +- Aqua: Tries to mimic the modern MacOS's styles. - ![alt_test](screenshots/aqua_scheme.jpg) - Fluent: Tries to mimic Window's 10 styles. diff --git a/bind.sh b/bind.sh deleted file mode 100755 index 84c7ecc..0000000 --- a/bind.sh +++ /dev/null @@ -1 +0,0 @@ -bindgen src/cocoa_helper.h -o src/cocoa_helper.rs \ No newline at end of file diff --git a/build.rs b/build.rs deleted file mode 100644 index 33baff9..0000000 --- a/build.rs +++ /dev/null @@ -1,9 +0,0 @@ -#[cfg(target_os = "macos")] -fn main() { - let mut build = cc::Build::new(); - build.file("src/cocoa_helper.m"); - build.compile("cocoa"); -} - -#[cfg(not(target_os = "macos"))] -fn main() {} diff --git a/examples/aqua_dark.rs b/examples/aqua_dark.rs index 4352124..87a1c7b 100644 --- a/examples/aqua_dark.rs +++ b/examples/aqua_dark.rs @@ -5,15 +5,19 @@ use fltk_theme::widget_schemes::aqua::dark::*; // get all the dark aqua colors fn main() { let a = app::App::default(); - app::background(BG_COL.0, BG_COL.1, BG_COL.2); - app::background2(CTRL_ACC_COL.0, CTRL_ACC_COL.1, CTRL_ACC_COL.2); - app::foreground(FG_COL.0, FG_COL.1, FG_COL.2); + app::background(windowBackgroundColor.0, windowBackgroundColor.1, windowBackgroundColor.2); + app::background2(controlAccentColor.0, controlAccentColor.1, controlAccentColor.2); + app::foreground(labelColor.0, labelColor.1, labelColor.2); app::set_color(Color::Selection, 255, 255, 255); let widget_scheme = WidgetScheme::new(SchemeType::Aqua); widget_scheme.apply(); let mut win = window::Window::default().with_size(400, 300); let mut inp = input::Input::new(50, 50, 300, 30, None); - inp.set_color(Color::from_tup(*FRAME_COL)); + inp.set_color(Color::from_tup(*windowBackgroundColor).lighter()); + // let mut choice = menu::Choice::new(100, 100, 200, 30, None); + // choice.set_color(Color::from_tup(*controlColor).lighter()); + // choice.add_choice("Opt1|Opt2|Opt3"); + // choice.set_value(2); let mut check = button::CheckButton::new(160, 150, 80, 30, " Check"); check.set_value(true); check.set_frame(enums::FrameType::FlatBox); @@ -21,8 +25,8 @@ fn main() { round.set_value(true); round.set_frame(enums::FrameType::FlatBox); let mut btn = button::Button::new(160, 230, 80, 30, "Hello"); - btn.set_color(Color::from_tup(*CTRL_COL)); - btn.set_selection_color(Color::from_tup(*SYS_CYAN)); + btn.set_color(Color::from_tup(*controlColor)); + btn.set_selection_color(Color::from_tup(*systemCyanColor)); win.end(); win.make_resizable(true); win.show(); diff --git a/examples/fluent.rs b/examples/fluent.rs index af94338..ff86a35 100644 --- a/examples/fluent.rs +++ b/examples/fluent.rs @@ -5,10 +5,10 @@ use fltk_theme::widget_schemes::fluent::colors::*; fn main() { let a = app::App::default(); - app::background(0xF0, 0xF0, 0xF0); + app::background(0xFC, 0xFC, 0xFC); app::background2(0xFF, 0xFF, 0xFF); app::foreground(0x00, 0x00, 0x00); - app::set_color(Color::Selection, SEL_COL.0, SEL_COL.1, SEL_COL.2); + app::set_color(Color::Selection, SELECTION_COLOR.0, SELECTION_COLOR.1, SELECTION_COLOR.2); let theme = WidgetScheme::new(SchemeType::Fluent); theme.apply(); let mut win = window::Window::default().with_size(400, 300); @@ -23,7 +23,7 @@ fn main() { round.set_value(true); round.set_frame(FrameType::FlatBox); let mut toggle = button::ToggleButton::new(100, 220, 80, 30, "Toggle"); - toggle.set_color(Color::from_tup(*ACCENT_COL)); + toggle.set_color(Color::from_tup(*ACCENT_COLOR)); toggle.set_label_color(Color::White); toggle.set_selection_color(toggle.color().darker()); let mut btn = button::Button::new(220, 220, 80, 30, "Hello"); diff --git a/examples/fluent_dark.rs b/examples/fluent_dark.rs new file mode 100644 index 0000000..fcd9629 --- /dev/null +++ b/examples/fluent_dark.rs @@ -0,0 +1,48 @@ +use fltk::{prelude::*, enums::*, *}; +use fltk_theme::{SchemeType, WidgetScheme}; +use fltk_theme::widget_schemes::fluent::frames::*; +use fltk_theme::widget_schemes::fluent::colors::*; + +fn main() { + let a = app::App::default(); + app::background(0x00, 0x00, 0x00); + app::background2(0x00, 0x00, 0x00); + app::foreground(0xff, 0xff, 0xff); + app::set_color(Color::Selection, SELECTION_COLOR.0, SELECTION_COLOR.1, SELECTION_COLOR.2); + let theme = WidgetScheme::new(SchemeType::Fluent); + theme.apply(); + let mut win = window::Window::default().with_size(400, 300); + let mut choice = menu::Choice::new(100, 100, 200, 30, None); + choice.add_choice("Fluent"); + choice.set_value(0); + choice.set_frame(FrameType::FlatBox); + let mut check = button::CheckButton::new(160, 150, 80, 30, " Check"); + check.set_value(true); + check.set_frame(FrameType::FlatBox); + let mut round = button::RoundButton::new(160, 180, 80, 30, " Round"); + round.set_value(true); + round.set_frame(FrameType::FlatBox); + let mut toggle = button::ToggleButton::new(100, 220, 80, 30, "Toggle"); + toggle.set_color(Color::from_tup(*ACCENT_COLOR)); + toggle.set_label_color(Color::White); + toggle.set_selection_color(toggle.color().darker()); + let mut btn = button::Button::new(220, 220, 80, 30, "Hello"); + btn.set_frame(OS_DEFAULT_BUTTON_UP_BOX); + btn.set_down_frame(OS_DEFAULT_DEPRESSED_DOWN_BOX); + btn.handle(|b, ev| match ev { + Event::Enter => { + b.set_frame(OS_HOVERED_UP_BOX); + b.redraw(); + true + }, + Event::Leave => { + b.set_frame(OS_DEFAULT_BUTTON_UP_BOX); + b.redraw(); + true + }, + _ => false, + }); + win.end(); + win.show(); + a.run().unwrap(); +} diff --git a/screenshots/aqua.jpg b/screenshots/aqua.jpg deleted file mode 100755 index a99a90aefea8c6ed4037a90e8619e6d8b4c637a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18250 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 diff --git a/screenshots/aqua_classic.jpg b/screenshots/aqua_classic.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8be3d100191b60169bf345f0a67bbc4768cc1d3 GIT binary patch literal 19590 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 G=6?W(eR)#= literal 0 HcmV?d00001 diff --git a/src/cocoa_helper.h b/src/cocoa_helper.h deleted file mode 100644 index 70428ef..0000000 --- a/src/cocoa_helper.h +++ /dev/null @@ -1,90 +0,0 @@ -#pragma once - -#ifndef COCOA_COLOR_DEFINITION - -#define COLOR_GET(color) \ - void my_##color(double *r, double *g, double *b, double *a); - -#else - -#define COLOR_GET(color) \ - void my_##color(double *r, double *g, double *b, double *a) { \ - NSColor *i = [NSColor color]; \ - NSColor *c = [i colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]]; \ - [c getRed:r green:g blue:b alpha:a]; \ - } - -#endif - -COLOR_GET(windowBackgroundColor) - -COLOR_GET(labelColor) - -COLOR_GET(controlBackgroundColor) - -COLOR_GET(windowFrameColor) - -COLOR_GET(secondaryLabelColor) - -COLOR_GET(tertiaryLabelColor) - -COLOR_GET(quaternaryLabelColor) - -COLOR_GET(textColor) - -COLOR_GET(placeholderTextColor) - -COLOR_GET(selectedTextColor) - -COLOR_GET(textBackgroundColor) - -COLOR_GET(selectedTextBackgroundColor) - -COLOR_GET(keyboardFocusIndicatorColor) - -COLOR_GET(unemphasizedSelectedTextColor) - -COLOR_GET(unemphasizedSelectedTextBackgroundColor) - -COLOR_GET(linkColor) - -COLOR_GET(separatorColor) - -COLOR_GET(selectedContentBackgroundColor) - -COLOR_GET(unemphasizedSelectedContentBackgroundColor) - -COLOR_GET(selectedMenuItemTextColor) - -COLOR_GET(gridColor) - -COLOR_GET(headerTextColor) - -COLOR_GET(controlAccentColor) - -COLOR_GET(controlColor) - -COLOR_GET(controlTextColor) - -COLOR_GET(disabledControlTextColor) - -COLOR_GET(selectedControlColor) - -COLOR_GET(selectedControlTextColor) - -COLOR_GET(alternateSelectedControlTextColor) - -COLOR_GET(scrubberTexturedBackgroundColor) - -COLOR_GET(windowFrameTextColor) - -COLOR_GET(underPageBackgroundColor) - -COLOR_GET(findHighlightColor) - -COLOR_GET(highlightColor) - -COLOR_GET(shadowColor) - - - diff --git a/src/cocoa_helper.m b/src/cocoa_helper.m deleted file mode 100644 index ec95019..0000000 --- a/src/cocoa_helper.m +++ /dev/null @@ -1,4 +0,0 @@ -#import - -#define COCOA_COLOR_DEFINITION -#include "cocoa_helper.h" \ No newline at end of file diff --git a/src/cocoa_helper.rs b/src/cocoa_helper.rs deleted file mode 100644 index 7a7260f..0000000 --- a/src/cocoa_helper.rs +++ /dev/null @@ -1,117 +0,0 @@ -/* automatically generated by rust-bindgen 0.57.0 */ - -extern "C" { - pub fn my_windowBackgroundColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_labelColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_controlBackgroundColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_windowFrameColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_secondaryLabelColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_tertiaryLabelColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_quaternaryLabelColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_textColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_placeholderTextColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_selectedTextColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_textBackgroundColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_selectedTextBackgroundColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_keyboardFocusIndicatorColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_unemphasizedSelectedTextColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_unemphasizedSelectedTextBackgroundColor( - r: *mut f64, - g: *mut f64, - b: *mut f64, - a: *mut f64, - ); -} -extern "C" { - pub fn my_linkColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_separatorColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_selectedContentBackgroundColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_unemphasizedSelectedContentBackgroundColor( - r: *mut f64, - g: *mut f64, - b: *mut f64, - a: *mut f64, - ); -} -extern "C" { - pub fn my_selectedMenuItemTextColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_gridColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_headerTextColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_controlAccentColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_controlColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_controlTextColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_disabledControlTextColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_selectedControlColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_selectedControlTextColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_alternateSelectedControlTextColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_scrubberTexturedBackgroundColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_windowFrameTextColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_underPageBackgroundColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_findHighlightColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_highlightColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} -extern "C" { - pub fn my_shadowColor(r: *mut f64, g: *mut f64, b: *mut f64, a: *mut f64); -} diff --git a/src/lib.rs b/src/lib.rs index 03082ea..ac92314 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -39,7 +39,7 @@ use fltk::{prelude::*, *}; use fltk_theme::{widget_themes, WidgetTheme, ThemeType}; let a = app::App::default(); -let widget_theme = WidgetTheme::new(ThemeType::Aqua); +let widget_theme = WidgetTheme::new(ThemeType::AquaClassic); widget_theme.apply(); let mut win = window::Window::default().with_size(400, 300); let mut btn = button::Button::new(160, 200, 80, 30, "Hello"); @@ -69,8 +69,6 @@ fn main() { #![allow(clippy::needless_doctest_main)] use fltk::{app, enums::Color}; -#[cfg(target_os = "macos")] -mod cocoa_helper; pub mod color_themes; pub mod widget_schemes; pub mod widget_themes; diff --git a/src/widget_schemes/aqua.rs b/src/widget_schemes/aqua.rs index eed9ade..1f1f9e5 100644 --- a/src/widget_schemes/aqua.rs +++ b/src/widget_schemes/aqua.rs @@ -1,6 +1,15 @@ +#![allow(unused_imports)] +#![allow(non_upper_case_globals)] + #[cfg(target_os = "macos")] -use crate::cocoa_helper::*; -use fltk::{app, enums::{Color, FrameType}, image, prelude::ImageExt}; +use cocoa_colors::*; +use fltk::{ + app, + draw, + enums::{Color, FrameType}, + image, + prelude::ImageExt, +}; #[cfg(target_os = "macos")] fn convert_colors(colors: (f64, f64, f64, f64)) -> (u8, u8, u8, u8) { @@ -28,128 +37,160 @@ macro_rules! get_colors { #[cfg(target_os = "macos")] mod sys { pub use crate::FromColor; + use super::*; lazy_static::lazy_static! { - pub static ref BG_COL: (u8, u8, u8, u8) = get_colors!(my_windowBackgroundColor); - pub static ref FG_COL: (u8, u8, u8, u8) = get_colors!(my_labelColor); - pub static ref CTRL_BG_COL: (u8, u8, u8, u8) = get_colors!(my_controlBackgroundColor); - pub static ref FRAME_COL: (u8, u8, u8, u8) = get_colors!(my_windowFrameColor); - pub static ref LABEL2_COL: (u8, u8, u8, u8) = get_colors!(my_secondaryLabelColor); - pub static ref LABEL3_COL: (u8, u8, u8, u8) = get_colors!(my_tertiaryLabelColor); - pub static ref LABEL4_COL: (u8, u8, u8, u8) = get_colors!(my_quaternaryLabelColor); - pub static ref TXT_COL: (u8, u8, u8, u8) = get_colors!(my_textColor); - pub static ref PH_TXT_COL: (u8, u8, u8, u8) = get_colors!(my_placeholderTextColor); - pub static ref SEL_TXT_COL: (u8, u8, u8, u8) = get_colors!(my_selectedTextColor); - pub static ref TXT_BG_COL: (u8, u8, u8, u8) = get_colors!(my_textBackgroundColor); - pub static ref SEL_TXT_BG_COL: (u8, u8, u8, u8) = get_colors!(my_selectedTextBackgroundColor); - pub static ref KB_IND_COL: (u8, u8, u8, u8) = get_colors!(my_keyboardFocusIndicatorColor); - pub static ref SEL_TXT2_COL: (u8, u8, u8, u8) = get_colors!(my_unemphasizedSelectedTextColor); - pub static ref SEL_TXT_BG2_COL: (u8, u8, u8, u8) = get_colors!(my_unemphasizedSelectedTextBackgroundColor); - pub static ref LINK_COL: (u8, u8, u8, u8) = get_colors!(my_linkColor); - pub static ref SEP_COL: (u8, u8, u8, u8) = get_colors!(my_separatorColor); - pub static ref SEL_BG_COL: (u8, u8, u8, u8) = get_colors!(my_selectedContentBackgroundColor); - pub static ref SEL_BG2_COL: (u8, u8, u8, u8) = get_colors!(my_unemphasizedSelectedContentBackgroundColor); - pub static ref SEL_MEN_TXT_COL: (u8, u8, u8, u8) = get_colors!(my_selectedMenuItemTextColor); - pub static ref GRID_COL: (u8, u8, u8, u8) = get_colors!(my_gridColor); - pub static ref HDR_COL: (u8, u8, u8, u8) = get_colors!(my_headerTextColor); - pub static ref CTRL_ACC_COL: (u8, u8, u8, u8) = get_colors!(my_controlAccentColor); - pub static ref CTRL_COL: (u8, u8, u8, u8) = get_colors!(my_controlColor); - pub static ref CTRL_TXT_COL: (u8, u8, u8, u8) = get_colors!(my_controlTextColor); - pub static ref DIS_CTRL_TXT_COL: (u8, u8, u8, u8) = get_colors!(my_disabledControlTextColor); - pub static ref SEL_CTRL_COL: (u8, u8, u8, u8) = get_colors!(my_selectedControlColor); - pub static ref SEL_CTRL_TXT_COL: (u8, u8, u8, u8) = get_colors!(my_selectedControlTextColor); - pub static ref ALT_SEL_CTRL_TXT_COL: (u8, u8, u8, u8) = get_colors!(my_alternateSelectedControlTextColor); - pub static ref SCRUB_BG_COL: (u8, u8, u8, u8) = get_colors!(my_scrubberTexturedBackgroundColor); - pub static ref WIN_FRM_TXT_COL: (u8, u8, u8, u8) = get_colors!(my_windowFrameTextColor); - pub static ref PAGE_BG_COL: (u8, u8, u8, u8) = get_colors!(my_underPageBackgroundColor); - pub static ref FIND_HLT_COL: (u8, u8, u8, u8) = get_colors!(my_findHighlightColor); - pub static ref HLT_COL: (u8, u8, u8, u8) = get_colors!(my_highlightColor); - pub static ref SHDW_COL: (u8, u8, u8, u8) = get_colors!(my_shadowColor); + pub static ref windowBackgroundColor: (u8, u8, u8, u8) = get_colors!(get_windowBackgroundColor); + pub static ref labelColor: (u8, u8, u8, u8) = get_colors!(get_labelColor); + pub static ref controlBackgroundColor: (u8, u8, u8, u8) = get_colors!(get_controlBackgroundColor); + pub static ref secondaryLabelColor: (u8, u8, u8, u8) = get_colors!(get_secondaryLabelColor); + pub static ref tertiaryLabelColor: (u8, u8, u8, u8) = get_colors!(get_tertiaryLabelColor); + pub static ref quaternaryLabelColor: (u8, u8, u8, u8) = get_colors!(get_quaternaryLabelColor); + pub static ref textColor: (u8, u8, u8, u8) = get_colors!(get_textColor); + pub static ref placeholderTextColor: (u8, u8, u8, u8) = get_colors!(get_placeholderTextColor); + pub static ref selectedTextColor: (u8, u8, u8, u8) = get_colors!(get_selectedTextColor); + pub static ref textBackgroundColor: (u8, u8, u8, u8) = get_colors!(get_textBackgroundColor); + pub static ref selectedTextBackgroundColor: (u8, u8, u8, u8) = get_colors!(get_selectedTextBackgroundColor); + pub static ref keyboardFocusIndicatorColor: (u8, u8, u8, u8) = get_colors!(get_keyboardFocusIndicatorColor); + pub static ref unemphasizedSelectedTextColor: (u8, u8, u8, u8) = get_colors!(get_unemphasizedSelectedTextColor); + pub static ref unemphasizedSelectedTextBackgroundColor: (u8, u8, u8, u8) = get_colors!(get_unemphasizedSelectedTextBackgroundColor); + pub static ref linkColor: (u8, u8, u8, u8) = get_colors!(get_linkColor); + pub static ref separatorColor: (u8, u8, u8, u8) = get_colors!(get_separatorColor); + pub static ref selectedContentBackgroundColor: (u8, u8, u8, u8) = get_colors!(get_selectedContentBackgroundColor); + pub static ref unemphasizedSelectedContentBackgroundColor: (u8, u8, u8, u8) = get_colors!(get_unemphasizedSelectedContentBackgroundColor); + pub static ref selectedMenuItemTextColor: (u8, u8, u8, u8) = get_colors!(get_selectedMenuItemTextColor); + pub static ref gridColor: (u8, u8, u8, u8) = get_colors!(get_gridColor); + pub static ref headerTextColor: (u8, u8, u8, u8) = get_colors!(get_headerTextColor); + pub static ref controlAccentColor: (u8, u8, u8, u8) = get_colors!(get_controlAccentColor); + pub static ref controlColor: (u8, u8, u8, u8) = get_colors!(get_controlColor); + pub static ref controlTextColor: (u8, u8, u8, u8) = get_colors!(get_controlTextColor); + pub static ref disabledControlTextColor: (u8, u8, u8, u8) = get_colors!(get_disabledControlTextColor); + pub static ref selectedControlColor: (u8, u8, u8, u8) = get_colors!(get_selectedControlColor); + pub static ref selectedControlTextColor: (u8, u8, u8, u8) = get_colors!(get_selectedControlTextColor); + pub static ref alternateSelectedControlTextColor: (u8, u8, u8, u8) = get_colors!(get_alternateSelectedControlTextColor); + pub static ref scrubberTexturedBackgroundColor: (u8, u8, u8, u8) = get_colors!(get_scrubberTexturedBackgroundColor); + pub static ref windowFrameTextColor: (u8, u8, u8, u8) = get_colors!(get_windowFrameTextColor); + pub static ref underPageBackgroundColor: (u8, u8, u8, u8) = get_colors!(get_underPageBackgroundColor); + pub static ref findHighlightColor: (u8, u8, u8, u8) = get_colors!(get_findHighlightColor); + pub static ref highlightColor: (u8, u8, u8, u8) = get_colors!(get_highlightColor); + pub static ref shadowColor: (u8, u8, u8, u8) = get_colors!(get_shadowColor); + pub static ref systemBrownColor: (u8, u8, u8, u8) = get_colors!(get_systemBrownColor); + pub static ref systemGrayColor: (u8, u8, u8, u8) = get_colors!(get_systemGrayColor); + pub static ref systemGreenColor: (u8, u8, u8, u8) = get_colors!(get_systemGreenColor); + pub static ref systemIndigoColor: (u8, u8, u8, u8) = get_colors!(get_systemIndigoColor); + pub static ref systemOrangeColor: (u8, u8, u8, u8) = get_colors!(get_systemOrangeColor); + pub static ref systemPinkColor: (u8, u8, u8, u8) = get_colors!(get_systemPinkColor); + pub static ref systemPurpleColor: (u8, u8, u8, u8) = get_colors!(get_systemPurpleColor); + pub static ref systemRedColor: (u8, u8, u8, u8) = get_colors!(get_systemRedColor); + pub static ref systemTealColor: (u8, u8, u8, u8) = get_colors!(get_systemTealColor); + pub static ref systemYellowColor: (u8, u8, u8, u8) = get_colors!(get_systemYellowColor); + pub static ref systemBlueColor: (u8, u8, u8, u8) = get_colors!(get_systemBlueColor); + // pub static ref systemCyanColor: (u8, u8, u8, u8) = get_colors!(get_systemCyanColor); // beta } } pub mod dark { pub use crate::FromColor; lazy_static::lazy_static! { - pub static ref BG2_COL: (u8, u8, u8, u8) = (0, 0, 0, 255); - pub static ref SYS_CYAN: (u8, u8, u8, u8) = (90, 200 , 245, 255); - pub static ref BG_COL: (u8, u8, u8, u8) = (37, 37, 37, 255); - pub static ref FG_COL: (u8, u8, u8, u8) = (255, 254, 254, 216); - pub static ref CTRL_BG_COL: (u8, u8, u8, u8) = (22, 22, 22, 255); - pub static ref FRAME_COL: (u8, u8, u8, u8) = (153, 153, 153, 255); - pub static ref LABEL2_COL: (u8, u8, u8, u8) = (255, 254, 254, 140); - pub static ref LABEL3_COL: (u8, u8, u8, u8) = (255, 254, 254, 63); - pub static ref LABEL4_COL: (u8, u8, u8, u8) = (255, 254, 254, 25); - pub static ref TXT_COL: (u8, u8, u8, u8) = (255, 254, 254, 255); - pub static ref PH_TXT_COL: (u8, u8, u8, u8) = (255, 254, 254, 63); - pub static ref SEL_TXT_COL: (u8, u8, u8, u8) = (255, 255, 255, 255); - pub static ref TXT_BG_COL: (u8, u8, u8, u8) = (22, 22, 22, 255); - pub static ref SEL_TXT_BG_COL: (u8, u8, u8, u8) = (48, 79, 120, 255); - pub static ref KB_IND_COL: (u8, u8, u8, u8) = (27, 149, 254, 76); - pub static ref SEL_TXT2_COL: (u8, u8, u8, u8) = (255, 255, 255, 255); - pub static ref SEL_TXT_BG2_COL: (u8, u8, u8, u8) = (54, 54, 54, 255); - pub static ref LINK_COL: (u8, u8, u8, u8) = (52, 134, 254, 255); - pub static ref SEP_COL: (u8, u8, u8, u8) = (255, 254, 254, 25); - pub static ref SEL_BG_COL: (u8, u8, u8, u8) = (5, 63, 197, 255); - pub static ref SEL_BG2_COL: (u8, u8, u8, u8) = (54, 54, 54, 255); - pub static ref SEL_MEN_TXT_COL: (u8, u8, u8, u8) = (255, 254, 254, 255); - pub static ref GRID_COL: (u8, u8, u8, u8) = (20, 20, 20, 255); - pub static ref HDR_COL: (u8, u8, u8, u8) = (255, 254, 254, 255); - pub static ref CTRL_ACC_COL: (u8, u8, u8, u8) = (10, 95, 254, 255); - pub static ref CTRL_COL: (u8, u8, u8, u8) = (255, 254, 254, 63); - pub static ref CTRL_TXT_COL: (u8, u8, u8, u8) = (255, 254, 254, 216); - pub static ref DIS_CTRL_TXT_COL: (u8, u8, u8, u8) = (255, 254, 254, 63); - pub static ref SEL_CTRL_COL: (u8, u8, u8, u8) = (48, 79, 120, 255); - pub static ref SEL_CTRL_TXT_COL: (u8, u8, u8, u8) = (255, 254, 254, 216); - pub static ref ALT_SEL_CTRL_TXT_COL: (u8, u8, u8, u8) = (255, 254, 254, 255); - pub static ref SCRUB_BG_COL: (u8, u8, u8, u8) = (255, 254, 254, 255); - pub static ref WIN_FRM_TXT_COL: (u8, u8, u8, u8) = (255, 254, 254, 216); - pub static ref PAGE_BG_COL: (u8, u8, u8, u8) = (29, 29, 29, 255); - pub static ref FIND_HLT_COL: (u8, u8, u8, u8) = (255, 255, 10, 255); - pub static ref HLT_COL: (u8, u8, u8, u8) = (164, 164, 164, 255); - pub static ref SHDW_COL: (u8, u8, u8, u8) = (0, 0, 0, 255); + pub static ref backgroundColor2: (u8, u8, u8, u8) = (0, 0, 0, 255); + pub static ref windowBackgroundColor: (u8, u8, u8, u8) = (37, 37, 37, 255); + pub static ref labelColor: (u8, u8, u8, u8) = (255, 254, 254, 216); + pub static ref controlBackgroundColor: (u8, u8, u8, u8) = (22, 22, 22, 255); + pub static ref secondaryLabelColor: (u8, u8, u8, u8) = (255, 254, 254, 140); + pub static ref tertiaryLabelColor: (u8, u8, u8, u8) = (255, 254, 254, 63); + pub static ref quaternaryLabelColor: (u8, u8, u8, u8) = (255, 254, 254, 25); + pub static ref textColor: (u8, u8, u8, u8) = (255, 254, 254, 255); + pub static ref placeholderTextColor: (u8, u8, u8, u8) = (255, 254, 254, 63); + pub static ref selectedTextColor: (u8, u8, u8, u8) = (255, 255, 255, 255); + pub static ref textBackgroundColor: (u8, u8, u8, u8) = (22, 22, 22, 255); + pub static ref selectedTextBackgroundColor: (u8, u8, u8, u8) = (48, 79, 120, 255); + pub static ref keyboardFocusIndicatorColor: (u8, u8, u8, u8) = (27, 149, 254, 76); + pub static ref unemphasizedSelectedTextColor: (u8, u8, u8, u8) = (255, 255, 255, 255); + pub static ref unemphasizedSelectedTextBackgroundColor: (u8, u8, u8, u8) = (54, 54, 54, 255); + pub static ref linkColor: (u8, u8, u8, u8) = (52, 134, 254, 255); + pub static ref separatorColor: (u8, u8, u8, u8) = (255, 254, 254, 25); + pub static ref selectedContentBackgroundColor: (u8, u8, u8, u8) = (5, 63, 197, 255); + pub static ref unemphasizedSelectedContentBackgroundColor: (u8, u8, u8, u8) = (54, 54, 54, 255); + pub static ref selectedMenuItemTextColor: (u8, u8, u8, u8) = (255, 254, 254, 255); + pub static ref gridColor: (u8, u8, u8, u8) = (20, 20, 20, 255); + pub static ref headerTextColor: (u8, u8, u8, u8) = (255, 254, 254, 255); + pub static ref controlAccentColor: (u8, u8, u8, u8) = (10, 95, 254, 255); + pub static ref controlColor: (u8, u8, u8, u8) = (255, 254, 254, 63); + pub static ref controlTextColor: (u8, u8, u8, u8) = (255, 254, 254, 216); + pub static ref disabledControlTextColor: (u8, u8, u8, u8) = (255, 254, 254, 63); + pub static ref selectedControlColor: (u8, u8, u8, u8) = (48, 79, 120, 255); + pub static ref selectedControlTextColor: (u8, u8, u8, u8) = (255, 254, 254, 216); + pub static ref alternateSelectedControlTextColor: (u8, u8, u8, u8) = (255, 254, 254, 255); + pub static ref scrubberTexturedBackgroundColor: (u8, u8, u8, u8) = (255, 254, 254, 255); + pub static ref windowFrameTextColor: (u8, u8, u8, u8) = (255, 254, 254, 216); + pub static ref underPageBackgroundColor: (u8, u8, u8, u8) = (29, 29, 29, 255); + pub static ref findHighlightColor: (u8, u8, u8, u8) = (255, 255, 10, 255); + pub static ref highlightColor: (u8, u8, u8, u8) = (164, 164, 164, 255); + pub static ref shadowColor: (u8, u8, u8, u8) = (0, 0, 0, 255); + pub static ref systemBrownColor : (u8, u8, u8, u8) = (155, 123, 85, 255); + pub static ref systemGrayColor : (u8, u8, u8, u8) = (133, 133, 139, 255); + pub static ref systemGreenColor : (u8, u8, u8, u8) = (48, 211, 58, 255); + pub static ref systemIndigoColor : (u8, u8, u8, u8) = (74, 64, 223, 255); + pub static ref systemOrangeColor : (u8, u8, u8, u8) = (252, 141, 13, 255); + pub static ref systemPinkColor : (u8, u8, u8, u8) = (251, 25, 76, 255); + pub static ref systemPurpleColor : (u8, u8, u8, u8) = (175, 56, 238, 255); + pub static ref systemRedColor : (u8, u8, u8, u8) = (251, 43, 44, 255); + pub static ref systemTealColor : (u8, u8, u8, u8) = (76, 187, 242, 255); + pub static ref systemYellowColor : (u8, u8, u8, u8) = (254, 207, 14, 255); + pub static ref systemBlueColor : (u8, u8, u8, u8) = (16, 106, 254, 255); + pub static ref systemCyanColor: (u8, u8, u8, u8) = (90, 200 , 245, 255); } } pub mod light { pub use crate::FromColor; lazy_static::lazy_static! { - pub static ref BG2_COL: (u8, u8, u8, u8) = (255, 255, 255, 255); - pub static ref SYS_CYAN: (u8, u8, u8, u8) = (85, 190 , 240, 255); - pub static ref BG_COL: (u8, u8, u8, u8) = (231, 231, 231, 255); - pub static ref FG_COL: (u8, u8, u8, u8) = (0, 0, 0, 216); - pub static ref CTRL_BG_COL: (u8, u8, u8, u8) = (255, 254, 254, 255); - pub static ref FRAME_COL: (u8, u8, u8, u8) = (153, 153, 153, 255); - pub static ref LABEL2_COL: (u8, u8, u8, u8) = (0, 0, 0, 127); - pub static ref LABEL3_COL: (u8, u8, u8, u8) = (0, 0, 0, 66); - pub static ref LABEL4_COL: (u8, u8, u8, u8) = (0, 0, 0, 25); - pub static ref TXT_COL: (u8, u8, u8, u8) = (0, 0, 0, 255); - pub static ref PH_TXT_COL: (u8, u8, u8, u8) = (0, 0, 0, 63); - pub static ref SEL_TXT_COL: (u8, u8, u8, u8) = (0, 0, 0, 255); - pub static ref TXT_BG_COL: (u8, u8, u8, u8) = (255, 254, 254, 255); - pub static ref SEL_TXT_BG_COL: (u8, u8, u8, u8) = (164, 204, 254, 255); - pub static ref KB_IND_COL: (u8, u8, u8, u8) = (7, 75, 240, 63); - pub static ref SEL_TXT2_COL: (u8, u8, u8, u8) = (0, 0, 0, 255); - pub static ref SEL_TXT_BG2_COL: (u8, u8, u8, u8) = (211, 211, 211, 255); - pub static ref LINK_COL: (u8, u8, u8, u8) = (8, 79, 209, 255); - pub static ref SEP_COL: (u8, u8, u8, u8) = (0, 0, 0, 25); - pub static ref SEL_BG_COL: (u8, u8, u8, u8) = (7, 73, 217, 255); - pub static ref SEL_BG2_COL: (u8, u8, u8, u8) = (211, 211, 211, 255); - pub static ref SEL_MEN_TXT_COL: (u8, u8, u8, u8) = (255, 254, 254, 255); - pub static ref GRID_COL: (u8, u8, u8, u8) = (223, 223, 223, 255); - pub static ref HDR_COL: (u8, u8, u8, u8) = (0, 0, 0, 216); - pub static ref CTRL_ACC_COL: (u8, u8, u8, u8) = (10, 95, 254, 255); - pub static ref CTRL_COL: (u8, u8, u8, u8) = (255, 254, 254, 255); - pub static ref CTRL_TXT_COL: (u8, u8, u8, u8) = (0, 0, 0, 216); - pub static ref DIS_CTRL_TXT_COL: (u8, u8, u8, u8) = (0, 0, 0, 63); - pub static ref SEL_CTRL_COL: (u8, u8, u8, u8) = (164, 204, 254, 255); - pub static ref SEL_CTRL_TXT_COL: (u8, u8, u8, u8) = (0, 0, 0, 216); - pub static ref ALT_SEL_CTRL_TXT_COL: (u8, u8, u8, u8) = (255, 254, 254, 255); - pub static ref SCRUB_BG_COL: (u8, u8, u8, u8) = (255, 254, 254, 255); - pub static ref WIN_FRM_TXT_COL: (u8, u8, u8, u8) = (0, 0, 0, 216); - pub static ref PAGE_BG_COL: (u8, u8, u8, u8) = (131, 131, 131, 229); - pub static ref FIND_HLT_COL: (u8, u8, u8, u8) = (255, 255, 10, 255); - pub static ref HLT_COL: (u8, u8, u8, u8) = (255, 254, 254, 255); - pub static ref SHDW_COL: (u8, u8, u8, u8) = (0, 0, 0, 255); + pub static ref backgroundColor2: (u8, u8, u8, u8) = (255, 255, 255, 255); + pub static ref windowBackgroundColor: (u8, u8, u8, u8) = (231, 231, 231, 255); + pub static ref labelColor: (u8, u8, u8, u8) = (0, 0, 0, 216); + pub static ref controlBackgroundColor: (u8, u8, u8, u8) = (255, 254, 254, 255); + pub static ref secondaryLabelColor: (u8, u8, u8, u8) = (0, 0, 0, 127); + pub static ref tertiaryLabelColor: (u8, u8, u8, u8) = (0, 0, 0, 66); + pub static ref quaternaryLabelColor: (u8, u8, u8, u8) = (0, 0, 0, 25); + pub static ref textColor: (u8, u8, u8, u8) = (0, 0, 0, 255); + pub static ref placeholderTextColor: (u8, u8, u8, u8) = (0, 0, 0, 63); + pub static ref selectedTextColor: (u8, u8, u8, u8) = (0, 0, 0, 255); + pub static ref textBackgroundColor: (u8, u8, u8, u8) = (255, 254, 254, 255); + pub static ref selectedTextBackgroundColor: (u8, u8, u8, u8) = (164, 204, 254, 255); + pub static ref keyboardFocusIndicatorColor: (u8, u8, u8, u8) = (7, 75, 240, 63); + pub static ref unemphasizedSelectedTextColor: (u8, u8, u8, u8) = (0, 0, 0, 255); + pub static ref unemphasizedSelectedTextBackgroundColor: (u8, u8, u8, u8) = (211, 211, 211, 255); + pub static ref linkColor: (u8, u8, u8, u8) = (8, 79, 209, 255); + pub static ref separatorColor: (u8, u8, u8, u8) = (0, 0, 0, 25); + pub static ref selectedContentBackgroundColor: (u8, u8, u8, u8) = (7, 73, 217, 255); + pub static ref unemphasizedSelectedContentBackgroundColor: (u8, u8, u8, u8) = (211, 211, 211, 255); + pub static ref selectedMenuItemTextColor: (u8, u8, u8, u8) = (255, 254, 254, 255); + pub static ref gridColor: (u8, u8, u8, u8) = (223, 223, 223, 255); + pub static ref headerTextColor: (u8, u8, u8, u8) = (0, 0, 0, 216); + pub static ref controlAccentColor: (u8, u8, u8, u8) = (10, 95, 254, 255); + pub static ref controlColor: (u8, u8, u8, u8) = (255, 254, 254, 255); + pub static ref controlTextColor: (u8, u8, u8, u8) = (0, 0, 0, 216); + pub static ref disabledControlTextColor: (u8, u8, u8, u8) = (0, 0, 0, 63); + pub static ref selectedControlColor: (u8, u8, u8, u8) = (164, 204, 254, 255); + pub static ref selectedControlTextColor: (u8, u8, u8, u8) = (0, 0, 0, 216); + pub static ref alternateSelectedControlTextColor: (u8, u8, u8, u8) = (255, 254, 254, 255); + pub static ref scrubberTexturedBackgroundColor: (u8, u8, u8, u8) = (255, 254, 254, 255); + pub static ref windowFrameTextColor: (u8, u8, u8, u8) = (0, 0, 0, 216); + pub static ref underPageBackgroundColor: (u8, u8, u8, u8) = (131, 131, 131, 229); + pub static ref findHighlightColor: (u8, u8, u8, u8) = (255, 255, 10, 255); + pub static ref highlightColor: (u8, u8, u8, u8) = (255, 254, 254, 255); + pub static ref shadowColor: (u8, u8, u8, u8) = (0, 0, 0, 255); + pub static ref systemBrownColor : (u8, u8, u8, u8) = (144, 113, 75, 255); + pub static ref systemGrayColor: (u8, u8, u8, u8) = (123, 123, 128, 255); + pub static ref systemGreenColor : (u8, u8, u8, u8) = (40, 199, 50, 255); + pub static ref systemIndigoColor: (u8, u8, u8, u8) = (69, 59, 204, 255); + pub static ref systemOrangeColor: (u8, u8, u8, u8) = (252, 129, 8, 255); + pub static ref systemPinkColor : (u8, u8, u8, u8) = (251, 12, 67, 255); + pub static ref systemPurpleColor: (u8, u8, u8, u8) = (157, 51, 213, 255); + pub static ref systemRedColor: (u8, u8, u8, u8) = (251, 32, 37, 255); + pub static ref systemTealColor: (u8, u8, u8, u8) = (71, 175, 235, 255); + pub static ref systemYellowColor: (u8, u8, u8, u8) = (253, 194, 9, 255); + pub static ref systemBlueColor : (u8, u8, u8, u8) = (10, 95, 254, 255); + pub static ref systemCyanColor: (u8, u8, u8, u8) = (85, 190 , 240, 255); } } @@ -189,7 +230,7 @@ fn button_up_box(x: i32, y: i32, w: i32, h: i32, c: Color) { image.draw(x, y, w, h); } -fn depressed_down_box(x: i32, y: i32, w: i32, h: i32, c: Color) { +fn button_down_box(x: i32, y: i32, w: i32, h: i32, c: Color) { let col = c.to_rgb(); let svg = format!( " @@ -234,26 +275,17 @@ fn radio_round_down_box(x: i32, y: i32, w: i32, h: i32, c: Color) { image.draw(x, y, w, h); } +fn border_box(x: i32, y: i32, w: i32, h: i32, c: Color) { + use crate::FromColor; + draw::draw_rect_fill(x, y, w, h, Color::from_tup(*self::dark::systemBlueColor)); +} + fn use_scheme() { app::set_scheme(app::Scheme::Gtk); app::set_frame_type_cb(FrameType::UpBox, button_up_box, 1, 1, 2, 2); - app::set_frame_type_cb( - FrameType::DownBox, - depressed_down_box, - 1, - 1, - 2, - 2, - ); - app::set_frame_type_cb( - FrameType::RoundDownBox, - radio_round_down_box, - 2, - 2, - 4, - 4, - ); - // app::set_frame_type_cb(OS_BG_DOWN_BOX, OS_BG_BOX); + app::set_frame_type_cb(FrameType::DownBox, button_down_box, 1, 1, 2, 2); + app::set_frame_type_cb(FrameType::RoundDownBox, radio_round_down_box, 2, 2, 4, 4); + app::set_frame_type_cb(FrameType::BorderBox, border_box, 1, 1, 2, 2); } pub(crate) fn use_aqua_scheme() { diff --git a/src/widget_schemes/fluent.rs b/src/widget_schemes/fluent.rs index 1b6c3a7..7c050c5 100644 --- a/src/widget_schemes/fluent.rs +++ b/src/widget_schemes/fluent.rs @@ -162,7 +162,7 @@ pub mod frames { pub mod colors { pub use crate::FromColor; lazy_static::lazy_static! { - pub static ref ACCENT_COL: (u8, u8, u8, u8) = (0x00, 0x78, 0xD4, 0xff); - pub static ref SEL_COL: (u8, u8, u8, u8) = (0x33, 0x99, 0xFF, 0xFF); + pub static ref ACCENT_COLOR: (u8, u8, u8, u8) = (0x00, 0x78, 0xD4, 0xff); + pub static ref SELECTION_COLOR: (u8, u8, u8, u8) = (0x33, 0x99, 0xFF, 0xFF); } } \ No newline at end of file