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:
Simon Hausmann 2020-05-19 18:26:54 +02:00
parent 260f17a3e0
commit cbd28bf745
4 changed files with 6 additions and 14 deletions

View file

@ -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)
}; };

View file

@ -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;

View file

@ -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;
} }

View file

@ -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] };