named_colour/
lib.rs

1#![cfg_attr(docsrs, feature(doc_cfg))]
2#![warn(missing_docs)]
3// #![cfg_attr(docsrs, warn(rustdoc::missing_doc_code_examples))]
4#![cfg_attr(docsrs, warn(rustdoc::invalid_codeblock_attributes))]
5#![allow(dead_code)]
6
7//! Provides Hex Codes for colours:
8//! - enums that return a hex code string for named colours
9//! - rgb colour struct to configure a colour an rgb colour and display as decimal or hex
10//!
11//! ## Examples
12//!
13//! ### Use Basic colour
14//!
15//!```toml
16//! [dependencies]
17//! named-colour = "0.3.25"
18//!
19//!```
20//!
21#[cfg_attr(
22    not(feature = "extended"),
23    doc = r##"
24```
25    use named_colour::Basic;
26    println!("The colour Hex Code is: {} for the RGB colour Aqua: {}",
27        Basic::Aqua,
28        Basic::Aqua.to_rgb()
29    );
30    assert_eq!("rgb(0,255,255)", Basic::Aqua.to_rgb().to_string());
31```
32"##
33)]
34#[cfg_attr(
35    feature = "extended",
36    doc = r##"
37
38 ### Use Extended colour
39
40 Enable the feature in the toml file:
41
42```toml
43[dependencies]
44named-colour = { version = "0.3.25", features = ["extended"]}
45```
46
47```
48    use named_colour::ext::Purple;
49    println!("The colour Hex Code is: {} for the RGB colour Dark Orchid: {}",
50        Purple::DarkOrchid,
51        Purple::DarkOrchid.to_rgb()
52 );
53```
54"##
55)]
56///
57/// ### Create a custom colour
58///
59///```
60/// use named_colour::ToHex;
61/// use rgb::Rgb;
62/// fn main() {
63///     assert_eq!("#CCCCCC", &Rgb::new(204, 204, 204).as_hex());
64///     let colour = Rgb::new(12, 24, 48);
65///     assert_eq!("#0C1830", colour.as_hex());
66///     let colour = Rgb::new(12, 4, 8);
67///     assert_eq!("#0C0408", colour.as_hex());
68/// }
69///```
70///
71/// ## Features
72/// - Basic contains just 16 colours with 18 names (default)
73/// - Extended contains a fuller set of colours divided in 11 collections
74///
75/// To use the extended colour set only configure toml with no-default features
76///
77///```toml
78///[dependencies]
79///named-colour = { version = "0.3.25", default_features = false, features = ["extended"]}
80///```
81///
82///
83///
84mod to_hex;
85
86#[cfg(not(feature = "extended"))]
87mod basic;
88#[cfg(feature = "extended")]
89pub mod ext;
90
91pub use crate::to_hex::ToHex;
92pub use rgb::RGB8;
93
94#[cfg(not(feature = "extended"))]
95pub use basic::Basic;
96
97#[cfg(feature = "extended")]
98pub use ext::name_colour;
99#[cfg(feature = "extended")]
100pub use ext::random_named_colour;
101#[cfg(feature = "extended")]
102pub use ext::Black;
103#[cfg(feature = "extended")]
104pub use ext::Blue;
105#[cfg(feature = "extended")]
106pub use ext::Brown;
107#[cfg(feature = "extended")]
108pub use ext::Cyan;
109#[cfg(feature = "extended")]
110pub use ext::ExtendedColour;
111#[cfg(feature = "extended")]
112pub use ext::Green;
113#[cfg(feature = "extended")]
114pub use ext::Purple;
115#[cfg(feature = "extended")]
116pub use ext::Red;
117#[cfg(feature = "extended")]
118pub use ext::White;
119#[cfg(feature = "extended")]
120pub use ext::Yellow;
121
122/// Prefixes
123///
124/// Prefixes allowed to 6 character hex code to specify colour
125pub enum Prefix {
126    /// No prefix yields 6 character string
127    None,
128    /// Prefix # yields 7 character string
129    Hash,
130}