Function fltk::draw::set_draw_color
source · pub fn set_draw_color(color: Color)
Expand description
Sets the drawing color
Examples found in repository?
examples/table.rs (line 56)
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
fn draw_header(txt: &str, x: i32, y: i32, w: i32, h: i32) {
draw::push_clip(x, y, w, h);
draw::draw_box(
enums::FrameType::ThinUpBox,
x,
y,
w,
h,
enums::Color::FrameDefault,
);
draw::set_draw_color(enums::Color::Black);
draw::set_font(enums::Font::Helvetica, 14);
draw::draw_text2(txt, x, y, w, h, enums::Align::Center);
draw::pop_clip();
}
// The selected flag sets the color of the cell to a grayish color, otherwise white
fn draw_data(txt: &str, x: i32, y: i32, w: i32, h: i32, selected: bool) {
draw::push_clip(x, y, w, h);
if selected {
draw::set_draw_color(enums::Color::from_u32(0x00D3_D3D3));
} else {
draw::set_draw_color(enums::Color::White);
}
draw::draw_rectf(x, y, w, h);
draw::set_draw_color(enums::Color::Gray0);
draw::set_font(enums::Font::Helvetica, 14);
draw::draw_text2(txt, x, y, w, h, enums::Align::Center);
draw::draw_rect(x, y, w, h);
draw::pop_clip();
}
More examples
examples/shapedwindow_taskbar.rs (line 122)
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
fn prep_shape(w: i32, h: i32) -> image::RgbImage {
let surf = surface::ImageSurface::new(w, h, false);
surface::ImageSurface::push_current(&surf);
draw::set_draw_color(enums::Color::Black);
draw::draw_rectf(-1, -1, w + 2, h + 2);
draw::set_draw_color(enums::Color::White);
draw::draw_rounded_rectf(0, 0, w, h, 16);
let img = surf.image().unwrap();
surface::ImageSurface::pop_current();
img
}
examples/spreadsheet.rs (line 122)
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
fn draw_header(txt: &str, x: i32, y: i32, w: i32, h: i32) {
draw::push_clip(x, y, w, h);
draw::draw_box(
enums::FrameType::ThinUpBox,
x,
y,
w,
h,
enums::Color::FrameDefault,
);
draw::set_draw_color(enums::Color::Black);
draw::set_font(enums::Font::Helvetica, 14);
draw::draw_text2(txt, x, y, w, h, enums::Align::Center);
draw::pop_clip();
}
// The selected flag sets the color of the cell to a grayish color, otherwise white
fn draw_data(txt: &str, x: i32, y: i32, w: i32, h: i32, selected: bool) {
draw::push_clip(x, y, w, h);
if selected {
draw::set_draw_color(enums::Color::from_u32(0x00D3_D3D3));
} else {
draw::set_draw_color(enums::Color::White);
}
draw::draw_rectf(x, y, w, h);
draw::set_draw_color(enums::Color::Gray0);
draw::set_font(enums::Font::Helvetica, 14);
draw::draw_text2(txt, x, y, w, h, enums::Align::Center);
draw::draw_rect(x, y, w, h);
draw::pop_clip();
}
examples/gradients.rs (line 19)
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
fn create_vertical_gradient_frame(
x: i32,
y: i32,
w: i32,
h: i32,
col1: Color,
col2: Color,
) -> frame::Frame {
let mut frame = frame::Frame::new(x, y, w, h, "Vertical");
frame.draw(move |f| {
let imax = f.h();
let d = if imax > 0 { imax } else { 1 };
for i in 0..=imax {
let w = 1.0 - i as f32 / d as f32;
set_draw_color(Color::inactive(&Color::color_average(col1, col2, w)));
draw_xyline(f.x(), f.y() + i, f.x() + f.w());
}
set_draw_color(Color::Black);
set_font(Font::Helvetica, app::font_size());
draw_text2(&f.label(), f.x(), f.y(), f.w(), f.h(), f.align());
});
frame
}
fn create_horizontal_gradient_frame(
x: i32,
y: i32,
w: i32,
h: i32,
col1: Color,
col2: Color,
) -> frame::Frame {
let mut frame = frame::Frame::new(x, y, w, h, "Horizontal");
frame.draw(move |f| {
let imax = f.w();
let d = if imax > 0 { imax } else { 1 };
for i in 0..=imax {
let w = 1.0 - i as f32 / d as f32;
set_draw_color(Color::inactive(&Color::color_average(col1, col2, w)));
draw_yxline(f.x() + i, f.y(), f.y() + f.h());
}
set_draw_color(Color::Black);
set_font(Font::Helvetica, app::font_size());
draw_text2(&f.label(), f.x(), f.y(), f.w(), f.h(), f.align());
});
frame
}
fn create_horizontal_svg_gradient_frame(
x: i32,
y: i32,
w: i32,
h: i32,
col1: Color,
col2: Color,
) -> frame::Frame {
let mut frame = frame::Frame::new(x, y, w, h, "Svg");
frame.draw(move |f| {
let (r1, g1, b1) = Color::inactive(&col1).to_rgb();
let (r2, g2, b2) = Color::inactive(&col2).to_rgb();
let svg = format!(
"<svg viewBox='0 0 {} {}'>
<defs>
<linearGradient id='grad1' x1='0%' y1='0%' x2='0%' y2='100%'>
<stop offset='0%' style='stop-color:rgb({},{},{});stop-opacity:1' />
<stop offset='100%' style='stop-color:rgb({},{},{});stop-opacity:1' />
</linearGradient>
</defs>
<rect width='100%' height='100%' fill='url(#grad1)' />
</svg>",
f.w(),
f.h() + 1,
r1,
g1,
b1,
r2,
g2,
b2
);
let mut image = image::SvgImage::from_data(&svg).unwrap();
image.draw(f.x(), f.y(), f.w(), f.h());
set_draw_color(Color::Black);
set_font(Font::Helvetica, app::font_size());
draw_text2(&f.label(), f.x(), f.y(), f.w(), f.h(), f.align());
});
frame
}
fn main() {
let a = app::App::default();
let mut win = window::Window::default().with_size(300, 300);
create_vertical_gradient_frame(0, 0, 100, 100, Color::Red, Color::Cyan);
create_horizontal_gradient_frame(100, 0, 100, 100, Color::Red, Color::Cyan);
create_horizontal_svg_gradient_frame(200, 0, 100, 100, Color::Red, Color::Cyan);
win.end();
win.draw(|w| {
// vertical gradient
let imax = w.w();
let d = if imax > 0 { imax } else { 1 };
for i in 0..=imax {
let v = 1.0 - i as f32 / d as f32;
set_draw_color(Color::color_average(Color::Red, Color::Blue, v));
draw_yxline(i, 0, w.h());
}
w.draw_children();
});
win.make_resizable(true);
win.show();
a.run().unwrap();
}
examples/custom_dial.rs (line 35)
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
pub fn new(x: i32, y: i32, w: i32, h: i32, label: &str) -> Self {
let value = Rc::from(RefCell::from(0));
let mut main_wid = group::Group::new(x, y, w, h, None)
.with_label(label)
.with_align(Align::Top);
let mut value_frame =
frame::Frame::new(main_wid.x(), main_wid.y() + 80, main_wid.w(), 40, "0");
value_frame.set_label_size(26);
main_wid.end();
let value_c = value.clone();
main_wid.draw(move |w| {
draw::set_draw_rgb_color(230, 230, 230);
draw::draw_pie(w.x(), w.y(), w.w(), w.h(), 0., 180.);
draw::set_draw_hex_color(0xb0bf1a);
draw::draw_pie(
w.x(),
w.y(),
w.w(),
w.h(),
(100 - *value_c.borrow()) as f64 * 1.8,
180.,
);
draw::set_draw_color(Color::White);
draw::draw_pie(
w.x() - 50 + w.w() / 2,
w.y() - 50 + w.h() / 2,
100,
100,
0.,
360.,
);
w.draw_children();
});
Self {
main_wid,
value,
value_frame,
}
}
examples/paint.rs (line 53)
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
pub fn new(w: i32, h: i32) -> Self {
let mut frame = Frame::default().with_size(w, h).center_of_parent();
frame.set_color(Color::White);
frame.set_frame(FrameType::DownBox);
let surf = ImageSurface::new(frame.width(), frame.height(), false);
ImageSurface::push_current(&surf);
draw_rect_fill(0, 0, w, h, Color::White);
ImageSurface::pop_current();
let surf = Rc::from(RefCell::from(surf));
frame.draw({
let surf = surf.clone();
move |f| {
let surf = surf.borrow();
let mut img = surf.image().unwrap();
img.draw(f.x(), f.y(), f.w(), f.h());
}
});
frame.handle({
let mut x = 0;
let mut y = 0;
let surf = surf.clone();
move |f, ev| {
// println!("{}", ev);
// println!("coords {:?}", app::event_coords());
// println!("get mouse {:?}", app::get_mouse());
let surf = surf.borrow_mut();
match ev {
Event::Push => {
ImageSurface::push_current(&surf);
set_draw_color(Color::Red);
set_line_style(LineStyle::Solid, 3);
let coords = app::event_coords();
x = coords.0;
y = coords.1;
draw_point(x, y);
ImageSurface::pop_current();
f.redraw();
true
}
Event::Drag => {
ImageSurface::push_current(&surf);
set_draw_color(Color::Red);
set_line_style(LineStyle::Solid, 3);
let coords = app::event_coords();
draw_line(x, y, coords.0, coords.1);
x = coords.0;
y = coords.1;
ImageSurface::pop_current();
f.redraw();
true
}
_ => false,
}
}
});
Self { frame, surf }
}
Additional examples can be found in: