pub struct SvgImage { /* private fields */ }
Expand description
Creates a struct holding an SVG image
Implementations§
source§impl SvgImage
impl SvgImage
sourcepub fn load<P: AsRef<Path>>(path: P) -> Result<SvgImage, FltkError>
pub fn load<P: AsRef<Path>>(path: P) -> Result<SvgImage, FltkError>
Loads the image from a filesystem path, doesn’t check for the validity of the data
Errors
Errors on non-existent path or invalid format
Examples found in repository?
examples/hello_svg.rs (line 16)
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
fn main() {
let app = app::App::default().with_scheme(app::Scheme::Gleam);
let mut wind = Window::new(100, 100, 400, 300, "Hello from rust");
let mut frame = Frame::default().with_size(360, 260).center_of_parent();
frame.set_frame(FrameType::EngravedBox);
let mut image1 = SvgImage::load("screenshots/RustLogo.svg").unwrap();
image1.scale(200, 200, true, true);
frame.set_image(Some(image1));
wind.make_resizable(true);
wind.end();
wind.show();
wind.set_icon(Some(SvgImage::from_data(IMAGE2).unwrap()));
app.run().unwrap();
}
sourcepub fn from_data(data: &str) -> Result<SvgImage, FltkError>
pub fn from_data(data: &str) -> Result<SvgImage, FltkError>
Examples found in repository?
examples/hello_svg.rs (line 23)
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
fn main() {
let app = app::App::default().with_scheme(app::Scheme::Gleam);
let mut wind = Window::new(100, 100, 400, 300, "Hello from rust");
let mut frame = Frame::default().with_size(360, 260).center_of_parent();
frame.set_frame(FrameType::EngravedBox);
let mut image1 = SvgImage::load("screenshots/RustLogo.svg").unwrap();
image1.scale(200, 200, true, true);
frame.set_image(Some(image1));
wind.make_resizable(true);
wind.end();
wind.show();
wind.set_icon(Some(SvgImage::from_data(IMAGE2).unwrap()));
app.run().unwrap();
}
More examples
examples/gradients.rs (line 84)
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
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
}
examples/rounded_images.rs (line 39)
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
pub fn new(radius: i32, mut image: image::RgbImage) -> Self {
let mut frame = frame::Frame::new(0, 0, radius * 2, radius * 2, None);
frame.set_frame(enums::FrameType::FlatBox);
frame.draw(move |f| {
image.scale(f.w(), f.h(), false, true);
image.draw(f.x(), f.y(), f.w(), f.h());
let color = f.color().to_rgb();
let s = format!(
"<?xml version='1.0' encoding='UTF-8' standalone='no'?>\n
<svg width='{}' height='{}'>\n
<rect x='{}'
y='{}'
rx='{}'
ry='{}'
width='{}'
height='{}'
fill='none'
stroke='rgb({}, {}, {})'
stroke-width='{}' />\n
</svg>\n",
f.w(),
f.h(),
-f.w() / 2,
-f.w() / 2,
f.w(),
f.w(),
f.w() + f.w(),
f.h() + f.w(),
color.0,
color.1,
color.2,
f.w()
);
let mut s = image::SvgImage::from_data(&s).unwrap();
s.draw(f.x(), f.y(), f.w(), f.h());
});
Self
}
Trait Implementations§
source§impl ImageExt for SvgImage
impl ImageExt for SvgImage
source§fn copy_sized(&self, w: i32, h: i32) -> Self
fn copy_sized(&self, w: i32, h: i32) -> Self
Performs a deep copy of the image but to a new size. This will make use of the scaling algorithm when resizing.
source§fn draw(&mut self, arg2: i32, arg3: i32, arg4: i32, arg5: i32)
fn draw(&mut self, arg2: i32, arg3: i32, arg4: i32, arg5: i32)
Draws the image at the presupplied coordinates and size
source§fn draw_ext(
&mut self,
arg2: i32,
arg3: i32,
arg4: i32,
arg5: i32,
cx: i32,
cy: i32
)
fn draw_ext( &mut self, arg2: i32, arg3: i32, arg4: i32, arg5: i32, cx: i32, cy: i32 )
Draws the image at the presupplied coordinates and size and offset cx, cy
source§fn as_image_ptr(&self) -> *mut Fl_Image
fn as_image_ptr(&self) -> *mut Fl_Image
Returns a pointer of the image
source§unsafe fn from_image_ptr(ptr: *mut Fl_Image) -> Self
unsafe fn from_image_ptr(ptr: *mut Fl_Image) -> Self
Transforms a raw image pointer to an image Read more
source§fn to_rgb_data(&self) -> Vec<u8>
fn to_rgb_data(&self) -> Vec<u8>
Returns the underlying raw rgb image data
source§fn to_rgb(&self) -> Result<RgbImage, FltkError>
fn to_rgb(&self) -> Result<RgbImage, FltkError>
Transforms the image into an
RgbImage
Read moresource§fn to_rgb_image(&self) -> Result<RgbImage, FltkError>
fn to_rgb_image(&self) -> Result<RgbImage, FltkError>
Transforms the image into an
RgbImage
Read moresource§fn scale(
&mut self,
width: i32,
height: i32,
proportional: bool,
can_expand: bool
)
fn scale( &mut self, width: i32, height: i32, proportional: bool, can_expand: bool )
Scales the image
source§fn count(&self) -> i32
fn count(&self) -> i32
Return the count of pointers in an image (Pixmaps have more than 1, bitmaps have 0, Rgb based images have 1)
source§fn depth(&self) -> ColorDepth
fn depth(&self) -> ColorDepth
Gets the image’s depth
source§fn was_deleted(&self) -> bool
fn was_deleted(&self) -> bool
Checks if the image was deleted
source§unsafe fn into_image<I: ImageExt>(self) -> I
unsafe fn into_image<I: ImageExt>(self) -> I
Transforms an Image base into another Image Read more
source§impl PartialEq for SvgImage
impl PartialEq for SvgImage
impl Eq for SvgImage
impl Send for SvgImage
Available on non-crate feature
single-threaded
only.impl Sync for SvgImage
Available on non-crate feature
single-threaded
only.Auto Trait Implementations§
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