コード例 #1
0
static int new_SolidPattern (lua_State *L)
{
    double red;
    double green;
    double blue;
    double alpha;

    cairo_pattern_t* cp = NULL;

    lua_remove(L, 1); // remove cairo.SolidPattern

    //{"create_rgb",                       l_cairo_pattern_create_rgb},
    //{"create_rgba",                      l_cairo_pattern_create_rgba},

    red = luaL_checknumber(L, 1);
    green = luaL_checknumber(L, 2);
    blue = luaL_checknumber(L, 3);
    alpha = luaL_optnumber(L, 4, -1);

    if (alpha < 0)
        cp = cairo_pattern_create_rgb (red, green, blue);
    else
        cp = cairo_pattern_create_rgba (red, green, blue, alpha);

    return new_Pattern(L, LUACAIRO ".SolidPattern.mt", cp, CAIRO_PATTERN_TYPE_SOLID, 1);
}
コード例 #2
0
static int new_SurfacePattern (lua_State *L)
{
    lua_remove(L, 1); // remove cairo.SurfacePattern

    //{"create_for_surface",               l_cairo_pattern_create_for_surface},
    cairo_surface_t *surface = get_cairo_surface_t (L, 1);
    cairo_pattern_t *cp = cairo_pattern_create_for_surface (surface);

    return new_Pattern(L, LUACAIRO ".SurfacePattern.mt", cp, CAIRO_PATTERN_TYPE_SURFACE, 1);
}
コード例 #3
0
static int new_LinearGradient (lua_State *L)
{
    double x0;
    double y0;
    double x1;
    double y1;
    cairo_pattern_t *cp;
    lua_remove(L, 1); // remove cairo.LinearGradient

    //{"create_linear",                    l_cairo_pattern_create_linear},
    x0 = luaL_checknumber(L, 1);
    y0 = luaL_checknumber(L, 2);
    x1 = luaL_checknumber(L, 3);
    y1 = luaL_checknumber(L, 4);
    cp = cairo_pattern_create_linear(x0, y0, x1, y1);

    return new_Pattern(L, LUACAIRO ".LinearGradient.mt", cp, CAIRO_PATTERN_TYPE_LINEAR, 1);
}