piston-dyon_interactive 0.50.0

A library for interactive coding with the Piston game engine
Documentation
/*
Wraps a nice interface around draw list commands.
*/

ns piston::graphics2d

/// Clears both color buffer and stencil buffer.
fn clear__color(color: vec4) ~ mut draw_list: [[]] {
    push(mut draw_list, ["clear", color])
}

fn clear__colorbuf(color: vec4) ~ mut draw_list: [[]] {
    push(mut draw_list, ["clear__colorbuf", color])
}

fn clear__stencil(v: f64) ~ mut draw_list: [[]] {
    push(mut draw_list, ["clear__stencil", v])
}

fn line__color_radius_from_to(color: vec4, radius: f64, from: vec4, to: vec4)
~ mut draw_list: [[]] {
    push(mut draw_list, ["line__color_radius_from_to", color, radius, from, to])
}

fn rectangle__color_corner_size(color: vec4, corner: vec4, size: vec4)
~ mut draw_list: [[]] {
    push(mut draw_list, ["rectangle__color_corner_size", color, corner, size])
}

fn rectangle__border_color_corner_size(radius: f64, color: vec4, corner: vec4, size: vec4)
~ mut draw_list: [[]] {
    push(mut draw_list, ["rectangle__border_color_corner_size", radius, color, corner, size])
}

fn ellipse__color_corner_size(color: vec4, corner: vec4, size: vec4)
~ mut draw_list: [[]] {
    ellipse(color: color, corner: corner, size: size, resolution: 16)
}

fn ellipse__color_corner_size_resolution
(color: vec4, corner: vec4, size: vec4, resolution: f64)
~ mut draw_list: [[]] {
    push(mut draw_list, ["ellipse__color_corner_size_resolution", color, corner, size, resolution])
}

fn ellipse__border_color_corner_size_resolution
(radius: f64, color: vec4, corner: vec4, size: vec4, resolution: f64)
~ mut draw_list: [[]] {
    push(mut draw_list, ["ellipse__border_color_corner_size_resolution",
                         radius, color, corner, size, resolution])
}

fn ellipse__border_color_corner_size(radius: f64, color: vec4, corner: vec4, size: vec4)
~ mut draw_list: [[]] {
    ellipse(border: radius, color: color, corner: corner, size: size, resolution: 16)
}

fn circle__color_center_radius(color: vec4, center: vec4, radius: f64)
~ mut draw_list: [[]] {
    width := 2 * radius
    ellipse(color: color, corner: center - radius, size: (width, width))
}

fn circle__color_center_radius_resolution(color: vec4, center: vec4, radius: f64, resolution: f64)
~ mut draw_list: [[]] {
    width := 2 * radius
    ellipse(color: color, corner: center - radius, size: (width, width), resolution: resolution)
}

fn polygon__color_points(color: vec4, points: [vec4]) ~ mut draw_list: [[]] {
    push(mut draw_list, ["polygon__color_points", color, points])
}

fn text__font_color_size_pos_string(font: f64, color: vec4, size: f64, pos: vec4, text: str)
~ mut draw_list: [[]] {
    push(mut draw_list, ["text__font_color_size_pos_string", font, color, size, pos, text])
}

fn image__texture_pos_color(texture: f64, pos: vec4, color: vec4)
~ mut draw_list: [[]] {
    push(mut draw_list, ["image__texture_pos_color", texture, pos, color])
}

fn image__texture_pos(texture: f64, pos: vec4)
~ mut draw_list: [[]] {
    push(mut draw_list, ["image__texture_pos_color", texture, pos, #ffffff])
}

fn image__texture_pos_alpha(texture: f64, pos: vec4, alpha: f64)
~ mut draw_list: [[]] {
    push(mut draw_list, ["image__texture_pos_color", texture, pos, (xyz #ffffff, alpha)])
}

fn image__texture_pos_color_srccorner_srcsize
(texture: f64, pos: vec4, color: vec4, srccorner: vec4, srcsize: vec4)
~ mut draw_list: [[]] {
    push(mut draw_list, [
        "image__texture_pos_color_srccorner_srcsize",
        texture, pos, color, srccorner, srcsize
    ])
}

fn image__texture_pos_srccorner_srcsize
(texture: f64, pos: vec4, srccorner: vec4, srcsize: vec4)
~ mut draw_list: [[]] {
    push(mut draw_list, [
        "image__texture_pos_color_srccorner_srcsize",
        texture, pos, #ffffff, srccorner, srcsize
    ])
}

fn image__texture_pos_alpha_srccorner_srcsize
(texture: f64, pos: vec4, alpha: f64, srccorner: vec4, srcsize: vec4)
~ mut draw_list: [[]] {
    push(mut draw_list, [
        "image__texture_pos_color_srccorner_srcsize",
        texture, pos, (xyz #ffffff, alpha), srccorner, srcsize
    ])
}

fn transform__rx_ry(rx: vec4, ry: vec4) ~ mut draw_list: [[]] {
    push(mut draw_list, ["transform__rx_ry", rx, ry])
}

fn rel_transform__rx_ry(rx: vec4, ry: vec4) ~ mut draw_list: [[]] {
    push(mut draw_list, ["rel_transform__rx_ry", rx, ry])
}

fn translate__pos(pos: vec4) ~ mut draw_list: [[]] {
    push(mut draw_list, ["rel_transform__rx_ry", (1, 0, x(pos)), (0, 1, y(pos))])
}

fn rotate__rad(ang: f64) ~ mut draw_list: [[]] {
    push(mut draw_list, ["rel_transform__rx_ry", (cos(ang), -sin(ang)), (sin(ang), cos(ang))])
}

fn rotate__rad_at(ang: f64, pos: vec4) ~ mut draw_list: [[]] {
    push(mut draw_list, ["rel_transform__rx_ry",
        (cos(ang), -sin(ang), -x(pos) * cos(ang) + y(pos) * sin(ang) + x(pos)),
        (sin(ang), cos(ang), -x(pos) * sin(ang) - y(pos) * cos(ang) + y(pos)),
    ])
}

fn scale__pos(pos: vec4) ~ mut draw_list: [[]] {
    push(mut draw_list, ["rel_transform__rx_ry", (x(pos), 0), (0, y(pos))])
}

fn scale__pos_at(pos: vec4, at: vec4) ~ mut draw_list: [[]] {
    push(mut draw_list, ["rel_transform__rx_ry",
        (x(pos), 0, (1 - x(pos)) * x(at)),
        (0, y(pos), (1 - y(pos)) * y(at)),
    ])
}

fn zoom__fact(fact: f64) ~ mut draw_list: [[]] {
    push(mut draw_list, ["rel_transform__rx_ry", (fact, 0), (0, fact)])
}

fn zoom__fact_at(fact: f64, at: vec4) ~ mut draw_list: [[]] {
    push(mut draw_list, ["rel_transform__rx_ry",
        (fact, 0, (1 - fact) * x(at)),
        (0, fact, (1 - fact) * y(at)),
    ])
}

fn shear__pos(pos: vec4) ~ mut draw_list: [[]] {
    push(mut draw_list, ["rel_transform__rx_ry", (1, x(pos)), (y(pos), 1)])
}

fn shear__pos_at(pos: vec4, at: vec4) ~ mut draw_list: [[]] {
    push(mut draw_list, ["rel_transform__rx_ry",
        (1, x(pos), x(pos) * -y(at)),
        (y(pos), 1, y(pos) * -x(at)),
    ])
}

fn draw_state_alpha() ~ mut draw_list: [[]] {
    push(mut draw_list, ["draw_state_alpha"])
}

fn draw_state_clip() ~ mut draw_list: [[]] {
    push(mut draw_list, ["draw_state_clip"])
}

fn draw_state_increment() ~ mut draw_list: [[]] {
    push(mut draw_list, ["draw_state_increment"])
}

fn draw_state_inside() ~ mut draw_list: [[]] {
    push(mut draw_list, ["draw_state_inside"])
}

fn draw_state_outside() ~ mut draw_list: [[]] {
    push(mut draw_list, ["draw_state_outside"])
}

fn blend_alpha() ~ mut draw_list: [[]] {
    push(mut draw_list, ["blend_alpha"])
}

fn blend_add() ~ mut draw_list: [[]] {
    push(mut draw_list, ["blend_add"])
}

fn blend_lighter() ~ mut draw_list: [[]] {
    push(mut draw_list, ["blend_lighter"])
}

fn blend_multiply() ~ mut draw_list: [[]] {
    push(mut draw_list, ["blend_multiply"])
}

fn blend_invert() ~ mut draw_list: [[]] {
    push(mut draw_list, ["blend_invert"])
}

fn scissor__corner_size(corner: vec4, size: vec4)
~ mut draw_list: [[]] {
    push(mut draw_list, ["scissor__corner_size", corner, size])
}

fn stencil__clip(v: f64) ~ mut draw_list: [[]] {
    push(mut draw_list, ["stencil__clip", v])
}

fn stencil__inside(v: f64) ~ mut draw_list: [[]] {
    push(mut draw_list, ["stencil__inside", v])
}

fn stencil__outside(v: f64) ~ mut draw_list: [[]] {
    push(mut draw_list, ["stencil__outside", v])
}

fn stencil_increment() ~ mut draw_list: [[]] {
    push(mut draw_list, ["stencil_increment"])
}