static VALUE
cr_path_curve_to_initialize (int argc, VALUE *argv, VALUE self)
{
VALUE point1, point2, point3, x1, y1, x2, y2, x3, y3;
VALUE super_argv[2];
rb_scan_args (argc, argv, "33", &x1, &y1, &x2, &y2, &x3, &y3);
if (argc == 3)
{
point1 = x1;
point2 = y1;
point3 = x2;
}
else if (argc == 6)
{
point1 = cr_point_new (x1, y1);
point2 = cr_point_new (x2, y2);
point3 = cr_point_new (x3, y3);
}
else
{
VALUE inspected_arg = rb_inspect (rb_ary_new4 (argc, argv));
rb_raise (rb_eArgError,
"invalid argument: %s (expect "
"(point1, point2, point3) or "
"(x1, y1, x2, y2, x3, y3))",
StringValuePtr (inspected_arg));
}
super_argv[0] = INT2NUM (CAIRO_PATH_CURVE_TO);
super_argv[1] = rb_ary_new3 (3, point1, point2, point3);
rb_call_super (2, super_argv);
return Qnil;
}