# class Cairo::PathCurveTo

### Public Class Methods

new(*args) click to toggle source

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