def sub_CC_C(gen,t,srcs): dst = ColorArg( gen.emit_binop('-',parts(0,srcs), Float), gen.emit_binop('-',parts(1,srcs), Float), gen.emit_binop('-',parts(2,srcs), Float), gen.emit_binop('-',parts(3,srcs), Float)) return dst
def mergemultiply_CC_C(gen,t,srcs): (a,b) = (srcs[0],srcs[1]) return ColorArg( gen.emit_binop('*', [ a.parts[0], b.parts[0]], Float), gen.emit_binop('*', [ a.parts[1], b.parts[1]], Float), gen.emit_binop('*', [ a.parts[2], b.parts[2]], Float), b.parts[3])
def add_CC_C(gen,t,srcs): # add 2 colors, piecewise dst = ColorArg( gen.emit_binop('+',parts(0,srcs), Float), gen.emit_binop('+',parts(1,srcs), Float), gen.emit_binop('+',parts(2,srcs), Float), gen.emit_binop('+',parts(3,srcs), Float)) return dst
def clamp_C_C(gen,t,srcs): # ensure color C is in the range [0.0,1.0] dst = ColorArg( clamp_f_f(gen,t,parts(0,srcs)), clamp_f_f(gen,t,parts(1,srcs)), clamp_f_f(gen,t,parts(2,srcs)), clamp_f_f(gen,t,parts(3,srcs))) return dst
def gradient_Gf_C(gen,t,srcs): [d1,d2,d3] = gen.emit_func2_3("gradient", srcs, Float) # fixme get alpha from gradient return ColorArg(d1,d2,d3,ConstFloatArg(1.0))
def rgba_ffff_C(gen,t,srcs): return ColorArg(srcs[0], srcs[1], srcs[2], srcs[3])
def hsv_fff_C(gen,t,srcs): [d1,d2,d3] = gen.emit_func3_3("hsv_to_rgb", srcs, Float) return ColorArg(d1,d2,d3,ConstFloatArg(1.0))
def hsla_ffff_C(gen,t,srcs): [d1,d2,d3] = gen.emit_func3_3("hsl_to_rgb", srcs, Float) return ColorArg(d1,d2,d3,srcs[3])
def rgb_fff_C(gen,t,srcs): return ColorArg(srcs[0], srcs[1], srcs[2], ConstFloatArg(1.0))
def _image_Ic_C(gen,t,srcs): c = srcs[1] [d1,d2,d3] = gen.emit_func3_3("image_lookup", [srcs[0], c.re, c.im], Float) return ColorArg(d1,d2,d3,ConstFloatArg(1.0))