Struct 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)
3fn main() {
4    let app = app::App::default();
5    let mut wind = window::Window::default().with_size(400, 400);
6    let mut frame = frame::Frame::default_fill();
7    wind.make_resizable(true);
8    wind.end();
9    wind.show();
10    frame.draw(move |f| {
11        let mut fb: Vec<u8> = vec![0u8; (f.w() * f.h() * 4) as usize];
12        for (iter, pixel) in fb.chunks_exact_mut(4).enumerate() {
13            let x = iter % f.w() as usize;
14            let y = iter / f.w() as usize;
15            let (red, green, blue) = utils::hex2rgb((x ^ y) as u32);
16            pixel.copy_from_slice(&[red, green, blue, 255]);
17        }
18        let mut image = image::RgbImage::new(&fb, f.w(), f.h(), ColorDepth::Rgba8)
19            .unwrap()
20            .to_srgb_image()
21            .unwrap()
22            .blur(50)
23            .unwrap()
24            .convert(ColorDepth::Rgb8)
25            .unwrap();
26        image.draw(f.x(), f.y(), f.w(), f.h());
27    });
28
29    app.run().unwrap();
30}
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 new_ext( 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_data_ext( 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)
46fn main() {
47    let app = app::App::default().with_scheme(app::Scheme::Gleam);
48    app::background(0, 0, 0);
49    let image = image::SharedImage::load("screenshots/calc2.jpg")
50        .unwrap()
51        .as_rgb_image()
52        .unwrap();
53
54    let mut wind = window::Window::new(100, 100, 800, 400, "Hello from rust");
55    let row = group::Flex::default()
56        .row()
57        .with_size(800, 200)
58        .center_of_parent();
59    for i in 1..=4 {
60        let color_depth = enums::ColorDepth::from_u8(i).unwrap();
61        let image = image.convert(color_depth).unwrap();
62        RoundImageBox::new(100, image);
63    }
64    row.end();
65    wind.end();
66    wind.show();
67
68    app.run().unwrap();
69}
More examples
Hide additional examples
examples/rgb.rs (line 24)
3fn main() {
4    let app = app::App::default();
5    let mut wind = window::Window::default().with_size(400, 400);
6    let mut frame = frame::Frame::default_fill();
7    wind.make_resizable(true);
8    wind.end();
9    wind.show();
10    frame.draw(move |f| {
11        let mut fb: Vec<u8> = vec![0u8; (f.w() * f.h() * 4) as usize];
12        for (iter, pixel) in fb.chunks_exact_mut(4).enumerate() {
13            let x = iter % f.w() as usize;
14            let y = iter / f.w() as usize;
15            let (red, green, blue) = utils::hex2rgb((x ^ y) as u32);
16            pixel.copy_from_slice(&[red, green, blue, 255]);
17        }
18        let mut image = image::RgbImage::new(&fb, f.w(), f.h(), ColorDepth::Rgba8)
19            .unwrap()
20            .to_srgb_image()
21            .unwrap()
22            .blur(50)
23            .unwrap()
24            .convert(ColorDepth::Rgb8)
25            .unwrap();
26        image.draw(f.x(), f.y(), f.w(), f.h());
27    });
28
29    app.run().unwrap();
30}
Source

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

Convert black pixels to transparent

Source

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

Examples found in repository?
examples/rgb.rs (line 22)
3fn main() {
4    let app = app::App::default();
5    let mut wind = window::Window::default().with_size(400, 400);
6    let mut frame = frame::Frame::default_fill();
7    wind.make_resizable(true);
8    wind.end();
9    wind.show();
10    frame.draw(move |f| {
11        let mut fb: Vec<u8> = vec![0u8; (f.w() * f.h() * 4) as usize];
12        for (iter, pixel) in fb.chunks_exact_mut(4).enumerate() {
13            let x = iter % f.w() as usize;
14            let y = iter / f.w() as usize;
15            let (red, green, blue) = utils::hex2rgb((x ^ y) as u32);
16            pixel.copy_from_slice(&[red, green, blue, 255]);
17        }
18        let mut image = image::RgbImage::new(&fb, f.w(), f.h(), ColorDepth::Rgba8)
19            .unwrap()
20            .to_srgb_image()
21            .unwrap()
22            .blur(50)
23            .unwrap()
24            .convert(ColorDepth::Rgb8)
25            .unwrap();
26        image.draw(f.x(), f.y(), f.w(), f.h());
27    });
28
29    app.run().unwrap();
30}
Source

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

Returns an SRGB image

Examples found in repository?
examples/rgb.rs (line 20)
3fn main() {
4    let app = app::App::default();
5    let mut wind = window::Window::default().with_size(400, 400);
6    let mut frame = frame::Frame::default_fill();
7    wind.make_resizable(true);
8    wind.end();
9    wind.show();
10    frame.draw(move |f| {
11        let mut fb: Vec<u8> = vec![0u8; (f.w() * f.h() * 4) as usize];
12        for (iter, pixel) in fb.chunks_exact_mut(4).enumerate() {
13            let x = iter % f.w() as usize;
14            let y = iter / f.w() as usize;
15            let (red, green, blue) = utils::hex2rgb((x ^ y) as u32);
16            pixel.copy_from_slice(&[red, green, blue, 255]);
17        }
18        let mut image = image::RgbImage::new(&fb, f.w(), f.h(), ColorDepth::Rgba8)
19            .unwrap()
20            .to_srgb_image()
21            .unwrap()
22            .blur(50)
23            .unwrap()
24            .convert(ColorDepth::Rgb8)
25            .unwrap();
26        image.draw(f.x(), f.y(), f.w(), f.h());
27    });
28
29    app.run().unwrap();
30}
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 duplicate 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 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 as_rgb_data(&self) -> Vec<u8>

Returns the underlying raw rgb image data
Source§

fn as_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 RgbImage

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

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

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

impl Sync for RgbImage

Available on non-crate feature single-threaded only.

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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 T
where 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 T
where T: Clone,

Source§

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 T
where U: Into<T>,

Source§

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 T
where U: TryFrom<T>,

Source§

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.