void run (char *name, int n_params, GParam *param, int *nreturn_vals, GParam **return_vals) { #define MAX_FNAME_LEN 256 #define MAX_TEXTINFO 512 long l_range_from; long l_range_to; long l_dont_recode_frames = 0; long l_auto_videoparam = 0; char l_videonorm[20]; long l_jpeg_interlaced = 0; long l_jpeg_quality = JPEG_DEFAULT_QUALITY; char l_vidname[MAX_FNAME_LEN]; char l_wavname[MAX_FNAME_LEN]; char l_text_author[MAX_TEXTINFO]; char l_text_software[MAX_TEXTINFO]; char l_text_device[MAX_TEXTINFO]; char l_text_input[MAX_TEXTINFO]; char l_text_contdescription[MAX_TEXTINFO]; char l_text_contclassification[MAX_TEXTINFO]; static GParam values[1]; GRunModeType run_mode; GStatusType status = STATUS_SUCCESS; gint32 image_id; gint32 l_rc; char *l_env; *nreturn_vals = 1; *return_vals = values; l_rc = 0; l_env = g_getenv("MOVTAR_DEBUG"); if(l_env != NULL) { if((*l_env != 'n') && (*l_env != 'N')) { movtar_debug = TRUE; gap_debug = TRUE; } } run_mode = param[0].data.d_int32; l_vidname[0] = '\0'; l_wavname[0] = '\0'; l_range_from = 0; l_range_to = 0; /* Check the non-interactive parameters for validity */ if(movtar_debug) fprintf(stderr, "\n\ngap_movtar_main: debug name = %s\n", name); if (run_mode == RUN_NONINTERACTIVE) { INIT_I18N(); } else { INIT_I18N_UI(); } if (strcmp (name, PLUGIN_NAME_MOVTAR_ENCODE) == 0) { if (run_mode == RUN_NONINTERACTIVE) { if (n_params != NUMARGS) status = STATUS_CALLING_ERROR; else { strncpy(l_vidname, param[3].data.d_string, MAX_FNAME_LEN - 1); l_vidname[MAX_FNAME_LEN - 1] = '\0'; l_dont_recode_frames = param[4].data.d_int32; strncpy(l_wavname, param[5].data.d_string, MAX_FNAME_LEN - 1); l_wavname[MAX_FNAME_LEN - 1] = '\0'; l_auto_videoparam = param[6].data.d_int32; strncpy(l_videonorm, param[7].data.d_string, MAX_FNAME_LEN - 1); l_videonorm[MAX_FNAME_LEN - 1] = '\0'; l_jpeg_interlaced = param[8].data.d_int32; strncpy(l_text_author, param[9].data.d_string, MAX_TEXTINFO - 1); l_text_author[MAX_TEXTINFO - 1] = '\0'; strncpy(l_text_software, param[10].data.d_string, MAX_TEXTINFO - 1); l_text_software[MAX_TEXTINFO - 1] = '\0'; strncpy(l_text_device, param[11].data.d_string, MAX_TEXTINFO - 1); l_text_device[MAX_TEXTINFO - 1] = '\0'; strncpy(l_text_input, param[12].data.d_string, MAX_TEXTINFO - 1); l_text_input[MAX_TEXTINFO - 1] = '\0'; strncpy(l_text_contdescription, param[13].data.d_string, MAX_TEXTINFO - 1); l_text_contdescription[MAX_TEXTINFO - 1] = '\0'; strncpy(l_text_contclassification, param[14].data.d_string, MAX_TEXTINFO - 1); l_text_contclassification[MAX_TEXTINFO - 1] = '\0'; l_jpeg_quality = param[15].data.d_int32; } } else { if(run_mode != RUN_INTERACTIVE) status = STATUS_CALLING_ERROR; } if (status == STATUS_SUCCESS) { image_id = param[1].data.d_image; /* all non-interactive parameters ok, go to encoding */ l_rc = gap_movtar_encode(run_mode, image_id, l_range_from, l_range_to, l_vidname, l_dont_recode_frames, l_wavname, l_auto_videoparam, l_videonorm, l_jpeg_interlaced, l_text_author, l_text_software, l_text_device, l_text_input, l_text_contdescription, l_text_contclassification, l_jpeg_quality ); } } else status = STATUS_CALLING_ERROR; if(l_rc < 0) status = STATUS_EXECUTION_ERROR; values[0].type = PARAM_STATUS; values[0].data.d_status = status; }
static void run (char *name, /* I - Name of print program. */ int nparams, /* I - Number of parameters passed in */ GimpParam *param, /* I - Parameter values */ int *nreturn_vals, /* O - Number of return values */ GimpParam **return_vals) /* O - Return values */ { GimpDrawable *drawable; /* Drawable for image */ GimpRunModeType run_mode; /* Current run mode */ GimpParam *values; /* Return values */ gint32 drawable_ID; /* drawable ID */ GimpExportReturnType export = GIMP_EXPORT_CANCEL; /* return value of gimp_export_image() */ gdouble xres, yres; char *image_filename; char *image_basename; stpui_image_t *image; gint32 image_ID; gint32 base_type; if (getenv("STP_DEBUG_STARTUP")) while (SDEBUG) ; /* * Initialise libgimpprint */ stp_init(); #ifdef INIT_I18N_UI INIT_I18N_UI(); #else /* * With GCC and glib 1.2, there will be a warning here about braces in * expressions. Getting rid of it causes more problems than it solves. * In particular, turning on -ansi on the command line causes a number of * other useful things, such as strcasecmp, popen, and snprintf to go away */ INIT_LOCALE (PACKAGE); #endif stpui_printer_initialize(&gimp_vars); /* * Initialize parameter data... */ run_mode = (GimpRunModeType)param[0].data.d_int32; values = g_new (GimpParam, 1); values[0].type = GIMP_PDB_STATUS; values[0].data.d_status = GIMP_PDB_SUCCESS; *nreturn_vals = 1; *return_vals = values; image_ID = param[1].data.d_int32; drawable_ID = param[2].data.d_int32; image_filename = gimp_image_get_filename (image_ID); image_basename = image_filename; if (strchr(image_filename, '/')) image_basename = strrchr(image_filename, '/') + 1; stpui_set_image_filename(image_basename); g_free(image_filename); /* eventually export the image */ switch (run_mode) { case GIMP_RUN_INTERACTIVE: case GIMP_RUN_WITH_LAST_VALS: gimp_ui_init ("print", TRUE); export = gimp_export_image (&image_ID, &drawable_ID, "Print", (GIMP_EXPORT_CAN_HANDLE_RGB | GIMP_EXPORT_CAN_HANDLE_GRAY | GIMP_EXPORT_CAN_HANDLE_INDEXED | GIMP_EXPORT_CAN_HANDLE_ALPHA)); if (export == GIMP_EXPORT_CANCEL) { *nreturn_vals = 1; values[0].data.d_status = GIMP_PDB_EXECUTION_ERROR; return; } break; default: break; }
static void run (char *name, int nparams, GParam *param, int *nreturn_vals, GParam **return_vals) { static GParam values[2]; GRunModeType run_mode; GStatusType status = STATUS_SUCCESS; gint32 image_ID; INIT_I18N_UI(); run_mode = param[0].data.d_int32; *nreturn_vals = 1; *return_vals = values; values[0].type = PARAM_STATUS; values[0].data.d_status = STATUS_CALLING_ERROR; if (strcmp (name, "file_jpeg_load") == 0) { image_ID = load_image (param[1].data.d_string); if (image_ID != -1) { *nreturn_vals = 2; values[0].data.d_status = STATUS_SUCCESS; values[1].type = PARAM_IMAGE; values[1].data.d_image = image_ID; } else { values[0].data.d_status = STATUS_EXECUTION_ERROR; } } else if (strcmp (name, "file_jpeg_save") == 0) { switch (run_mode) { case RUN_INTERACTIVE: /* Possibly retrieve data */ gimp_get_data ("file_jpeg_save", &jsvals); image_ID = param[1].data.d_int32; { char *buffer = NULL; int size = 0; if (gimp_image_has_icc_profile (image_ID, ICC_IMAGE_PROFILE)) { buffer = gimp_image_get_icc_profile_by_mem (image_ID, &size, ICC_IMAGE_PROFILE); if (buffer) { cmsHPROFILE lp = cmsOpenProfileFromMem( buffer, size ); if(lp) { if(cmsGetColorSpace(lp) == icSigCmykData) { g_message ("%s:%d Cmyk data in JPEG is not recommended!\n", __FILE__,__LINE__); status = STATUS_EXECUTION_ERROR; } cmsCloseProfile( lp ); } free(buffer); } } } if(status == STATUS_EXECUTION_ERROR) { values[0].data.d_status = STATUS_EXECUTION_ERROR; return; } /* First acquire information with a dialog */ if (! save_dialog ()) return; break; case RUN_NONINTERACTIVE: /* Make sure all the arguments are there! */ if (nparams != 7) status = STATUS_CALLING_ERROR; if (status == STATUS_SUCCESS) { jsvals.quality = param[5].data.d_float; jsvals.smoothing = param[6].data.d_float; jsvals.optimize = param[7].data.d_int32; } if (status == STATUS_SUCCESS && (jsvals.quality < 0.0 || jsvals.quality > 1.0)) status = STATUS_CALLING_ERROR; if (status == STATUS_SUCCESS && (jsvals.smoothing < 0.0 || jsvals.smoothing > 1.0)) status = STATUS_CALLING_ERROR; case RUN_WITH_LAST_VALS: /* Possibly retrieve data */ gimp_get_data ("file_jpeg_save", &jsvals); break; default: break; } *nreturn_vals = 1; if (save_image (param[3].data.d_string, param[1].data.d_int32, param[2].data.d_int32)) { /* Store mvals data */ gimp_set_data ("file_jpeg_save", &jsvals, sizeof (JpegSaveVals)); values[0].data.d_status = STATUS_SUCCESS; } else values[0].data.d_status = STATUS_EXECUTION_ERROR; } }
static void run (gchar *name, gint nparams, GParam *param, gint *nreturn_vals, GParam **return_vals) { static GParam values[1]; TileDrawable *drawable; GRunModeType run_mode; GStatusType status = STATUS_SUCCESS; run_mode = param[0].data.d_int32; INIT_I18N_UI(); *nreturn_vals = 1; *return_vals = values; values[0].type = PARAM_STATUS; values[0].data.d_status = status; switch (run_mode) { case RUN_INTERACTIVE: /* Possibly retrieve data */ gimp_get_data ("plug_in_sobel", &bvals); /* First acquire information with a dialog */ if (! sobel_dialog ()) return; break; case RUN_NONINTERACTIVE: /* Make sure all the arguments are there! */ if (nparams != 6) status = STATUS_CALLING_ERROR; if (status == STATUS_SUCCESS) { bvals.horizontal = (param[4].data.d_int32) ? TRUE : FALSE; bvals.vertical = (param[5].data.d_int32) ? TRUE : FALSE; bvals.keep_sign = (param[6].data.d_int32) ? TRUE : FALSE; } break; case RUN_WITH_LAST_VALS: /* Possibly retrieve data */ gimp_get_data ("plug_in_sobel", &bvals); break; default: break; } /* Get the specified drawable */ drawable = gimp_drawable_get (param[2].data.d_drawable); /* Make sure that the drawable is gray or RGB color */ if (gimp_drawable_color (drawable->id) || gimp_drawable_gray (drawable->id)) { gimp_tile_cache_ntiles (2 * (drawable->width / gimp_tile_width () + 1)); sobel (drawable, bvals.horizontal, bvals.vertical, bvals.keep_sign); if (run_mode != RUN_NONINTERACTIVE) gimp_displays_flush (); /* Store data */ if (run_mode == RUN_INTERACTIVE) gimp_set_data ("plug_in_sobel", &bvals, sizeof (bvals)); } else { /* gimp_message ("sobel: cannot operate on indexed color images"); */ status = STATUS_EXECUTION_ERROR; } gimp_drawable_detach (drawable); values[0].data.d_status = status; }
static void script_fu_console_interface (void) { GtkWidget *dlg; GtkWidget *button; GtkWidget *label; GtkWidget *vsb; GtkWidget *table; GtkWidget *hbox; GIOChannel *input_channel; INIT_I18N_UI(); textdomain("cinepaint-script-fu"); gimp_ui_init ("script-fu", FALSE); dlg = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (dlg), _("Script-Fu Console")); gimp_help_connect_help_accel (dlg, gimp_standard_help_func, "filters/script-fu.html"); gtk_signal_connect (GTK_OBJECT (dlg), "destroy", (GtkSignalFunc) script_fu_close_callback, NULL); gtk_signal_connect (GTK_OBJECT (dlg), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroyed), &dlg); gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dlg)->vbox), 2); gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dlg)->action_area), 0); /* Action area */ button = gtk_button_new_with_label (_("Close")); gtk_signal_connect_object (GTK_OBJECT (button), "clicked", (GtkSignalFunc) gtk_widget_destroy, (gpointer)dlg); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); gtk_widget_show (button); /* The info vbox */ label = gtk_label_new (_("SIOD Output")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), label, FALSE, TRUE, 0); gtk_widget_show (label); /* The output text widget */ cint.vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); vsb = gtk_vscrollbar_new (cint.vadj); cint.console = gtk_text_new (NULL, cint.vadj); gtk_text_set_editable (GTK_TEXT (cint.console), FALSE); gtk_widget_set_usize (cint.console, TEXT_WIDTH, TEXT_HEIGHT); table = gtk_table_new (1, 2, FALSE); gtk_table_set_col_spacing (GTK_TABLE (table), 0, 2); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), table, TRUE, TRUE, 0); gtk_table_attach (GTK_TABLE (table), vsb, 1, 2, 0, 1, 0, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0); gtk_table_attach (GTK_TABLE (table), cint.console, 0, 1, 0, 1, GTK_EXPAND | GTK_SHRINK | GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 2); cint.font_strong = gdk_font_load ("-*-helvetica-bold-r-normal-*-*-120-*-*-*-*-*-*"); cint.font_emphasis = gdk_font_load ("-*-helvetica-medium-o-normal-*-*-100-*-*-*-*-*-*"); cint.font_weak = gdk_font_load ("-*-helvetica-medium-r-normal-*-*-100-*-*-*-*-*-*"); cint.font = gdk_fontset_load ("-*-*-medium-r-normal-*-*-100-*-*-c-*-iso8859-1,*"); /* Realize the widget before allowing new text to be inserted */ gtk_widget_realize (cint.console); gtk_text_insert (GTK_TEXT (cint.console), cint.font_strong, NULL, NULL, "The GIMP - GNU Image Manipulation Program\n\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_emphasis, NULL, NULL, "Copyright (C) 1995-2001\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_emphasis, NULL, NULL, "Spencer Kimball, Peter Mattis and the GIMP Development Team\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "This program is free software; you can redistribute it and/or modify\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "it under the terms of the GNU General Public License as published by\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "the Free Software Foundation; either version 2 of the License, or\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "(at your option) any later version.\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "This program is distributed in the hope that it will be useful,\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "but WITHOUT ANY WARRANTY; without even the implied warranty of\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "See the GNU General Public License for more details.\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "You should have received a copy of the GNU General Public License\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "along with this program; if not, write to the Free Software\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_strong, NULL, NULL, "Welcome to SIOD, Scheme In One Defun\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "(C) Copyright 1988-1994 Paradigm Associates Inc.\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL, "\n\n", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_strong, NULL, NULL, "Script-Fu Console - ", -1); gtk_text_insert (GTK_TEXT (cint.console), cint.font_emphasis, NULL, NULL, "Interactive Scheme Development\n\n", -1); gtk_widget_show (vsb); gtk_widget_show (cint.console); gtk_widget_show (table); /* The current command */ label = gtk_label_new (_("Current Command")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), label, FALSE, TRUE, 0); gtk_widget_show (label); hbox = gtk_hbox_new ( FALSE, 0 ); gtk_widget_set_usize (hbox, ENTRY_WIDTH, 0); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), hbox, FALSE, TRUE, 0); gtk_widget_show (hbox); cint.cc = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (hbox), cint.cc, TRUE, TRUE, 0); /* gtk_widget_set_usize (cint.cc, (ENTRY_WIDTH*5)/6, 0); */ GTK_WIDGET_SET_FLAGS (cint.cc, GTK_CAN_DEFAULT); gtk_widget_grab_default (cint.cc); gtk_signal_connect (GTK_OBJECT (cint.cc), "key_press_event", (GtkSignalFunc) script_fu_cc_key_function, NULL); button = gtk_button_new_with_label (_("Browse...")); /* gtk_widget_set_usize (button, (ENTRY_WIDTH)/6, 0); */ gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); gtk_signal_connect (GTK_OBJECT (button), "clicked", (GtkSignalFunc) script_fu_browse_callback, NULL); gtk_widget_show (button); gtk_widget_show (cint.cc); input_channel = g_io_channel_unix_new (siod_output_pipe[0]); cint.input_id = g_io_add_watch (input_channel, G_IO_IN, script_fu_siod_read, NULL); /* Initialize the history */ history = g_list_append (history, NULL); history_len = 1; gtk_widget_show (dlg); gtk_main (); g_source_remove (cint.input_id); if (dlg) gtk_widget_destroy (dlg); gdk_flush (); }