summaryrefslogtreecommitdiffstats
path: root/examples/processor.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/processor.c')
-rw-r--r--examples/processor.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/examples/processor.c b/examples/processor.c
new file mode 100644
index 0000000..773440e
--- /dev/null
+++ b/examples/processor.c
@@ -0,0 +1,47 @@
+#include <stdio.h>
+#include <zbar.h>
+
+static void my_handler(zbar_image_t *image, const void *userdata)
+{
+ /* extract results */
+ const zbar_symbol_t *symbol = zbar_image_first_symbol(image);
+
+ for (; symbol; symbol = zbar_symbol_next(symbol)) {
+ /* do something useful with results */
+ zbar_symbol_type_t typ = zbar_symbol_get_type(symbol);
+ const char *data = zbar_symbol_get_data(symbol);
+
+ printf("decoded %s symbol \"%s\"\n", zbar_get_symbol_name(typ), data);
+ }
+}
+
+int main(int argc, char **argv)
+{
+ const char *device = "/dev/video0";
+
+ /* create a Processor */
+ zbar_processor_t *proc = zbar_processor_create(1);
+
+ /* configure the Processor */
+ zbar_processor_set_config(proc, 0, ZBAR_CFG_ENABLE, 1);
+
+ /* initialize the Processor */
+ if (argc > 1)
+ device = argv[1];
+ zbar_processor_init(proc, device, 1);
+
+ /* setup a callback */
+ zbar_processor_set_data_handler(proc, my_handler, NULL);
+
+ /* enable the preview window */
+ zbar_processor_set_visible(proc, 1);
+ zbar_processor_set_active(proc, 1);
+
+ /* keep scanning until user provides key/mouse input */
+ zbar_processor_user_wait(proc, -1);
+
+ /* clean up */
+ zbar_processor_destroy(proc);
+
+ return (0);
+}