3个版本

0.0.3 2021年6月17日
0.0.2 2021年6月17日
0.0.1 2021年6月16日

#611数据结构

AGPL-3.0

83KB
1.5K SLoC

颜色运算符

颜色数据结构、转换器、比较器和算术运算符

Byte size of Color Operators Open Issues Open Pull Requests Latest commits Build Status



要求

此仓库需要 Rust 语言/编译器从源代码构建

截至上次更新此ReadMe文件,推荐安装Rust的方法是通过安装脚本...

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

快速开始

此仓库是一个Rust库,在项目的 Cargo.toml 文件中将它定义为依赖项...

Cargo.toml (省略)

[dependencies]
color-operators = "0.0.3"

有关定义依赖项的详细信息,请参阅 Rust -- 文档 -- 定义依赖项

然后在源文件中通过 use 语句包含...

src/main.rs (省略)

extern crate color_operators;

use color_operators::hsl::HSL;
use color_operators::hsv::HSV;
use color_operators::rgb::RGB;

使用

如果尚不存在项目,请创建一个...

cargo init hsl-to-rgb

cd hsl-to-rgb

将此crate作为依赖项添加...

Cargo.toml (省略)

[dependencies]
color-operators = "0.0.3"
argparse = "0.2.2"

注意,argparse 是可选的,并且仅包括以确保以下示例函数按所示工作

编写使用此crate的代码...

src/main.rs

extern crate argparse;
use argparse::{ ArgumentParser, StoreOption };


extern crate json;


extern crate color_operators;
use color_operators::rgb::RGB;
use color_operators::hsl::HSL;


fn main() {
    let mut red_argument: Option<u8> = None;
    let mut green_argument: Option<u8> = None;
    let mut blue_argument: Option<u8> = None;

    {
        let mut ap = ArgumentParser::new();
        ap.set_description("Convert RGB to HSL representation");

        ap.refer(&mut red_argument).add_option(
            &["--red", "-r"],
            StoreOption,
            "Red component"
        );

        ap.refer(&mut green_argument).add_option(
            &["--green", "-g"],
            StoreOption,
            "Green component"
        );

        ap.refer(&mut blue_argument).add_option(
            &["--blue", "-b"],
            StoreOption,
            "Blue component"
        );

        ap.parse_args_or_exit();
    }

    let red = red_argument.unwrap_or_default();
    let green = green_argument.unwrap_or_default();
    let blue = blue_argument.unwrap_or_default();

    let rgb = RGB::new(red, green, blue);
    let hsl = HSL::from(rgb);
    println!("{:?}", hsl);
}

使用各种选项测试转换...

cargo run -- -r 255
#> HSL { hue: 0.0, saturation: 1.0, lightness: 0.5 }

cargo run -- -g 255
#> HSL { hue: 120.0, saturation: 1.0, lightness: 0.5 }

cargo run -- -b 255
#> HSL { hue: 240.0, saturation: 1.0, lightness: 0.5 }

cargo run -- -r 42 -b 42
#> HSL { hue: 300.0, saturation: 1.0, lightness: 0.08235294117647059 }

注意事项

此仓库可能尚未完全功能完善,欢迎通过Pull Requests添加功能或修复错误。


警告 颜色转换不一定完全可逆!例如 25 + 25 在转换后可能 结果为 50,而 24 + 24 通常等于 48... 这似乎通常是因为二进制和十进制转换以及算术...


示例可以在 examples/ 目录中找到并运行以测试转换和其他功能;

cargo run --example rgb-to-hsl -- -r 255
#> HSL { hue: 0.0, saturation: 1.0, lightness: 0.5 }

cargo run --example rgb-to-hsv -- -g 255
#> HSV { hue: 120.0, saturation: 1.0, value: 1.0 }

对于常规操作,此项目依赖于;

  • hex crate 提供十六进制字符串到十进制的解析

  • json 库允许进行字符串序列化和反序列化

示例依赖于:

  • argparse 库提供命令行参数解析和类型强制

依赖项包括:

  • clippy 库对常见的 代码问题 抛出错误和警告

贡献

为 color-operators 和 rust-utilities 贡献的选项


分支

开始将此存储库分支到一个您具有写入权限的账户中,例如 Fork

cd ~/git/hub/rust-utilities/color-operators

git remote add fork git@github.com:<NAME>/color-operators.git
  • 提交您的更改并将它们推送到您的分支,例如修复一个问题...
cd ~/git/hub/rust-utilities/color-operators


git commit -F- <<'EOF'
:bug: Fixes #42 Issue


**Edits**


- `<SCRIPT-NAME>` script, fixes some bug reported in issue
EOF


git push fork main

注意,可以使用 -u 选项将 fork 设置为默认远程,例如 git push -u fork main,然而,这也会将 fork 远程默认为拉取!这意味着要从 origin 拉取更新,必须显式执行,例如 git pull origin main

  • 然后,在 GitHub 上通过 Web-UI 提交一个 Pull Request,URL 语法是 https://github.com/<NAME>/<REPO>/pull/new/<BRANCH>

注意;为了降低您的 Pull Request 在被接受之前需要修改的可能性,请查阅 dot-github 存储库中的详细贡献指南。

提示检查 TODO 行以查找可能引起问题的已知问题,以及可以作为新 Pull Request 极佳目标的代码部分...

grep -C3 -ri 'todo' src/**/*.rs

赞助

感谢您考虑!

通过 Liberapay,您可以定期 sponsor__shields_io__liberapay 赞助。

无论您是否能够为 rust-utilities 维护的项目(如 color-operators)提供财务支持,请考虑与他人分享有用的项目,因为维护开源存储库的一个目标是为社区提供价值。


署名


许可

Color data structures, converters, comparators, and arithmetic operators
Copyright (C) 2021 S0AndS0

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, version 3 of the License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

有关详细信息,请查阅 AGPL-3.0 许可证的完整版本。

依赖项

~165KB