static VALUE rg_initialize(int argc, VALUE *argv, VALUE self) { GtkPaperSize *size; if (argc <= 1) { VALUE name; rb_scan_args(argc, argv, "01", &name); size = gtk_paper_size_new(RVAL2CSTR_ACCEPT_NIL(name)); } else if (argc == 4) { size = gtk_paper_size_new_from_ppd(RVAL2CSTR(argv[0]), RVAL2CSTR(argv[1]), NUM2DBL(argv[2]), NUM2DBL(argv[3])); } else if (argc == 5) { size = gtk_paper_size_new_custom(RVAL2CSTR(argv[0]), RVAL2CSTR(argv[1]), NUM2DBL(argv[2]), NUM2DBL(argv[3]), RVAL2UNIT(argv[4])); } else { rb_raise(rb_eArgError, "wrong number of arguments (%d for 0, 1, 4 or 5)", argc); } G_INITIALIZE(self, size); return Qnil; }
/* Dia has it's own thing */ static void _dia_to_gtk_page_setup (const DiagramData *data, GtkPageSetup *setup) { GtkPaperSize *paper_size; const double points_per_cm = 28.346457; const PaperInfo *paper = &(data->paper); int index = find_paper (paper->name); if (index < 0) index = get_default_paper (); paper_size = gtk_paper_size_new_from_ppd ( paper->name, paper->name, get_paper_pswidth (index) * points_per_cm, get_paper_psheight (index) * points_per_cm); gtk_page_setup_set_orientation (setup, data->paper.is_portrait ? GTK_PAGE_ORIENTATION_PORTRAIT : GTK_PAGE_ORIENTATION_LANDSCAPE); gtk_page_setup_set_paper_size (setup, paper_size); gtk_page_setup_set_left_margin (setup, data->paper.lmargin * 10, GTK_UNIT_MM); gtk_page_setup_set_top_margin (setup, data->paper.tmargin * 10, GTK_UNIT_MM); gtk_page_setup_set_right_margin (setup, data->paper.rmargin * 10, GTK_UNIT_MM); gtk_page_setup_set_bottom_margin (setup, data->paper.bmargin * 10, GTK_UNIT_MM); }