No description
Find a file
Jonathan Johnson d701e179ae
Fixing ComponentPicker<Alpha>'s loupe coloring
The previous fix was a fix in contrast_between. However, I then
convinced myself that the selected color was changing when it wasn't
purely because the alpha picker utilizes a checkeboard pattern, and I
was specifically testing grayscale values.

Aka, I was reproducing the "different grays" optical illusion using the
loupe outline color and driving myself crazy trying to figure out what
my code was doing, when in reality it wasn't doing anything.

The real fix? Don't ask for contrast between two similar colors.
OutlineColor and TextColor are both meant to be contrasting colors to
SurfaceColor, which is the background color. The loupe color really
should have switched between any surface-type color and any
foreground-type color, but it instead was asking for two different
foreground colors.
2024-01-11 07:10:45 -08:00
.github/workflows Trying to make Mac CI fail gracefully 2024-01-08 09:41:04 -08:00
.rustme Children renamed to WidgetList 2024-01-09 13:26:14 -08:00
assets Component type safety, some font support 2023-11-19 21:52:45 -08:00
cushy-macros Preparing v0.2.0 2023-12-27 19:08:34 -08:00
examples Added more color pickers 2024-01-10 13:27:12 -08:00
guide Added HslPicker 2024-01-10 08:17:09 -08:00
src Fixing ComponentPicker<Alpha>'s loupe coloring 2024-01-11 07:10:45 -08:00
.crate-docs.md Children renamed to WidgetList 2024-01-09 13:26:14 -08:00
.gitignore Initial implementation of offscreen rendering 2024-01-03 11:35:43 -08:00
Cargo.lock Calling set_ime_cursor_location 2024-01-04 17:08:05 -08:00
Cargo.toml Calling set_ime_cursor_location 2024-01-04 17:08:05 -08:00
CHANGELOG.md Fixing Color::contrast_between 2024-01-11 07:09:17 -08:00
CODE_OF_CONDUCT.md Resize/Expand rework + basic readme 2023-11-02 14:23:36 -07:00
CONTRIBUTING.md Resize/Expand rework + basic readme 2023-11-02 14:23:36 -07:00
LICENSE-APACHE Resize/Expand rework + basic readme 2023-11-02 14:23:36 -07:00
LICENSE-MIT Resize/Expand rework + basic readme 2023-11-02 14:23:36 -07:00
README.md Children renamed to WidgetList 2024-01-09 13:26:14 -08:00
rustfmt.toml Initial commit 2023-10-18 08:22:41 -07:00

Cushy

Cushy is considered alpha and unsupported crate version Documentation for main Cushy User's Guide

Cushy is an experimental Graphical User Interface (GUI) crate for the Rust programming language. It features a reactive data model and aims to enable easily creating responsive, efficient user interfaces. To enable easy cross-platform development, Cushy uses its own collection of consistently-styled Widgets.

Cushy is powered by:

Getting Started with Cushy

The Widget trait is the building block of Cushy: Every user interface element implements Widget. The Widget trait documentation has an overview of how Cushy works. A list of built-in widgets can be found in the cushy::widgets module.

Cushy uses a reactive data model. To see an example of how reactive data models work, consider this example that displays a button that increments its own label:

fn main() -> cushy::Result {
    // Create a dynamic usize.
    let count = Dynamic::new(0_isize);

    // Create a new label displaying `count`
    count
        .to_label()
        // Use the label as the contents of a button
        .into_button()
        // Set the `on_click` callback to a closure that increments the counter.
        .on_click(move |_| count.set(count.get() + 1))
        // Run the application
        .run()
}

Here are some ways to learn more about Cushy:

Project Status

This project is early in development, but is quickly becoming a decent framework. It is considered alpha and unsupported at this time, and the primary focus for @ecton is to use this for his own projects. Feature requests and bug fixes will be prioritized based on @ecton's own needs.

If you would like to contribute, bug fixes are always appreciated. Before working on a new feature, please open an issue proposing the feature and problem it aims to solve. Doing so will help prevent friction in merging pull requests, as it ensures changes fit the vision the maintainers have for Cushy.

Open-source Licenses

This project, like all projects from Khonsu Labs, is open-source. This repository is available under the MIT License or the Apache License 2.0.

To learn more about contributing, please see CONTRIBUTING.md.