QrCodeWidget

Struct QrCodeWidget 

Source
pub struct QrCodeWidget { /* private fields */ }
Expand description

A Ratatui widget that renders a QR code.

This widget can be used to render a QR code in a terminal. It uses the qrcode crate to generate the QR code.

§Examples

use qrcode::QrCode;
use tui_qrcode::QrCodeWidget;

let qr_code = QrCode::new("https://ratatui.rs").expect("failed to create QR code");
let widget = QrCodeWidget::new(qr_code);

The widget can be customized using the quiet_zone, scaling, colors, and style methods. Additionally, the widget implements the Styled trait, so all the methods from Ratatui’s ratatui_core::style::Stylize trait can be used.

use qrcode::QrCode;
use ratatui::style::{Style, Stylize};
use ratatui::Frame;
use tui_qrcode::{Colors, QrCodeWidget, QuietZone, Scaling};

fn render(frame: &mut Frame) {
    let qr_code = QrCode::new("https://ratatui.rs").expect("failed to create QR code");
    let widget = QrCodeWidget::new(qr_code)
        .quiet_zone(QuietZone::Disabled)
        .scaling(Scaling::Max)
        .colors(Colors::Inverted)
        .red()
        .on_light_yellow();
    frame.render_widget(widget, frame.area());
}

Implementations§

Source§

impl QrCodeWidget

Source

pub fn new(qr_code: QrCode) -> QrCodeWidget

Create a new QR code widget.

Source

pub const fn quiet_zone(self, quiet_zone: QuietZone) -> QrCodeWidget

Set whether the QR code should have a quiet zone.

This is the white border around the QR code. By default, the quiet zone is enabled.

§Example
use qrcode::QrCode;
use tui_qrcode::{QrCodeWidget, QuietZone};

let qr_code = QrCode::new("https://ratatui.rs").expect("failed to create QR code");
let widget = QrCodeWidget::new(qr_code).quiet_zone(QuietZone::Disabled);
Source

pub const fn scaling(self, scaling: Scaling) -> QrCodeWidget

Set how the QR code should be scaled.

By default, the QR code will be scaled so each pixel is 1x1.

The Min variant will scale the QR code so it is at least the size of the widget. This may result in a QR code that is larger than the widget, which is not ideal. The Max variant will scale the QR code so it is at most the size of the widget. This may result in a QR code which is scaled more horizontally or vertically than the other, which may not be ideal. The Exact variant will scale the QR code so each pixel is the size of the given dimensions. The minimum scaling is 1x1 (width x height).

§Example
use qrcode::QrCode;
use tui_qrcode::{QrCodeWidget, Scaling};

let qr_code = QrCode::new("https://ratatui.rs").expect("failed to create QR code");
let widget = QrCodeWidget::new(qr_code).scaling(Scaling::Max);
Source

pub const fn colors(self, colors: Colors) -> QrCodeWidget

Set the colors of the QR code.

By default, the colors are normal (light on dark).

The Normal variant will use the default colors. The Inverted variant will invert the colors (dark on light).

To set the foreground and background colors of the widget, use the style method.

§Example
use qrcode::QrCode;
use tui_qrcode::{Colors, QrCodeWidget};

let qr_code = QrCode::new("https://ratatui.rs").expect("failed to create QR code");
let widget = QrCodeWidget::new(qr_code).colors(Colors::Inverted);
Source

pub fn style(self, style: impl Into<Style>) -> QrCodeWidget

Set the style of the widget.

This will set the foreground and background colors of the widget.

§Example
use qrcode::QrCode;
use ratatui::style::{Style, Stylize};
use tui_qrcode::QrCodeWidget;

let qr_code = QrCode::new("https://ratatui.rs").expect("failed to create QR code");
let style = Style::new().red().on_light_yellow();
let widget = QrCodeWidget::new(qr_code).style(style);
Source

pub fn size(&self, area: Rect) -> Size

The theoretical size of the QR code if rendered into area.

Note that if the QR code does not fit into area, the resulting Size might be larger than the size of area.

§Example
use qrcode::QrCode;
use ratatui::layout::Rect;
use tui_qrcode::{QrCodeWidget, Scaling};

let qr_code = QrCode::new("https://ratatui.rs")?;
let widget = QrCodeWidget::new(qr_code).scaling(Scaling::Min);
let area = Rect::new(0, 0, 50, 50);
let widget_size = widget.size(area);

assert_eq!(widget_size.width, 66);
assert_eq!(widget_size.height, 66);

Trait Implementations§

Source§

impl Styled for QrCodeWidget

Source§

type Item = QrCodeWidget

Source§

fn style(&self) -> Style

Returns the style of the object.
Source§

fn set_style<S>(self, style: S) -> <QrCodeWidget as Styled>::Item
where S: Into<Style>,

Sets the style of the object. Read more
Source§

impl Widget for &QrCodeWidget

Source§

fn render(self, area: Rect, buf: &mut Buffer)

Draws the current state of the widget in the given buffer. That is the only method required to implement a custom widget.
Source§

impl Widget for QrCodeWidget

Source§

fn render(self, area: Rect, buf: &mut Buffer)

Draws the current state of the widget in the given buffer. That is the only method required to implement a custom widget.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> Stylize<'_, T> for U
where U: Styled<Item = T>,

Source§

fn bg<C>(self, color: C) -> T
where C: Into<Color>,

Source§

fn fg<C>(self, color: C) -> T
where C: Into<Color>,

Source§

fn add_modifier(self, modifier: Modifier) -> T

Source§

fn remove_modifier(self, modifier: Modifier) -> T

Source§

fn reset(self) -> T

Source§

fn black(self) -> T

Sets the foreground color to black.
Source§

fn on_black(self) -> T

Sets the background color to black.
Source§

fn red(self) -> T

Sets the foreground color to red.
Source§

fn on_red(self) -> T

Sets the background color to red.
Source§

fn green(self) -> T

Sets the foreground color to green.
Source§

fn on_green(self) -> T

Sets the background color to green.
Source§

fn yellow(self) -> T

Sets the foreground color to yellow.
Source§

fn on_yellow(self) -> T

Sets the background color to yellow.
Source§

fn blue(self) -> T

Sets the foreground color to blue.
Source§

fn on_blue(self) -> T

Sets the background color to blue.
Source§

fn magenta(self) -> T

Sets the foreground color to magenta.
Source§

fn on_magenta(self) -> T

Sets the background color to magenta.
Source§

fn cyan(self) -> T

Sets the foreground color to cyan.
Source§

fn on_cyan(self) -> T

Sets the background color to cyan.
Source§

fn gray(self) -> T

Sets the foreground color to gray.
Source§

fn on_gray(self) -> T

Sets the background color to gray.
Source§

fn dark_gray(self) -> T

Sets the foreground color to dark_gray.
Source§

fn on_dark_gray(self) -> T

Sets the background color to dark_gray.
Source§

fn light_red(self) -> T

Sets the foreground color to light_red.
Source§

fn on_light_red(self) -> T

Sets the background color to light_red.
Source§

fn light_green(self) -> T

Sets the foreground color to light_green.
Source§

fn on_light_green(self) -> T

Sets the background color to light_green.
Source§

fn light_yellow(self) -> T

Sets the foreground color to light_yellow.
Source§

fn on_light_yellow(self) -> T

Sets the background color to light_yellow.
Source§

fn light_blue(self) -> T

Sets the foreground color to light_blue.
Source§

fn on_light_blue(self) -> T

Sets the background color to light_blue.
Source§

fn light_magenta(self) -> T

Sets the foreground color to light_magenta.
Source§

fn on_light_magenta(self) -> T

Sets the background color to light_magenta.
Source§

fn light_cyan(self) -> T

Sets the foreground color to light_cyan.
Source§

fn on_light_cyan(self) -> T

Sets the background color to light_cyan.
Source§

fn white(self) -> T

Sets the foreground color to white.
Source§

fn on_white(self) -> T

Sets the background color to white.
Source§

fn bold(self) -> T

Adds the bold modifier.
Source§

fn not_bold(self) -> T

Removes the bold modifier.
Source§

fn dim(self) -> T

Adds the dim modifier.
Source§

fn not_dim(self) -> T

Removes the dim modifier.
Source§

fn italic(self) -> T

Adds the italic modifier.
Source§

fn not_italic(self) -> T

Removes the italic modifier.
Source§

fn underlined(self) -> T

Adds the underlined modifier.
Source§

fn not_underlined(self) -> T

Removes the underlined modifier.
Adds the slow_blink modifier.
Removes the slow_blink modifier.
Adds the rapid_blink modifier.
Removes the rapid_blink modifier.
Source§

fn reversed(self) -> T

Adds the reversed modifier.
Source§

fn not_reversed(self) -> T

Removes the reversed modifier.
Source§

fn hidden(self) -> T

Adds the hidden modifier.
Source§

fn not_hidden(self) -> T

Removes the hidden modifier.
Source§

fn crossed_out(self) -> T

Adds the crossed_out modifier.
Source§

fn not_crossed_out(self) -> T

Removes the crossed_out modifier.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.