std::ostream & Symbol::print (std::ostream &out, int maxvals) const { out << Symbol::symtype_shortname(symtype()) << " " << typespec().string() << " " << name(); if (everused()) out << " (used " << firstuse() << ' ' << lastuse() << " read " << firstread() << ' ' << lastread() << " write " << firstwrite() << ' ' << lastwrite(); else out << " (unused"; out << (has_derivs() ? " derivs" : "") << ")"; if (symtype() == SymTypeParam || symtype() == SymTypeOutputParam) { if (has_init_ops()) out << " init [" << initbegin() << ',' << initend() << ")"; if (connected()) out << " connected"; if (connected_down()) out << " down-connected"; if (!connected() && !connected_down()) out << " unconnected"; if (renderer_output()) out << " renderer-output"; if (symtype() == SymTypeParam && ! lockgeom()) out << " lockgeom=0"; } out << "\n"; if (symtype() == SymTypeConst) { out << "\tconst: "; print_vals (out, maxvals); out << "\n"; } else if (symtype() == SymTypeParam || symtype() == SymTypeOutputParam) { if (valuesource() == Symbol::DefaultVal && !has_init_ops()) { out << "\tdefault: "; print_vals (out, maxvals); out << "\n"; } else if (valuesource() == Symbol::InstanceVal) { out << "\tvalue: "; print_vals (out, maxvals); out << "\n"; } } return out; }
int main(int argc, char **argv) { int s, c; int errs = 0, verbose = 0; size_t off; long to; char *endp; const char *ifname, *cp; struct ifreq ifr; struct spppreq spr; while ((c = getopt(argc, argv, "v")) != -1) switch (c) { case 'v': verbose++; break; default: errs++; break; } argv += optind; argc -= optind; if (errs || argc < 1) usage(); ifname = argv[0]; strncpy(ifr.ifr_name, ifname, sizeof ifr.ifr_name); /* use a random AF to create the socket */ if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) err(EX_UNAVAILABLE, "ifconfig: socket"); argc--; argv++; spr.cmd = (uintptr_t) SPPPIOGDEFS; ifr.ifr_data = (caddr_t)&spr; if (ioctl(s, SIOCGIFGENERIC, &ifr) == -1) err(EX_OSERR, "SIOCGIFGENERIC(SPPPIOGDEFS)"); if (argc == 0) { /* list only mode */ print_vals(ifname, &spr); return 0; } #define startswith(s) strncmp(argv[0], s, (off = strlen(s))) == 0 while (argc > 0) { if (startswith("authproto=")) { cp = argv[0] + off; if (strcmp(cp, "pap") == 0) spr.defs.myauth.proto = spr.defs.hisauth.proto = PPP_PAP; else if (strcmp(cp, "chap") == 0) spr.defs.myauth.proto = spr.defs.hisauth.proto = PPP_CHAP; else if (strcmp(cp, "none") == 0) spr.defs.myauth.proto = spr.defs.hisauth.proto = 0; else errx(EX_DATAERR, "bad auth proto: %s", cp); } else if (startswith("myauthproto=")) { cp = argv[0] + off; if (strcmp(cp, "pap") == 0) spr.defs.myauth.proto = PPP_PAP; else if (strcmp(cp, "chap") == 0) spr.defs.myauth.proto = PPP_CHAP; else if (strcmp(cp, "none") == 0) spr.defs.myauth.proto = 0; else errx(EX_DATAERR, "bad auth proto: %s", cp); } else if (startswith("myauthname=")) strncpy(spr.defs.myauth.name, argv[0] + off, AUTHNAMELEN); else if (startswith("myauthsecret=") || startswith("myauthkey=")) strncpy(spr.defs.myauth.secret, argv[0] + off, AUTHKEYLEN); else if (startswith("hisauthproto=")) { cp = argv[0] + off; if (strcmp(cp, "pap") == 0) spr.defs.hisauth.proto = PPP_PAP; else if (strcmp(cp, "chap") == 0) spr.defs.hisauth.proto = PPP_CHAP; else if (strcmp(cp, "none") == 0) spr.defs.hisauth.proto = 0; else errx(EX_DATAERR, "bad auth proto: %s", cp); } else if (startswith("hisauthname=")) strncpy(spr.defs.hisauth.name, argv[0] + off, AUTHNAMELEN); else if (startswith("hisauthsecret=") || startswith("hisauthkey=")) strncpy(spr.defs.hisauth.secret, argv[0] + off, AUTHKEYLEN); else if (strcmp(argv[0], "callin") == 0) spr.defs.hisauth.flags |= AUTHFLAG_NOCALLOUT; else if (strcmp(argv[0], "always") == 0) spr.defs.hisauth.flags &= ~AUTHFLAG_NOCALLOUT; else if (strcmp(argv[0], "norechallenge") == 0) spr.defs.hisauth.flags |= AUTHFLAG_NORECHALLENGE; else if (strcmp(argv[0], "rechallenge") == 0) spr.defs.hisauth.flags &= ~AUTHFLAG_NORECHALLENGE; else if (startswith("lcp-timeout=")) { cp = argv[0] + off; to = strtol(cp, &endp, 10); if (*cp == '\0' || *endp != '\0' || /* * NB: 10 ms is the minimal possible value for * hz=100. We assume no kernel has less clock * frequency than that... */ to < 10 || to > 20000) errx(EX_DATAERR, "bad lcp timeout value: %s", cp); spr.defs.lcp.timeout = to; } else if (strcmp(argv[0], "enable-vj") == 0) spr.defs.enable_vj = 1; else if (strcmp(argv[0], "disable-vj") == 0) spr.defs.enable_vj = 0; else if (strcmp(argv[0], "enable-ipv6") == 0) spr.defs.enable_ipv6 = 1; else if (strcmp(argv[0], "disable-ipv6") == 0) spr.defs.enable_ipv6 = 0; else errx(EX_DATAERR, "bad parameter: \"%s\"", argv[0]); argv++; argc--; } spr.cmd = (uintptr_t)SPPPIOSDEFS; if (ioctl(s, SIOCSIFGENERIC, &ifr) == -1) err(EX_OSERR, "SIOCSIFGENERIC(SPPPIOSDEFS)"); if (verbose) print_vals(ifname, &spr); return 0; }
gboolean dialog ( PlugInVals *vals, PlugInUIVals *ui_vals) { if (!gimp_drawable_is_valid(vals->image_drawable_id)) { vals->image_drawable_id = default_vals.image_drawable_id; } if (!gimp_drawable_is_valid(vals->mask_drawable_id)) { vals->mask_drawable_id = default_vals.mask_drawable_id; } if (!gimp_vectors_is_valid(vals->stop_path_id)) { vals->stop_path_id = default_vals.stop_path_id; } vals->output_drawable_id = vals->image_drawable_id; print_vals(vals); set_defaults(ui_vals); interface_vals.imageID = gimp_drawable_get_image(vals->image_drawable_id); interface_vals.image_name = gimp_image_get_name(interface_vals.imageID); interface_vals.image_drawable = NULL; interface_vals.mask_drawable = NULL; if (vals->image_drawable_id >= 0) { #ifdef DEBUG g_warning("There is an input image drawable id"); #endif interface_vals.image_drawable = gimp_drawable_get(vals->image_drawable_id); } if (vals->mask_drawable_id >= 0) { interface_vals.mask_drawable = gimp_drawable_get(vals->mask_drawable_id); } else { interface_vals.mask_drawable = NULL; } ui_state = ui_vals; //if there is a selection create mask drawable and fill gimp_drawable_mask_bounds(vals->image_drawable_id,&interface_vals.selectionX0, &interface_vals.selectionY0, &interface_vals.selectionX1, &interface_vals.selectionY1); interface_vals.selectionWidth = interface_vals.selectionX1-interface_vals.selectionX0; interface_vals.selectionHeight = interface_vals.selectionY1-interface_vals.selectionY0; gint image_width = gimp_drawable_width(vals->image_drawable_id); gint image_height = gimp_drawable_height(vals->image_drawable_id); interface_vals.selectionX0 -= PREVIEW_SIZE*0.1; if (interface_vals.selectionX0 < 0) interface_vals.selectionX0 = 0; interface_vals.selectionX1 += PREVIEW_SIZE*0.1; if (interface_vals.selectionX1 > image_width) interface_vals.selectionX1 = image_width; interface_vals.selectionY0 -= PREVIEW_SIZE*0.1; if (interface_vals.selectionY0 < 0) interface_vals.selectionY0 = 0; interface_vals.selectionY1 += PREVIEW_SIZE*0.1; if (interface_vals.selectionY1 > image_height) interface_vals.selectionY1 = image_height; interface_vals.selectionWidth = interface_vals.selectionX1-interface_vals.selectionX0; interface_vals.selectionHeight = interface_vals.selectionY1-interface_vals.selectionY0; //vals->mask_drawable_id = gimp_image_get_selection(gimp_drawable_get_image(vals->image_drawable_id)); //g_warning("there is a selection with id = %d",vals->mask_drawable_id); //if (interface_vals.mask_drawable != NULL) gimp_drawable_detach(interface_vals.mask_drawable); //interface_vals.mask_drawable = gimp_drawable_get(vals->mask_drawable_id); #ifdef DEBUG g_warning("image dims: x0,x1,y0,y1 = %d,%d,%d,%d",interface_vals.selectionX0,interface_vals.selectionX1,interface_vals.selectionY0,interface_vals.selectionY1); #endif gchar text[100]; sprintf(text,"Inpainting: %s",interface_vals.image_name); gimp_ui_init (PLUGIN_NAME, TRUE); GtkWidget* dlg = gimp_dialog_new (text, PLUGIN_NAME, NULL, 0, gimp_standard_help_func, "gimp-inpaint-BCT", GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_APPLY, GTK_RESPONSE_APPLY, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); gimp_window_set_transient (GTK_WINDOW (dlg)); GtkWidget* vbox = gtk_vbox_new (FALSE, 10); gtk_container_set_border_width (GTK_CONTAINER (vbox), 10); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dlg))), vbox, FALSE, FALSE, 0); gtk_widget_show (vbox); /* Preview */ GtkWidget* hbox = gtk_hbox_new (TRUE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); GtkWidget* frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); // interface_vals.preview = TRUE; // interface_vals.preview_widget = GIMP_DRAWABLE_PREVIEW (gimp_drawable_preview_new(interface_vals.image_drawable,&interface_vals.preview)); // gtk_container_add (GTK_CONTAINER (frame), GTK_WIDGET (interface_vals.preview_widget)); // gtk_widget_show (GTK_WIDGET (interface_vals.preview_widget)); interface_vals.previewWidth = MIN (interface_vals.selectionWidth, PREVIEW_SIZE); interface_vals.previewHeight = MIN (interface_vals.selectionHeight, PREVIEW_SIZE); interface_vals.preview_widget = gimp_preview_area_new (); gtk_widget_set_size_request (interface_vals.preview_widget, interface_vals.previewWidth, interface_vals.previewHeight); gtk_container_add (GTK_CONTAINER (frame), interface_vals.preview_widget); gtk_widget_show (interface_vals.preview_widget); buildPreviewSourceImage (vals); /* Source and Mask selection */ GtkWidget* table = gtk_table_new (5, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 6); gtk_table_set_row_spacings (GTK_TABLE (table), 6); //gtk_table_set_row_spacing (GTK_TABLE (table), 1, 12); //gtk_table_set_row_spacing (GTK_TABLE (table), 3, 12); gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); gtk_widget_show (table); GtkWidget* label = gtk_label_new (_("Source:")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0); gtk_widget_show (label); GtkWidget* combo = gimp_drawable_combo_box_new (NULL, NULL); #ifdef DEBUG g_warning("setting initi value of source combo box as %d",vals->image_drawable_id); #endif gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), vals->image_drawable_id, G_CALLBACK (dialogSourceChangedCallback),vals); gtk_table_attach (GTK_TABLE (table), combo, 1, 3, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); gtk_widget_show (combo); label = gtk_label_new(_("Mask:")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0); gtk_widget_show (label); interface_vals.mask_combo_widget = gimp_drawable_combo_box_new (NULL, NULL); if (interface_vals.mask_type == SELECTION) { gtk_widget_set_sensitive(interface_vals.mask_combo_widget,FALSE); } gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (interface_vals.mask_combo_widget), vals->mask_drawable_id, G_CALLBACK (dialogMaskChangedCallback),vals); gtk_table_attach (GTK_TABLE (table), interface_vals.mask_combo_widget, 1, 3, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); gtk_widget_show (interface_vals.mask_combo_widget); label = gtk_label_new (_("Stop Path:")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 0, 0); gtk_widget_show (label); interface_vals.stop_path_combo_widget = gimp_vectors_combo_box_new (NULL, NULL); gtk_widget_set_sensitive(interface_vals.stop_path_combo_widget,FALSE); gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (interface_vals.stop_path_combo_widget), vals->stop_path_id, G_CALLBACK (dialogStopPathChangedCallback),vals); gtk_table_attach (GTK_TABLE (table), interface_vals.stop_path_combo_widget, 1, 3, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); gtk_widget_show (interface_vals.stop_path_combo_widget); label = gtk_label_new(_("Mask Type:")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 3, 4, GTK_FILL, GTK_FILL, 0, 0); gtk_widget_show (label); interface_vals.mask_type_widget = gtk_combo_box_new_text(); gint num_vectors; gimp_image_get_vectors(interface_vals.imageID,&num_vectors); gtk_combo_box_append_text(GTK_COMBO_BOX(interface_vals.mask_type_widget),"Selection"); if (num_vectors > 0) gtk_combo_box_append_text(GTK_COMBO_BOX(interface_vals.mask_type_widget),"Selection With Stop Path"); gtk_combo_box_append_text(GTK_COMBO_BOX(interface_vals.mask_type_widget),"Binary Mask"); if (num_vectors > 0) gtk_combo_box_append_text(GTK_COMBO_BOX(interface_vals.mask_type_widget),"Binary Mask With Stop Path"); gtk_combo_box_append_text(GTK_COMBO_BOX(interface_vals.mask_type_widget),"Mask Including Ordering"); if (interface_vals.mask_type == SELECTION) { int mt_index = 0 + (vals->stop_path_id > 0); gtk_combo_box_set_active(GTK_COMBO_BOX(interface_vals.mask_type_widget),mt_index); } else if (interface_vals.mask_type == BINARY_MASK) { int mt_index = 1 + (num_vectors > 0) + (vals->stop_path_id > 0); gtk_combo_box_set_active(GTK_COMBO_BOX(interface_vals.mask_type_widget),mt_index); } else { int mt_index = 2 + 2*(num_vectors > 0); gtk_combo_box_set_active(GTK_COMBO_BOX(interface_vals.mask_type_widget),mt_index); } g_signal_connect (interface_vals.mask_type_widget, "changed", G_CALLBACK(maskTypeChangedCallback), vals); maskTypeChangedCallback(GTK_COMBO_BOX(interface_vals.mask_type_widget),vals); gtk_table_attach (GTK_TABLE (table), interface_vals.mask_type_widget, 1, 3, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); gtk_widget_show (interface_vals.mask_type_widget); // Create the parameter table // table = gtk_table_new (5, 3, FALSE); // gtk_table_set_col_spacings (GTK_TABLE (table), 6); // gtk_table_set_row_spacings (GTK_TABLE (table), 6); // gtk_container_set_border_width (GTK_CONTAINER (table), 12); // gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); // // gtk_widget_show (table); interface_vals.threshold_scale = gimp_scale_entry_new (GTK_TABLE (table), 0, 4,"_Mask Threshold:", SCALE_WIDTH, 0,vals->threshold, 0, 255, 0.1, 0.2, EPS_DIGITS,TRUE, 0, 0,NULL, NULL); g_signal_connect (interface_vals.threshold_scale, "value_changed", G_CALLBACK(dialogThresholdChanged), vals); GtkWidget *separator = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, FALSE, 5); gtk_widget_show (separator); table = gtk_table_new (5, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 6); gtk_table_set_row_spacings (GTK_TABLE (table), 6); //gtk_table_set_row_spacing (GTK_TABLE (table), 1, 12); //gtk_table_set_row_spacing (GTK_TABLE (table), 3, 12); gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); gtk_widget_show (table); interface_vals.epsilon_scale = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,"_Pixel neighborhood (epsilon):", SCALE_WIDTH, 0,vals->epsilon, 1, SCALE_MAX, 0.5, 0.2, EPS_DIGITS,TRUE, 0, 0,NULL, NULL); g_signal_connect (interface_vals.epsilon_scale, "value_changed", G_CALLBACK(gimp_float_adjustment_update), &vals->epsilon); interface_vals.kappa_scale = gimp_scale_entry_new (GTK_TABLE (table), 0, 1, "_Sharpness (kappa in %):", SCALE_WIDTH, 0, vals->kappa, 0, CONV_MAX, 1, 0.1, KAPPA_DIGITS,TRUE, 0, 0,NULL, NULL); g_signal_connect (interface_vals.kappa_scale, "value_changed", G_CALLBACK(gimp_float_adjustment_update), &vals->kappa); interface_vals.sigma_scale = gimp_scale_entry_new (GTK_TABLE (table), 0, 2, "_Pre-smoothing (sigma):", SCALE_WIDTH, 0, vals->sigma, 0, SCALE_MAX, 0.1, 0.1, SMOOTH_DIGITS,TRUE, 0, 0,NULL, NULL); g_signal_connect (interface_vals.sigma_scale, "value_changed", G_CALLBACK(gimp_float_adjustment_update), &vals->sigma); interface_vals.rho_scale = gimp_scale_entry_new (GTK_TABLE (table), 0, 3, "_Post-smoothing (rho):", SCALE_WIDTH, 0, vals->rho, 0.001, SCALE_MAX, 0.1, 0.1, SMOOTH_DIGITS,TRUE, 0, 0,NULL, NULL); g_signal_connect (interface_vals.rho_scale, "value_changed", G_CALLBACK(gimp_float_adjustment_update), &vals->rho); // // test extra button // GtkWidget *togglebutton = gtk_check_button_new_with_label("Inpaint Animation"); // gtk_toggle_button_set_active( (GtkToggleButton *) togglebutton, ui_vals->anim_mode); // gtk_widget_show(togglebutton); // // gimp_table_attach_aligned(GTK_TABLE (table),0,4,NULL,0,0,togglebutton,1,TRUE); // // g_signal_connect (togglebutton, "toggled", G_CALLBACK(gimp_toggle_button_update), &ui_vals->anim_mode); GtkWidget *default_param_button = gtk_button_new_with_label("Default Parameters"); gtk_widget_show(default_param_button); gtk_table_attach((GtkTable *)table,default_param_button,0,1,4,5,GTK_EXPAND,GTK_EXPAND,0,0); g_signal_connect (default_param_button, "clicked", G_CALLBACK(set_default_param), NULL); //test end // Display dialog gtk_widget_show(dlg); renderPreview(vals); GtkResponseType status = gimp_dialog_run (GIMP_DIALOG (dlg)); while (status == GTK_RESPONSE_APPLY) { render (vals); gimp_displays_flush (); status = gimp_dialog_run (GIMP_DIALOG (dlg)); } ui_vals->mask_type = interface_vals.mask_type; destroy(); gtk_widget_destroy (dlg); return (status == GTK_RESPONSE_OK); }
std::string ShaderInstance::print () { std::stringstream out; out << "Shader " << shadername() << "\n"; out << " symbols:\n"; for (size_t i = 0; i < m_instsymbols.size(); ++i) { const Symbol &s (*symbol(i)); out << " " << i << ": " << Symbol::symtype_shortname(s.symtype()) << " " << s.typespec().string() << " " << s.name(); if (s.everused()) out << " (used " << s.firstuse() << ' ' << s.lastuse() << " read " << s.firstread() << ' ' << s.lastread() << " write " << s.firstwrite() << ' ' << s.lastwrite(); else out << " (unused"; out << (s.has_derivs() ? " derivs" : "") << ")"; if (s.symtype() == SymTypeParam || s.symtype() == SymTypeOutputParam) { if (s.has_init_ops()) out << " init [" << s.initbegin() << ',' << s.initend() << ")"; if (s.connected()) out << " connected"; if (s.connected_down()) out << " down-connected"; if (!s.connected() && !s.connected_down()) out << " unconnected"; } out << "\n"; if (s.symtype() == SymTypeConst || ((s.symtype() == SymTypeParam || s.symtype() == SymTypeOutputParam) && s.valuesource() == Symbol::DefaultVal && !s.has_init_ops())) { if (s.symtype() == SymTypeConst) out << "\tconst: "; else out << "\tdefault: "; out << print_vals (s); out << "\n"; } } #if 0 out << " int consts:\n "; for (size_t i = 0; i < m_iconsts.size(); ++i) out << m_iconsts[i] << ' '; out << "\n"; out << " float consts:\n "; for (size_t i = 0; i < m_fconsts.size(); ++i) out << m_fconsts[i] << ' '; out << "\n"; out << " string consts:\n "; for (size_t i = 0; i < m_sconsts.size(); ++i) out << "\"" << m_sconsts[i] << "\" "; out << "\n"; #endif out << " code:\n"; for (size_t i = 0; i < m_instops.size(); ++i) { const Opcode &op (m_instops[i]); out << " " << i << ": " << op.opname(); bool allconst = true; for (int a = 0; a < op.nargs(); ++a) { const Symbol *s (argsymbol(op.firstarg()+a)); out << " " << s->name(); if (s->symtype() == SymTypeConst) out << " (" << print_vals(*s) << ")"; if (op.argread(a)) allconst &= s->is_constant(); } for (size_t j = 0; j < Opcode::max_jumps; ++j) if (op.jump(j) >= 0) out << " " << op.jump(j); // out << " rw " << Strutil::format("%x",op.argread_bits()) // << ' ' << op.argwrite_bits(); if (op.argtakesderivs_all()) out << " %derivs(" << op.argtakesderivs_all() << ") "; if (allconst) out << " CONST"; std::string filename = op.sourcefile().string(); size_t slash = filename.find_last_of ("/"); if (slash != std::string::npos) filename.erase (0, slash+1); out << " (" << filename << ":" << op.sourceline() << ")"; out << "\n"; } return out.str (); }