mirror of
https://github.com/slint-ui/slint.git
synced 2025-10-01 06:11:16 +00:00
Simplify image primitives API
Removed the source rectangle as that can also be done on the source image side, if necessary.
This commit is contained in:
parent
260f17a3e0
commit
cbd28bf745
4 changed files with 6 additions and 14 deletions
|
@ -57,15 +57,12 @@ fn main() {
|
||||||
|
|
||||||
let source_size = image.dimensions();
|
let source_size = image.dimensions();
|
||||||
|
|
||||||
let source_rect =
|
|
||||||
Rect::new(Point::new(0.0, 0.0), Size::new(source_size.0 as f32, source_size.1 as f32));
|
|
||||||
let dest_rect = Rect::new(
|
let dest_rect = Rect::new(
|
||||||
Point::new(200.0, 200.0),
|
Point::new(200.0, 200.0),
|
||||||
Size::new(source_size.0 as f32, source_size.1 as f32),
|
Size::new(source_size.0 as f32, source_size.1 as f32),
|
||||||
);
|
);
|
||||||
|
|
||||||
let image_primitive =
|
let image_primitive = rendering_primitives_builder.create_image_primitive(dest_rect, image);
|
||||||
rendering_primitives_builder.create_image_primitive(source_rect, dest_rect, image);
|
|
||||||
|
|
||||||
render_cache.allocate_entry(image_primitive)
|
render_cache.allocate_entry(image_primitive)
|
||||||
};
|
};
|
||||||
|
|
|
@ -60,7 +60,6 @@ pub trait RenderingPrimitivesBuilder {
|
||||||
) -> Self::RenderingPrimitive;
|
) -> Self::RenderingPrimitive;
|
||||||
fn create_image_primitive(
|
fn create_image_primitive(
|
||||||
&mut self,
|
&mut self,
|
||||||
source_rect: impl Into<Rect>,
|
|
||||||
dest_rect: impl Into<Rect>,
|
dest_rect: impl Into<Rect>,
|
||||||
image: image::ImageBuffer<image::Rgba<u8>, Vec<u8>>,
|
image: image::ImageBuffer<image::Rgba<u8>, Vec<u8>>,
|
||||||
) -> Self::RenderingPrimitive;
|
) -> Self::RenderingPrimitive;
|
||||||
|
|
|
@ -45,7 +45,7 @@ pub(crate) fn update_item_rendering_data<Backend: GraphicsBackend>(
|
||||||
);
|
);
|
||||||
|
|
||||||
let image_primitive =
|
let image_primitive =
|
||||||
rendering_primitives_builder.create_image_primitive(rect, rect, image);
|
rendering_primitives_builder.create_image_primitive(rect, image);
|
||||||
rendering_data.cache_index = rendering_cache.allocate_entry(image_primitive);
|
rendering_data.cache_index = rendering_cache.allocate_entry(image_primitive);
|
||||||
rendering_data.cache_ok = true;
|
rendering_data.cache_ok = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -472,18 +472,14 @@ impl RenderingPrimitivesBuilder for GLRenderingPrimitivesBuilder {
|
||||||
|
|
||||||
fn create_image_primitive(
|
fn create_image_primitive(
|
||||||
&mut self,
|
&mut self,
|
||||||
source_rect: impl Into<Rect>,
|
|
||||||
dest_rect: impl Into<Rect>,
|
dest_rect: impl Into<Rect>,
|
||||||
image: image::ImageBuffer<image::Rgba<u8>, Vec<u8>>,
|
image: image::ImageBuffer<image::Rgba<u8>, Vec<u8>>,
|
||||||
) -> Self::RenderingPrimitive {
|
) -> Self::RenderingPrimitive {
|
||||||
let rect = dest_rect.into();
|
let rect = dest_rect.into();
|
||||||
let src_rect = source_rect.into();
|
let src_left = 0.;
|
||||||
let image_width = image.width() as f32;
|
let src_top = 0.;
|
||||||
let image_height = image.height() as f32;
|
let src_right = 1.;
|
||||||
let src_left = src_rect.min_x() / image_width;
|
let src_bottom = 1.;
|
||||||
let src_top = src_rect.min_y() / image_height;
|
|
||||||
let src_right = src_rect.max_x() / image_width;
|
|
||||||
let src_bottom = src_rect.max_y() / image_height;
|
|
||||||
|
|
||||||
let vertex1 = Vertex { _pos: [rect.min_x(), rect.min_y()] };
|
let vertex1 = Vertex { _pos: [rect.min_x(), rect.min_y()] };
|
||||||
let tex_vertex1 = Vertex { _pos: [src_left, src_top] };
|
let tex_vertex1 = Vertex { _pos: [src_left, src_top] };
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue