codesnap 0.13.2

Pure Rust library for generating beautiful code snapshots
Documentation
use crate::config;

use super::edge::Edge;

#[derive(Clone, Default, Debug)]
pub struct Padding {
    pub left: f32,
    pub right: f32,
    pub top: f32,
    pub bottom: f32,
}

impl Edge for Padding {
    fn horizontal(&self) -> f32 {
        self.left + self.right
    }

    fn vertical(&self) -> f32 {
        self.bottom + self.top
    }
}

impl Padding {
    pub fn from_value(value: f32) -> Padding {
        Padding {
            left: value,
            right: value,
            top: value,
            bottom: value,
        }
    }

    pub fn from_config(
        horizontal_background_padding: f32,
        vertical_background_padding: f32,
        background_padding: Option<f32>,
    ) -> Padding {
        match background_padding {
            Some(padding) => Padding::from_value(padding),
            None => Padding {
                top: vertical_background_padding,
                bottom: vertical_background_padding,
                left: horizontal_background_padding,
                right: horizontal_background_padding,
            },
        }
    }
}

// The window margin is equal to background padding
impl From<config::Margin> for Padding {
    fn from(margin: config::Margin) -> Self {
        Padding {
            left: margin.x,
            right: margin.x,
            top: margin.y,
            bottom: margin.y,
        }
    }
}