use super::*;
use crate::core::{Color};
pub const COPY: BlendMode = BlendMode {
color: BlendingFunction::AlwaysReplace,
alpha: BlendingFunction::AlwaysReplace,
constant_value: Color(0.0, 0.0, 0.0, 0.0)
};
pub const ALPHA: BlendMode = BlendMode {
color: BlendingFunction::Addition {
source: LinearBlendingFactor::One,
destination: LinearBlendingFactor::OneMinusSourceAlpha,
},
alpha: BlendingFunction::Addition {
source: LinearBlendingFactor::One,
destination: LinearBlendingFactor::OneMinusSourceAlpha,
},
constant_value: Color(0.0, 0.0, 0.0, 0.0)
};
pub const ADD: BlendMode = BlendMode {
color: BlendingFunction::Addition {
source: LinearBlendingFactor::One,
destination: LinearBlendingFactor::One,
},
alpha: BlendingFunction::Addition {
source: LinearBlendingFactor::One,
destination: LinearBlendingFactor::One,
},
constant_value: Color(0.0, 0.0, 0.0, 0.0)
};
pub const SUBTRACT: BlendMode = BlendMode {
color: BlendingFunction::Subtraction {
source: LinearBlendingFactor::One,
destination: LinearBlendingFactor::One,
},
alpha: BlendingFunction::Subtraction {
source: LinearBlendingFactor::One,
destination: LinearBlendingFactor::One,
},
constant_value: Color(0.0, 0.0, 0.0, 0.0)
};
pub const REVERSE_SUBTRACT: BlendMode = BlendMode {
color: BlendingFunction::ReverseSubtraction {
source: LinearBlendingFactor::One,
destination: LinearBlendingFactor::One,
},
alpha: BlendingFunction::ReverseSubtraction {
source: LinearBlendingFactor::One,
destination: LinearBlendingFactor::One,
},
constant_value: Color(0.0, 0.0, 0.0, 0.0)
};
pub const LIGHTEN: BlendMode = BlendMode {
color: BlendingFunction::Max,
alpha: BlendingFunction::Max,
constant_value: Color(0.0, 0.0, 0.0, 0.0),
};
pub const DARKEN: BlendMode = BlendMode {
color: BlendingFunction::Min,
alpha: BlendingFunction::Min,
constant_value: Color(0.0, 0.0, 0.0, 0.0),
};
pub const SQUARED: BlendMode = BlendMode {
color: BlendingFunction::Addition {
source: LinearBlendingFactor::SourceColor,
destination: LinearBlendingFactor::DestinationColor,
},
alpha: BlendingFunction::Addition {
source: LinearBlendingFactor::One,
destination: LinearBlendingFactor::OneMinusSourceAlpha,
},
constant_value: Color(0.0, 0.0, 0.0, 0.0)
};
pub const SCREEN: BlendMode = BlendMode {
color: BlendingFunction::Addition {
source: LinearBlendingFactor::One,
destination: LinearBlendingFactor::OneMinusSourceColor,
},
alpha: BlendingFunction::Addition {
source: LinearBlendingFactor::One,
destination: LinearBlendingFactor::OneMinusSourceAlpha,
},
constant_value: Color(0.0, 0.0, 0.0, 0.0)
};
pub const SCREEN_MASK: BlendMode = BlendMode {
color: BlendingFunction::Addition {
source: LinearBlendingFactor::One,
destination: LinearBlendingFactor::OneMinusSourceColor,
},
alpha: BlendingFunction::Addition {
source: LinearBlendingFactor::One,
destination: LinearBlendingFactor::OneMinusSourceAlpha,
},
constant_value: Color(0.0, 0.0, 0.0, 0.0)
};
pub fn colorize(color: Color) -> BlendMode {
BlendMode {
color: BlendingFunction::Addition {
source: LinearBlendingFactor::ConstantAlpha,
destination: LinearBlendingFactor::OneMinusSourceAlpha,
},
alpha: BlendingFunction::Addition {
source: LinearBlendingFactor::ConstantColor,
destination: LinearBlendingFactor::OneMinusSourceAlpha,
},
constant_value: color
}
}
pub fn fade(value: f32) -> BlendMode {
BlendMode {
color: BlendingFunction::Addition {
source: LinearBlendingFactor::ConstantAlpha,
destination: LinearBlendingFactor::ConstantAlpha,
},
alpha: BlendingFunction::Addition {
source: LinearBlendingFactor::OneMinusConstantAlpha,
destination: LinearBlendingFactor::OneMinusConstantAlpha,
},
constant_value: Color(1., 1., 1., value)
}
}