From 91d7df52cdedd1b5c431fdb51a6356e827765b60 Mon Sep 17 00:00:00 2001
From: Héctor Ramón Jiménez <hector@hecrj.dev>
Date: Tue, 14 Nov 2023 13:25:49 +0100
Subject: Create `shader` function helper in `iced_widget`

---
 examples/custom_shader/src/main.rs |  7 +++----
 widget/src/helpers.rs              | 11 +++++++++++
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/examples/custom_shader/src/main.rs b/examples/custom_shader/src/main.rs
index f6370f46..e9b6776f 100644
--- a/examples/custom_shader/src/main.rs
+++ b/examples/custom_shader/src/main.rs
@@ -10,7 +10,7 @@ use crate::pipeline::Pipeline;
 use iced::executor;
 use iced::time::Instant;
 use iced::widget::{
-    checkbox, column, container, row, slider, text, vertical_space, Shader,
+    checkbox, column, container, row, shader, slider, text, vertical_space,
 };
 use iced::window;
 use iced::{
@@ -150,9 +150,8 @@ impl Application for IcedCubes {
             .spacing(10)
             .align_items(Alignment::Center);
 
-        let shader = Shader::new(&self.cubes)
-            .width(Length::Fill)
-            .height(Length::Fill);
+        let shader =
+            shader(&self.cubes).width(Length::Fill).height(Length::Fill);
 
         container(
             column![shader, controls, vertical_space(20),]
diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs
index e0b58722..115198fb 100644
--- a/widget/src/helpers.rs
+++ b/widget/src/helpers.rs
@@ -385,6 +385,17 @@ where
     crate::Canvas::new(program)
 }
 
+/// Creates a new [`Shader`].
+///
+/// [`Shader`]: crate::Shader
+#[cfg(feature = "wgpu")]
+pub fn shader<Message, P>(program: P) -> crate::Shader<Message, P>
+where
+    P: crate::shader::Program<Message>,
+{
+    crate::Shader::new(program)
+}
+
 /// Focuses the previous focusable widget.
 pub fn focus_previous<Message>() -> Command<Message>
 where
-- 
cgit