1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
//! `initials` crate helps to generate customizable avatars with the initial characters from the names. 
//!
//! # Usage
//!
//! - Extern `initials` crate on your project.
//! ```
//! extern crate initials;
//!
//! ```
//!
//! - Draw the avatar by using `initials::AvatarBuilder`
//! ```
//! use initials::AvatarBuilder;
//! 
//! let image = AvatarBuilder::new("Anakin Skywalker")
//!     .draw();
//!
//! ```
//! This will import dynamic RGBA image.
//! 
//! - If you wish to save the image:
//! ```
//! use initials::AvatarBuilder;
//!
//! let image = AvatarBuilder::new("Anakin Skywalker")
//!     .draw();
//!
//! image.save("avatar.jpg").unwrap();
//! ```
//! 
//! Or, you may manipulate `DynamicImage` according to your needs after building.([Docs](https://docs.rs/image))
//!
//! # Customization
//!
//! `initials` allows to fully customize the attributes of the image.
//! 
//! ##### Default Attributes
//!   -  **font:** Hirgino Sans
//!   -  **font_scale:** 150.0
//!   -  **length:** 2
//!   -  **width:** 300
//!   -  **height:** 300
//!   -  **contrast_ratio:** 4.5
//!   -  **font_color:** randomly generated
//!   -  **background_color:** randomly generated
//!
//! ##### Manipulation
//!
//! |  method | description |
//! |-----------|-------------|
//! |  with_font(str) | Font file path(.ttf)  |
//! |  with_font_color(str)   | Font hex color code  |
//! |  with_font_scale(f32)  | Uniform scale of the text |
//! |  with_background_color(str)  | Background hex color code  |
//! |  with_length(usize)  |  Font length |
//! |  with_height(u32)  | Image height  |
//! |  with_width(u32)  | Image width  |
//! |  with_contrast_ratio(u32)  | Contrast ratio for the randomly generated colors  |
//! |  with_blur(f32)  | Applied Gaussian Filter  |
//! 
//! ##### Example
//! 
//! ```
//!
//! use initials::{AvatarBuilder, AvatarResult};
//!
//! fn avatar() -> AvatarResult {
//!	    AvatarBuilder::new("Anaking Skywalker")
//!         .with_font_color("#000000")?
//!         .with_background_color("#FAFAFA")?
//!         .with_length(1)
//! }
//!
//! fn main() {
//!     let avatar = avatar().unwrap();
//!     let image = avatar.draw();
//! }
//!
//! ```
//! - This will export an initials avatar `A` with black font and white background.
//!
//!
//! # Randomization
//!
//! - By default, `background color` and `font color` will be generated by considering the contrast ratio.
//!
//! ```
//! use initials::{AvatarBuilder, AvatarResult};
//!	
//! fn avatar_with_random_font() -> AvatarResult {
//!	    AvatarBuilder::new("Lucky Seven")
//!         .with_background_color("#FAFAFA")
//! }
//!
//! fn avatar_with_random_background() -> AvatarResult {
//!	    AvatarBuilder::new("Lucky Seven")
//!         .with_font_color("#000000")
//! }
//!
//! fn main() {
//!     let img1 = avatar_with_random_background().unwrap().draw();
//!     let img2 = avatar_with_random_font().unwrap().draw();
//! }
//!
//! ```
//! 
//! - Means that you may fully customize the colors or unsetted colors will be automatically generated
//! by providing clear and readable avatars according to the contrast ratio.

#[macro_use]
extern crate failure;

extern crate rand;
extern crate image;
extern crate rusttype;

pub mod color;
pub mod avatar;
pub mod error;

pub use avatar::AvatarBuilder;
pub use avatar::AvatarResult;
pub use error::Error;