pub struct Color { /* private fields */ }Expand description
A object representing a color in RGBA32 format. Red/Green/Blue/Alpha each range from 0 to 255.
Implementations§
Source§impl Color
impl Color
pub const TRANSPARENT: Color
pub const BLACK: Color
pub const WHITE: Color
pub const GRAY: Color
pub const DARK_GRAY: Color
pub const LIGHT_GRAY: Color
pub const RED: Color
pub const GREEN: Color
pub const BLUE: Color
Sourcepub fn with_alpha(self, alpha: u8) -> Self
pub fn with_alpha(self, alpha: u8) -> Self
Create a Color from an existing color with alpha set to alpha.
§Examples
let color = Color::BLUE.with_alpha(127);Examples found in repository?
examples/hello-world.rs (line 53)
7fn main() {
8 // Create a new Pronto Graphics window, all drawing happens through this object.
9 // The window's drawable area will be of size 800 by 600, and the window title will be "Hello World".
10 let mut pg = Window::new(800, 600, "Hello World");
11
12 // Alternatively, we can create a full screen window.
13 // let mut pg = Window::new_fullscreen();
14
15 // Set the background color for our window.
16 // At the beginning of each frame, the window is cleared with this color.
17 pg.background_color((0x11, 0x11, 0x11));
18
19 // Load a texture from a file.
20 let texture = pg.load_texture("examples/test_texture.png").unwrap();
21
22 // Load a font from a file.
23 let font = pg.load_font("examples/Whisper-Regular.ttf").unwrap();
24
25 loop {
26 // Set the fill color for drawing shapes to blue.
27 pg.fill_color(Color::BLUE);
28 // Draw a circle in the middle of the window (width/2, height/2) with a radius of 64 pixels.
29 pg.circle((pg.width() / 2., pg.height() / 2.), 64.);
30
31 {
32 let pos = (
33 0.5 * pg.width() + 128. * pg.time().cos(),
34 0.5 * pg.height() + 128. * pg.time().sin(),
35 );
36
37 // Set the fill color to #CCCCCC, i.e. a light grey.
38 pg.fill_color((0xCC, 0xCC, 0xCC));
39 // Draw a circle at position `pos` with a radius of 16 pixels.
40 pg.circle(pos, 16.);
41 }
42
43 // Draw our texture at position `(10, 10)` with a width of 100 pixels.
44 // The texture's height will be deduced from the texture's aspect ratio.
45 // I.e. the texture is not distorted.
46 // If we want to set the height ourselves, we have to use `pg.texture(...)` (Note the missing `_`)
47 pg.texture_((10., 10.), texture, 150.);
48
49 // React to the the left mouse button being pressed.
50 // As long as the button is held down, the code inside the `if` is executed.
51 if pg.mouse_pressed(Button::LEFT) {
52 // Set the fill color to blue, but with it's alpha set to 127, i.e. half-transparent.
53 pg.fill_color(Color::GREEN.with_alpha(127));
54 pg.circle(pg.mouse_position(), 16.);
55 }
56
57 // React to the `SPACE` key having just been pressed this very frame.
58 // The code inside the if will only be executed once every time you press the key.
59 // I.e. Holding the key down will _not_ cause "Action!" to be printed every frame.
60 // If we want to react to a held down key, we have to use `pg.key_pressed(...)`
61 if pg.key_just_pressed(Key::SPACE) {
62 println!("Action!");
63 }
64
65 // React to the mouse wheel having been scrolled.
66 // `pg.mouse_wheel()` will give you a cumulative amount of scrolling across frames.
67 // If you want to know whether the scroll wheel has been scrolled in the current frame,
68 // use `pg.mouse_wheel_delta()` instead.
69 if pg.mouse_wheel() > 0. {
70 pg.fill_color(Color::GREEN);
71 } else {
72 pg.fill_color(Color::RED);
73 }
74
75 pg.font_color(Color::GREEN);
76 pg.font_size(40);
77 pg.font(Some(font));
78 pg.text((300., 50.), "Salutations!");
79
80 // Draw a square with side lengths of 25 pixels.
81 // Depending on what fill color has last been set above,
82 // this square will either be green or red.
83 pg.square((50., 300.), 25.);
84
85 {
86 let pos = (
87 pg.width() - 200.,
88 50. + ((50. * pg.time()) % (pg.height() - 130.)),
89 );
90
91 // Set the font color to a lovely pink of #EE4488.
92 pg.font_color((0xEE, 0x44, 0x88));
93 // Set the font size to 30 pixels.
94 pg.font_size(30);
95 // Set the font to the default font.
96 pg.font(None);
97 // Draw the string "Greetings!" as position `pos`.
98 pg.text(pos, "Greetings!");
99 }
100
101 // Set the line color from HSB, with the hue rotating through the colors.
102 pg.line_color(Color::from_hsb((60. * pg.time()) % 360., 1., 1.));
103
104 // Draw a bunch of lines.
105 pg.line((50., 500.), (50., 450.));
106 pg.line((50., 450.), (100., 500.));
107 pg.line((100., 475. + 25. * (5. * pg.time()).sin()), (150., 450.));
108
109 // At the end of our frame, we have to update the window
110 // for our drawings to appear on the screen and for the keyboard/mouse
111 // states to be updated.
112 // If your window ever is blank or looks glitchy, make sure you haven't forgotten
113 // to call `pg.update()` at the end of your `loop`.
114 pg.update();
115 }
116}Sourcepub fn from_hsb(hue: f32, saturation: f32, brightness: f32) -> Self
pub fn from_hsb(hue: f32, saturation: f32, brightness: f32) -> Self
Create a Color from HSB values.
hue: Between 0 and 360.saturation: Between 0 and 1.brightness: Between 0 and 1.
Examples found in repository?
examples/hello-world.rs (line 102)
7fn main() {
8 // Create a new Pronto Graphics window, all drawing happens through this object.
9 // The window's drawable area will be of size 800 by 600, and the window title will be "Hello World".
10 let mut pg = Window::new(800, 600, "Hello World");
11
12 // Alternatively, we can create a full screen window.
13 // let mut pg = Window::new_fullscreen();
14
15 // Set the background color for our window.
16 // At the beginning of each frame, the window is cleared with this color.
17 pg.background_color((0x11, 0x11, 0x11));
18
19 // Load a texture from a file.
20 let texture = pg.load_texture("examples/test_texture.png").unwrap();
21
22 // Load a font from a file.
23 let font = pg.load_font("examples/Whisper-Regular.ttf").unwrap();
24
25 loop {
26 // Set the fill color for drawing shapes to blue.
27 pg.fill_color(Color::BLUE);
28 // Draw a circle in the middle of the window (width/2, height/2) with a radius of 64 pixels.
29 pg.circle((pg.width() / 2., pg.height() / 2.), 64.);
30
31 {
32 let pos = (
33 0.5 * pg.width() + 128. * pg.time().cos(),
34 0.5 * pg.height() + 128. * pg.time().sin(),
35 );
36
37 // Set the fill color to #CCCCCC, i.e. a light grey.
38 pg.fill_color((0xCC, 0xCC, 0xCC));
39 // Draw a circle at position `pos` with a radius of 16 pixels.
40 pg.circle(pos, 16.);
41 }
42
43 // Draw our texture at position `(10, 10)` with a width of 100 pixels.
44 // The texture's height will be deduced from the texture's aspect ratio.
45 // I.e. the texture is not distorted.
46 // If we want to set the height ourselves, we have to use `pg.texture(...)` (Note the missing `_`)
47 pg.texture_((10., 10.), texture, 150.);
48
49 // React to the the left mouse button being pressed.
50 // As long as the button is held down, the code inside the `if` is executed.
51 if pg.mouse_pressed(Button::LEFT) {
52 // Set the fill color to blue, but with it's alpha set to 127, i.e. half-transparent.
53 pg.fill_color(Color::GREEN.with_alpha(127));
54 pg.circle(pg.mouse_position(), 16.);
55 }
56
57 // React to the `SPACE` key having just been pressed this very frame.
58 // The code inside the if will only be executed once every time you press the key.
59 // I.e. Holding the key down will _not_ cause "Action!" to be printed every frame.
60 // If we want to react to a held down key, we have to use `pg.key_pressed(...)`
61 if pg.key_just_pressed(Key::SPACE) {
62 println!("Action!");
63 }
64
65 // React to the mouse wheel having been scrolled.
66 // `pg.mouse_wheel()` will give you a cumulative amount of scrolling across frames.
67 // If you want to know whether the scroll wheel has been scrolled in the current frame,
68 // use `pg.mouse_wheel_delta()` instead.
69 if pg.mouse_wheel() > 0. {
70 pg.fill_color(Color::GREEN);
71 } else {
72 pg.fill_color(Color::RED);
73 }
74
75 pg.font_color(Color::GREEN);
76 pg.font_size(40);
77 pg.font(Some(font));
78 pg.text((300., 50.), "Salutations!");
79
80 // Draw a square with side lengths of 25 pixels.
81 // Depending on what fill color has last been set above,
82 // this square will either be green or red.
83 pg.square((50., 300.), 25.);
84
85 {
86 let pos = (
87 pg.width() - 200.,
88 50. + ((50. * pg.time()) % (pg.height() - 130.)),
89 );
90
91 // Set the font color to a lovely pink of #EE4488.
92 pg.font_color((0xEE, 0x44, 0x88));
93 // Set the font size to 30 pixels.
94 pg.font_size(30);
95 // Set the font to the default font.
96 pg.font(None);
97 // Draw the string "Greetings!" as position `pos`.
98 pg.text(pos, "Greetings!");
99 }
100
101 // Set the line color from HSB, with the hue rotating through the colors.
102 pg.line_color(Color::from_hsb((60. * pg.time()) % 360., 1., 1.));
103
104 // Draw a bunch of lines.
105 pg.line((50., 500.), (50., 450.));
106 pg.line((50., 450.), (100., 500.));
107 pg.line((100., 475. + 25. * (5. * pg.time()).sin()), (150., 450.));
108
109 // At the end of our frame, we have to update the window
110 // for our drawings to appear on the screen and for the keyboard/mouse
111 // states to be updated.
112 // If your window ever is blank or looks glitchy, make sure you haven't forgotten
113 // to call `pg.update()` at the end of your `loop`.
114 pg.update();
115 }
116}Trait Implementations§
impl Copy for Color
impl Eq for Color
impl StructuralPartialEq for Color
Auto Trait Implementations§
impl Freeze for Color
impl RefUnwindSafe for Color
impl Send for Color
impl Sync for Color
impl Unpin for Color
impl UnwindSafe for Color
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more