3个版本
0.0.3 | 2021年6月17日 |
---|---|
0.0.2 | 2021年6月17日 |
0.0.1 | 2021年6月16日 |
#611 在 数据结构
83KB
1.5K SLoC
颜色运算符
颜色数据结构、转换器、比较器和算术运算符
要求
此仓库需要 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 }
对于常规操作,此项目依赖于;
示例依赖于:
argparse
库提供命令行参数解析和类型强制
依赖项包括:
clippy
库对常见的 代码问题 抛出错误和警告
贡献
为 color-operators 和 rust-utilities 贡献的选项
分支
开始将此存储库分支到一个您具有写入权限的账户中,例如 Fork。
- 为分支 URL 添加远程。URL 语法是
[email protected]:<NAME>/<REPO>.git
...
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
赞助
感谢您考虑!
无论您是否能够为 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