Struct fltk::image::RgbImage

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

Creates a struct holding a raw RGB image

Implementations§

source§

impl RgbImage

source

pub fn new( data: &[u8], w: i32, h: i32, depth: ColorDepth ) -> Result<RgbImage, FltkError>

Initializes a new raw RgbImage, copies the data and handles its lifetime. If you need to work with RGB data,

Errors

Errors on invalid or unsupported image format

Examples found in repository?
examples/rgb.rs (line 18)
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
fn main() {
    let app = app::App::default();
    let mut wind = window::Window::default().with_size(400, 400);
    let mut frame = frame::Frame::default().size_of(&wind);
    wind.make_resizable(true);
    wind.end();
    wind.show();
    frame.draw(move |f| {
        let mut fb: Vec<u8> = vec![0u8; (f.w() * f.h() * 4) as usize];
        for (iter, pixel) in fb.chunks_exact_mut(4).enumerate() {
            let x = iter % f.w() as usize;
            let y = iter / f.w() as usize;
            let (red, green, blue) = utils::hex2rgb((x ^ y) as u32);
            pixel.copy_from_slice(&[red, green, blue, 255]);
        }
        let mut image = image::RgbImage::new(&fb, f.w(), f.h(), ColorDepth::Rgba8)
            .unwrap()
            .to_srgb_image()
            .unwrap()
            .blur(50)
            .unwrap()
            .convert(ColorDepth::Rgb8)
            .unwrap();
        image.draw(f.x(), f.y(), f.width(), f.height());
    });

    app.run().unwrap();
}
source

pub unsafe fn from_data( data: &[u8], w: i32, h: i32, depth: ColorDepth ) -> Result<RgbImage, FltkError>

Initializes a new raw RgbImage from shared data, doesn’t handle the data’s lifetime

Safety

The data must be valid for the lifetime of the image

Errors

Errors on invalid or unsupported image format

source

pub unsafe fn new2( data: &[u8], w: i32, h: i32, depth: i32, line_data: i32 ) -> Result<RgbImage, FltkError>

Initializes a new raw RgbImage, copies the data and handles its lifetime. If you need to work with RGB data,

Errors

Errors on invalid or unsupported image format

Safety

Passing wrong line data can read to over or underflow

source

pub unsafe fn from_data2( data: &[u8], w: i32, h: i32, depth: i32, line_data: i32 ) -> Result<RgbImage, FltkError>

Initializes a new raw RgbImage from shared data, doesn’t handle the data’s lifetime

Safety

The data must be valid for the lifetime of the image

Errors

Errors on invalid or unsupported image format

Safety

Passing wrong line data can read to over or underflow

source

pub fn from_pixmap(image: &Pixmap) -> RgbImage

Creates an RgbImage from a pixmap

source

pub unsafe fn into_parts(self) -> (Vec<u8>, i32, i32)

Deconstructs a raw RgbImage into parts

Safety

Destructures the image into its raw elements

source

pub fn convert(&self, new_depth: ColorDepth) -> Result<RgbImage, FltkError>

Convert from one ColorDepth to another ColorDepth

Examples found in repository?
examples/rounded_images.rs (line 61)
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
fn main() {
    let app = app::App::default().with_scheme(app::Scheme::Gleam);
    app::background(0, 0, 0);
    let image = image::SharedImage::load("screenshots/calc2.jpg")
        .unwrap()
        .to_rgb()
        .unwrap();

    let mut wind = window::Window::new(100, 100, 800, 400, "Hello from rust");
    let mut pack = group::Pack::default()
        .with_size(800, 200)
        .center_of_parent();
    pack.set_type(group::PackType::Horizontal);
    for i in 1..=4 {
        let color_depth = enums::ColorDepth::from_u8(i).unwrap();
        let image = image.convert(color_depth).unwrap();
        RoundImageBox::new(100, image);
    }
    pack.end();
    wind.end();
    wind.show();

    app.run().unwrap();
}
More examples
Hide additional examples
examples/rgb.rs (line 24)
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
fn main() {
    let app = app::App::default();
    let mut wind = window::Window::default().with_size(400, 400);
    let mut frame = frame::Frame::default().size_of(&wind);
    wind.make_resizable(true);
    wind.end();
    wind.show();
    frame.draw(move |f| {
        let mut fb: Vec<u8> = vec![0u8; (f.w() * f.h() * 4) as usize];
        for (iter, pixel) in fb.chunks_exact_mut(4).enumerate() {
            let x = iter % f.w() as usize;
            let y = iter / f.w() as usize;
            let (red, green, blue) = utils::hex2rgb((x ^ y) as u32);
            pixel.copy_from_slice(&[red, green, blue, 255]);
        }
        let mut image = image::RgbImage::new(&fb, f.w(), f.h(), ColorDepth::Rgba8)
            .unwrap()
            .to_srgb_image()
            .unwrap()
            .blur(50)
            .unwrap()
            .convert(ColorDepth::Rgb8)
            .unwrap();
        image.draw(f.x(), f.y(), f.width(), f.height());
    });

    app.run().unwrap();
}
source

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

Convert black pixels to transparent

source

pub fn blur(&self, radius: u32) -> Result<RgbImage, FltkError>

Blur the image Adapted from https://www.cairographics.org/cookbook/blur.c/

Examples found in repository?
examples/rgb.rs (line 22)
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
fn main() {
    let app = app::App::default();
    let mut wind = window::Window::default().with_size(400, 400);
    let mut frame = frame::Frame::default().size_of(&wind);
    wind.make_resizable(true);
    wind.end();
    wind.show();
    frame.draw(move |f| {
        let mut fb: Vec<u8> = vec![0u8; (f.w() * f.h() * 4) as usize];
        for (iter, pixel) in fb.chunks_exact_mut(4).enumerate() {
            let x = iter % f.w() as usize;
            let y = iter / f.w() as usize;
            let (red, green, blue) = utils::hex2rgb((x ^ y) as u32);
            pixel.copy_from_slice(&[red, green, blue, 255]);
        }
        let mut image = image::RgbImage::new(&fb, f.w(), f.h(), ColorDepth::Rgba8)
            .unwrap()
            .to_srgb_image()
            .unwrap()
            .blur(50)
            .unwrap()
            .convert(ColorDepth::Rgb8)
            .unwrap();
        image.draw(f.x(), f.y(), f.width(), f.height());
    });

    app.run().unwrap();
}
source

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

Returns an SRGB image

Examples found in repository?
examples/rgb.rs (line 20)
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
fn main() {
    let app = app::App::default();
    let mut wind = window::Window::default().with_size(400, 400);
    let mut frame = frame::Frame::default().size_of(&wind);
    wind.make_resizable(true);
    wind.end();
    wind.show();
    frame.draw(move |f| {
        let mut fb: Vec<u8> = vec![0u8; (f.w() * f.h() * 4) as usize];
        for (iter, pixel) in fb.chunks_exact_mut(4).enumerate() {
            let x = iter % f.w() as usize;
            let y = iter / f.w() as usize;
            let (red, green, blue) = utils::hex2rgb((x ^ y) as u32);
            pixel.copy_from_slice(&[red, green, blue, 255]);
        }
        let mut image = image::RgbImage::new(&fb, f.w(), f.h(), ColorDepth::Rgba8)
            .unwrap()
            .to_srgb_image()
            .unwrap()
            .blur(50)
            .unwrap()
            .convert(ColorDepth::Rgb8)
            .unwrap();
        image.draw(f.x(), f.y(), f.width(), f.height());
    });

    app.run().unwrap();
}
source

pub fn set_scaling_algorithm(algorithm: RgbScaling)

Sets the scaling algorithm

source

pub fn scaling_algorithm() -> RgbScaling

Gets the scaling algorithm

Trait Implementations§

source§

impl Clone for RgbImage

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 RgbImage

source§

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

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

impl Drop for RgbImage

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl ImageExt for RgbImage

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<RgbImage> for RgbImage

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 RgbImage

source§

impl Send for RgbImage

source§

impl Sync for RgbImage

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.