-added TXT button for option text line adding to image
 with name, date and time info.
 font_6x11.h  file and add_text routine taken from the (GPLed)
 webcam.c file, part of xawtv, (c) 1998-2002 Gerd Knorr.
 add_text was modified for this program (xcam_add_text).

-added RGB/BGR button option to switch the colors if needed.

-solved segment fault when no usb scanner/vidcam devices
 is attached to system ( bug report from Henning Meier-Geinitz)

-patch update for recording feature (SANE bugreport 300224)
 added SAVE Frame button, output filename box.
 With Save Frame button image can be saved as
 .pnm .pgm .pbm or .ppm file

-added info row with x, y, image-size, fps count, fps, fps_ava

-added -V and -h option (version and help

-added option -B -buffersize so instead of default input buffer of
32*1024 a buffer of 1024*1024 can be chosen, so for vidcams for example
640x480, usb 2.0, 30fps less time is needed to fill input buffer.

fond_6x11.h file added

Also some small updates to (for debug output):
xscanimage.c
preview.c
gtkglue.c
merge-requests/2/head
Gerard Klaver 2005-04-11 20:09:04 +00:00
rodzic 98320c775b
commit 98f467fd31
5 zmienionych plików z 4768 dodań i 621 usunięć

3337
src/font_6x11.h 100644

Plik diff jest za duży Load Diff

Wyświetl plik

@ -47,8 +47,7 @@
#define DBG_info 3
#define DBG_debug 4
#define DEBUG_NOT_STATIC
#define BACKEND_NAME xscanimage
#define BACKEND_NAME gtkglue
#include "../include/sane/sanei_debug.h"
int gsg_message_dialog_active = 0;
@ -63,11 +62,16 @@ unit_string (SANE_Unit unit)
switch (unit)
{
case SANE_UNIT_NONE: return "none";
case SANE_UNIT_PIXEL: return "pixel";
case SANE_UNIT_BIT: return "bit";
case SANE_UNIT_DPI: return "dpi";
case SANE_UNIT_PERCENT: return "%";
case SANE_UNIT_NONE:
return "none";
case SANE_UNIT_PIXEL:
return "pixel";
case SANE_UNIT_BIT:
return "bit";
case SANE_UNIT_DPI:
return "dpi";
case SANE_UNIT_PERCENT:
return "%";
case SANE_UNIT_MM:
d = preferences.length_unit;
if (d > 9.9 && d < 10.1)
@ -75,7 +79,8 @@ unit_string (SANE_Unit unit)
else if (d > 25.3 && d < 25.5)
return "in";
return "mm";
case SANE_UNIT_MICROSECOND: return "us";
case SANE_UNIT_MICROSECOND:
return "us";
}
return 0;
}
@ -95,8 +100,7 @@ set_tooltip (GtkTooltips *tooltips, GtkWidget *widget, const char *desc)
int
gsg_make_path (size_t buf_size, char *buf,
const char *prog_name,
const char *prefix, const char *dev_name,
const char *postfix)
const char *prefix, const char *dev_name, const char *postfix)
{
struct passwd *pw;
size_t len, extra;
@ -299,7 +303,8 @@ gsg_get_filename (const char *label, const char *default_name,
gtk_window_set_modal (GTK_WINDOW (filesel), TRUE);
gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filesel)->cancel_button),
gtk_signal_connect (GTK_OBJECT
(GTK_FILE_SELECTION (filesel)->cancel_button),
"clicked", (GtkSignalFunc) get_filename_button_clicked,
&cancel);
gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filesel)->ok_button),
@ -380,8 +385,7 @@ autobutton_new (GtkWidget *parent, GSGDialogElement *elem,
gtk_container_border_width (GTK_CONTAINER (button), 0);
gtk_widget_set_usize (button, 20, 20);
gtk_signal_connect (GTK_OBJECT (button), "toggled",
(GtkSignalFunc) autobutton_update,
elem);
(GtkSignalFunc) autobutton_update, elem);
set_tooltip (tooltips, button, "Turns on automatic mode.");
alignment = gtk_alignment_new (0.0, 1.0, 0.5, 0.5);
@ -419,8 +423,7 @@ button_new (GtkWidget * parent, const char *name, SANE_Word val,
button = gtk_check_button_new_with_label ((char *) name);
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (button), val);
gtk_signal_connect (GTK_OBJECT (button), "toggled",
(GtkSignalFunc) button_update,
elem);
(GtkSignalFunc) button_update, elem);
gtk_box_pack_start (GTK_BOX (parent), button, FALSE, TRUE, 0);
if (!is_settable)
gtk_widget_set_sensitive (GTK_WIDGET (button), FALSE);
@ -440,6 +443,11 @@ scale_update (GtkAdjustment * adj_data, GSGDialogElement * elem)
double d;
SANE_Status status;
DBG_INIT ();
DBG (DBG_debug, "scale_update\n");
opt_num = elem - dialog->element;
opt = sane_get_option_descriptor (dialog->dev, opt_num);
switch (opt->type)
@ -460,11 +468,13 @@ scale_update (GtkAdjustment * adj_data, GSGDialogElement * elem)
return;
}
set_option (dialog, opt_num, &val, SANE_ACTION_SET_VALUE);
status = sane_control_option (dialog->dev, opt_num, SANE_ACTION_GET_VALUE, &new_val,
0);
status =
sane_control_option (dialog->dev, opt_num, SANE_ACTION_GET_VALUE,
&new_val, 0);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_fatal, "scale_update: sane_control_option failed: %s\n", sane_strstatus (status));
DBG (DBG_fatal, "scale_update: sane_control_option failed: %s\n",
sane_strstatus (status));
return;
}
@ -605,8 +615,7 @@ option_menu_callback (GtkWidget * widget, gpointer data)
static void
option_menu_new (GtkWidget * parent, const char *name, char *str_list[],
const char *val, GSGDialogElement * elem,
GtkTooltips *tooltips, const char *desc,
gint is_settable)
GtkTooltips * tooltips, const char *desc, gint is_settable)
{
GtkWidget *hbox, *label, *option_menu, *menu, *item;
GSGMenuItem *menu_items;
@ -687,8 +696,7 @@ text_entry_callback (GtkWidget *w, gpointer data)
static void
text_entry_new (GtkWidget * parent, const char *name, const char *val,
GSGDialogElement * elem,
GtkTooltips *tooltips, const char *desc,
gint is_settable)
GtkTooltips * tooltips, const char *desc, gint is_settable)
{
GtkWidget *hbox, *text, *label;
@ -1265,8 +1273,9 @@ panel_rebuild (GSGDialog * dialog)
GSGDialog *
gsg_create_dialog (GtkWidget * window, const char *device_name,
GSGCallback option_reload_callback, void *option_reload_arg,
GSGCallback param_change_callback, void *param_change_arg)
GSGCallback option_reload_callback,
void *option_reload_arg, GSGCallback param_change_callback,
void *param_change_arg)
{
SANE_Int num_elements;
GSGDialog *dialog;
@ -1339,8 +1348,7 @@ gsg_update_scan_window (GSGDialog *dialog)
opt = sane_get_option_descriptor (dialog->dev, optnum);
status = sane_control_option (dialog->dev, optnum,
SANE_ACTION_GET_VALUE,
&word, 0);
SANE_ACTION_GET_VALUE, &word, 0);
if (status != SANE_STATUS_GOOD)
continue; /* sliently ignore errors */
@ -1373,7 +1381,8 @@ gsg_update_scan_window (GSGDialog *dialog)
sprintf (str, "%g", SANE_UNFIX (word));
/* XXX maybe we should call this only when the value changes... */
gtk_option_menu_set_history (GTK_OPTION_MENU (elem->widget),
option_menu_lookup (elem->menu, str));
option_menu_lookup (elem->menu,
str));
break;
default:
@ -1400,8 +1409,7 @@ gsg_sync (GSGDialog *dialog)
if (!SANE_OPTION_IS_ACTIVE (opt->cap))
continue;
if (opt->type != SANE_TYPE_INT &&
opt->type != SANE_TYPE_FIXED)
if (opt->type != SANE_TYPE_INT && opt->type != SANE_TYPE_FIXED)
continue;
if (opt->size == sizeof (SANE_Word))
@ -1465,8 +1473,7 @@ gsg_set_sensitivity (GSGDialog *dialog, int sensitive)
opt = sane_get_option_descriptor (dialog->dev, i);
if (!SANE_OPTION_IS_ACTIVE (opt->cap)
|| opt->type == SANE_TYPE_GROUP
|| !dialog->element[i].widget)
|| opt->type == SANE_TYPE_GROUP || !dialog->element[i].widget)
continue;
if (!(opt->cap & SANE_CAP_ALWAYS_SETTABLE))

Wyświetl plik

@ -85,8 +85,7 @@
#define DBG_info 3
#define DBG_debug 4
#define DEBUG_DECLARE_ONLY
#define BACKEND_NAME xscanimage
#define BACKEND_NAME preview
#include "../include/sane/sanei_debug.h"
#ifndef PATH_MAX
@ -193,7 +192,8 @@ update_selection (Preview *p)
normal /= (max - min);
p->selection.active = TRUE;
p->selection.coord[i] = ((dev_selection[i] - min) * normal) + 0.5;
p->selection.coord[i + 2] = ((dev_selection[i + 2] - min)*normal) + 0.5;
p->selection.coord[i + 2] =
((dev_selection[i + 2] - min) * normal) + 0.5;
if (p->selection.coord[i + 2] < p->selection.coord[i])
p->selection.coord[i + 2] = p->selection.coord[i];
}
@ -271,9 +271,12 @@ paint_image (Preview *p)
if (x >= p->image_width)
break;
p->preview_row[3*dst_x + 0] = p->image_data[src_offset + 3*x + 0];
p->preview_row[3*dst_x + 1] = p->image_data[src_offset + 3*x + 1];
p->preview_row[3*dst_x + 2] = p->image_data[src_offset + 3*x + 2];
p->preview_row[3 * dst_x + 0] =
p->image_data[src_offset + 3 * x + 0];
p->preview_row[3 * dst_x + 1] =
p->image_data[src_offset + 3 * x + 1];
p->preview_row[3 * dst_x + 2] =
p->image_data[src_offset + 3 * x + 2];
src_x += xscale;
}
gtk_preview_draw_row (GTK_PREVIEW (p->window), p->preview_row,
@ -367,7 +370,10 @@ preview_area_resize (GtkWidget *widget)
if (p->surface_unit == SANE_UNIT_MM)
{
double factor = 1.0 / preferences.length_unit;
min_x *= factor; max_x *= factor; min_y *= factor; max_y *= factor;
min_x *= factor;
max_x *= factor;
min_y *= factor;
max_y *= factor;
}
get_image_scale (p, &xscale, &yscale);
@ -513,7 +519,8 @@ set_option_bool (Preview *p, int option, SANE_Bool value)
return;
dev = p->dialog->dev;
status = sane_control_option (dev, option, SANE_ACTION_SET_VALUE, &value, 0);
status =
sane_control_option (dev, option, SANE_ACTION_SET_VALUE, &value, 0);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_fatal, "set_option_bool: sane_control_option failed: %s\n",
@ -560,6 +567,10 @@ input_available (gpointer data, gint source, GdkInputCondition cond)
SANE_Int len;
int i, j;
DBG_INIT ();
DBG (DBG_debug, "input_available: enter\n");
dev = p->dialog->dev;
while (1)
{
@ -718,12 +729,9 @@ input_available (gpointer data, gint source, GdkInputCondition cond)
guint16 value = buf[i];
if ((i % 2) == 1)
{
p->image_data[p->image_offset++] =
*(guint8 *) (&value);
p->image_data[p->image_offset++] =
*(guint8 *) (&value);
p->image_data[p->image_offset++] =
*(guint8 *) (&value);
p->image_data[p->image_offset++] = *(guint8 *) (&value);
p->image_data[p->image_offset++] = *(guint8 *) (&value);
p->image_data[p->image_offset++] = *(guint8 *) (&value);
}
if (p->image_offset % 2 == 0)
{
@ -894,8 +902,7 @@ scan_start (Preview *p)
if ((p->params.format >= SANE_FRAME_RGB &&
p->params.format <= SANE_FRAME_BLUE) &&
p->params.depth == 1 &&
p->params.pixels_per_line % 8 != 0)
p->params.depth == 1 && p->params.pixels_per_line % 8 != 0)
{
snprintf (buf, sizeof (buf),
"Can't handle unaligned 1 bit RGB or three-pass mode.");
@ -944,7 +951,9 @@ scan_start (Preview *p)
if (sane_set_io_mode (dev, SANE_TRUE) == SANE_STATUS_GOOD
&& sane_get_select_fd (dev, &fd) == SANE_STATUS_GOOD)
p->input_tag = gdk_input_add (fd, GDK_INPUT_READ | GDK_INPUT_EXCEPTION, input_available, p);
p->input_tag =
gdk_input_add (fd, GDK_INPUT_READ | GDK_INPUT_EXCEPTION,
input_available, p);
else
input_available (p, -1, GDK_INPUT_READ);
}
@ -966,7 +975,8 @@ establish_selection (Preview *p)
if (max >= INF)
max = p->preview_width;
normal = 1.0/(((i == 0) ? p->preview_width : p->preview_height) - 1);
normal =
1.0 / (((i == 0) ? p->preview_width : p->preview_height) - 1);
normal *= (max - min);
dev_selection[i] = p->selection.coord[i] * normal + min;
dev_selection[i + 2] = p->selection.coord[i + 2] * normal + min;
@ -1009,8 +1019,7 @@ restore_preview_image (Preview *p)
(e.g., consider an image whose first image byte is 13 (`\r'). */
if (fscanf (in, "P6\n# surface: %g %g %g %g %u %u\n%d %d\n255%*[\n]",
psurface + 0, psurface + 1, psurface + 2, psurface + 3,
&psurface_type, &psurface_unit,
&width, &height) != 8)
&psurface_type, &psurface_unit, &width, &height) != 8)
return;
if (GROSSLY_DIFFERENT (psurface[0], p->surface[0])
@ -1223,8 +1232,7 @@ preview_new (GSGDialog *dialog)
GDK_EXPOSURE_MASK |
GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK);
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
gtk_signal_connect (GTK_OBJECT (p->window), "event",
(GtkSignalFunc) event_handler, p);
gtk_signal_connect_after (GTK_OBJECT (p->window), "expose_event",

Plik diff jest za duży Load Diff

Wyświetl plik

@ -45,7 +45,6 @@
#include <sane/saneopts.h>
#include "../include/sane/sanei.h"
#define DEBUG_DECLARE_ONLY
#define BACKEND_NAME xscanimage
#include "../include/sane/sanei_debug.h"
@ -96,8 +95,7 @@ static void run (char *name, int nparams, GimpParam * param,
int *nreturn_vals, GimpParam ** return_vals);
#endif /* !ENABLE_GIMP_1_2 */
GimpPlugInInfo PLUG_IN_INFO =
{
GimpPlugInInfo PLUG_IN_INFO = {
NULL, /* init_proc */
NULL, /* quit_proc */
query, /* query_proc */
@ -161,8 +159,7 @@ static gint seldev = -1; /* The selected device */
static gint defdev = -1; /* The default device */
static gint ndevs; /* The number of available devices */
static gboolean little_endian; /* Is this computer little-endian ? */
static struct option long_options[] =
{
static struct option long_options[] = {
{"help", no_argument, NULL, 'h'},
{"version", no_argument, NULL, 'V'},
{0, 0, 0, 0}
@ -201,6 +198,8 @@ encode_devname (const char *devname, int n, char *buf)
const char *src;
char ch;
DBG_INIT ();
DBG (DBG_debug, "encode_devname\n");
limit = buf + n;
for (src = devname, dst = buf; *src; ++src)
@ -212,8 +211,7 @@ encode_devname (const char *devname, int n, char *buf)
/* don't use the ctype.h macros here since we don't want to
allow anything non-ASCII here... */
if ((ch >= '0' && ch <= '9')
|| (ch >= 'a' && ch <= 'z')
|| (ch >= 'A' && ch <= 'Z'))
|| (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
*dst++ = ch;
else
{
@ -248,6 +246,8 @@ decode_devname (const char *encoded_devname, int n, char *buf)
const char *src;
char ch, val;
DBG_INIT ();
DBG (DBG_debug, "decode_devname\n");
limit = buf + n;
for (src = encoded_devname, dst = buf; *src; ++dst)
@ -297,8 +297,7 @@ decode_devname (const char *encoded_devname, int n, char *buf)
static void
query (void)
{
static GimpParamDef args[] =
{
static GimpParamDef args[] = {
{GIMP_PDB_INT32, "run_mode", "Interactive, non-interactive"},
};
static GimpParamDef *return_vals = NULL;
@ -310,9 +309,10 @@ query (void)
int i, j;
SANE_Status status;
DBG_INIT ();
DBG (DBG_debug, "query\n");
gimp_install_procedure (
"xscanimage",
gimp_install_procedure ("xscanimage",
"Front-end to the SANE interface",
"This function provides access to scanners and other image acquisition "
"devices through the SANE (Scanner Access Now Easy) interface.",
@ -322,27 +322,29 @@ query (void)
"<Toolbox>/File/Acquire/xscanimage/Device dialog...",
"RGB, GRAY",
GIMP_EXTENSION,
nargs, nreturn_vals,
args, return_vals);
nargs, nreturn_vals, args, return_vals);
status = sane_init (0, 0);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_fatal, "query: sane_init failed: %s\n", sane_strstatus (status));
DBG (DBG_fatal, "query: sane_init failed: %s\n",
sane_strstatus (status));
exit (1);
}
status = sane_get_devices (&devlist, SANE_FALSE);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_fatal, "query: sane_get_devices failed: %s\n", sane_strstatus (status));
DBG (DBG_fatal, "query: sane_get_devices failed: %s\n",
sane_strstatus (status));
exit (1);
}
for (i = 0; devlist[i]; ++i)
{
strcpy (name, "xscanimage-");
if (encode_devname (devlist[i]->name, sizeof (name) - 11, name + 11) < 0)
if (encode_devname (devlist[i]->name, sizeof (name) - 11, name + 11) <
0)
continue; /* name too long... */
strncpy (mpath, "<Toolbox>/File/Acquire/xscanimage/", sizeof (mpath));
@ -442,8 +444,8 @@ null_print_func (const gchar *msg)
#endif /* HAVE_LIBGIMP_GIMP_H */
static
SANE_Word get_resolution (SANE_Handle dev)
static SANE_Word
get_resolution (SANE_Handle dev)
{
SANE_Status status;
SANE_Word resolution;
@ -451,7 +453,8 @@ SANE_Word get_resolution (SANE_Handle dev)
const SANE_Option_Descriptor *option_desc;
DBG (DBG_debug, "get_resolution\n");
status = sane_control_option (dev, 0, SANE_ACTION_GET_VALUE, &num_options, 0);
status =
sane_control_option (dev, 0, SANE_ACTION_GET_VALUE, &num_options, 0);
if (status != SANE_STATUS_GOOD)
return 0;
@ -512,7 +515,8 @@ update_param (GSGDialog *dialog, void *arg)
}
else
{
if (params.format >= SANE_FRAME_RED && params.format <= SANE_FRAME_BLUE)
if (params.format >= SANE_FRAME_RED
&& params.format <= SANE_FRAME_BLUE)
size *= 3;
if (size >= 1024 * 1024)
@ -525,8 +529,8 @@ update_param (GSGDialog *dialog, void *arg)
size /= 1024;
unit = "KB";
}
snprintf (buf, sizeof(buf), "%dx%d: %1.1f %s", params.pixels_per_line,
params.lines, size, unit);
snprintf (buf, sizeof (buf), "%dx%d: %1.1f %s",
params.pixels_per_line, params.lines, size, unit);
}
}
else
@ -675,7 +679,8 @@ advance (void)
{
gimp_pixel_rgn_set_rect (&scan_win.region, scan_win.tile,
0, scan_win.y - tile_height,
scan_win.param.pixels_per_line, tile_height);
scan_win.param.pixels_per_line,
tile_height);
if (scan_win.param.format >= SANE_FRAME_RED
&& scan_win.param.format <= SANE_FRAME_BLUE)
{
@ -1119,11 +1124,21 @@ scan_start (void)
switch (scan_win.param.format)
{
case SANE_FRAME_RGB: frame_type = "RGB"; break;
case SANE_FRAME_RED: frame_type = "red"; break;
case SANE_FRAME_GREEN: frame_type = "green"; break;
case SANE_FRAME_BLUE: frame_type = "blue"; break;
case SANE_FRAME_GRAY: frame_type = "gray"; break;
case SANE_FRAME_RGB:
frame_type = "RGB";
break;
case SANE_FRAME_RED:
frame_type = "red";
break;
case SANE_FRAME_GREEN:
frame_type = "green";
break;
case SANE_FRAME_BLUE:
frame_type = "blue";
break;
case SANE_FRAME_GRAY:
frame_type = "gray";
break;
}
if (scan_win.mode == STANDALONE)
@ -1145,8 +1160,7 @@ scan_start (void)
scan_done ();
return;
}
/*FALLTHROUGH*/
case SANE_FRAME_RGB:
/*FALLTHROUGH*/ case SANE_FRAME_RGB:
fprintf (scan_win.out, "P6\n# SANE data follows\n%d %d\n%d\n",
scan_win.param.pixels_per_line, scan_win.param.lines,
(scan_win.param.depth <= 8) ? 255 : 65535);
@ -1155,7 +1169,8 @@ scan_start (void)
case SANE_FRAME_GRAY:
if (scan_win.param.depth == 1)
fprintf (scan_win.out, "P4\n# SANE data follows\n%d %d\n",
scan_win.param.pixels_per_line, scan_win.param.lines);
scan_win.param.pixels_per_line,
scan_win.param.lines);
else
fprintf (scan_win.out, "P5\n# SANE data follows\n%d %d\n%d\n",
scan_win.param.pixels_per_line, scan_win.param.lines,
@ -1207,7 +1222,8 @@ scan_start (void)
}
scan_win.image_ID = gimp_image_new (scan_win.param.pixels_per_line,
scan_win.param.lines, image_type);
scan_win.param.lines,
image_type);
/* the following is supported since gimp-1.1.0 */
#ifdef GIMP_HAVE_RESOLUTION_INFO
@ -1244,7 +1260,8 @@ scan_start (void)
scan_win.input_tag = -1;
if (sane_set_io_mode (dev, SANE_TRUE) == SANE_STATUS_GOOD
&& sane_get_select_fd (dev, &fd) == SANE_STATUS_GOOD)
scan_win.input_tag = gdk_input_add (fd, GDK_INPUT_READ | GDK_INPUT_EXCEPTION,
scan_win.input_tag =
gdk_input_add (fd, GDK_INPUT_READ | GDK_INPUT_EXCEPTION,
input_available, 0);
else
{
@ -1278,7 +1295,8 @@ scan_dialog (GtkWidget * widget, gpointer call_data)
(!strncmp (testfilename, "MBP.", 4)) ||
(!strncmp (testfilename, "MPP.", 4))))
{
snprintf (buf, sizeof (buf), "Failed to scan, wrong file extension, use pnm, pgm, pbm or ppm `%s'",
snprintf (buf, sizeof (buf),
"Failed to scan, wrong file extension, use pnm, pgm, pbm or ppm `%s'",
preferences.filename);
gsg_error (buf);
return;
@ -1303,8 +1321,7 @@ static void
zoom_in_preview (GtkWidget * widget, gpointer data)
{
if (Selection.x1 >= Selection.x2
|| Selection.y1 >= Selection.y2
|| !Selection.active)
|| Selection.y1 >= Selection.y2 || !Selection.active)
return;
Selection.active = FALSE;
@ -1414,7 +1431,8 @@ preview_options_ok_callback (GtkWidget *widget, gpointer data)
/* gamma min, max test */
if (preferences.preview_gamma < 0.0 || preferences.preview_gamma > 255.0)
{
snprintf (buf, sizeof (buf), "Gamma value %g is < 0 or > 255, please change!",
snprintf (buf, sizeof (buf),
"Gamma value %g is < 0 or > 255, please change!",
preferences.preview_gamma);
gsg_warning (buf);
return;
@ -1515,7 +1533,8 @@ preview_options_dialog (GtkWidget *widget, gpointer data)
button = gtk_button_new_with_label ("Cancel");
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) preview_options_cancel_callback, dialog);
(GtkSignalFunc) preview_options_cancel_callback,
dialog);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
@ -1735,7 +1754,8 @@ filename_changed_callback (GtkWidget *widget, gpointer data)
static void
device_dialog (void)
{
GtkWidget *vbox, *hbox, *button, *frame, *scrolled_window, *dialog_window, *label, *text;
GtkWidget *vbox, *hbox, *button, *frame, *scrolled_window, *dialog_window,
*label, *text;
GtkWidget *menubar_item;
const gchar *devname;
@ -1819,8 +1839,8 @@ device_dialog (void)
gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_CORNER_TOP_RIGHT);
dialog_window = gtk_hbox_new ( /* homogeneous */ FALSE, 0);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window),
dialog_window);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW
(scrolled_window), dialog_window);
gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0);
gtk_widget_show (scrolled_window);
@ -1859,13 +1879,13 @@ device_dialog (void)
/* The Scan button */
scan_win.scan_button = gtk_button_new_with_label ("Scan");
gtk_signal_connect (GTK_OBJECT (scan_win.scan_button), "clicked",
(GtkSignalFunc) scan_dialog,
NULL);
(GtkSignalFunc) scan_dialog, NULL);
gtk_box_pack_start (GTK_BOX (hbox), scan_win.scan_button, TRUE, TRUE, 0);
gtk_widget_show (scan_win.scan_button);
/* The Preview button */
scan_win.preview_button = gtk_toggle_button_new_with_label ("Preview Window");
scan_win.preview_button =
gtk_toggle_button_new_with_label ("Preview Window");
gtk_signal_connect (GTK_OBJECT (scan_win.preview_button), "clicked",
(GtkSignalFunc) scan_preview, NULL);
gtk_box_pack_start (GTK_BOX (hbox), scan_win.preview_button, TRUE, TRUE, 0);
@ -1875,16 +1895,14 @@ device_dialog (void)
/* The Zoom in button */
button = gtk_button_new_with_label ("Zoom");
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) zoom_in_preview,
NULL);
(GtkSignalFunc) zoom_in_preview, NULL);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
/* The Zoom out button */
button = gtk_button_new_with_label ("Zoom out");
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) zoom_out_preview,
NULL);
(GtkSignalFunc) zoom_out_preview, NULL);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
#endif
@ -1958,8 +1976,7 @@ choose_device (void)
button = gtk_button_new_with_label ("OK");
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) ok_choose_dialog_callback,
NULL);
(GtkSignalFunc) ok_choose_dialog_callback, NULL);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_grab_default (button);
gtk_widget_show (button);
@ -1995,6 +2012,8 @@ init (int argc, char **argv)
struct stat st;
SANE_Status status;
DBG_INIT ();
DBG (DBG_debug, "init\n");
gtk_init (&argc, &argv);
#ifdef HAVE_LIBGIMP_GIMP_H
@ -2024,7 +2043,8 @@ init (int argc, char **argv)
status = sane_init (0, 0);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_fatal, "init: sane_init failed: %s\n", sane_strstatus (status));
DBG (DBG_fatal, "init: sane_init failed: %s\n",
sane_strstatus (status));
exit (1);
}
@ -2073,7 +2093,8 @@ init (int argc, char **argv)
status = sane_get_devices (&devlist, SANE_FALSE);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_fatal, "init: sane_get_devices failed: %s\n", sane_strstatus (status));
DBG (DBG_fatal, "init: sane_get_devices failed: %s\n",
sane_strstatus (status));
exit (1);
}
@ -2137,7 +2158,8 @@ interface (int argc, char **argv)
}
else
{
DBG (DBG_fatal, "No scanners were identified. If you were expecting something\n"
DBG (DBG_fatal,
"No scanners were identified. If you were expecting something\n"
" different, check that the scanner is plugged in, turned on and\n"
" detected by sane-find-scanner (if appropriate). Please read\n"
" the documentation which came with this software (README, FAQ,\n"