You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've created a SSCCE which can be found here, and attached as code below. The example shows that the red rectangle (which is draw at the size of the image), is correctly clipped, while the image ignores the clipping. They should both be vertically clipped in the example (ref. screenshot).
//! Showcasing image clipping on the canvas.use iced::advanced::image::RendererasIRenderer;use iced::mouse;use iced::widget::canvas::Geometry;use iced::widget::{canvas, image};use iced::{color,Element,Fill,Point,Rectangle,Renderer,Size};use tracing::debug;pubfnmain() -> iced::Result{
tracing_subscriber::fmt::init();
iced::application("Image Clipping - Iced",ImageClipping::update,ImageClipping::view,).run()}#[derive(Default)]structImageClipping{state:State,}#[derive(Debug,Clone,Copy)]enumMessage{}implImageClipping{fnupdate(&mutself,_message:Message){}fnview(&self) -> Element<Message>{canvas(&self.state).width(Fill).height(Fill).into()}}#[derive(Debug)]structState{sun: image::Handle,cache: canvas::Cache,}implState{pubfnnew() -> State{State{sun: image::Handle::from_bytes(include_bytes!("../../solar_system/assets/sun.png").as_slice(),),cache:Default::default(),}}}impl<Message> canvas::Program<Message>forState{typeState = ();fndraw(&self,_state:&Self::State,renderer:&Renderer,_theme:&iced::Theme,bounds:Rectangle,_cursor: mouse::Cursor,) -> Vec<Geometry>{let result = self.cache.draw(renderer, bounds.size(), |frame| {let image_size = {let s = renderer.measure_image(&self.sun);Size::new(s.widthasf32, s.heightasf32)};let image_rect = Rectangle::with_size(image_size);// Image should be halved in the horizontal directionletmut clipping_rect = Rectangle::with_size(Size::new(image_size.width / 2.0, image_size.height));debug!("Clipping Area: {:?}", clipping_rect);debug!("Image Area: {:?}", image_rect);
frame.with_clip(clipping_rect, |clipped_frame| {// This rectangle with the same dimensions as the image is clipped correctly
clipped_frame.fill_rectangle(Point::ORIGIN,
image_size,color!(0xFF0000),);});// Move the clipping area "down" to draw the examples at the same time
clipping_rect.y += image_size.height;
frame.with_clip(clipping_rect, |clipped_frame| {// This image is not clipped/cropped to the clipping_rect area and is overflowing.
clipped_frame.draw_image(image_rect,&self.sun);});});vec![result]}}implDefaultforState{fndefault() -> Self{Self::new()}}
What is the expected behavior?
I expected the Image to be clipped so as to not overflow the bounds of the clipping rectangle provided to with_clip.
Version
master
Operating System
Linux
Do you have any log output?
2024-08-19T13:19:29.918659Z WARN wgpu_hal::vulkan::instance: InstanceFlags::VALIDATION requested, but unable to find layer: VK_LAYER_KHRONOS_validation
2024-08-19T13:19:29.919716Z INFO wgpu_hal::vulkan::instance: Debug utils not enabled: debug_utils_user_data not passed to Instance::from_raw
2024-08-19T13:19:29.921067Z INFO wgpu_hal::gles::egl: Using Wayland platform
2024-08-19T13:19:29.934732Z INFO iced_wgpu::window::compositor: Settings {
present_mode: AutoVsync,
backends: Backends(
VULKAN | GL | METAL | DX12 | BROWSER_WEBGPU,
),
default_font: Font {
family: SansSerif,
weight: Normal,
stretch: Normal,
style: Normal,
},
default_text_size: Pixels(
16.0,
),
antialiasing: None,
}
2024-08-19T13:19:29.936398Z INFO wgpu_core::instance: Adapter Vulkan AdapterInfo { name: "Intel(R) Graphics (ADL GT2)", vendor: 32902, device: 18086, device_type: IntegratedGpu, driver: "Intel open-source Mesa driver", driver_info: "Mesa 24.1.6-arch1.1", backend: Vulkan }
2024-08-19T13:19:29.938046Z WARN wgpu_hal::gles::adapter: Detected skylake derivative running on mesa i915. Clears to srgb textures will use manual shader clears.
2024-08-19T13:19:29.938081Z INFO wgpu_core::instance: Adapter Gl AdapterInfo { name: "Mesa Intel(R) Graphics (ADL GT2)", vendor: 32902, device: 0, device_type: IntegratedGpu, driver: "", driver_info: "", backend: Gl }
2024-08-19T13:19:29.938182Z INFO iced_wgpu::window::compositor: Available adapters: [
AdapterInfo {
name: "Intel(R) Graphics (ADL GT2)",
vendor: 32902,
device: 18086,
device_type: IntegratedGpu,
driver: "Intel open-source Mesa driver",
driver_info: "Mesa 24.1.6-arch1.1",
backend: Vulkan,
},
AdapterInfo {
name: "Mesa Intel(R) Graphics (ADL GT2)",
vendor: 32902,
device: 0,
device_type: IntegratedGpu,
driver: "",
driver_info: "",
backend: Gl,
},
]
2024-08-19T13:19:29.940080Z WARN wgpu_hal::gles::adapter: Detected skylake derivative running on mesa i915. Clears to srgb textures will use manual shader clears.
2024-08-19T13:19:29.940130Z INFO wgpu_core::instance: Adapter Vulkan AdapterInfo { name: "Intel(R) Graphics (ADL GT2)", vendor: 32902, device: 18086, device_type: IntegratedGpu, driver: "Intel open-source Mesa driver", driver_info: "Mesa 24.1.6-arch1.1", backend: Vulkan }
2024-08-19T13:19:29.940177Z INFO iced_wgpu::window::compositor: Selected: AdapterInfo {
name: "Intel(R) Graphics (ADL GT2)",
vendor: 32902,
device: 18086,
device_type: IntegratedGpu,
driver: "Intel open-source Mesa driver",
driver_info: "Mesa 24.1.6-arch1.1",
backend: Vulkan,
}
2024-08-19T13:19:29.940830Z INFO iced_wgpu::window::compositor: Available formats: Copied {
it: Iter(
[
Bgra8UnormSrgb,
Rgba8UnormSrgb,
Bgra8Unorm,
Rgba8Unorm,
],
),
}
2024-08-19T13:19:29.940850Z INFO iced_wgpu::window::compositor: Available alpha modes: [
Opaque,
PreMultiplied,
]
2024-08-19T13:19:29.940863Z INFO iced_wgpu::window::compositor: Selected format: Bgra8UnormSrgb with alpha mode: PreMultiplied
The text was updated successfully, but these errors were encountered:
Is your issue REALLY a bug?
Is there an existing issue for this?
Is this issue related to iced?
What happened?
When using the brand new feature of images drawn to the canvas, the images draw are not clipped by
with_clip
.I've created a SSCCE which can be found here, and attached as code below. The example shows that the red rectangle (which is draw at the size of the image), is correctly clipped, while the image ignores the clipping. They should both be vertically clipped in the example (ref. screenshot).
What is the expected behavior?
I expected the
Image
to be clipped so as to not overflow the bounds of the clipping rectangle provided towith_clip
.Version
master
Operating System
Linux
Do you have any log output?
The text was updated successfully, but these errors were encountered: