summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-03-21 17:22:46 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-03-21 17:22:46 +0700
commit989c56292096e512c325a745013c5da86066d0e7 (patch)
treed343d1dbe1448922e7144aa4a239744d1443c9b6 /graphics
parent497a3ca8abb99f2bf25083a51388146433fe90a9 (diff)
downloadiced-989c56292096e512c325a745013c5da86066d0e7.tar.gz
iced-989c56292096e512c325a745013c5da86066d0e7.tar.bz2
iced-989c56292096e512c325a745013c5da86066d0e7.zip
Implement `pure` version of `QRCode` widget
Diffstat (limited to 'graphics')
-rw-r--r--graphics/src/widget/pure.rs6
-rw-r--r--graphics/src/widget/pure/qr_code.rs61
2 files changed, 67 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)
+ }
+}