/* * Copyright (C) 2009 Canonical Ltd. * Author: Robert Ancell * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. See http://www.gnu.org/copyleft/gpl.html the full text of the * license. */ #ifndef _SCANNER_H_ #define _SCANNER_H_ #include G_BEGIN_DECLS #define SCANNER_TYPE (scanner_get_type ()) #define SCANNER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCANNER_TYPE, Scanner)) typedef struct { gchar *name, *label; } ScanDevice; typedef struct { /* Width, height in pixels */ gint width, height; /* Bit depth */ gint depth; /* Resolution */ gdouble dpi; /* The device this page came from */ gchar *device; } ScanPageInfo; typedef struct { /* Line number */ gint number; /* Number of lines in this packet */ gint n_lines; /* Width in pixels and format */ gint width, depth; enum { LINE_GRAY, LINE_RGB, LINE_RED, LINE_GREEN, LINE_BLUE } format; /* Raw line data */ guchar *data; gsize data_length; } ScanLine; typedef enum { SCAN_MODE_DEFAULT, SCAN_MODE_COLOR, SCAN_MODE_GRAY, SCAN_MODE_LINEART } ScanMode; typedef enum { SCAN_SINGLE, SCAN_ADF_FRONT, SCAN_ADF_BACK, SCAN_ADF_BOTH } ScanType; typedef struct { gint dpi; ScanMode scan_mode; gint depth; ScanType type; gint paper_width, paper_height; } ScanOptions; typedef struct ScannerPrivate ScannerPrivate; typedef struct { GObject parent_instance; ScannerPrivate *priv; } Scanner; typedef struct { GObjectClass parent_class; void (*update_devices) (Scanner *scanner, GList *devices); void (*authorize) (Scanner *scanner, const gchar *resource); void (*expect_page) (Scanner *scanner); void (*got_page_info) (Scanner *scanner, ScanPageInfo *info); void (*got_line) (Scanner *scanner, ScanLine *line); void (*scan_failed) (Scanner *scanner, GError *error); void (*page_done) (Scanner *scanner); void (*document_done) (Scanner *scanner); void (*scanning_changed) (Scanner *scanner); } ScannerClass; GType scanner_get_type (void); Scanner *scanner_new (void); void scanner_start (Scanner *scanner); void scanner_authorize (Scanner *scanner, const gchar *username, const gchar *password); void scanner_redetect (Scanner *scanner); gboolean scanner_is_scanning (Scanner *scanner); void scanner_scan (Scanner *scanner, const char *device, ScanOptions *options); void scanner_cancel (Scanner *scanner); void scanner_free (Scanner *scanner); #endif /* _SCANNER_H_ */