Struct fltk::image::SvgImage

source ·
pub struct SvgImage { /* private fields */ }
Expand description

Creates a struct holding an SVG image

Implementations§

source§

impl SvgImage

source

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();
}
source

pub fn from_data(data: &str) -> Result<SvgImage, FltkError>

Loads the image from data/memory

Errors

Errors on invalid format

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
Hide additional 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
    }
source

pub fn normalize(&mut self)

Rasterize an SvgImage

Trait Implementations§

source§

impl Clone for SvgImage

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SvgImage

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Drop for SvgImage

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl ImageExt for SvgImage

source§

fn copy(&self) -> Self

Performs a deep copy of the image
source§

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)

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 )

Draws the image at the presupplied coordinates and size and offset cx, cy
source§

fn width(&self) -> i32

Return the width of the image
source§

fn height(&self) -> i32

Return the height of the image
source§

fn w(&self) -> i32

Return the width of the image
source§

fn h(&self) -> i32

Return the height of the image
source§

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

Transforms a raw image pointer to an image Read more
source§

fn to_rgb_data(&self) -> Vec<u8>

Returns the underlying raw rgb image data
source§

fn to_raw_data(&self) -> *const *const u8

Returns the underlying raw image data
source§

fn to_rgb(&self) -> Result<RgbImage, FltkError>

Transforms the image into an RgbImage Read more
source§

fn to_rgb_image(&self) -> Result<RgbImage, FltkError>

Transforms the image into an RgbImage Read more
source§

fn scale( &mut self, width: i32, height: i32, proportional: bool, can_expand: bool )

Scales the image
source§

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 data_w(&self) -> i32

Gets the image’s data width
source§

fn data_h(&self) -> i32

Gets the image’s data height
source§

fn depth(&self) -> ColorDepth

Gets the image’s depth
source§

fn ld(&self) -> i32

Gets the image’s line data size
source§

fn inactive(&mut self)

Greys the image
source§

unsafe fn delete(img: Self)

Deletes the image Read more
source§

fn was_deleted(&self) -> bool

Checks if the image was deleted
source§

unsafe fn into_image<I: ImageExt>(self) -> I

Transforms an Image base into another Image Read more
source§

impl PartialEq for SvgImage

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for SvgImage

source§

impl Send for SvgImage

Available on non-crate feature single-threaded only.
source§

impl Sync for SvgImage

Available on non-crate feature single-threaded only.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.