summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--graphics/src/widget/pure.rs6
-rw-r--r--graphics/src/widget/pure/qr_code.rs61
-rw-r--r--src/pure/widget.rs6
3 files changed, 73 insertions, 0 deletions
diff --git a/graphics/src/widget/pure.rs b/graphics/src/widget/pure.rs
index 3ecbadf1..ee530379 100644
--- a/graphics/src/widget/pure.rs
+++ b/graphics/src/widget/pure.rs
@@ -4,3 +4,9 @@ pub mod canvas;
#[cfg(feature = "canvas")]
pub use canvas::Canvas;
+
+#[cfg(feature = "qr_code")]
+pub mod qr_code;
+
+#[cfg(feature = "qr_code")]
+pub use qr_code::QRCode;
diff --git a/graphics/src/widget/pure/qr_code.rs b/graphics/src/widget/pure/qr_code.rs
new file mode 100644
index 00000000..9d517374
--- /dev/null
+++ b/graphics/src/widget/pure/qr_code.rs
@@ -0,0 +1,61 @@
+//! Encode and display information in a QR code.
+pub use crate::qr_code::*;
+
+use crate::{Backend, Renderer};
+
+use iced_native::layout::{self, Layout};
+use iced_native::renderer;
+use iced_native::{Length, Point, Rectangle};
+use iced_pure::widget::tree::Tree;
+use iced_pure::{Element, Widget};
+
+impl<'a, Message, B> Widget<Message, Renderer<B>> for QRCode<'a>
+where
+ B: Backend,
+{
+ fn width(&self) -> Length {
+ <Self as iced_native::Widget<Message, Renderer<B>>>::width(self)
+ }
+
+ fn height(&self) -> Length {
+ <Self as iced_native::Widget<Message, Renderer<B>>>::height(self)
+ }
+
+ fn layout(
+ &self,
+ renderer: &Renderer<B>,
+ limits: &layout::Limits,
+ ) -> layout::Node {
+ <Self as iced_native::Widget<Message, Renderer<B>>>::layout(
+ self, renderer, limits,
+ )
+ }
+
+ fn draw(
+ &self,
+ _tree: &Tree,
+ renderer: &mut Renderer<B>,
+ style: &renderer::Style,
+ layout: Layout<'_>,
+ cursor_position: Point,
+ viewport: &Rectangle,
+ ) {
+ <Self as iced_native::Widget<Message, Renderer<B>>>::draw(
+ self,
+ renderer,
+ style,
+ layout,
+ cursor_position,
+ viewport,
+ )
+ }
+}
+
+impl<'a, Message, B> Into<Element<'a, Message, Renderer<B>>> for QRCode<'a>
+where
+ B: Backend,
+{
+ fn into(self) -> Element<'a, Message, Renderer<B>> {
+ Element::new(self)
+ }
+}
diff --git a/src/pure/widget.rs b/src/pure/widget.rs
index e9a533ea..39ccd090 100644
--- a/src/pure/widget.rs
+++ b/src/pure/widget.rs
@@ -139,6 +139,9 @@ pub use toggler::Toggler;
#[cfg(feature = "canvas")]
pub use iced_graphics::widget::pure::canvas;
+#[cfg(feature = "qr_code")]
+pub use iced_graphics::widget::pure::qr_code;
+
#[cfg(feature = "image")]
pub mod image {
//! Display images in your user interface.
@@ -151,5 +154,8 @@ pub mod image {
#[cfg(feature = "canvas")]
pub use canvas::Canvas;
+#[cfg(feature = "qr_code")]
+pub use qr_code::QRCode;
+
#[cfg(feature = "image")]
pub use image::Image;