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); }
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); }
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); }