69
69
" .+@#$%&*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqrstuvwxyz\
70
70
ABCDEFGHIJKLMNOPQRSTUVWXYZ`";
72
#define SCALE_WIDTH 125
72
#define LOAD_PROC "file-xpm-load"
73
#define SAVE_PROC "file-xpm-save"
74
#define PLUG_IN_BINARY "xpm"
75
#define SCALE_WIDTH 125
74
77
/* Structs for the save dialog */
136
static GimpParamDef load_args[] =
139
static const GimpParamDef load_args[] =
138
{ GIMP_PDB_INT32, "run_mode", "Interactive, non-interactive" },
141
{ GIMP_PDB_INT32, "run-mode", "Interactive, non-interactive" },
139
142
{ GIMP_PDB_STRING, "filename", "The name of the file to load" },
140
{ GIMP_PDB_STRING, "raw_filename", "The name entered" }
143
{ GIMP_PDB_STRING, "raw-filename", "The name entered" }
143
static GimpParamDef load_return_vals[] =
146
static const GimpParamDef load_return_vals[] =
145
148
{ GIMP_PDB_IMAGE, "image", "Output image" }
148
static GimpParamDef save_args[] =
151
static const GimpParamDef save_args[] =
150
{ GIMP_PDB_INT32, "run_mode", "Interactive, non-interactive" },
153
{ GIMP_PDB_INT32, "run-mode", "Interactive, non-interactive" },
151
154
{ GIMP_PDB_IMAGE, "image", "Input image" },
152
155
{ GIMP_PDB_DRAWABLE, "drawable", "Drawable to save" },
153
156
{ GIMP_PDB_STRING, "filename", "The name of the file to save the image in" },
154
{ GIMP_PDB_STRING, "raw_filename", "The name of the file to save the image in" },
157
{ GIMP_PDB_STRING, "raw-filename", "The name of the file to save the image in" },
155
158
{ GIMP_PDB_INT32, "threshold", "Alpha threshold (0-255)" }
158
gimp_install_procedure ("file_xpm_load",
161
gimp_install_procedure (LOAD_PROC,
159
162
"Load files in XPM (X11 Pixmap) format.",
160
163
"Load files in XPM (X11 Pixmap) format. "
161
164
"XPM is a portable image format designed to be "
174
177
G_N_ELEMENTS (load_return_vals),
175
178
load_args, load_return_vals);
177
gimp_register_file_handler_mime ("file_xpm_load", "image/x-xpixmap");
178
gimp_register_magic_load_handler ("file_xpm_load",
180
gimp_register_file_handler_mime (LOAD_PROC, "image/x-xpixmap");
181
gimp_register_magic_load_handler (LOAD_PROC,
181
184
"0, string,/*\\040XPM\\040*/");
183
gimp_install_procedure ("file_xpm_save",
186
gimp_install_procedure (SAVE_PROC,
184
187
"Save files in XPM (X11 Pixmap) format.",
185
188
"Save files in XPM (X11 Pixmap) format. "
186
189
"XPM is a portable image format designed to be "
198
201
G_N_ELEMENTS (save_args), 0,
199
202
save_args, NULL);
201
gimp_register_file_handler_mime ("file_xpm_save", "image/x-xpixmap");
202
gimp_register_save_handler ("file_xpm_save", "xpm", "");
204
gimp_register_file_handler_mime (SAVE_PROC, "image/x-xpixmap");
205
gimp_register_save_handler (SAVE_PROC, "xpm", "");
226
229
values[0].type = GIMP_PDB_STATUS;
227
230
values[0].data.d_status = GIMP_PDB_EXECUTION_ERROR;
229
if (strcmp (name, "file_xpm_load") == 0)
232
if (strcmp (name, LOAD_PROC) == 0)
231
234
image_ID = load_image (param[1].data.d_string);
241
244
status = GIMP_PDB_EXECUTION_ERROR;
244
else if (strcmp (name, "file_xpm_save") == 0)
247
else if (strcmp (name, SAVE_PROC) == 0)
246
gimp_ui_init ("xpm", FALSE);
249
gimp_ui_init (PLUG_IN_BINARY, FALSE);
248
251
image_ID = param[1].data.d_int32;
249
252
drawable_ID = param[2].data.d_int32;
336
339
XpmImage xpm_image;
341
/* put up a progress bar */
342
name = g_strdup_printf (_("Opening '%s'..."),
343
gimp_filename_to_utf8 (filename));
344
gimp_progress_init (name);
343
gimp_progress_init_printf (_("Opening '%s'"),
344
gimp_filename_to_utf8 (filename));
347
346
/* read the raw file */
348
347
switch (XpmReadFileToXpmImage ((char *) filename, &xpm_image, NULL))
622
621
hash = g_hash_table_new ((GHashFunc) rgbhash, (GCompareFunc) compare);
624
/* put up a progress bar */
628
name = g_strdup_printf (_("Saving '%s'..."),
629
gimp_filename_to_utf8 (filename));
630
gimp_progress_init (name);
623
gimp_progress_init_printf (_("Saving '%s'"),
624
gimp_filename_to_utf8 (filename));
634
626
ncolors = alpha ? 1 : 0;
773
765
save_dialog (void)
776
768
GtkWidget *table;
777
769
GtkObject *scale_data;
780
dlg = gimp_dialog_new (_("Save as XPM"), "xpm",
782
gimp_standard_help_func, "file-xpm-save",
784
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
785
GTK_STOCK_OK, GTK_RESPONSE_OK,
772
dialog = gimp_dialog_new (_("Save as XPM"), PLUG_IN_BINARY,
774
gimp_standard_help_func, SAVE_PROC,
776
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
777
GTK_STOCK_SAVE, GTK_RESPONSE_OK,
781
gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog),
786
gimp_window_set_transient (GTK_WINDOW (dialog));
789
788
table = gtk_table_new (1, 3, FALSE);
790
789
gtk_table_set_col_spacings (GTK_TABLE (table), 6);
791
790
gtk_container_set_border_width (GTK_CONTAINER (table), 12);
792
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), table, TRUE, TRUE, 0);
791
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
792
table, TRUE, TRUE, 0);
793
793
gtk_widget_show (table);
795
795
scale_data = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
801
g_signal_connect (scale_data, "value_changed",
801
g_signal_connect (scale_data, "value-changed",
802
802
G_CALLBACK (gimp_int_adjustment_update),
803
803
&xpmvals.threshold);
805
gtk_widget_show (dlg);
807
run = (gimp_dialog_run (GIMP_DIALOG (dlg)) == GTK_RESPONSE_OK);
809
gtk_widget_destroy (dlg);
805
gtk_widget_show (dialog);
807
run = (gimp_dialog_run (GIMP_DIALOG (dialog)) == GTK_RESPONSE_OK);
809
gtk_widget_destroy (dialog);