use csfml_graphics_sys as ffi;
use csfml_graphics_sys::sfBlendEquation::*;
use csfml_graphics_sys::sfBlendFactor::*;
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, Copy)]
pub struct BlendMode(pub ffi::sfBlendMode);
impl BlendMode {
pub fn new(
col_src: ffi::sfBlendFactor,
col_dst: ffi::sfBlendFactor,
col_equ: ffi::sfBlendEquation,
alpha_src: ffi::sfBlendFactor,
alpha_dst: ffi::sfBlendFactor,
alpha_equ: ffi::sfBlendEquation)
-> BlendMode {
BlendMode(ffi::sfBlendMode {
colorSrcFactor: col_src,
colorDstFactor: col_dst,
colorEquation: col_equ,
alphaSrcFactor: alpha_src,
alphaDstFactor: alpha_dst,
alphaEquation: alpha_equ,
})
}
pub fn blend_alpha() -> BlendMode {
BlendMode::new(
sfBlendFactorSrcAlpha,
sfBlendFactorOneMinusSrcAlpha,
sfBlendEquationAdd,
sfBlendFactorOne,
sfBlendFactorOneMinusSrcAlpha,
sfBlendEquationAdd)
}
pub fn blend_add() -> BlendMode {
BlendMode::new(
sfBlendFactorSrcAlpha,
sfBlendFactorOne,
sfBlendEquationAdd,
sfBlendFactorOne,
sfBlendFactorOne,
sfBlendEquationAdd)
}
pub fn blend_multiply() -> BlendMode {
BlendMode::new(
sfBlendFactorDstColor,
sfBlendFactorZero,
sfBlendEquationAdd,
sfBlendFactorDstColor,
sfBlendFactorZero,
sfBlendEquationAdd)
}
pub fn blend_none() -> BlendMode {
BlendMode::new(
sfBlendFactorOne,
sfBlendFactorZero,
sfBlendEquationAdd,
sfBlendFactorOne,
sfBlendFactorZero,
sfBlendEquationAdd)
}
}