aboutsummaryrefslogtreecommitdiffstats
path: root/Software/External_Repositories/ZBar/include/zbar/Window.h
diff options
context:
space:
mode:
Diffstat (limited to 'Software/External_Repositories/ZBar/include/zbar/Window.h')
-rw-r--r--Software/External_Repositories/ZBar/include/zbar/Window.h136
1 files changed, 136 insertions, 0 deletions
diff --git a/Software/External_Repositories/ZBar/include/zbar/Window.h b/Software/External_Repositories/ZBar/include/zbar/Window.h
new file mode 100644
index 000000000..c91a405ae
--- /dev/null
+++ b/Software/External_Repositories/ZBar/include/zbar/Window.h
@@ -0,0 +1,136 @@
+//------------------------------------------------------------------------
+// Copyright 2007-2009 (c) Jeff Brown <spadix@users.sourceforge.net>
+//
+// This file is part of the ZBar Bar Code Reader.
+//
+// The ZBar Bar Code Reader is free software; you can redistribute it
+// and/or modify it under the terms of the GNU Lesser Public License as
+// published by the Free Software Foundation; either version 2.1 of
+// the License, or (at your option) any later version.
+//
+// The ZBar Bar Code Reader is distributed in the hope that it will be
+// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser Public License for more details.
+//
+// You should have received a copy of the GNU Lesser Public License
+// along with the ZBar Bar Code Reader; if not, write to the Free
+// Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+// Boston, MA 02110-1301 USA
+//
+// http://sourceforge.net/projects/zbar
+//------------------------------------------------------------------------
+#ifndef _ZBAR_WINDOW_H_
+#define _ZBAR_WINDOW_H_
+
+/// @file
+/// Output Window C++ wrapper
+
+#ifndef _ZBAR_H_
+# error "include zbar.h in your application, **not** zbar/Window.h"
+#endif
+
+#include "Image.h"
+
+namespace zbar {
+
+/// mid-level output window abstraction.
+/// displays images to user-specified platform specific output window
+
+class Window {
+public:
+ /// constructor.
+ Window (zbar_window_t *window = NULL)
+ {
+ if(window)
+ _window = window;
+ else
+ _window = zbar_window_create();
+ }
+
+ /// constructor.
+ Window (void *x11_display_w32_hwnd,
+ unsigned long x11_drawable)
+ {
+ _window = zbar_window_create();
+ attach(x11_display_w32_hwnd, x11_drawable);
+ }
+
+ ~Window ()
+ {
+ zbar_window_destroy(_window);
+ }
+
+ /// cast to C window object.
+ operator zbar_window_t* () const
+ {
+ return(_window);
+ }
+
+ /// associate reader with an existing platform window.
+ /// see zbar_window_attach()
+ void attach (void *x11_display_w32_hwnd,
+ unsigned long x11_drawable = 0)
+ {
+ if(zbar_window_attach(_window,
+ x11_display_w32_hwnd, x11_drawable) < 0)
+ throw_exception(_window);
+ }
+
+ /// control content level of the reader overlay.
+ /// see zbar_window_set_overlay()
+ void set_overlay (int level)
+ {
+ zbar_window_set_overlay(_window, level);
+ }
+
+ /// retrieve current content level of reader overlay.
+ /// see zbar_window_get_overlay()
+
+ /// draw a new image into the output window.
+ /// see zbar_window_draw()
+ void draw (Image& image)
+ {
+ if(zbar_window_draw(_window, image) < 0)
+ throw_exception(_window);
+ }
+
+ /// clear the image from the output window.
+ /// see zbar_window_draw()
+ void clear ()
+ {
+ if(zbar_window_draw(_window, NULL) < 0)
+ throw_exception(_window);
+ }
+
+ /// redraw the last image.
+ /// zbar_window_redraw()
+ void redraw ()
+ {
+ if(zbar_window_redraw(_window) < 0)
+ throw_exception(_window);
+ }
+
+ /// resize the image window.
+ /// zbar_window_resize()
+ void resize (unsigned width, unsigned height)
+ {
+ if(zbar_window_resize(_window, width, height) < 0)
+ throw_exception(_window);
+ }
+
+private:
+ zbar_window_t *_window;
+};
+
+/// select a compatible format between video input and output window.
+/// see zbar_negotiate_format()
+static inline void negotiate_format (Video& video, Window& window)
+{
+ if(zbar_negotiate_format(video, window) < 0)
+ throw_exception(video);
+}
+
+}
+
+#endif