edit-xlsx 0.4.4

A quick and easy-to-use Rust library for Excel file editing.
Documentation
use serde::{Deserialize, Serialize};
use crate::api::format::FormatFill;
use crate::xml::common::FromFormat;
use crate::xml::style::color::Color;


#[derive(Debug, Clone, Deserialize, Serialize, Default)]
pub(crate) struct Fills {
    #[serde(rename = "@count", default)]
    count: u32,
    #[serde(rename = "fill", default)]
    fills: Vec<Fill>
}

impl Fills {
    pub(crate) fn add_fill(&mut self, fill: &Fill) -> u32 {
        for i in 0..self.fills.len() {
            if self.fills[i] == *fill {
                return i as u32;
            }
        }
        self.count += 1;
        self.fills.push(fill.clone());
        self.fills.len() as u32 - 1
    }
    
    pub(crate) fn get_fill(&self, id: u32) -> Option<&Fill> {
        self.fills.get(id as usize)
    }
}

#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Default)]
pub(crate) struct Fill {
    #[serde(rename = "patternFill")]
    pub(crate) pattern_fill: PatternFill
}

#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
pub(crate) struct PatternFill {
    #[serde(rename = "@patternType", default, skip_serializing_if = "String::is_empty")]
    pub(crate) pattern_type: String,
    #[serde(rename = "fgColor", default, skip_serializing_if = "Color::is_empty")]
    pub(crate) fg_color: Color,
    #[serde(rename = "bgColor", default, skip_serializing_if = "Color::is_empty")]
    pub(crate) bg_color: Color,
}

impl Default for PatternFill {
    fn default() -> PatternFill {
        PatternFill {
            pattern_type: "none".to_string(),
            fg_color: Color::default(),
            bg_color: Color::default(),
        }
    }
}