aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am3
-rw-r--r--src/Makefile.in4
-rw-r--r--src/callbacks.c911
-rw-r--r--src/callbacks.h127
-rw-r--r--src/camorama-filter-chain.c109
-rw-r--r--src/camorama-filter-chain.h31
-rw-r--r--src/camorama-filter-laplace.c154
-rw-r--r--src/camorama-filter-mirror.c64
-rw-r--r--src/camorama-filter-reichardt.c397
-rw-r--r--src/camorama-globals.h5
-rw-r--r--src/camorama-stock-items.c76
-rw-r--r--src/camorama-stock-items.h3
-rw-r--r--src/camorama-window.c673
-rw-r--r--src/camorama-window.h4
-rw-r--r--src/fileio.c374
-rw-r--r--src/fileio.h12
-rw-r--r--src/filter.c438
-rw-r--r--src/filter.h62
-rw-r--r--src/font_6x11.h6656
-rw-r--r--src/glib-helpers.h5
-rw-r--r--src/main.c248
-rw-r--r--src/support.c30
-rw-r--r--src/support.h6
-rw-r--r--src/v4l.c1099
-rw-r--r--src/v4l.h150
25 files changed, 5874 insertions, 5767 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index d4f5a5b..71d08bd 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -7,6 +7,9 @@ AM_CPPFLAGS=\
bin_PROGRAMS = camorama
+AM_CFLAGS = $(WARN_CFLAGS)
+AM_LDFLAGS = $(WARN_LDFLAGS)
+
camorama_SOURCES = \
callbacks.c \
camorama-filter-chain.c \
diff --git a/src/Makefile.in b/src/Makefile.in
index 4782c57..d574653 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -240,6 +240,8 @@ STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
WARN_CFLAGS = @WARN_CFLAGS@
+WARN_LDFLAGS = @WARN_LDFLAGS@
+WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -299,6 +301,8 @@ AM_CPPFLAGS = \
-g \
$(NULL)
+AM_CFLAGS = $(WARN_CFLAGS)
+AM_LDFLAGS = $(WARN_LDFLAGS)
camorama_SOURCES = \
callbacks.c \
camorama-filter-chain.c \
diff --git a/src/callbacks.c b/src/callbacks.c
index 941e828..3d2ec9f 100644
--- a/src/callbacks.c
+++ b/src/callbacks.c
@@ -1,13 +1,24 @@
-#include <gtk/gtk.h>
-#include <glib/gi18n.h>
-#include <config.h>
#include "callbacks.h"
#include "interface.h"
#include "support.h"
#include "filter.h"
+#include <glib/gi18n.h>
+#include <config.h>
#include <pthread.h>
#include <libv4l2.h>
+#define GPL_LICENSE \
+ "GPL version 2.\n\n" \
+ "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 version 2 of the License.\n\n" \
+ "This program 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 " \
+ "General Public License for more details."
+
+static GtkWidget *about = NULL;
+
extern GtkWidget *main_window, *prefswindow;
//extern state func_state;
//extern gint effect_mask;
@@ -16,282 +27,231 @@ extern int frames2;
extern int seconds;
extern GtkWidget *dentry, *entry2, *string_entry;
extern GtkWidget *host_entry, *protocol, *rdir_entry, *filename_entry;
-extern const gchar * const protos[];
+extern const gchar *const protos[];
/*
* pref callbacks
*/
-void ts_func (GtkWidget * rb, cam * cam)
+void ts_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
- cam->timestamp = gtk_toggle_button_get_active ((GtkToggleButton *) rb);
- gconf_client_set_bool (cam->gc, KEY4, cam->timestamp, NULL);
+ cam->timestamp = gtk_toggle_button_get_active((GtkToggleButton *) rb);
+ gconf_client_set_bool(cam->gc, KEY4, cam->timestamp, NULL);
}
-void customstring_func (GtkWidget * rb, cam * cam)
+void customstring_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
- cam->usestring = gtk_toggle_button_get_active ((GtkToggleButton *) rb);
- gconf_client_set_bool (cam->gc, KEY18, cam->usestring, NULL);
- gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object
- (cam->xml, "string_entry")), cam->usestring);
+ cam->usestring = gtk_toggle_button_get_active((GtkToggleButton *) rb);
+ gconf_client_set_bool(cam->gc, KEY18, cam->usestring, NULL);
+ gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(cam->xml, "string_entry")),
+ cam->usestring);
}
-void drawdate_func (GtkWidget * rb, cam * cam)
+void drawdate_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
- cam->usedate = gtk_toggle_button_get_active ((GtkToggleButton *) rb);
- gconf_client_set_bool (cam->gc, KEY19, cam->usedate, NULL);
+ cam->usedate = gtk_toggle_button_get_active((GtkToggleButton *) rb);
+ gconf_client_set_bool(cam->gc, KEY19, cam->usedate, NULL);
}
-void append_func (GtkWidget * rb, cam * cam)
+void append_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
- cam->timefn = gtk_toggle_button_get_active ((GtkToggleButton *) rb);
- gconf_client_set_bool (cam->gc, KEY14, cam->timefn, NULL);
+ cam->timefn = gtk_toggle_button_get_active((GtkToggleButton *) rb);
+ gconf_client_set_bool(cam->gc, KEY14, cam->timefn, NULL);
}
-void rappend_func (GtkWidget * rb, cam * cam)
+void rappend_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
- cam->rtimefn = gtk_toggle_button_get_active ((GtkToggleButton *) rb);
- gconf_client_set_bool (cam->gc, KEY15, cam->rtimefn, NULL);
+ cam->rtimefn = gtk_toggle_button_get_active((GtkToggleButton *) rb);
+ gconf_client_set_bool(cam->gc, KEY15, cam->rtimefn, NULL);
}
-void jpg_func (GtkWidget * rb, cam * cam)
+void jpg_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
cam->savetype = JPEG;
- gconf_client_set_int (cam->gc, KEY3, cam->savetype, NULL);
+ gconf_client_set_int(cam->gc, KEY3, cam->savetype, NULL);
}
-void png_func (GtkWidget * rb, cam * cam)
+void png_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
cam->savetype = PNG;
- gconf_client_set_int (cam->gc, KEY3, cam->savetype, NULL);
+ gconf_client_set_int(cam->gc, KEY3, cam->savetype, NULL);
}
-void ppm_func (GtkWidget * rb, cam * cam)
+void ppm_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
cam->savetype = PPM;
- gconf_client_set_int (cam->gc, KEY3, cam->savetype, NULL);
+ gconf_client_set_int(cam->gc, KEY3, cam->savetype, NULL);
}
-void set_sensitive (cam * cam)
+void set_sensitive(cam_t *cam)
{
- gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object(cam->xml, "table4")),
- cam->cap);
-
- gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object
- (cam->xml, "appendbutton")), cam->cap);
- gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object(cam->xml, "tsbutton")),
- cam->cap);
- gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object(cam->xml, "jpgb")),
- cam->cap);
- gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object(cam->xml, "pngb")),
- cam->cap);
- gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object(cam->xml, "table5")),
- cam->rcap);
- gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object(cam->xml, "timecb")),
- cam->rcap);
- gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object
- (cam->xml, "tsbutton2")), cam->rcap);
- gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object(cam->xml, "fjpgb")),
- cam->rcap);
- gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object(cam->xml, "fpngb")),
- cam->rcap);
- gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object(cam->xml, "hbox20")),
- cam->acap);
-
+ gtk_widget_set_sensitive(GTK_WIDGET
+ (gtk_builder_get_object(cam->xml, "table4")),
+ cam->cap);
+ gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(cam->xml, "appendbutton")),
+ cam->cap);
+ gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object
+ (cam->xml, "tsbutton")), cam->cap);
+ gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(cam->xml, "jpgb")),
+ cam->cap);
+ gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(cam->xml, "pngb")),
+ cam->cap);
+ gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(cam->xml, "table5")),
+ cam->rcap);
+ gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(cam->xml, "timecb")),
+ cam->rcap);
+ gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(cam->xml, "tsbutton2")),
+ cam->rcap);
+ gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(cam->xml, "fjpgb")),
+ cam->rcap);
+ gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(cam->xml, "fpngb")),
+ cam->rcap);
+ gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(cam->xml, "hbox20")),
+ cam->acap);
}
-void cap_func (GtkWidget * rb, cam * cam)
+void cap_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
- cam->cap = gtk_toggle_button_get_active ((GtkToggleButton *) rb);
-
- gconf_client_set_bool (cam->gc, KEY12, cam->cap, NULL);
- update_tooltip (cam);
- set_sensitive (cam);
+ cam->cap = gtk_toggle_button_get_active((GtkToggleButton *) rb);
+ gconf_client_set_bool(cam->gc, KEY12, cam->cap, NULL);
+ update_tooltip(cam);
+ set_sensitive(cam);
}
-void rcap_func (GtkWidget * rb, cam * cam)
+void rcap_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
+ cam->rcap = gtk_toggle_button_get_active((GtkToggleButton *) rb);
- client = gconf_client_get_default ();
- cam->rcap = gtk_toggle_button_get_active ((GtkToggleButton *) rb);
- gconf_client_set_bool (cam->gc, KEY13, cam->rcap, NULL);
- update_tooltip (cam);
- set_sensitive (cam);
+ gconf_client_set_bool(cam->gc, KEY13, cam->rcap, NULL);
+ update_tooltip(cam);
+ set_sensitive(cam);
}
-void acap_func (GtkWidget * rb, cam * cam)
+void acap_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
- cam->acap = gtk_toggle_button_get_active ((GtkToggleButton *) rb);
+ cam->acap = gtk_toggle_button_get_active((GtkToggleButton *) rb);
- gconf_client_set_bool (cam->gc, KEY20, cam->acap, NULL);
+ gconf_client_set_bool(cam->gc, KEY20, cam->acap, NULL);
if (cam->acap == TRUE) {
- cam->timeout_id =
- g_timeout_add (cam->timeout_interval,
- (GSourceFunc) timeout_capture_func, cam);
+ cam->timeout_id = g_timeout_add(cam->timeout_interval,
+ (GSourceFunc) timeout_capture_func, cam);
if (cam->debug == TRUE) {
- printf ("add autocap - %d - timeout_interval = %d\n",
- cam->timeout_id, cam->timeout_interval);
+ printf("add autocap - %d - timeout_interval = %d\n",
+ cam->timeout_id, cam->timeout_interval);
}
} else {
if (cam->debug == TRUE) {
- printf ("remove autocap - %d - timeout_interval = %d\n",
- cam->timeout_id, cam->timeout_interval);
+ printf("remove autocap - %d - timeout_interval = %d\n",
+ cam->timeout_id, cam->timeout_interval);
}
- g_source_remove (cam->timeout_id);
+ g_source_remove(cam->timeout_id);
}
- update_tooltip (cam);
- set_sensitive (cam);
+ update_tooltip(cam);
+ set_sensitive(cam);
}
-void interval_change (GtkWidget * sb, cam * cam)
+void interval_change(GtkWidget *sb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
- cam->timeout_interval =
- gtk_spin_button_get_value ((GtkSpinButton *) sb) * 60000;
- gconf_client_set_int (cam->gc, KEY21, cam->timeout_interval, NULL);
+ cam->timeout_interval = gtk_spin_button_get_value((GtkSpinButton *) sb) * 60000;
+ gconf_client_set_int(cam->gc, KEY21, cam->timeout_interval, NULL);
if (cam->acap == TRUE) {
if (cam->debug == TRUE) {
- printf
- ("interval_change; old timeout_id = %d old interval = %d\n",
- cam->timeout_id, cam->timeout_interval);
+ printf("interval_change; old timeout_id = %d old interval = %d\n",
+ cam->timeout_id, cam->timeout_interval);
}
- g_source_remove (cam->timeout_id);
- cam->timeout_id =
- g_timeout_add (cam->timeout_interval,
- (GSourceFunc) timeout_capture_func, cam);
+ g_source_remove(cam->timeout_id);
+ cam->timeout_id = g_timeout_add(cam->timeout_interval,
+ (GSourceFunc) timeout_capture_func, cam);
if (cam->debug == TRUE) {
- printf ("new timeout_id = %d, new interval = %d\n",
- cam->timeout_id, cam->timeout_interval);
+ printf("new timeout_id = %d, new interval = %d\n",
+ cam->timeout_id, cam->timeout_interval);
}
}
- update_tooltip (cam);
+ update_tooltip(cam);
}
-void rjpg_func (GtkWidget * rb, cam * cam)
+void rjpg_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
cam->rsavetype = JPEG;
- gconf_client_set_int (cam->gc, KEY10, cam->rsavetype, NULL);
+ gconf_client_set_int(cam->gc, KEY10, cam->rsavetype, NULL);
}
-void rpng_func (GtkWidget * rb, cam * cam)
+void rpng_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
cam->rsavetype = PNG;
- gconf_client_set_int (cam->gc, KEY10, cam->rsavetype, NULL);
+ gconf_client_set_int(cam->gc, KEY10, cam->rsavetype, NULL);
}
-void rppm_func (GtkWidget * rb, cam * cam)
+void rppm_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
cam->rsavetype = PPM;
- gconf_client_set_int (cam->gc, KEY10, cam->rsavetype, NULL);
+ gconf_client_set_int(cam->gc, KEY10, cam->rsavetype, NULL);
}
-void rts_func (GtkWidget * rb, cam * cam)
+void rts_func(GtkWidget *rb, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
- cam->rtimestamp = gtk_toggle_button_get_active ((GtkToggleButton *) rb);
- gconf_client_set_bool (cam->gc, KEY11, cam->rtimestamp, NULL);
+ cam->rtimestamp = gtk_toggle_button_get_active((GtkToggleButton *) rb);
+ gconf_client_set_bool(cam->gc, KEY11, cam->rtimestamp, NULL);
}
-void
-gconf_notify_func (GConfClient * client, guint cnxn_id, GConfEntry * entry,
- char *str)
+void gconf_notify_func(GConfClient *client, guint cnxn_id, GConfEntry *entry,
+ char **str)
{
GConfValue *value;
- value = gconf_entry_get_value (entry);
- str = g_strdup (gconf_value_get_string (value));
+ value = gconf_entry_get_value(entry);
+ *str = g_strdup(gconf_value_get_string(value));
}
-void
-gconf_notify_func_bool (GConfClient * client, guint cnxn_id,
- GConfEntry * entry, gboolean val)
+void gconf_notify_func_bool(GConfClient *client, guint cnxn_id,
+ GConfEntry *entry, gboolean *val)
{
GConfValue *value;
- value = gconf_entry_get_value (entry);
- val = gconf_value_get_bool (value);
+
+ value = gconf_entry_get_value(entry);
+ *val = gconf_value_get_bool(value);
}
-void
-gconf_notify_func_int (GConfClient * client, guint cnxn_id,
- GConfEntry * entry, int val)
+void gconf_notify_func_int(GConfClient *client, guint cnxn_id,
+ GConfEntry *entry, int *val)
{
GConfValue *value;
- value = gconf_entry_get_value (entry);
- val = gconf_value_get_int (value);
+
+ value = gconf_entry_get_value(entry);
+ *val = gconf_value_get_int(value);
}
-int delete_event (GtkWidget * widget, gpointer data)
+int delete_event(GtkWidget *widget, gpointer data)
{
- gtk_main_quit ();
+ gtk_main_quit();
return FALSE;
}
-static int apply_remote_pref(cam *cam)
+static int apply_remote_pref(cam_t *cam)
{
- if (!strlen (gtk_entry_get_text ((GtkEntry *) host_entry)))
+ int index;
+ gchar *host, *rdir, *proto, *rfile, *uri;
+
+ if (!strlen(gtk_entry_get_text((GtkEntry *) host_entry)))
return 0;
- int index = gtk_combo_box_get_active(GTK_COMBO_BOX(protocol));
+ index = gtk_combo_box_get_active(GTK_COMBO_BOX(protocol));
- gchar *host = g_strdup (gtk_entry_get_text ((GtkEntry *) host_entry));
- gchar *rdir = g_strdup (gtk_entry_get_text ((GtkEntry *) rdir_entry));
- gchar *proto = g_strdup (protos[index]);
- gchar *rfile = g_strdup (gtk_entry_get_text ((GtkEntry *) filename_entry));
+ host = g_strdup(gtk_entry_get_text((GtkEntry *) host_entry));
+ rdir = g_strdup(gtk_entry_get_text((GtkEntry *) rdir_entry));
+ proto = g_strdup(protos[index]);
+ rfile = g_strdup(gtk_entry_get_text((GtkEntry *) filename_entry));
if (!host || !proto || !rdir || !rfile) {
if (host)
@@ -305,7 +265,7 @@ static int apply_remote_pref(cam *cam)
return 0;
}
- gchar *uri = volume_uri(host, proto, rdir);
+ uri = volume_uri(host, proto, rdir);
if (cam->rdir_ok) {
/* unmount/mount can spend time. Do only if URI changed */
@@ -347,72 +307,99 @@ static int apply_remote_pref(cam *cam)
/*
* apply preferences
*/
-void prefs_func (GtkWidget * okbutton, cam * cam)
+void prefs_func(GtkWidget *okbutton, cam_t *cam)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
-
if (gtk_file_chooser_get_current_folder((GtkFileChooser *) dentry)) {
- cam->pixdir = g_strdup (gtk_file_chooser_get_current_folder((GtkFileChooser *) dentry));
- gconf_client_set_string (cam->gc, KEY1, cam->pixdir, NULL);
+ cam->pixdir = g_strdup(gtk_file_chooser_get_current_folder((GtkFileChooser *) dentry));
+ gconf_client_set_string(cam->gc, KEY1, cam->pixdir, NULL);
} else {
- if (cam->debug == TRUE) {
- fprintf (stderr, "null directory\ndirectory unchanged.");
- }
+ if (cam->debug == TRUE)
+ fprintf(stderr, "null directory\ndirectory unchanged.");
}
- if (!apply_remote_pref(cam) && cam->debug == TRUE) {
- fprintf (stderr, "remote directory params wrong\ndirectory unchanged.");
- }
+ if (!apply_remote_pref(cam) && cam->debug == TRUE)
+ fprintf(stderr,
+ "remote directory params wrong\ndirectory unchanged.");
/*
- * this is stupid, even if the string is empty, it will not return NULL
+ * this is stupid, even if the string is empty, it will not return NULL
*/
- if (strlen (gtk_entry_get_text ((GtkEntry *) entry2)) > 0) {
- cam->capturefile =
- g_strdup (gtk_entry_get_text ((GtkEntry *) entry2));
- gconf_client_set_string (cam->gc, KEY2, cam->capturefile, NULL);
+ if (strlen(gtk_entry_get_text((GtkEntry *) entry2)) > 0) {
+ cam->capturefile = g_strdup(gtk_entry_get_text((GtkEntry *) entry2));
+ gconf_client_set_string(cam->gc, KEY2, cam->capturefile, NULL);
}
- if (strlen (gtk_entry_get_text ((GtkEntry *) string_entry)) > 0) {
- cam->ts_string =
- g_strdup (gtk_entry_get_text ((GtkEntry *) string_entry));
- gconf_client_set_string (cam->gc, KEY16, cam->ts_string, NULL);
+ if (strlen(gtk_entry_get_text((GtkEntry *) string_entry)) > 0) {
+ cam->ts_string = g_strdup(gtk_entry_get_text((GtkEntry *) string_entry));
+ gconf_client_set_string(cam->gc, KEY16, cam->ts_string, NULL);
}
if (cam->debug == TRUE) {
- fprintf (stderr, "dir now = %s\nfile now = %s\n", cam->pixdir,
- cam->capturefile);
+ fprintf(stderr, "dir now = %s\nfile now = %s\n", cam->pixdir,
+ cam->capturefile);
}
- gtk_widget_hide (prefswindow);
+ gtk_widget_hide(prefswindow);
+
+}
+void on_quit_activate(GtkMenuItem *menuitem, gpointer user_data)
+{
+ gtk_main_quit();
}
-void on_quit_activate (GtkMenuItem * menuitem, gpointer user_data)
+void on_preferences1_activate(GtkMenuItem *menuitem, gpointer user_data)
{
- gtk_main_quit ();
+ gtk_widget_show(prefswindow);
}
-void on_preferences1_activate (GtkMenuItem * menuitem, gpointer user_data)
+void set_image_scale(cam_t *cam)
{
- gtk_widget_show (prefswindow);
+ gchar *title;
+ float f;
+
+ if (cam->width > 0.66 * cam->screen_width || cam->height > 0.66 * cam->screen_height) {
+ cam->scale = (0.66 * cam->screen_width) / cam->width;
+ f = (0.66 * cam->screen_height) / cam->height;
+
+ if (f < cam->scale)
+ cam->scale = f;
+ if (cam->scale < 0.1f)
+ cam->scale = 0.1f;
+ } else {
+ cam->scale = 1.f;
+ }
+
+ gtk_widget_set_size_request(GTK_WIDGET(gtk_builder_get_object(cam->xml, "da")),
+ cam->width * cam->scale,
+ cam->height * cam->scale);
+
+ gtk_window_resize(GTK_WINDOW(GTK_WIDGET(gtk_builder_get_object(cam->xml, "main_window"))),
+ 320, 240);
+
+ if (cam->scale == (float)1.)
+ title = g_strdup_printf("Camorama - %s - %dx%d", cam->name,
+ cam->width, cam->height);
+ else
+ title = g_strdup_printf("Camorama - %s - %dx%d (scale: %d%%)", cam->name,
+ cam->width, cam->height, (int)(cam->scale * 100.f));
+ gtk_window_set_title(GTK_WINDOW(GTK_WIDGET(gtk_builder_get_object(cam->xml, "main_window"))),
+ title);
+ g_free(title);
}
-void on_change_size_activate (GtkWidget * widget, cam * cam)
+void on_change_size_activate(GtkWidget *widget, cam_t *cam)
{
gchar const *name;
- gchar *title;
- int width = 0, height = 0;
+ unsigned int width = 0, height = 0;
- name = gtk_widget_get_name (widget);
+ name = gtk_widget_get_name(widget);
- if (strcmp (name, "small") == 0) {
+ if (strcmp(name, "small") == 0) {
width = cam->min_width;
height = cam->min_height;
- } else if (strcmp (name, "medium") == 0) {
+ } else if (strcmp(name, "medium") == 0) {
width = cam->max_width / 2;
height = cam->max_height / 2;
- } else if (strcmp (name, "large") == 0) {
+ } else if (strcmp(name, "large") == 0) {
width = cam->max_width;
height = cam->max_height;
} else {
@@ -428,126 +415,105 @@ void on_change_size_activate (GtkWidget * widget, cam * cam)
cam->width = width;
cam->height = height;
- printf("name = %s\n",name);
+ if (cam->debug == TRUE)
+ printf("name = %s\n", name);
if (cam->read == FALSE)
- stop_streaming(cam);
- set_win_info (cam);
+ stop_streaming(cam);
+ set_win_info(cam);
if (cam->read == FALSE)
- start_streaming(cam);
-
- gtk_widget_set_size_request (GTK_WIDGET(gtk_builder_get_object(cam->xml, "da")),
- cam->width, cam->height);
+ start_streaming(cam);
- gtk_window_resize (GTK_WINDOW
- (GTK_WIDGET(gtk_builder_get_object(cam->xml, "main_window"))), 320,
- 240);
-
- title = g_strdup_printf ("Camorama - %s - %dx%d", cam->name,
- cam->width, cam->height);
- gtk_window_set_title (GTK_WINDOW
- (GTK_WIDGET(gtk_builder_get_object(cam->xml, "main_window"))),
- title);
- g_free (title);
+ set_image_scale(cam);
}
-void on_show_adjustments_activate (GtkToggleButton * button, cam * cam)
+void on_show_adjustments_activate(GtkToggleButton *button, cam_t *cam)
{
if (gtk_widget_get_visible(GTK_WIDGET(gtk_builder_get_object(cam->xml, "adjustments_table")))) {
- gtk_widget_hide (GTK_WIDGET(gtk_builder_get_object(cam->xml, "adjustments_table")));
- gtk_window_resize (GTK_WINDOW
- (GTK_WIDGET(gtk_builder_get_object
- (cam->xml, "main_window"))), 320, 240);
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "adjustments_table")));
+ gtk_window_resize(GTK_WINDOW(GTK_WIDGET(gtk_builder_get_object(cam->xml, "main_window"))),
+ 320, 240);
cam->show_adjustments = FALSE;
} else {
- gtk_widget_show (GTK_WIDGET(gtk_builder_get_object(cam->xml, "adjustments_table")));
+ gtk_widget_show(GTK_WIDGET(gtk_builder_get_object(cam->xml, "adjustments_table")));
cam->show_adjustments = TRUE;
}
- gconf_client_set_bool (cam->gc, KEY22, cam->show_adjustments, NULL);
+ gconf_client_set_bool(cam->gc, KEY22, cam->show_adjustments, NULL);
}
-void
-on_show_effects_activate(GtkMenuItem* menuitem, cam* cam) {
- GtkWidget* effects = GTK_WIDGET(gtk_builder_get_object(cam->xml, "scrolledwindow_effects"));
- cam->show_effects = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem));
-
- if(!cam->show_effects) {
- gtk_widget_hide(effects);
- gtk_window_resize(GTK_WINDOW(GTK_WIDGET(gtk_builder_get_object(cam->xml, "main_window"))), 320, 240);
- } else {
- gtk_widget_show(effects);
- }
+void on_show_effects_activate(GtkMenuItem *menuitem, cam_t *cam)
+{
+ GtkWidget *effects = GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "scrolledwindow_effects"));
+ cam->show_effects = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem));
+
+ if (!cam->show_effects) {
+ gtk_widget_hide(effects);
+ gtk_window_resize(GTK_WINDOW(GTK_WIDGET(gtk_builder_get_object(cam->xml, "main_window"))),
+ 320, 240);
+ } else {
+ gtk_widget_show(effects);
+ }
+
+ gconf_client_set_bool(cam->gc, KEY23, cam->show_effects, NULL);
+}
- gconf_client_set_bool(cam->gc, KEY23, cam->show_effects, NULL);
+static void about_widget_destroy(GtkWidget *widget)
+{
+ gtk_widget_destroy(about);
+ about = NULL;
}
-void on_about_activate (GtkMenuItem * menuitem, cam * cam)
+
+void on_about_activate(GtkMenuItem *menuitem, cam_t *cam)
{
- static GtkWidget *about = NULL;
const gchar *authors[] = {
- "Greg Jones <greg@fixedgear.org>",
+ "Greg Jones <greg@fixedgear.org>",
"Jens Knutson <tempest@magusbooks.com>",
- NULL
+ NULL
};
- const gchar *documenters[] = { NULL };
- GdkPixbuf *logo = gdk_pixbuf_new_from_file (PACKAGE_DATA_DIR
- "/pixmaps/camorama.png", NULL);
- char *translators = _("translator_credits");
+ const gchar *comments = _("View, alter and save images from a webcam");
+ const gchar *translators = _("translator_credits");
+ GdkPixbuf *logo = gdk_pixbuf_new_from_file(PACKAGE_DATA_DIR
+ "/pixmaps/camorama.png",
+ NULL);
- if (!strcmp (translators, "translator_credits"))
+ if (!strcmp(translators, "translator_credits"))
translators = NULL;
if (about != NULL) {
- gtk_window_present (GTK_WINDOW (about));
+ gtk_window_present(GTK_WINDOW(about));
return;
}
-
- about = g_object_new (GTK_TYPE_ABOUT_DIALOG,
- "name", "Camorama",
- "version", PACKAGE_VERSION,
- "copyright", "Copyright \xc2\xa9 2002 Greg Jones",
- "comments", _("View, alter and save images from a webcam"),
- "authors", authors,
- "documenters", documenters,
- "translator-credits", translators,
- "logo", logo,
- "license", "GPL version 2.\n\n"
- "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 version 2 of the License.\n\n"
- "This program 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 General Public License for more details.",
- "wrap-license", TRUE,
- NULL);
- gtk_window_set_transient_for (GTK_WINDOW (about),
- GTK_WINDOW (GTK_WIDGET(gtk_builder_get_object
- (cam->xml, "main_window"))));
-
- g_object_add_weak_pointer (G_OBJECT (about), (void **) &(about));
- g_object_unref (logo);
- g_signal_connect (about, "response",
- G_CALLBACK (gtk_widget_destroy),
- NULL);
- gtk_widget_show (about);
-}
-
-static void
-apply_filters(cam* cam) {
- /* v4l has reverse rgb order from what camora expect so call the color
- filter to fix things up before running the user selected filters */
- camorama_filter_color_filter(NULL, cam->pic_buf, cam->width, cam->height, cam->bpp / 8);
- camorama_filter_chain_apply(cam->filter_chain, cam->pic_buf, cam->width, cam->height, cam->bpp / 8);
-#warning "FIXME: enable the threshold channel filter"
-// if((effect_mask & CAMORAMA_FILTER_THRESHOLD_CHANNEL) != 0)
-// threshold_channel (cam->pic_buf, cam->width, cam->height, cam->dither);
-#warning "FIXME: enable the threshold filter"
-// if((effect_mask & CAMORAMA_FILTER_THRESHOLD) != 0)
-// threshold (cam->pic_buf, cam->width, cam->height, cam->dither);
-}
-
-#define MULT(d,c,a,t) G_STMT_START { t = c * a + 0x7f; d = ((t >> 8) + t) >> 8; } G_STMT_END
+ about = g_object_new(GTK_TYPE_ABOUT_DIALOG,
+ "name", "Camorama",
+ "version", PACKAGE_VERSION,
+ "copyright", "Copyright \xc2\xa9 2002 Greg Jones",
+ "comments", comments,
+ "authors", authors,
+ "translator-credits", translators,
+ "logo", logo,
+ "license", GPL_LICENSE,
+ "wrap-license", TRUE,
+ NULL);
+ gtk_window_set_transient_for(GTK_WINDOW(about),
+ GTK_WINDOW(GTK_WIDGET(gtk_builder_get_object(cam->xml, "main_window"))));
+ g_signal_connect(about, "response",
+ G_CALLBACK(about_widget_destroy), NULL);
+ gtk_widget_show(about);
+}
+
+static void apply_filters(cam_t *cam, unsigned char *pic_buf)
+{
+ /* v4l has reverse rgb order from what camora expect so call the color
+ filter to fix things up before running the user selected filters */
+ camorama_filter_color_filter(NULL, pic_buf, cam->width,
+ cam->height, cam->bpp / 8);
+ camorama_filter_chain_apply(cam->filter_chain, pic_buf,
+ cam->width, cam->height, cam->bpp / 8);
+}
+
+#define MULT(d, c, a, t) G_STMT_START { t = c * a + 0x7f; d = ((t >> 8) + t) >> 8; } G_STMT_END
/*
* As GTK+2 doesn't have gdk_cairo_surface_create_from_pixbuf, we
@@ -555,281 +521,310 @@ apply_filters(cam* cam) {
* https://github.com/bratsche/gtk-/blob/master/gdk/gdkcairo.c
* With a small backport.
*/
+#if GTK_MAJOR_VERSION < 3
static cairo_surface_t *create_from_pixbuf(const GdkPixbuf *pixbuf,
- GdkWindow *for_window)
+ GdkWindow *for_window)
{
- gint width = gdk_pixbuf_get_width (pixbuf);
- gint height = gdk_pixbuf_get_height (pixbuf);
- guchar *gdk_pixels = gdk_pixbuf_get_pixels (pixbuf);
- int gdk_rowstride = gdk_pixbuf_get_rowstride (pixbuf);
- int n_channels = gdk_pixbuf_get_n_channels (pixbuf);
+ gint width = gdk_pixbuf_get_width(pixbuf);
+ gint height = gdk_pixbuf_get_height(pixbuf);
+ guchar *gdk_pixels = gdk_pixbuf_get_pixels(pixbuf);
+ int gdk_rowstride = gdk_pixbuf_get_rowstride(pixbuf);
+ int n_channels = gdk_pixbuf_get_n_channels(pixbuf);
int cairo_stride;
guchar *cairo_pixels;
- cairo_format_t format;
cairo_surface_t *surface;
int j;
- format = CAIRO_FORMAT_RGB24;
-
surface = cairo_image_surface_create(CAIRO_FORMAT_RGB24,
- width, height);
- cairo_stride = cairo_image_surface_get_stride (surface);
- cairo_pixels = cairo_image_surface_get_data (surface);
+ width, height);
+ cairo_stride = cairo_image_surface_get_stride(surface);
+ cairo_pixels = cairo_image_surface_get_data(surface);
- for (j = height; j; j--) {
- guchar *p = gdk_pixels;
- guchar *q = cairo_pixels;
+ for (j = height; j; j--) {
+ guchar *p = gdk_pixels;
+ guchar *q = cairo_pixels;
- if (n_channels == 3) {
- guchar *end = p + 3 * width;
+ if (n_channels == 3) {
+ guchar *end = p + 3 * width;
- while (p < end) {
+ while (p < end) {
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- q[0] = p[2];
- q[1] = p[1];
- q[2] = p[0];
+ q[0] = p[2];
+ q[1] = p[1];
+ q[2] = p[0];
#else
- q[1] = p[0];
- q[2] = p[1];
- q[3] = p[2];
+ q[1] = p[0];
+ q[2] = p[1];
+ q[3] = p[2];
#endif
- p += 3;
- q += 4;
- }
- } else {
- guchar *end = p + 4 * width;
- guint t1,t2,t3;
-
- while (p < end) {
+ p += 3;
+ q += 4;
+ }
+ } else {
+ guchar *end = p + 4 * width;
+ guint t1, t2, t3;
+
+ while (p < end) {
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- MULT(q[0], p[2], p[3], t1);
- MULT(q[1], p[1], p[3], t2);
- MULT(q[2], p[0], p[3], t3);
- q[3] = p[3];
+ MULT(q[0], p[2], p[3], t1);
+ MULT(q[1], p[1], p[3], t2);
+ MULT(q[2], p[0], p[3], t3);
+ q[3] = p[3];
#else
- q[0] = p[3];
- MULT(q[1], p[0], p[3], t1);
- MULT(q[2], p[1], p[3], t2);
- MULT(q[3], p[2], p[3], t3);
+ q[0] = p[3];
+ MULT(q[1], p[0], p[3], t1);
+ MULT(q[2], p[1], p[3], t2);
+ MULT(q[3], p[2], p[3], t3);
#endif
- p += 4;
- q += 4;
+ p += 4;
+ q += 4;
}
-
#undef MULT
}
- gdk_pixels += gdk_rowstride;
- cairo_pixels += cairo_stride;
+ gdk_pixels += gdk_rowstride;
+ cairo_pixels += cairo_stride;
}
- cairo_surface_mark_dirty (surface);
+ cairo_surface_mark_dirty(surface);
return surface;
}
-static void show_buffer(cam* cam)
+static void show_buffer(cam_t *cam)
{
- int i;
- GdkPixbuf *pb;
- unsigned char *pic_buf = cam->pic_buf;
+ GtkWidget *widget;
+ GdkWindow *window;
+ cairo_surface_t *surface;
+ cairo_t *cr;
const GdkRectangle rect = {
.x = 0, .y = 0,
.width = cam->width, .height = cam->height
};
- /*
- * refer the frame
- */
- if (cam->pixformat == V4L2_PIX_FMT_YUV420) {
- yuv420p_to_rgb (cam->pic_buf, cam->tmp, cam->width, cam->height, cam->bpp / 8);
- pic_buf = cam->tmp;
- }
-
- apply_filters(cam);
-
- /* Use cairo to display the pixel buffer */
-
- pb = gdk_pixbuf_new_from_data(pic_buf, GDK_COLORSPACE_RGB, FALSE, 8,
- cam->width, cam->height,
- (cam->width * cam->bpp / 8), NULL,
- NULL);
+ if (!cam->pb)
+ return;
- GtkWidget *widget = GTK_WIDGET(gtk_builder_get_object(cam->xml, "da"));
- GdkWindow *window = gtk_widget_get_window(widget);
+ widget = GTK_WIDGET(gtk_builder_get_object(cam->xml, "da"));
+ window = gtk_widget_get_window(widget);
- cairo_surface_t *surface = create_from_pixbuf(pb, window);
- cairo_t *cr = gdk_cairo_create(window);
+ surface = create_from_pixbuf(cam->pb, window);
+ cr = gdk_cairo_create(window);
cairo_set_source_surface(cr, surface, 0, 0);
gdk_cairo_rectangle(cr, &rect);
+ if (cam->scale != 1.f)
+ cairo_scale(cr, cam->scale, cam->scale);
+
cairo_fill(cr);
cairo_destroy(cr);
+ cairo_surface_destroy(surface);
frames++;
frames2++;
}
-
+#else
/*
- * get image from cam - does all the work ;)
+ * GTK 3 way: use a drawing callback
*/
-gint
-read_timeout_func(cam* cam) {
- v4l2_read (cam->dev, cam->pic_buf,
- (cam->width * cam->height * cam->bpp / 8));
+void draw_callback(GtkWidget *widget, cairo_t *cr, cam_t *cam)
+{
+ GdkWindow *window;
+ cairo_surface_t *surface;
+ const GdkRectangle rect = {
+ .x = 0, .y = 0,
+ .width = cam->width, .height = cam->height
+ };
+
+ if (!cam->pb)
+ return;
+
+ window = gtk_widget_get_window(widget);
+ surface = gdk_cairo_surface_create_from_pixbuf(cam->pb, 1, window);
+ cairo_set_source_surface(cr, surface, 0, 0);
+ gdk_cairo_rectangle(cr, &rect);
+ cairo_fill(cr);
+ cairo_surface_destroy(surface);
+
+ frames++;
+ frames2++;
+}
+
+static inline void show_buffer(cam_t *cam)
+{
+ gtk_widget_queue_draw(GTK_WIDGET(gtk_builder_get_object(cam->xml, "da")));
+}
+#endif
+
+/*
+* get image from cam - does all the work ;)
+*/
+gint read_timeout_func(cam_t *cam)
+{
+ unsigned char *pic_buf = cam->pic_buf;
+
+ v4l2_read(cam->dev, cam->pic_buf,
+ (cam->width * cam->height * cam->bpp / 8));
+
+ if (cam->pixformat == V4L2_PIX_FMT_YUV420) {
+ yuv420p_to_rgb(cam->pic_buf, cam->tmp, cam->width, cam->height,
+ cam->bpp / 8);
+ pic_buf = cam->tmp;
+ }
+ apply_filters(cam, pic_buf);
+ cam->pb = gdk_pixbuf_new_from_data(pic_buf, GDK_COLORSPACE_RGB, FALSE, 8,
+ cam->width, cam->height,
+ (cam->width * cam->bpp / 8),
+ NULL, NULL);
show_buffer(cam);
return TRUE;
}
-gint timeout_func (cam * cam)
+gint timeout_func(cam_t *cam)
{
- capture_buffers(cam, cam->pic_buf, cam->width * cam->height * cam->bytesperline);
+ unsigned char *pic_buf = cam->pic_buf;
+
+ capture_buffers(cam, cam->pic_buf,
+ cam->width * cam->height * cam->bytesperline);
+
+ if (cam->pixformat == V4L2_PIX_FMT_YUV420) {
+ yuv420p_to_rgb(cam->pic_buf, cam->tmp, cam->width, cam->height,
+ cam->bpp / 8);
+ pic_buf = cam->tmp;
+ }
+ apply_filters(cam, pic_buf);
+ cam->pb = gdk_pixbuf_new_from_data(pic_buf, GDK_COLORSPACE_RGB, FALSE, 8,
+ cam->width, cam->height,
+ (cam->width * cam->bpp / 8),
+ NULL, NULL);
show_buffer(cam);
return TRUE;
}
-gint fps (GtkWidget * sb)
+gint fps(GtkWidget *sb)
{
gchar *stat;
- guint cont = gtk_statusbar_get_context_id (GTK_STATUSBAR(sb), "context");
+ guint cont = gtk_statusbar_get_context_id(GTK_STATUSBAR(sb), "context");
seconds++;
- stat = g_strdup_printf (_("%.2f fps - current %.2f fps - average"),
- (float) frames / (float) (2),
- (float) frames2 / (float) (seconds * 2));
+ stat = g_strdup_printf(_("%.2f fps - current %.2f fps - average"),
+ frames / 2., frames2 / (seconds * 2.));
frames = 0;
- gtk_statusbar_push (GTK_STATUSBAR(sb), cont, stat);
- g_free (stat);
+ gtk_statusbar_push(GTK_STATUSBAR(sb), cont, stat);
+ g_free(stat);
return 1;
}
-void on_status_show (GtkWidget * sb, cam * cam)
+void on_status_show(GtkWidget *sb, cam_t *cam)
{
cam->status = sb;
}
-void capture_func (GtkWidget * widget, cam * cam)
+void capture_func(GtkWidget *widget, cam_t *cam)
{
- if (cam->debug == TRUE) {
- printf
- ("capture_func\nx = %d, y = %d, depth = %d, realloc size = %d\n",
- cam->width, cam->height, cam->bpp, (cam->width * cam->height * cam->bpp / 8));
- }
+ if (cam->debug == TRUE)
+ printf("capture_func\nx = %d, y = %d, depth = %d, realloc size = %d\n",
+ cam->width, cam->height, cam->bpp,
+ (cam->width * cam->height * cam->bpp / 8));
- memcpy (cam->tmp, cam->pic_buf, cam->width * cam->height * cam->bpp / 8);
+ memcpy(cam->tmp, cam->pic_buf,
+ cam->width * cam->height * cam->bpp / 8);
- if (cam->rcap == TRUE) {
- remote_save (cam);
- }
- if (cam->cap == TRUE) {
- local_save (cam);
- }
+ if (cam->rcap == TRUE)
+ remote_save(cam);
+ if (cam->cap == TRUE)
+ local_save(cam);
}
-gint timeout_capture_func (cam * cam)
+gint timeout_capture_func(cam_t *cam)
{
- /* GdkRectangle rect;
- * rect->x = 0; rect->y = 0;
- * rect->width = cam->width; rect->height = cam->height; */
-
/* need to return true, or the timeout will be destroyed - don't forget! :) */
if (cam->hidden == TRUE) {
- /* call timeout_func to get a new picture. stupid, but it works.
- * also need to add this to capture_func
- * maybe add a "window_state_event" handler to do the same when window is iconified */
-
- pt2Function (cam);
- pt2Function (cam);
- pt2Function (cam);
- pt2Function (cam);
+ /*
+ * call timeout_func to get a new picture. stupid, but it works.
+ * also need to add this to capture_func
+ * maybe add a "window_state_event" handler to do the same when
+ * window is iconified
+ */
+ pt2Function(cam);
+ pt2Function(cam);
+ pt2Function(cam);
+ pt2Function(cam);
}
- memcpy (cam->tmp, cam->pic_buf, cam->width * cam->height * cam->bpp / 8);
+ memcpy(cam->tmp, cam->pic_buf,
+ cam->width * cam->height * cam->bpp / 8);
+
+ if (cam->cap == TRUE)
+ local_save(cam);
+
+ if (cam->rcap == TRUE)
+ remote_save(cam);
- if (cam->cap == TRUE) {
- local_save (cam);
- }
- if (cam->rcap == TRUE) {
- remote_save (cam);
- }
return 1;
}
-void contrast_change (GtkHScale * sc1, cam * cam)
+void contrast_change(GtkHScale *sc1, cam_t *cam)
{
- cam->contrast = 256 * (int) gtk_range_get_value ((GtkRange *) sc1);
+ cam->contrast = 256 * (int)gtk_range_get_value((GtkRange *) sc1);
v4l2_set_control(cam->dev, V4L2_CID_CONTRAST, cam->contrast);
}
-void brightness_change (GtkHScale * sc1, cam * cam)
+void brightness_change(GtkHScale *sc1, cam_t *cam)
{
- cam->brightness = 256 * (int) gtk_range_get_value ((GtkRange *) sc1);
+ cam->brightness = 256 * (int)gtk_range_get_value((GtkRange *) sc1);
v4l2_set_control(cam->dev, V4L2_CID_BRIGHTNESS, cam->brightness);
}
-void colour_change (GtkHScale * sc1, cam * cam)
+void colour_change(GtkHScale *sc1, cam_t *cam)
{
- cam->colour = 256 * (int) gtk_range_get_value ((GtkRange *) sc1);
+ cam->colour = 256 * (int)gtk_range_get_value((GtkRange *) sc1);
v4l2_set_control(cam->dev, V4L2_CID_SATURATION, cam->colour);
}
-void hue_change (GtkHScale * sc1, cam * cam)
+void hue_change(GtkHScale *sc1, cam_t *cam)
{
- cam->hue = 256 * (int) gtk_range_get_value ((GtkRange *) sc1);
+ cam->hue = 256 * (int)gtk_range_get_value((GtkRange *) sc1);
v4l2_set_control(cam->dev, V4L2_CID_HUE, cam->hue);
}
-void wb_change (GtkHScale * sc1, cam * cam)
+void wb_change(GtkHScale *sc1, cam_t *cam)
{
- cam->whiteness = 256 * (int) gtk_range_get_value ((GtkRange *) sc1);
+ cam->whiteness = 256 * (int)gtk_range_get_value((GtkRange *) sc1);
v4l2_set_control(cam->dev, V4L2_CID_WHITENESS, cam->whiteness);
}
-static void help_cb (GtkWidget * widget, gpointer data)
-{
- GError *error = NULL;
-
- if (error != NULL) {
- /*
- * FIXME: This is bad :)
- */
- g_warning ("%s\n", error->message);
- g_error_free (error);
- }
-}
-
-void update_tooltip (cam * cam)
+void update_tooltip(cam_t *cam)
{
gchar *tooltip_text;
- if (cam->debug == TRUE) {
- printf ("update_tooltip called\n");
- }
+ if (cam->debug == TRUE)
+ printf("update_tooltip called\n");
+
if (cam->acap == TRUE) {
- tooltip_text =
- g_strdup_printf
- (_("Local Capture: %d\nRemote Capture: %d\nCapture Interval: %d"),
- cam->cap, cam->rcap, cam->timeout_interval / 60000);
- if (cam->debug == TRUE) {
- printf ("tip - acap on\n");
- }
+ tooltip_text = g_strdup_printf(_("Local Capture: %d\n"
+ "Remote Capture: %d\n"
+ "Capture Interval: %d"),
+ cam->cap, cam->rcap,
+ cam->timeout_interval / 60000);
+ if (cam->debug == TRUE)
+ printf("tip - acap on\n");
} else {
- if (cam->debug == TRUE) {
- printf ("tip - acap off\n");
- }
- tooltip_text = g_strdup_printf (_("Automatic Capture Disabled"));
+ if (cam->debug == TRUE)
+ printf("tip - acap off\n");
+ tooltip_text = g_strdup_printf(_("Automatic Capture Disabled"));
}
gtk_status_icon_set_tooltip_text(cam->tray_icon, tooltip_text);
- g_free (tooltip_text);
+ g_free(tooltip_text);
}
diff --git a/src/callbacks.h b/src/callbacks.h
index 3b3fa98..3b6007c 100644
--- a/src/callbacks.h
+++ b/src/callbacks.h
@@ -1,73 +1,76 @@
#ifndef CAMORAMA_CALLBACKS_H
#define CAMORAMA_CALLBACKS_H
-#include <gtk/gtk.h>
+#include "v4l.h"
#include "fileio.h"
#include <gconf/gconf-client.h>
G_BEGIN_DECLS
-void on_change_size_activate (GtkWidget * widget, cam * cam);
-void on_quit_activate (GtkMenuItem * menuitem, gpointer user_data);
-void gconf_notify_func (GConfClient * client, guint cnxn_id,
- GConfEntry * entry, char *);
-void gconf_notify_func_bool (GConfClient * client, guint cnxn_id,
- GConfEntry * entry, gboolean val);
-void gconf_notify_func_int (GConfClient * client, guint cnxn_id,
- GConfEntry * entry, int val);
-int delete_event (GtkWidget *, gpointer data);
-void cap_func (GtkWidget *, cam *);
-void rcap_func (GtkWidget *, cam *);
-void acap_func (GtkWidget *, cam *);
-void set_sensitive (cam *);
-void tt_enable_func (GtkWidget *, cam *);
-void interval_change (GtkWidget *, cam *);
-void ts_func (GtkWidget *, cam *);
-void customstring_func (GtkWidget *, cam *);
-void drawdate_func (GtkWidget *, cam *);
-void append_func (GtkWidget *, cam *);
-void rappend_func (GtkWidget *, cam *);
-void jpg_func (GtkWidget *, cam *);
-void png_func (GtkWidget *, cam *);
-void ppm_func (GtkWidget *, cam *);
-void rts_func (GtkWidget *, cam *);
-void rjpg_func (GtkWidget *, cam *);
-void rpng_func (GtkWidget *, cam *);
-gint (*pt2Function) (cam *);
-void rppm_func (GtkWidget *, cam *);
-void on_preferences1_activate (GtkMenuItem * menuitem, gpointer user_data);
-void on_about_activate (GtkMenuItem * menuitem, cam *cam);
-void on_show_adjustments_activate (GtkToggleButton * button, cam *);
-void on_show_effects_activate (GtkMenuItem * menuitem, cam *);
-void prefs_func (GtkWidget *, cam *);
-void capture_func2 (GtkWidget *, cam *);
-void capture_func (GtkWidget *, cam *);
-gint timeout_capture_func (cam *);
-gint fps (GtkWidget *);
-gint timeout_func (cam *);
-gint read_timeout_func (cam *);
-void edge_func1 (GtkToggleButton *, gpointer);
-void sobel_func (GtkToggleButton *, gpointer);
-void fix_colour_func (GtkToggleButton *, char *);
-void threshold_func1 (GtkToggleButton *, gpointer);
-void threshold_ch_func (GtkToggleButton *, gpointer);
-void edge_func3 (GtkToggleButton *, gpointer);
-void mirror_func (GtkToggleButton *, gpointer);
-void reichardt_func (GtkToggleButton *, gpointer);
-void colour_func (GtkToggleButton *, gpointer);
-void smooth_func (GtkToggleButton *, gpointer);
-void negative_func (GtkToggleButton *, gpointer);
-void on_scale1_drag_data_received (GtkHScale *, cam *);
-void on_status_show (GtkWidget *, cam *);
-void contrast_change (GtkHScale *, cam *);
-void brightness_change (GtkHScale *, cam *);
-void colour_change (GtkHScale *, cam *);
-void hue_change (GtkHScale *, cam *);
-void wb_change (GtkHScale *, cam *);
-gboolean on_drawingarea_expose_event (GtkWidget *, GdkEventExpose *, cam *);
-void update_tooltip (cam * cam);
+void on_change_size_activate(GtkWidget * widget, cam_t *cam);
+void on_quit_activate(GtkMenuItem *menuitem, gpointer user_data);
+void gconf_notify_func(GConfClient *client, guint cnxn_id,
+ GConfEntry *entry, char **);
+void gconf_notify_func_bool(GConfClient *client, guint cnxn_id,
+ GConfEntry *entry, gboolean *val);
+void gconf_notify_func_int(GConfClient *client, guint cnxn_id,
+ GConfEntry *entry, int *val);
+int delete_event(GtkWidget *, gpointer data);
+void cap_func(GtkWidget *, cam_t *);
+void rcap_func(GtkWidget *, cam_t *);
+void acap_func(GtkWidget *, cam_t *);
+void set_sensitive(cam_t *);
+void tt_enable_func(GtkWidget *, cam_t *);
+void interval_change(GtkWidget *, cam_t *);
+void ts_func(GtkWidget *, cam_t *);
+void customstring_func(GtkWidget *, cam_t *);
+void drawdate_func(GtkWidget *, cam_t *);
+void append_func(GtkWidget *, cam_t *);
+void rappend_func(GtkWidget *, cam_t *);
+void jpg_func(GtkWidget *, cam_t *);
+void png_func(GtkWidget *, cam_t *);
+void ppm_func(GtkWidget *, cam_t *);
+void rts_func(GtkWidget *, cam_t *);
+void rjpg_func(GtkWidget *, cam_t *);
+void rpng_func(GtkWidget *, cam_t *);
+void draw_callback(GtkWidget *, cairo_t *, cam_t *cam);
-G_END_DECLS
+gint(*pt2Function) (cam_t *);
+void rppm_func(GtkWidget *, cam_t *);
+void on_preferences1_activate(GtkMenuItem *menuitem, gpointer user_data);
+void on_about_activate(GtkMenuItem *menuitem, cam_t *cam);
+void on_show_adjustments_activate(GtkToggleButton *button, cam_t *);
+void on_show_effects_activate(GtkMenuItem *menuitem, cam_t *);
+void prefs_func(GtkWidget *, cam_t *);
+void capture_func2(GtkWidget *, cam_t *);
+void capture_func(GtkWidget *, cam_t *);
+gint timeout_capture_func(cam_t *);
+gint fps(GtkWidget *);
+gint timeout_func(cam_t *);
+gint read_timeout_func(cam_t *);
+void edge_func1(GtkToggleButton *, gpointer);
+void sobel_func(GtkToggleButton *, gpointer);
+void fix_colour_func(GtkToggleButton *, char *);
+void threshold_func1(GtkToggleButton *, gpointer);
+void threshold_ch_func(GtkToggleButton *, gpointer);
+void edge_func3(GtkToggleButton *, gpointer);
+void mirror_func(GtkToggleButton *, gpointer);
+void reichardt_func(GtkToggleButton *, gpointer);
+void colour_func(GtkToggleButton *, gpointer);
+void smooth_func(GtkToggleButton *, gpointer);
+void negative_func(GtkToggleButton *, gpointer);
+void on_scale1_drag_data_received(GtkHScale *, cam_t *);
+void on_status_show(GtkWidget *, cam_t *);
+void contrast_change(GtkHScale *, cam_t *);
+void brightness_change(GtkHScale *, cam_t *);
+void colour_change(GtkHScale *, cam_t *);
+void hue_change(GtkHScale *, cam_t *);
+void wb_change(GtkHScale *, cam_t *);
+gboolean on_drawingarea_expose_event(GtkWidget *, GdkEventExpose *,
+ cam_t *);
+void update_tooltip(cam_t *cam);
+void set_image_scale(cam_t *cam);
-#endif /* !CAMORAMA_CALLBACKS_H */
+G_END_DECLS
+#endif /* !CAMORAMA_CALLBACKS_H */
diff --git a/src/camorama-filter-chain.c b/src/camorama-filter-chain.c
index 78f9092..92c6f03 100644
--- a/src/camorama-filter-chain.c
+++ b/src/camorama-filter-chain.c
@@ -21,69 +21,84 @@
* USA
*/
+#include "v4l.h"
#include "camorama-filter-chain.h"
#include "filter.h"
struct CamoramaImage {
- guchar* buf;
- gint width;
- gint height;
- gint depth;
+ guchar *buf;
+ gint width;
+ gint height;
+ gint depth;
};
-CamoramaFilterChain*
-camorama_filter_chain_new(void) {
- return g_object_new(CAMORAMA_TYPE_FILTER_CHAIN, NULL);
+CamoramaFilterChain *camorama_filter_chain_new(void)
+{
+ return g_object_new(CAMORAMA_TYPE_FILTER_CHAIN, NULL);
}
-void
-camorama_filter_chain_append(CamoramaFilterChain* self, GType filter_type) {
- GtkTreeIter iter;
- GtkListStore* store;
- CamoramaFilter* filter;
- g_return_if_fail(g_type_is_a(filter_type, CAMORAMA_TYPE_FILTER));
-
- store = GTK_LIST_STORE(self);
- gtk_list_store_append(store, &iter);
- filter = g_object_new(filter_type, NULL);
- gtk_list_store_set(store, &iter,
- CAMORAMA_FILTER_CHAIN_COL_FILTER, filter,
- CAMORAMA_FILTER_CHAIN_COL_NAME, camorama_filter_get_name(filter),
- -1);
- g_object_unref(filter);
+void camorama_filter_chain_append(CamoramaFilterChain *self,
+ GType filter_type)
+{
+ GtkTreeIter iter;
+ GtkListStore *store;
+ CamoramaFilter *filter;
+
+ g_return_if_fail(g_type_is_a(filter_type, CAMORAMA_TYPE_FILTER));
+
+ store = GTK_LIST_STORE(self);
+ gtk_list_store_append(store, &iter);
+ filter = g_object_new(filter_type, NULL);
+ gtk_list_store_set(store, &iter,
+ CAMORAMA_FILTER_CHAIN_COL_FILTER, filter,
+ CAMORAMA_FILTER_CHAIN_COL_NAME,
+ camorama_filter_get_name(filter), -1);
+ g_object_unref(filter);
}
-static gboolean
-camorama_filter_chain_apply_filter(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter, gpointer user_data) {
- struct CamoramaImage* img = user_data;
- CamoramaFilter* filter = NULL;
- gtk_tree_model_get(model, iter,
- CAMORAMA_FILTER_CHAIN_COL_FILTER, &filter,
- -1);
- camorama_filter_apply(filter, img->buf, img->width, img->height, img->depth);
+static gboolean camorama_filter_chain_apply_filter(GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer user_data)
+{
+ struct CamoramaImage *img = user_data;
+ CamoramaFilter *filter = NULL;
- return FALSE;
+ gtk_tree_model_get(model, iter,
+ CAMORAMA_FILTER_CHAIN_COL_FILTER, &filter, -1);
+ camorama_filter_apply(filter, img->buf, img->width, img->height,
+ img->depth);
+
+ return FALSE;
}
-void
-camorama_filter_chain_apply(CamoramaFilterChain* self, guchar* image, gint width, gint height, gint depth) {
- struct CamoramaImage img = {image, width, height, depth};
-
- gtk_tree_model_foreach(GTK_TREE_MODEL(self), camorama_filter_chain_apply_filter, &img);
+void camorama_filter_chain_apply(CamoramaFilterChain *self,
+ guchar *image, gint width, gint height,
+ gint depth)
+{
+ struct CamoramaImage img = { image, width, height, depth };
+
+ gtk_tree_model_foreach(GTK_TREE_MODEL(self),
+ camorama_filter_chain_apply_filter, &img);
}
/* GType stuff */
-G_DEFINE_TYPE(CamoramaFilterChain, camorama_filter_chain, GTK_TYPE_LIST_STORE);
-
-static void
-camorama_filter_chain_init(CamoramaFilterChain* self) {
- GType column_types[CAMORAMA_FILTER_CHAIN_N_COLUMNS];
- column_types[CAMORAMA_FILTER_CHAIN_COL_NAME] = G_TYPE_STRING;
- column_types[CAMORAMA_FILTER_CHAIN_COL_FILTER] = G_TYPE_OBJECT;
- gtk_list_store_set_column_types(GTK_LIST_STORE(self), CAMORAMA_FILTER_CHAIN_N_COLUMNS, column_types);
-}
+G_DEFINE_TYPE(CamoramaFilterChain, camorama_filter_chain,
+ GTK_TYPE_LIST_STORE);
+
+static void camorama_filter_chain_init(CamoramaFilterChain *self)
+{
+ GType column_types[CAMORAMA_FILTER_CHAIN_N_COLUMNS];
-static void
-camorama_filter_chain_class_init(CamoramaFilterChainClass* self) {}
+ column_types[CAMORAMA_FILTER_CHAIN_COL_NAME] = G_TYPE_STRING;
+ column_types[CAMORAMA_FILTER_CHAIN_COL_FILTER] = G_TYPE_OBJECT;
+ gtk_list_store_set_column_types(GTK_LIST_STORE(self),
+ CAMORAMA_FILTER_CHAIN_N_COLUMNS,
+ column_types);
+}
+static void camorama_filter_chain_class_init(CamoramaFilterChainClass *
+ self)
+{
+}
diff --git a/src/camorama-filter-chain.h b/src/camorama-filter-chain.h
index c8d04a1..ba5b40c 100644
--- a/src/camorama-filter-chain.h
+++ b/src/camorama-filter-chain.h
@@ -24,40 +24,35 @@
#ifndef CAMORAMA_FILTER_CHAIN_H
#define CAMORAMA_FILTER_CHAIN_H
-#include <gtk/gtk.h>
-
G_BEGIN_DECLS
-typedef struct _CamoramaFilterChain CamoramaFilterChain;
+typedef struct _CamoramaFilterChain CamoramaFilterChain;
typedef struct _CamoramaFilterChainClass CamoramaFilterChainClass;
#define CAMORAMA_TYPE_FILTER_CHAIN (camorama_filter_chain_get_type())
GType camorama_filter_chain_get_type(void);
-CamoramaFilterChain* camorama_filter_chain_new (void);
-void camorama_filter_chain_append(CamoramaFilterChain* self,
- GType filter_type);
-void camorama_filter_chain_apply (CamoramaFilterChain* self,
- guchar* image,
- gint width,
- gint height,
- gint depth);
+CamoramaFilterChain *camorama_filter_chain_new(void);
+void camorama_filter_chain_append(CamoramaFilterChain *self,
+ GType filter_type);
+void camorama_filter_chain_apply(CamoramaFilterChain *self,
+ guchar *image,
+ gint width, gint height, gint depth);
struct _CamoramaFilterChain {
- GtkListStore base_instance;
+ GtkListStore base_instance;
};
struct _CamoramaFilterChainClass {
- GtkListStoreClass base_class;
+ GtkListStoreClass base_class;
};
enum {
- CAMORAMA_FILTER_CHAIN_COL_NAME,
- CAMORAMA_FILTER_CHAIN_COL_FILTER,
- CAMORAMA_FILTER_CHAIN_N_COLUMNS
+ CAMORAMA_FILTER_CHAIN_COL_NAME,
+ CAMORAMA_FILTER_CHAIN_COL_FILTER,
+ CAMORAMA_FILTER_CHAIN_N_COLUMNS
};
G_END_DECLS
-
-#endif /* !CAMORAMA_FILTER_CHAIN_H */
+#endif /* !CAMORAMA_FILTER_CHAIN_H */
diff --git a/src/camorama-filter-laplace.c b/src/camorama-filter-laplace.c
index 25db6bd..04c47a3 100644
--- a/src/camorama-filter-laplace.c
+++ b/src/camorama-filter-laplace.c
@@ -32,98 +32,104 @@
#include <glib/gi18n.h>
/* GType stuff for CamoramaFilterLaplace */
-typedef struct _CamoramaFilter CamoramaFilterLaplace;
+typedef struct _CamoramaFilter CamoramaFilterLaplace;
typedef struct _CamoramaFilterClass CamoramaFilterLaplaceClass;
-G_DEFINE_TYPE(CamoramaFilterLaplace, camorama_filter_laplace, CAMORAMA_TYPE_FILTER);
+G_DEFINE_TYPE(CamoramaFilterLaplace, camorama_filter_laplace,
+ CAMORAMA_TYPE_FILTER);
-static void
-camorama_filter_laplace_init(CamoramaFilterLaplace* self) {}
+static void camorama_filter_laplace_init(CamoramaFilterLaplace *self)
+{
+}
-static void
-camorama_filter_laplace_filter(CamoramaFilter* filter, guchar *image, int width, int height, int depth) {
+static void camorama_filter_laplace_filter(void *filter, guchar *image,
+ int width, int height,
+ int depth)
+{
int x, y;
unsigned char *image2;
-
- image2 = (unsigned char *) malloc (sizeof (unsigned char) * width * height * depth);
- memcpy (image2, image, width * height * depth);
+
+ image2 = malloc(sizeof(unsigned char) * width * height * depth);
+ memcpy(image2, image, width * height * depth);
y = 0;
// FIXME: the fist pixel
- for(x = 1; x < width - 1; x++) {
- int offsets[6] = {
- y * width * depth + x * depth - depth,
- y * width * depth + x * depth,
- y * width * depth + x * depth + depth,
- (y + 1) * width * depth + x * depth - depth,
- (y + 1) * width * depth + x * depth,
- (y + 1) * width * depth + x * depth + depth,
- };
- int chan, max = 0;
- for(chan = 0; chan < depth; chan++) {
- int new_val = image[offsets[1] + chan] * 6 -
- image2[offsets[0] + chan] -
- image2[offsets[2] + chan] -
- image2[offsets[3] + chan] -
- image2[offsets[4] + chan] -
- image2[offsets[5] + chan];
- if(new_val < 0) {
- new_val = 0;
- }
- max = MAX(max, new_val);
- }
- for(chan = 0; chan < depth; chan++) {
- image[offsets[1] + chan] = max;
- }
+ for (x = 1; x < width - 1; x++) {
+ int offsets[6] = {
+ y * width * depth + x * depth - depth,
+ y * width * depth + x * depth,
+ y * width * depth + x * depth + depth,
+ (y + 1) * width * depth + x * depth - depth,
+ (y + 1) * width * depth + x * depth,
+ (y + 1) * width * depth + x * depth + depth,
+ };
+ int chan, max = 0;
+
+ for (chan = 0; chan < depth; chan++) {
+ int new_val = image[offsets[1] + chan] * 6 -
+ image2[offsets[0] + chan] -
+ image2[offsets[2] + chan] -
+ image2[offsets[3] + chan] -
+ image2[offsets[4] + chan] -
+ image2[offsets[5] + chan];
+
+ if (new_val < 0)
+ new_val = 0;
+ max = MAX(max, new_val);
+ }
+
+ for (chan = 0; chan < depth; chan++)
+ image[offsets[1] + chan] = max;
}
// FIXME: the last pixel
// inner pixels with 8 neighbours
- for(y = 1; y < height - 1; y++) {
- // FIXME: the first column
- for(x = 1; x < width - 1; x++) {
- int offsets[9] = {
- (y - 1) * width * depth + x * depth - depth,
- (y - 1) * width * depth + x * depth,
- (y - 1) * width * depth + x * depth + depth,
- y * width * depth + x * depth - depth,
- y * width * depth + x * depth,
- y * width * depth + x * depth + depth,
- (y + 1) * width * depth + x * depth - depth,
- (y + 1) * width * depth + x * depth,
- (y + 1) * width * depth + x * depth + depth,
- };
- int chan, max = 0;
- for(chan = 0; chan < depth; chan++) {
- int new_val = image[offsets[4] + chan] * 8 -
- image2[offsets[0] + chan] -
- image2[offsets[1] + chan] -
- image2[offsets[2] + chan] -
- image2[offsets[3] + chan] -
- image2[offsets[5] + chan] -
- image2[offsets[6] + chan] -
- image2[offsets[7] + chan] -
- image2[offsets[8] + chan];
-
- if(new_val < 0) {
- new_val = 0;
- }
- max = MAX(max, new_val);
- }
- for(chan = 0; chan < depth; chan++) {
- image[offsets[4] + chan] = max;
- }
- }
- // FIXME: the last column
+ for (y = 1; y < height - 1; y++) {
+ // FIXME: the first column
+ for (x = 1; x < width - 1; x++) {
+ int offsets[9] = {
+ (y - 1) * width * depth + x * depth - depth,
+ (y - 1) * width * depth + x * depth,
+ (y - 1) * width * depth + x * depth + depth,
+ y * width * depth + x * depth - depth,
+ y * width * depth + x * depth,
+ y * width * depth + x * depth + depth,
+ (y + 1) * width * depth + x * depth - depth,
+ (y + 1) * width * depth + x * depth,
+ (y + 1) * width * depth + x * depth + depth,
+ };
+ int chan, max = 0;
+
+ for (chan = 0; chan < depth; chan++) {
+ int new_val = image[offsets[4] + chan] * 8 -
+ image2[offsets[0] + chan] -
+ image2[offsets[1] + chan] -
+ image2[offsets[2] + chan] -
+ image2[offsets[3] + chan] -
+ image2[offsets[5] + chan] -
+ image2[offsets[6] + chan] -
+ image2[offsets[7] + chan] -
+ image2[offsets[8] + chan];
+
+ if (new_val < 0)
+ new_val = 0;
+ max = MAX(max, new_val);
+ }
+ for (chan = 0; chan < depth; chan++) {
+ image[offsets[4] + chan] = max;
+ }
+ }
+ // FIXME: the last column
}
// FIXME: the last line
- free (image2);
+ free(image2);
}
static void
-camorama_filter_laplace_class_init(CamoramaFilterLaplaceClass* self_class) {
- self_class->filter = camorama_filter_laplace_filter;
- self_class->name = _("Laplace (4 Neighbours)");
+camorama_filter_laplace_class_init(CamoramaFilterLaplaceClass *self_class)
+{
+ self_class->filter = camorama_filter_laplace_filter;
+ self_class->name = _("Laplace (4 Neighbours)");
}
diff --git a/src/camorama-filter-mirror.c b/src/camorama-filter-mirror.c
index 9ed5724..a7dc6cc 100644
--- a/src/camorama-filter-mirror.c
+++ b/src/camorama-filter-mirror.c
@@ -30,41 +30,47 @@
#include <glib/gi18n.h>
/* GType stuff for CamoramaFilterMirror */
-typedef struct _CamoramaFilter CamoramaFilterMirror;
+typedef struct _CamoramaFilter CamoramaFilterMirror;
typedef struct _CamoramaFilterClass CamoramaFilterMirrorClass;
-G_DEFINE_TYPE(CamoramaFilterMirror, camorama_filter_mirror, CAMORAMA_TYPE_FILTER);
+G_DEFINE_TYPE(CamoramaFilterMirror, camorama_filter_mirror,
+ CAMORAMA_TYPE_FILTER);
-static void
-camorama_filter_mirror_init(CamoramaFilterMirror* self) {}
+static void camorama_filter_mirror_init(CamoramaFilterMirror *self)
+{
+}
-static void
-camorama_filter_mirror_filter(CamoramaFilter* filter, guchar *image, gint width, gint height, gint depth) {
- gint x, z, row_length, image_length, new_row, next_row, half_row, index1, index2;
- guchar temp;
+static void camorama_filter_mirror_filter(void *filter, guchar *image,
+ gint width, gint height,
+ gint depth)
+{
+ gint x, z, row_length, image_length, new_row, next_row, half_row;
+ gint index1, index2;
+ guchar temp;
- row_length = width * depth;
- image_length = row_length * height;
- half_row = ((width+1)/2)*depth;
- for(new_row = 0; new_row < image_length; new_row = next_row) { // 0, 320*depth, 640*depth, 960*depth, ...
- next_row = new_row + row_length;
- for (x = 0; x < half_row; x+=depth) { // 0, 3, 6, ..., 160*depth
- index1 = new_row + x; // 0, 3, 6, ..., 160*depth
- index2 = next_row - x - depth;// 320, 319, 318, ..., 161*depth
- for (z = 0; z < depth; z++) { // 0, ..., depth
- temp = image[index1 + z];
- image[index1 + z] = image[index2 + z];
- image[index2 + z] = temp;
- }
- }
- }
+ row_length = width * depth;
+ image_length = row_length * height;
+ half_row = ((width + 1) / 2) * depth;
+
+ // 0, 320*depth, 640*depth, 960*depth, ...
+ for (new_row = 0; new_row < image_length; new_row = next_row) {
+ next_row = new_row + row_length;
+ for (x = 0; x < half_row; x += depth) { // 0, 3, 6, ..., 160*depth
+ index1 = new_row + x; // 0, 3, 6, ..., 160*depth
+ index2 = next_row - x - depth; // 320, 319, 318, ..., 161*depth
+ for (z = 0; z < depth; z++) { // 0, ..., depth
+ temp = image[index1 + z];
+ image[index1 + z] = image[index2 + z];
+ image[index2 + z] = temp;
+ }
+ }
+ }
}
static void
-camorama_filter_mirror_class_init(CamoramaFilterMirrorClass* self_class) {
- self_class->filter = camorama_filter_mirror_filter;
- // TRANSLATORS: This is a noun
- self_class->name = _("Mirror");
+camorama_filter_mirror_class_init(CamoramaFilterMirrorClass *self_class)
+{
+ self_class->filter = camorama_filter_mirror_filter;
+ // TRANSLATORS: This is a noun
+ self_class->name = _("Mirror");
}
-
-
diff --git a/src/camorama-filter-reichardt.c b/src/camorama-filter-reichardt.c
index a0e8cb5..4c2ab19 100644
--- a/src/camorama-filter-reichardt.c
+++ b/src/camorama-filter-reichardt.c
@@ -30,14 +30,15 @@
http://adrianbowyer.com
https://reprapltd.com
- For an introduction to how this works in biological vision (fly's eyes and yours) see:
+ For an introduction to how this works in biological vision
+ (fly's eyes and yours) see:
https://en.wikipedia.org/wiki/Motion_sensing_in_vision#The_Reichardt-Hassenstein_model
*/
-#include <math.h> // We just need one square root
+#include <math.h> // We just need one square root
#include "filter.h"
#ifdef HAVE_CONFIG_H
@@ -50,13 +51,15 @@
#include <stdlib.h>
/* GType stuff for CamoramaFilterReichardt */
-typedef struct _CamoramaFilter CamoramaFilterReichardt;
+typedef struct _CamoramaFilter CamoramaFilterReichardt;
typedef struct _CamoramaFilterClass CamoramaFilterReichardtClass;
-G_DEFINE_TYPE(CamoramaFilterReichardt, camorama_filter_reichardt, CAMORAMA_TYPE_FILTER);
+G_DEFINE_TYPE(CamoramaFilterReichardt, camorama_filter_reichardt,
+ CAMORAMA_TYPE_FILTER);
-static void
-camorama_filter_reichardt_init(CamoramaFilterReichardt* self) {}
+static void camorama_filter_reichardt_init(CamoramaFilterReichardt *self)
+{
+}
static int count = 0;
@@ -78,223 +81,195 @@ static int highPassTC = 5;
// Set to 1 to print debugging info on standard output
-char debug = 0;
+char debug = 0;
-//---------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
-
-// When we start, or when the image size changes, we need to malloc some space to put the
-// frame to frame calculations in.
+// When we start, or when the image size changes, we need to malloc
+// some space to put the frame to frame calculations in.
static void MaybeNewMemory(gint width, gint height, gint depth)
{
- long needed, i, memory;
-
- if(width == oldWidth && height == oldHeight && depth == oldDepth)
- return;
-
- if(lastSignal)
- free(lastSignal);
- if(lastHigh)
- free(lastHigh);
- if(lastHighThenLow)
- free(lastHighThenLow);
- if(output)
- free(output);
-
- if(debug)
- printf("\n\nwidth: %d, height: %d, depth: %d\n\n", width, height, depth);
-
- needed = 5 + (width+1)*(height+1);
- memory = needed*sizeof(long);
- lastSignal = (long *)malloc(memory);
- if (!lastSignal)
- {
- printf("ERROR: Cannot malloc image memory for lastSignal\n");
- return;
- }
- lastHigh = (long *)malloc(memory);
- if (!lastHigh)
- {
- printf("ERROR: Cannot malloc image memory for lastHigh\n");
- return;
- }
- lastHighThenLow = (long *)malloc(memory);
- if (!lastHighThenLow)
- {
- printf("ERROR: Cannot malloc image memory for lastHighThenLow\n");
- return;
- }
- output = (long *)malloc(memory);
- if (!output)
- {
- printf("ERROR: Cannot malloc image memory for output\n");
- return;
- }
- for(i=0; i < needed; i++)
- {
- lastSignal[i] = 127;
- lastHigh[i] = 127;
- lastHighThenLow[i] = 127;
- }
-
- oldWidth = width;
- oldHeight = height;
- oldDepth = depth;
+ long needed, i, memory;
+
+ if (width == oldWidth && height == oldHeight && depth == oldDepth)
+ return;
+
+ if (lastSignal)
+ free(lastSignal);
+ if (lastHigh)
+ free(lastHigh);
+ if (lastHighThenLow)
+ free(lastHighThenLow);
+ if (output)
+ free(output);
+
+ if (debug)
+ printf("\n\nwidth: %d, height: %d, depth: %d\n\n",
+ width, height, depth);
+
+ needed = 5 + (width + 1) * (height + 1);
+ memory = needed * sizeof(long);
+ lastSignal = (long *)malloc(memory);
+ if (!lastSignal) {
+ printf("ERROR: Cannot malloc image memory for lastSignal\n");
+ return;
+ }
+ lastHigh = (long *)malloc(memory);
+ if (!lastHigh) {
+ printf("ERROR: Cannot malloc image memory for lastHigh\n");
+ return;
+ }
+ lastHighThenLow = (long *)malloc(memory);
+ if (!lastHighThenLow) {
+ printf("ERROR: Cannot malloc image memory for lastHighThenLow\n");
+ return;
+ }
+ output = (long *)malloc(memory);
+ if (!output) {
+ printf("ERROR: Cannot malloc image memory for output\n");
+ return;
+ }
+ for (i = 0; i < needed; i++) {
+ lastSignal[i] = 127;
+ lastHigh[i] = 127;
+ lastHighThenLow[i] = 127;
+ }
+
+ oldWidth = width;
+ oldHeight = height;
+ oldDepth = depth;
}
-
-//--------------------------------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------
// This is the function that implements the filter
-
-static void
-camorama_filter_reichardt_filter(CamoramaFilter* filter, guchar *image, gint width, gint height, gint depth)
+static void camorama_filter_reichardt_filter(void *filter, guchar *image,
+ gint width, gint height,
+ gint depth)
{
- gint x, y, z, row_length, row, column, thisPixel, thisXY, thatXY;
-
- long signal, thisHigh, thisHighThenLow, thatHigh, thatHighThenLow, thatSignal, newValue, max, min, scale, mean, var;
-
- MaybeNewMemory(width, height, depth);
-
- max = LONG_MIN;
- min = LONG_MAX;
- thatSignal = 0;
- mean = 0;
- var = 0;
-
- // Run through each pixel doing the filter calculation with the one
- // immediately to its left. Note that this means that the extreme
- // left (x=0) column of pixels is not filtered.
-
- row_length = width * depth;
- for(y = 0; y < height; y++)
- {
- row = y*row_length;
- for (x = 1; x < width; x++)
- {
- column = x*depth;
- thisPixel = row + column;
- thisXY = y*width+x;
- thatXY = thisXY - 1;
-
- // Go from colour to grey
-
- signal = 0;
- for (z = 0; z < depth; z++)
- {
- signal += image[thisPixel + z];
- }
- signal = signal/depth;
-
- // Apply Reichardt
-
- thisHigh = (highPassTC*(lastHigh[thisXY] + signal - lastSignal[thisXY]))/(highPassTC + 1);
- thisHighThenLow = (thisHigh + lastHighThenLow[thisXY]*lowPassTC)/(lowPassTC + 1);
- thatHigh = (highPassTC*(lastHigh[thatXY] + thatSignal - lastSignal[thatXY]))/(highPassTC + 1);
- thatHighThenLow = (thatHigh + lastHighThenLow[thatXY]*lowPassTC)/(lowPassTC + 1);
-
- newValue = thisHighThenLow*thatHigh - thatHighThenLow*thisHigh;
- output[thisXY] = newValue;
-
- if(newValue > max)
- max = newValue;
- if(newValue < min)
- min = newValue;
-
- mean += newValue;
- var += newValue*newValue;
-
- // Remember for next time
-
- thatSignal = signal;
- lastHigh[thisXY] = thisHigh;
- lastHighThenLow[thisXY] = thisHighThenLow;
- lastSignal[thisXY] = signal;
- }
- }
-
- mean = mean/(height*width);
- var = var/(height*width) - mean*mean;
- var = (long)(sqrt((double)var));
-
- // If debugging, print stats every 50 frames
-
- count++;
- if(debug && !(count%50))
- {
- printf("\nmax: %ld, min: %ld mean: %ld, sd: %ld\n", max, min, mean, var);
- }
-
-
- // If anything's going on (var > 10, say) let's see it
- // This scales the filtered output to the range 0-255
- // The range scaled is four standard deviations (i.e. mean +/- 2 SD).
- // Anything outside that range is clipped to 0 or 255.
-
- if(var > 10)
- {
-
- /*
-
- NB - if you are just concerned to detect movement (wildlife camera trap, burglar alarm etc)
- put the call to start recording (or phone the police) in at this point.
-
-
- */
- scale = 4*var;
-
- for(y = 0; y < height; y++)
- {
- row = y*row_length;
- for (z = 0; z < depth; z++)
- {
- image[row + z] = 0;
- }
- for (x = 1; x < width; x++)
- {
- column = x*depth;
- thisPixel = row + column;
- thisXY = y*width+x;
- signal = output[thisXY];
- signal = ((2*var + signal - mean)*255)/scale;
- if(signal < 0)
- signal = 0;
- if(signal > 255)
- signal = 255;
- for (z = 0; z < depth; z++)
- {
- image[thisPixel + z] = (guchar)signal;
- }
- }
- }
- } else
-
-// Nothing to see here, move on.
-
- {
- for(y = 0; y < height; y++)
- {
- row = y*row_length;
- for (x = 0; x < width; x++)
- {
- column = x*depth;
- thisPixel = row + column;
- for (z = 0; z < depth; z++)
- {
- image[thisPixel + z] = 127;
- }
- }
- }
- }
+ gint x, y, z, row_length, row, column, thisPixel, thisXY, thatXY;
+
+ long signal, thisHigh, thisHighThenLow, thatHigh, thatHighThenLow;
+ long thatSignal, newValue, max, min, scale, mean, var;
+
+ MaybeNewMemory(width, height, depth);
+
+ max = LONG_MIN;
+ min = LONG_MAX;
+ thatSignal = 0;
+ mean = 0;
+ var = 0;
+
+ // Run through each pixel doing the filter calculation with the one
+ // immediately to its left. Note that this means that the extreme
+ // left (x=0) column of pixels is not filtered.
+
+ row_length = width * depth;
+ for (y = 0; y < height; y++) {
+ row = y * row_length;
+ for (x = 1; x < width; x++) {
+ column = x * depth;
+ thisPixel = row + column;
+ thisXY = y * width + x;
+ thatXY = thisXY - 1;
+
+ // Go from colour to grey
+
+ signal = 0;
+ for (z = 0; z < depth; z++)
+ signal += image[thisPixel + z];
+ signal = signal / depth;
+
+ // Apply Reichardt
+
+ thisHigh = (highPassTC * (lastHigh[thisXY] + signal - lastSignal[thisXY])) / (highPassTC + 1);
+ thisHighThenLow = (thisHigh + lastHighThenLow[thisXY] * lowPassTC) / (lowPassTC + 1);
+ thatHigh = (highPassTC * (lastHigh[thatXY] + thatSignal - lastSignal[thatXY])) / (highPassTC + 1);
+ thatHighThenLow = (thatHigh + lastHighThenLow[thatXY] * lowPassTC) / (lowPassTC + 1);
+
+ newValue = thisHighThenLow * thatHigh - thatHighThenLow * thisHigh;
+ output[thisXY] = newValue;
+
+ if (newValue > max)
+ max = newValue;
+ if (newValue < min)
+ min = newValue;
+
+ mean += newValue;
+ var += newValue * newValue;
+
+ // Remember for next time
+
+ thatSignal = signal;
+ lastHigh[thisXY] = thisHigh;
+ lastHighThenLow[thisXY] = thisHighThenLow;
+ lastSignal[thisXY] = signal;
+ }
+ }
+
+ mean = mean / (height * width);
+ var = var / (height * width) - mean * mean;
+ var = (long)(sqrt((double)var));
+
+ // If debugging, print stats every 50 frames
+
+ count++;
+ if (debug && !(count % 50))
+ printf("\nmax: %ld, min: %ld mean: %ld, sd: %ld\n", max, min, mean,
+ var);
+
+ // If anything's going on (var > 10, say) let's see it
+ // This scales the filtered output to the range 0-255
+ // The range scaled is four standard deviations (i.e. mean +/- 2 SD).
+ // Anything outside that range is clipped to 0 or 255.
+
+ if (var > 10) {
+ /*
+ * NB - if you are just concerned to detect movement
+ * (wildlife camera trap, burglar alarm etc) put the call to start
+ * recording (or phone the police) in at this point.
+ */
+ scale = 4 * var;
+
+ for (y = 0; y < height; y++) {
+ row = y * row_length;
+ for (z = 0; z < depth; z++)
+ image[row + z] = 0;
+ for (x = 1; x < width; x++) {
+ column = x * depth;
+ thisPixel = row + column;
+ thisXY = y * width + x;
+ signal = output[thisXY];
+ signal = ((2 * var + signal - mean) * 255) / scale;
+ if (signal < 0)
+ signal = 0;
+ if (signal > 255)
+ signal = 255;
+ for (z = 0; z < depth; z++)
+ image[thisPixel + z] = (guchar) signal;
+ }
+ }
+ } else {
+ for (y = 0; y < height; y++) {
+ row = y * row_length;
+ for (x = 0; x < width; x++) {
+ column = x * depth;
+ thisPixel = row + column;
+ for (z = 0; z < depth; z++) {
+ image[thisPixel + z] = 127;
+ }
+ }
+ }
+ }
}
static void
-camorama_filter_reichardt_class_init(CamoramaFilterReichardtClass* self_class) {
- self_class->filter = camorama_filter_reichardt_filter;
- // TRANSLATORS: This is a noun
- self_class->name = _("Reichardt");
+camorama_filter_reichardt_class_init(CamoramaFilterReichardtClass *
+ self_class)
+{
+ self_class->filter = camorama_filter_reichardt_filter;
+ // TRANSLATORS: This is a noun
+ self_class->name = _("Reichardt");
}
-
-
diff --git a/src/camorama-globals.h b/src/camorama-globals.h
index 4dd8386..280f424 100644
--- a/src/camorama-globals.h
+++ b/src/camorama-globals.h
@@ -25,7 +25,7 @@
#ifndef CAMORAMA_GLOBALS_H
#define CAMORAMA_GLOBALS_H
-#include <gtk/gtk.h>
+#include "v4l.h"
G_BEGIN_DECLS
@@ -35,5 +35,4 @@ GtkWidget *dentry, *entry2, *string_entry, *format_selection;
GtkWidget *host_entry, *protocol, *rdir_entry, *filename_entry;
G_END_DECLS
-
-#endif /* !CAMORAMA_GLOBALS_H */
+#endif /* !CAMORAMA_GLOBALS_H */
diff --git a/src/camorama-stock-items.c b/src/camorama-stock-items.c
index e27e20f..f9ea37b 100644
--- a/src/camorama-stock-items.c
+++ b/src/camorama-stock-items.c
@@ -5,51 +5,63 @@
#endif
#include <glib/gi18n.h>
-#include <gtk/gtk.h>
+#include "v4l.h"
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
static GtkStockItem camorama_items[] = {
- {CAMORAMA_STOCK_WEBCAM, N_("Webcam"), 0, 0, "camorama"}
+ {CAMORAMA_STOCK_WEBCAM, N_("Webcam"), 0, 0, "camorama"}
};
-static void
-add_default_image(const gchar* stock_id, gint size, gchar *pixfilename)
+#pragma GCC diagnostic pop
+
+static void add_default_image(const gchar * stock_id, gint size,
+ const gchar * pixfilename)
{
- GdkPixbuf* buf = gdk_pixbuf_new_from_file(pixfilename, NULL);
- g_return_if_fail(buf);
+ GdkPixbuf *buf = gdk_pixbuf_new_from_file(pixfilename, NULL);
+
+ g_return_if_fail(buf);
- gtk_icon_theme_add_builtin_icon(stock_id, size, buf);
- g_object_unref(buf);
+ gtk_icon_theme_add_builtin_icon(stock_id, size, buf);
+ g_object_unref(buf);
}
-void
-camorama_stock_init(void) {
- GtkIconFactory* factory = gtk_icon_factory_new();
- GtkIconSet * set = gtk_icon_set_new ();
- GtkIconSource * source = gtk_icon_source_new();
+void camorama_stock_init(void)
+{
+ GtkIconFactory *factory = gtk_icon_factory_new();
+ GtkIconSet *set = gtk_icon_set_new();
+ GtkIconSource *source = gtk_icon_source_new();
- gtk_stock_add_static(camorama_items, G_N_ELEMENTS(camorama_items));
+ gtk_stock_add_static(camorama_items, G_N_ELEMENTS(camorama_items));
- gtk_icon_source_set_size_wildcarded(source, TRUE);
- gtk_icon_source_set_direction_wildcarded(source, TRUE);
- gtk_icon_source_set_state_wildcarded(source, TRUE);
+ gtk_icon_source_set_size_wildcarded(source, TRUE);
+ gtk_icon_source_set_direction_wildcarded(source, TRUE);
+ gtk_icon_source_set_state_wildcarded(source, TRUE);
- gtk_icon_source_set_icon_name(source, CAMORAMA_STOCK_WEBCAM);
- gtk_icon_set_add_source(set, source);
+ gtk_icon_source_set_icon_name(source, CAMORAMA_STOCK_WEBCAM);
+ gtk_icon_set_add_source(set, source);
- gtk_icon_factory_add(factory, CAMORAMA_STOCK_WEBCAM, set);
+ gtk_icon_factory_add(factory, CAMORAMA_STOCK_WEBCAM, set);
- add_default_image(CAMORAMA_STOCK_WEBCAM, 16, PACKAGE_DATA_DIR "/icons/hicolor/16x16/devices/camorama.png");
- add_default_image(CAMORAMA_STOCK_WEBCAM, 24, PACKAGE_DATA_DIR "/icons/hicolor/24x24/devices/camorama.png");
- add_default_image(CAMORAMA_STOCK_WEBCAM, 32, PACKAGE_DATA_DIR "/icons/hicolor/32x32/devices/camorama.png");
- add_default_image(CAMORAMA_STOCK_WEBCAM, 48, PACKAGE_DATA_DIR "/icons/hicolor/48x48/devices/camorama.png");
- add_default_image(CAMORAMA_STOCK_WEBCAM, 64, PACKAGE_DATA_DIR "/icons/hicolor/64x64/devices/camorama.png");
- add_default_image(CAMORAMA_STOCK_WEBCAM, 128, PACKAGE_DATA_DIR "/icons/hicolor/128x128/devices/camorama.png");
- add_default_image(CAMORAMA_STOCK_WEBCAM, 256, PACKAGE_DATA_DIR "/icons/hicolor/256x256/devices/camorama.png");
- add_default_image(CAMORAMA_STOCK_WEBCAM, 512, PACKAGE_DATA_DIR "/icons/hicolor/512x512/devices/camorama.png");
+ add_default_image(CAMORAMA_STOCK_WEBCAM, 16, PACKAGE_DATA_DIR
+ "/icons/hicolor/16x16/devices/camorama.png");
+ add_default_image(CAMORAMA_STOCK_WEBCAM, 24, PACKAGE_DATA_DIR
+ "/icons/hicolor/24x24/devices/camorama.png");
+ add_default_image(CAMORAMA_STOCK_WEBCAM, 32, PACKAGE_DATA_DIR
+ "/icons/hicolor/32x32/devices/camorama.png");
+ add_default_image(CAMORAMA_STOCK_WEBCAM, 48, PACKAGE_DATA_DIR
+ "/icons/hicolor/48x48/devices/camorama.png");
+ add_default_image(CAMORAMA_STOCK_WEBCAM, 64, PACKAGE_DATA_DIR
+ "/icons/hicolor/64x64/devices/camorama.png");
+ add_default_image(CAMORAMA_STOCK_WEBCAM, 128, PACKAGE_DATA_DIR
+ "/icons/hicolor/128x128/devices/camorama.png");
+ add_default_image(CAMORAMA_STOCK_WEBCAM, 256, PACKAGE_DATA_DIR
+ "/icons/hicolor/256x256/devices/camorama.png");
+ add_default_image(CAMORAMA_STOCK_WEBCAM, 512, PACKAGE_DATA_DIR
+ "/icons/hicolor/512x512/devices/camorama.png");
- gtk_icon_factory_add_default(factory);
+ gtk_icon_factory_add_default(factory);
- gtk_icon_set_unref(set);
- gtk_icon_source_free(source);
+ gtk_icon_set_unref(set);
+ gtk_icon_source_free(source);
}
-
diff --git a/src/camorama-stock-items.h b/src/camorama-stock-items.h
index bdccce5..1fa1ba5 100644
--- a/src/camorama-stock-items.h
+++ b/src/camorama-stock-items.h
@@ -10,5 +10,4 @@ void camorama_stock_init(void);
#define CAMORAMA_STOCK_WEBCAM "camorama-webcam"
G_END_DECLS
-
-#endif /* !CAMORAMA_STOCK_ITEMS_H */
+#endif /* !CAMORAMA_STOCK_ITEMS_H */
diff --git a/src/camorama-window.c b/src/camorama-window.c
index 7ba879e..ff1333c 100644
--- a/src/camorama-window.c
+++ b/src/camorama-window.c
@@ -40,230 +40,234 @@
static GQuark menu_item_filter_type = 0;
/* Supported URI protocol schemas */
-const gchar * const protos[] = { "ftp", "sftp", "smb" };
-
-
-static void
-add_filter_clicked(GtkMenuItem* menuitem, CamoramaFilterChain* chain) {
- GType filter_type = GPOINTER_TO_SIZE(g_object_get_qdata(G_OBJECT(menuitem), menu_item_filter_type));
- camorama_filter_chain_append(chain, filter_type);
+const gchar *const protos[] = { "ftp", "sftp", "smb" };
+
+static void add_filter_clicked(GtkMenuItem *menuitem,
+ CamoramaFilterChain *chain)
+{
+ GType filter_type = GPOINTER_TO_SIZE(g_object_get_qdata(G_OBJECT(menuitem),
+ menu_item_filter_type));
+ camorama_filter_chain_append(chain, filter_type);
}
struct weak_target {
- GtkTreeModel* model;
- GList * list;
+ GtkTreeModel *model;
+ GList *list;
};
-static void
-reference_path(GtkTreePath* path, struct weak_target* target) {
- target->list = g_list_prepend(target->list, gtk_tree_row_reference_new(target->model, path));
+static void reference_path(GtkTreePath *path, struct weak_target *target)
+{
+ target->list = g_list_prepend(target->list,
+ gtk_tree_row_reference_new(target->model,
+ path));
}
-static void
-delete_filter(GtkTreeRowReference* ref, GtkTreeModel* model) {
- GtkTreeIter iter;
- GtkTreePath* path = gtk_tree_row_reference_get_path(ref);
- gtk_tree_model_get_iter(model, &iter, path);
- gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
+static void delete_filter(GtkTreeRowReference *ref, GtkTreeModel *model)
+{
+ GtkTreeIter iter;
+ GtkTreePath *path = gtk_tree_row_reference_get_path(ref);
+
+ gtk_tree_model_get_iter(model, &iter, path);
+ gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
}
-static void
-delete_filter_clicked(GtkTreeSelection* sel, GtkMenuItem* menuitem) {
- GtkTreeModel* model;
- GList* paths = gtk_tree_selection_get_selected_rows(sel, &model);
- struct weak_target target = {model, NULL};
- g_list_foreach(paths, G_FUNC(reference_path), &target);
- g_list_foreach(target.list, G_FUNC(delete_filter), model);
- g_list_foreach(target.list, G_FUNC(gtk_tree_row_reference_free), NULL);
- g_list_free(target.list);
- g_list_foreach(paths, G_FUNC(gtk_tree_path_free), NULL);
- g_list_free(paths);
+static void delete_filter_clicked(GtkTreeSelection *sel,
+ GtkMenuItem *menuitem)
+{
+ GtkTreeModel *model;
+ GList *paths = gtk_tree_selection_get_selected_rows(sel, &model);
+ struct weak_target target = { model, NULL };
+
+ g_list_foreach(paths, G_FUNC(reference_path), &target);
+ g_list_foreach(target.list, G_FUNC(delete_filter), model);
+ g_list_free_full(target.list,
+ (GDestroyNotify) gtk_tree_row_reference_free);
+ g_list_free_full(paths, (GDestroyNotify) gtk_tree_path_free);
}
-static void
-menu_position_func(GtkMenu* menu, gint* x, gint* y, gboolean *push_in, gpointer user_data) {
- if(user_data) {
- GdkEventButton* ev = (GdkEventButton*)user_data;
- *x = ev->x;
- *y = ev->y;
- } else {
- // find the selected row and open the popup there
- }
+static void menu_position_func(GtkMenu *menu, gint *x, gint *y,
+ gboolean *push_in, gpointer user_data)
+{
+ if (user_data) {
+ GdkEventButton *ev = (GdkEventButton *) user_data;
+
+ *x = ev->x;
+ *y = ev->y;
+ } else {
+ // find the selected row and open the popup there
+ }
}
-static void
-show_popup(cam* cam, GtkTreeView* treeview, GdkEventButton* ev) {
- GtkMenu* menu = GTK_MENU(gtk_menu_new());
- GtkWidget* item;
- GtkWidget* add_filters = gtk_menu_new();
- GType* filters;
- guint n_filters, i;
- GtkTreeModel* model = gtk_tree_view_get_model(treeview);
- GtkTreeSelection* sel = gtk_tree_view_get_selection(treeview);
-
- gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
-
- item = gtk_menu_item_new_with_mnemonic("_Delete");
- g_signal_connect_swapped(item, "activate",
- G_CALLBACK(delete_filter_clicked), sel);
- gtk_container_add(GTK_CONTAINER(menu), item);
- gtk_container_add(GTK_CONTAINER(menu), gtk_separator_menu_item_new());
-
- if(!gtk_tree_selection_count_selected_rows(sel)) {
- gtk_widget_set_sensitive(item, FALSE);
- }
-
- item = gtk_menu_item_new_with_mnemonic(_("_Add Filter"));
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), add_filters);
- gtk_container_add(GTK_CONTAINER(menu), item);
-
- filters = g_type_children(CAMORAMA_TYPE_FILTER, &n_filters);
- for(i = 0; i < n_filters; i++) {
- CamoramaFilterClass* filter_class = g_type_class_ref(filters[i]);
- gchar const* filter_name = filter_class->name;
-
- if(!filter_name) {
- filter_name = g_type_name(filters[i]);
- }
-
- item = gtk_menu_item_new_with_label(filter_name);
- g_object_set_qdata(G_OBJECT(item), menu_item_filter_type, GSIZE_TO_POINTER(filters[i]));
- g_signal_connect(item, "activate",
- G_CALLBACK(add_filter_clicked), model);
- gtk_container_add(GTK_CONTAINER(add_filters), item);
- g_type_class_unref(filter_class);
- }
- g_free(filters);
-
- gtk_widget_show_all(GTK_WIDGET(menu));
- gtk_menu_popup(menu,
- NULL, NULL,
- menu_position_func, ev,
- ev ? ev->button : 0,
- ev ? ev->time : gtk_get_current_event_time());
+static void show_popup(cam_t *cam, GtkTreeView *treeview,
+ GdkEventButton *ev)
+{
+ GtkMenu *menu = GTK_MENU(gtk_menu_new());
+ GtkWidget *item;
+ GtkWidget *add_filters = gtk_menu_new();
+ GType *filters;
+ guint n_filters, i;
+ GtkTreeModel *model = gtk_tree_view_get_model(treeview);
+ GtkTreeSelection *sel = gtk_tree_view_get_selection(treeview);
+
+ gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
+
+ item = gtk_menu_item_new_with_mnemonic("_Delete");
+ g_signal_connect_swapped(item, "activate",
+ G_CALLBACK(delete_filter_clicked), sel);
+ gtk_container_add(GTK_CONTAINER(menu), item);
+ gtk_container_add(GTK_CONTAINER(menu), gtk_separator_menu_item_new());
+
+ if (!gtk_tree_selection_count_selected_rows(sel))
+ gtk_widget_set_sensitive(item, FALSE);
+
+ item = gtk_menu_item_new_with_mnemonic(_("_Add Filter"));
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), add_filters);
+ gtk_container_add(GTK_CONTAINER(menu), item);
+
+ filters = g_type_children(CAMORAMA_TYPE_FILTER, &n_filters);
+ for (i = 0; i < n_filters; i++) {
+ CamoramaFilterClass *filter_class = g_type_class_ref(filters[i]);
+ gchar const *filter_name = filter_class->name;
+
+ if (!filter_name)
+ filter_name = g_type_name(filters[i]);
+
+ item = gtk_menu_item_new_with_label(filter_name);
+ g_object_set_qdata(G_OBJECT(item), menu_item_filter_type,
+ GSIZE_TO_POINTER(filters[i]));
+ g_signal_connect(item, "activate", G_CALLBACK(add_filter_clicked),
+ model);
+ gtk_container_add(GTK_CONTAINER(add_filters), item);
+ g_type_class_unref(filter_class);
+ }
+ g_free(filters);
+
+ gtk_widget_show_all(GTK_WIDGET(menu));
+ gtk_menu_popup(menu,
+ NULL, NULL,
+ menu_position_func, ev,
+ ev ? ev->button : 0,
+ ev ? ev->time : gtk_get_current_event_time());
}
-static void
-treeview_popup_menu_cb(cam* cam, GtkTreeView* treeview) {
- show_popup(cam, treeview, NULL);
+static void treeview_popup_menu_cb(cam_t *cam, GtkTreeView *treeview)
+{
+ show_popup(cam, treeview, NULL);
}
-static gboolean
-treeview_clicked_cb(cam* cam, GdkEventButton* ev, GtkTreeView* treeview) {
- gboolean retval = GTK_WIDGET_GET_CLASS(treeview)->button_press_event(GTK_WIDGET(treeview), ev);
+static gboolean treeview_clicked_cb(cam_t *cam, GdkEventButton *ev,
+ GtkTreeView *treeview)
+{
+ gboolean retval = GTK_WIDGET_GET_CLASS(treeview)->button_press_event(GTK_WIDGET(treeview), ev);
- if(ev->button == 3) {
- show_popup(cam, treeview, NULL);
- retval = TRUE;
- }
+ if (ev->button == 3) {
+ show_popup(cam, treeview, NULL);
+ retval = TRUE;
+ }
- return retval;
+ return retval;
}
-static void
-tray_clicked_callback (GtkStatusIcon* status, guint button, guint activate_time, cam * cam){
- // FIXME: change to switch
- if (button == 1) {
- if (gtk_widget_get_visible
- (GTK_WIDGET(gtk_builder_get_object(cam->xml, "main_window")))) {
- cam->hidden = TRUE;
- g_source_remove (cam->idle_id);
- gtk_widget_hide (GTK_WIDGET(gtk_builder_get_object
- (cam->xml, "main_window")));
- } else {
- cam->idle_id =
- g_idle_add ((GSourceFunc) pt2Function, (gpointer) cam);
- gtk_widget_show (GTK_WIDGET(gtk_builder_get_object
- (cam->xml, "main_window")));
- cam->hidden = FALSE;
- }
- } else if (button == 3) {
-
- //gw = MyApp->GetMainWindow ();
-
- //gnomemeeting_component_view (NULL, (gpointer) gw->ldap_window);
-
+static void tray_clicked_callback(GtkStatusIcon *status, guint button,
+ guint activate_time, cam_t *cam)
+{
+ // FIXME: change to switch
+ if (button == 1) {
+ if (gtk_widget_get_visible(GTK_WIDGET(gtk_builder_get_object(cam->xml, "main_window")))) {
+ cam->hidden = TRUE;
+ g_source_remove(cam->idle_id);
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object
+ (cam->xml, "main_window")));
+ } else {
+ cam->idle_id = g_idle_add((GSourceFunc) pt2Function,
+ (gpointer) cam);
+ gtk_widget_show(GTK_WIDGET(gtk_builder_get_object
+ (cam->xml, "main_window")));
+ cam->hidden = FALSE;
}
+ } else if (button == 3) {
+ //gw = MyApp->GetMainWindow ();
+ //gnomemeeting_component_view (NULL, (gpointer) gw->ldap_window);
+ }
}
-void
-load_interface(cam* cam) {
- int i;
- gchar *title;
+void load_interface(cam_t *cam)
+{
+ unsigned int i;
GdkPixbuf *logo = NULL;
- GtkCellRenderer* cell;
+ GtkCellRenderer *cell;
GtkWidget *small_res, *new_res;
GtkWidget *window = GTK_WIDGET(gtk_builder_get_object(cam->xml,
"main_window"));
+ GtkTreeView *treeview;
menu_item_filter_type = g_quark_from_static_string("camorama-menu-item-filter-type");
/* set up the tree view */
- GtkTreeView* treeview = GTK_TREE_VIEW(gtk_builder_get_object(cam->xml, "treeview_effects"));
+ treeview = GTK_TREE_VIEW(gtk_builder_get_object(cam->xml,
+ "treeview_effects"));
cell = gtk_cell_renderer_text_new();
g_object_set(cell, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
- gtk_cell_renderer_text_set_fixed_height_from_font(GTK_CELL_RENDERER_TEXT(cell), 1);
- gtk_tree_view_insert_column_with_attributes(treeview, -1,
- _("Effects"), cell,
- "text", CAMORAMA_FILTER_CHAIN_COL_NAME,
- NULL);
+ gtk_cell_renderer_text_set_fixed_height_from_font
+ (GTK_CELL_RENDERER_TEXT(cell), 1);
+ gtk_tree_view_insert_column_with_attributes(treeview, -1, _("Effects"),
+ cell, "text",
+ CAMORAMA_FILTER_CHAIN_COL_NAME,
+ NULL);
cam->filter_chain = camorama_filter_chain_new();
gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(cam->filter_chain));
g_object_unref(cam->filter_chain);
g_signal_connect_swapped(treeview, "button-press-event",
- G_CALLBACK(treeview_clicked_cb), cam);
+ G_CALLBACK(treeview_clicked_cb), cam);
g_signal_connect_swapped(treeview, "popup-menu",
- G_CALLBACK(treeview_popup_menu_cb), cam);
+ G_CALLBACK(treeview_popup_menu_cb), cam);
- logo = gtk_icon_theme_load_icon(gtk_icon_theme_get_for_screen(gtk_widget_get_screen(window)), CAMORAMA_STOCK_WEBCAM, 24, 0, NULL);
+ logo = gtk_icon_theme_load_icon(gtk_icon_theme_get_for_screen(gtk_widget_get_screen(window)),
+ CAMORAMA_STOCK_WEBCAM, 24, 0, NULL);
gtk_window_set_default_icon(logo);
- logo = gtk_icon_theme_load_icon(gtk_icon_theme_get_for_screen(gtk_widget_get_screen(window)), "camorama", 48, 0, NULL);
+ logo = gtk_icon_theme_load_icon(gtk_icon_theme_get_for_screen(gtk_widget_get_screen(window)),
+ "camorama", 48, 0, NULL);
if (cam->show_adjustments == FALSE) {
- gtk_widget_hide (GTK_WIDGET(gtk_builder_get_object
- (cam->xml, "adjustments_table")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "adjustments_table")));
- gtk_window_resize (GTK_WINDOW(window), 320, 240);
+ gtk_window_resize(GTK_WINDOW(window), 320, 240);
}
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_builder_get_object(cam->xml, "showadjustment_item")), cam->show_adjustments);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_builder_get_object(cam->xml, "showadjustment_item")),
+ cam->show_adjustments);
if (cam->show_effects == FALSE) {
- gtk_widget_hide (GTK_WIDGET(gtk_builder_get_object(cam->xml, "scrolledwindow_effects")));
- gtk_window_resize (GTK_WINDOW(window), 320, 240);
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "scrolledwindow_effects")));
+ gtk_window_resize(GTK_WINDOW(window), 320, 240);
}
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_builder_get_object(cam->xml, "show_effects")), cam->show_effects);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_builder_get_object(cam->xml, "show_effects")),
+ cam->show_effects);
- cam->tray_icon = gtk_status_icon_new_from_stock (CAMORAMA_STOCK_WEBCAM);
- update_tooltip (cam);
+ cam->tray_icon = gtk_status_icon_new_from_stock(CAMORAMA_STOCK_WEBCAM);
+ update_tooltip(cam);
/* add the status to the plug */
- g_object_set_data (G_OBJECT (cam->tray_icon), "available",
- GINT_TO_POINTER (1));
- g_object_set_data (G_OBJECT (cam->tray_icon), "embedded",
- GINT_TO_POINTER (0));
+ g_object_set_data(G_OBJECT(cam->tray_icon), "available",
+ GINT_TO_POINTER(1));
+ g_object_set_data(G_OBJECT(cam->tray_icon), "embedded",
+ GINT_TO_POINTER(0));
- g_signal_connect (cam->tray_icon, "popup-menu",
- G_CALLBACK (tray_clicked_callback), cam);
+ g_signal_connect(cam->tray_icon, "popup-menu",
+ G_CALLBACK(tray_clicked_callback), cam);
- /* connect the signals in the interface
+ /* connect the signals in the interface
* glade_xml_signal_autoconnect(xml);
* this won't work, can't pass data to callbacks. have to do it individually :(*/
- title = g_strdup_printf ("Camorama - %s - %dx%d", cam->name,
- cam->width, cam->height);
- gtk_window_set_title (GTK_WINDOW(window), title);
- g_free (title);
-
- gtk_window_set_icon (GTK_WINDOW(window), logo);
- gtk_window_set_icon (GTK_WINDOW
- (GTK_WIDGET(gtk_builder_get_object(cam->xml, "prefswindow"))),
- logo);
-
- g_signal_connect (gtk_builder_get_object(cam->xml, "show_effects"), "activate",
- G_CALLBACK (on_show_effects_activate), cam);
- gtk_toggle_button_set_active ((GtkToggleButton *)
- GTK_WIDGET(gtk_builder_get_object (cam->xml, "togglebutton1")),
- cam->show_adjustments);
- g_signal_connect (gtk_builder_get_object(cam->xml, "togglebutton1"), "toggled",
- G_CALLBACK (on_show_adjustments_activate), cam);
+ gtk_window_set_icon(GTK_WINDOW(window), logo);
+ gtk_window_set_icon(GTK_WINDOW(GTK_WIDGET(gtk_builder_get_object(cam->xml, "prefswindow"))), logo);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "show_effects"),
+ "activate", G_CALLBACK(on_show_effects_activate),
+ cam);
+ gtk_toggle_button_set_active((GtkToggleButton *)GTK_WIDGET(gtk_builder_get_object(cam->xml, "togglebutton1")),
+ cam->show_adjustments);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "togglebutton1"),
+ "toggled", G_CALLBACK(on_show_adjustments_activate),
+ cam);
/*
* Dynamically generate the resolutions based on what the camera
@@ -283,196 +287,222 @@ load_interface(cam* cam) {
sprintf(name, "%dx%d", cam->res[i].x, cam->res[i].y);
new_res = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(small_res), name);
- gtk_container_add(GTK_CONTAINER(GTK_WIDGET(gtk_builder_get_object(cam->xml, "menuitem4_menu"))), new_res);
- gtk_widget_show (new_res);
+ gtk_container_add(GTK_CONTAINER(GTK_WIDGET(gtk_builder_get_object(cam->xml, "menuitem4_menu"))),
+ new_res);
+ gtk_widget_show(new_res);
g_signal_connect(new_res, "activate",
- G_CALLBACK (on_change_size_activate), cam);
+ G_CALLBACK(on_change_size_activate), cam);
gtk_widget_set_name(new_res, name);
if (cam->width == cam->res[i].x && cam->height == cam->res[i].y)
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (new_res), TRUE);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(new_res),
+ TRUE);
else
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (new_res), FALSE);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(new_res),
+ FALSE);
}
/* We won't actually use the small res */
- gtk_widget_hide (small_res);
+ gtk_widget_hide(small_res);
} else {
- g_signal_connect (gtk_builder_get_object(cam->xml, "small"), "activate",
- G_CALLBACK (on_change_size_activate), cam);
-
- new_res = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(small_res), "Medium");
- gtk_container_add(GTK_CONTAINER(GTK_WIDGET(gtk_builder_get_object(cam->xml, "menuitem4_menu"))), new_res);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (new_res), FALSE);
- gtk_widget_show (new_res);
- g_signal_connect(new_res, "activate", G_CALLBACK (on_change_size_activate), cam);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "small"),
+ "activate", G_CALLBACK(on_change_size_activate),
+ cam);
+
+ new_res = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(small_res),
+ "Medium");
+ gtk_container_add(GTK_CONTAINER(GTK_WIDGET(gtk_builder_get_object(cam->xml, "menuitem4_menu"))),
+ new_res);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(new_res),
+ FALSE);
+ gtk_widget_show(new_res);
+ g_signal_connect(new_res, "activate",
+ G_CALLBACK(on_change_size_activate), cam);
gtk_widget_set_name(new_res, "medium");
- new_res = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(small_res), "Large");
- gtk_container_add(GTK_CONTAINER(GTK_WIDGET(gtk_builder_get_object(cam->xml, "menuitem4_menu"))), new_res);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (new_res), FALSE);
- gtk_widget_show (new_res);
- g_signal_connect(new_res, "activate", G_CALLBACK (on_change_size_activate), cam);
+ new_res = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(small_res),
+ "Large");
+ gtk_container_add(GTK_CONTAINER(GTK_WIDGET(gtk_builder_get_object(cam->xml, "menuitem4_menu"))),
+ new_res);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(new_res),
+ FALSE);
+ gtk_widget_show(new_res);
+ g_signal_connect(new_res, "activate",
+ G_CALLBACK(on_change_size_activate), cam);
gtk_widget_set_name(new_res, "large");
}
//g_signal_connect(cam->xml, "capture_func", G_CALLBACK(on_change_size_activate), cam);
- g_signal_connect (gtk_builder_get_object(cam->xml, "button1"), "clicked",
- G_CALLBACK (capture_func), cam);
- g_signal_connect (window, "delete-event",
- G_CALLBACK (delete_event), NULL);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "button1"),
+ "clicked", G_CALLBACK(capture_func), cam);
+ g_signal_connect(window, "delete-event", G_CALLBACK(delete_event),
+ NULL);
/* sliders */
if (cam->contrast < 0) {
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "contrast_icon")));
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "contrast_label")));
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "contrast_slider")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "contrast_icon")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "contrast_label")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "contrast_slider")));
} else {
- g_signal_connect (gtk_builder_get_object(cam->xml, "contrast_slider"),
- "value-changed", G_CALLBACK (contrast_change), cam);
- gtk_range_set_value ((GtkRange *)
- GTK_WIDGET(gtk_builder_get_object(cam->xml, "contrast_slider")),
- (int) (cam->contrast / 256));
+ g_signal_connect(gtk_builder_get_object(cam->xml, "contrast_slider"),
+ "value-changed", G_CALLBACK(contrast_change), cam);
+ gtk_range_set_value((GtkRange *)GTK_WIDGET(gtk_builder_get_object(cam->xml, "contrast_slider")),
+ (int)(cam->contrast / 256));
}
if (cam->brightness < 0) {
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "brightness_icon")));
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "brightness_label")));
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "brightness_slider")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "brightness_icon")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "brightness_label")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "brightness_slider")));
} else {
- g_signal_connect (gtk_builder_get_object(cam->xml, "brightness_slider"),
- "value-changed", G_CALLBACK (brightness_change), cam);
- gtk_range_set_value ((GtkRange *)
- GTK_WIDGET(gtk_builder_get_object(cam->xml, "brightness_slider")),
- (int) (cam->brightness / 256));
+ g_signal_connect(gtk_builder_get_object(cam->xml, "brightness_slider"),
+ "value-changed", G_CALLBACK(brightness_change), cam);
+ gtk_range_set_value((GtkRange *)GTK_WIDGET(gtk_builder_get_object(cam->xml, "brightness_slider")),
+ (int)(cam->brightness / 256));
}
if (cam->colour < 1) {
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "color_icon")));
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "color_label")));
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "color_slider")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "color_icon")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "color_label")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "color_slider")));
} else {
- g_signal_connect (gtk_builder_get_object(cam->xml, "color_slider"),
- "value-changed", G_CALLBACK (colour_change), cam);
- gtk_range_set_value ((GtkRange *)
- GTK_WIDGET(gtk_builder_get_object(cam->xml, "color_slider")),
- (int) (cam->colour / 256));
+ g_signal_connect(gtk_builder_get_object(cam->xml, "color_slider"),
+ "value-changed", G_CALLBACK(colour_change), cam);
+ gtk_range_set_value((GtkRange *)GTK_WIDGET(gtk_builder_get_object(cam->xml, "color_slider")),
+ (int)(cam->colour / 256));
}
if (cam->hue < 0) {
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "hue_icon")));
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "hue_label")));
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "hue_slider")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "hue_icon")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "hue_label")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "hue_slider")));
} else {
- g_signal_connect (gtk_builder_get_object(cam->xml, "hue_slider"),
- "value-changed", G_CALLBACK (hue_change), cam);
- gtk_range_set_value ((GtkRange *)
- GTK_WIDGET(gtk_builder_get_object(cam->xml, "hue_slider")),
- (int) (cam->hue / 256));
+ g_signal_connect(gtk_builder_get_object(cam->xml, "hue_slider"),
+ "value-changed", G_CALLBACK(hue_change), cam);
+ gtk_range_set_value((GtkRange *)GTK_WIDGET(gtk_builder_get_object(cam->xml, "hue_slider")),
+ (int)(cam->hue / 256));
}
if (cam->whiteness < 0) {
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "balance_icon")));
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "balance_label")));
- gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "balance_slider")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "balance_icon")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "balance_label")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "balance_slider")));
} else {
- g_signal_connect (gtk_builder_get_object(cam->xml, "balance_slider"),
- "value-changed", G_CALLBACK (wb_change), cam);
- gtk_range_set_value ((GtkRange *)
- GTK_WIDGET(gtk_builder_get_object(cam->xml, "balance_slider")),
- (int) (cam->whiteness / 256));
+ g_signal_connect(gtk_builder_get_object(cam->xml, "balance_slider"),
+ "value-changed", G_CALLBACK(wb_change), cam);
+ gtk_range_set_value((GtkRange *)GTK_WIDGET(gtk_builder_get_object(cam->xml, "balance_slider")),
+ (int)(cam->whiteness / 256));
}
/* buttons */
- g_signal_connect (gtk_builder_get_object(cam->xml, "quit"), "activate",
- G_CALLBACK (on_quit_activate), cam);
- g_signal_connect (gtk_builder_get_object(cam->xml, "imagemenuitem3"),
- "activate", G_CALLBACK (on_preferences1_activate), cam);
- g_signal_connect (gtk_builder_get_object(cam->xml, "imagemenuitem4"),
- "activate", G_CALLBACK (on_about_activate), cam);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "quit"), "activate",
+ G_CALLBACK(on_quit_activate), cam);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "imagemenuitem3"),
+ "activate", G_CALLBACK(on_preferences1_activate),
+ cam);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "imagemenuitem4"),
+ "activate", G_CALLBACK(on_about_activate), cam);
/* prefs */
- g_signal_connect (gtk_builder_get_object(cam->xml, "okbutton1"), "clicked",
- G_CALLBACK (prefs_func), cam);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "okbutton1"),
+ "clicked", G_CALLBACK(prefs_func), cam);
/* general */
- g_signal_connect (gtk_builder_get_object(cam->xml, "captured_cb"), "toggled",
- G_CALLBACK (cap_func), cam);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "captured_cb"),
+ "toggled", G_CALLBACK(cap_func), cam);
- gtk_toggle_button_set_active ((GtkToggleButton *)
- gtk_builder_get_object (cam->xml,
+ gtk_toggle_button_set_active((GtkToggleButton *)
+ gtk_builder_get_object(cam->xml,
"captured_cb"),
- cam->cap);
+ cam->cap);
- g_signal_connect (gtk_builder_get_object(cam->xml, "rcapture"), "toggled",
- G_CALLBACK (rcap_func), cam);
- gtk_toggle_button_set_active ((GtkToggleButton *)
- gtk_builder_get_object (cam->xml,
+ g_signal_connect(gtk_builder_get_object(cam->xml, "rcapture"),
+ "toggled", G_CALLBACK(rcap_func), cam);
+ gtk_toggle_button_set_active((GtkToggleButton *)
+ gtk_builder_get_object(cam->xml,
"rcapture"),
- cam->rcap);
+ cam->rcap);
- g_signal_connect (gtk_builder_get_object(cam->xml, "acapture"), "toggled",
- G_CALLBACK (acap_func), cam);
- gtk_toggle_button_set_active ((GtkToggleButton *)
- gtk_builder_get_object (cam->xml,
+ g_signal_connect(gtk_builder_get_object(cam->xml, "acapture"),
+ "toggled", G_CALLBACK(acap_func), cam);
+ gtk_toggle_button_set_active((GtkToggleButton *)
+ gtk_builder_get_object(cam->xml,
"acapture"),
- cam->acap);
+ cam->acap);
- g_signal_connect (gtk_builder_get_object(cam->xml, "interval_entry"),
- "value-changed", G_CALLBACK (interval_change), cam);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "interval_entry"),
+ "value-changed", G_CALLBACK(interval_change), cam);
- gtk_spin_button_set_value ((GtkSpinButton *)
- gtk_builder_get_object (cam->xml,
+ gtk_spin_button_set_value((GtkSpinButton *)
+ gtk_builder_get_object(cam->xml,
"interval_entry"),
- (cam->timeout_interval / 60000));
+ (cam->timeout_interval / 60000));
/* local */
dentry = GTK_WIDGET(gtk_builder_get_object(cam->xml, "dentry"));
entry2 = GTK_WIDGET(gtk_builder_get_object(cam->xml, "entry2"));
- gtk_file_chooser_set_current_folder((GtkFileChooser *) dentry, cam->pixdir);
+ gtk_file_chooser_set_current_folder((GtkFileChooser *) dentry,
+ cam->pixdir);
- gtk_entry_set_text (GTK_ENTRY (entry2), cam->capturefile);
+ gtk_entry_set_text(GTK_ENTRY(entry2), cam->capturefile);
- g_signal_connect (gtk_builder_get_object(cam->xml, "appendbutton"),
- "toggled", G_CALLBACK (append_func), cam);
- gtk_toggle_button_set_active ((GtkToggleButton *)
- gtk_builder_get_object (cam->xml,
+ g_signal_connect(gtk_builder_get_object(cam->xml, "appendbutton"),
+ "toggled", G_CALLBACK(append_func), cam);
+ gtk_toggle_button_set_active((GtkToggleButton *)
+ gtk_builder_get_object(cam->xml,
"appendbutton"),
- cam->timefn);
+ cam->timefn);
- g_signal_connect (gtk_builder_get_object(cam->xml, "jpgb"),
- "toggled", G_CALLBACK (jpg_func), cam);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "jpgb"),
+ "toggled", G_CALLBACK(jpg_func), cam);
if (cam->savetype == JPEG) {
- gtk_toggle_button_set_active ((GtkToggleButton *)
- gtk_builder_get_object (cam->xml,
+ gtk_toggle_button_set_active((GtkToggleButton *)
+ gtk_builder_get_object(cam->xml,
"jpgb"), TRUE);
}
- g_signal_connect (gtk_builder_get_object(cam->xml, "pngb"),
- "toggled", G_CALLBACK (png_func), cam);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "pngb"),
+ "toggled", G_CALLBACK(png_func), cam);
if (cam->savetype == PNG) {
- gtk_toggle_button_set_active ((GtkToggleButton *)
- gtk_builder_get_object (cam->xml,
+ gtk_toggle_button_set_active((GtkToggleButton *)
+ gtk_builder_get_object(cam->xml,
"pngb"), TRUE);
}
- g_signal_connect (gtk_builder_get_object(cam->xml, "tsbutton"),
- "toggled", G_CALLBACK (ts_func), cam);
- gtk_toggle_button_set_active ((GtkToggleButton *)
- gtk_builder_get_object (cam->xml,
+ g_signal_connect(gtk_builder_get_object(cam->xml, "tsbutton"),
+ "toggled", G_CALLBACK(ts_func), cam);
+ gtk_toggle_button_set_active((GtkToggleButton *)
+ gtk_builder_get_object(cam->xml,
"tsbutton"),
- cam->timestamp);
+ cam->timestamp);
/* remote */
host_entry = GTK_WIDGET(gtk_builder_get_object(cam->xml, "host_entry"));
protocol = GTK_WIDGET(gtk_builder_get_object(cam->xml, "remote_protocol"));
rdir_entry = GTK_WIDGET(gtk_builder_get_object(cam->xml, "rdir_entry"));
- filename_entry = GTK_WIDGET(gtk_builder_get_object(cam->xml, "filename_entry"));
+ filename_entry = GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "filename_entry"));
- gtk_entry_set_text (GTK_ENTRY (host_entry), cam->host);
- gtk_entry_set_text (GTK_ENTRY (rdir_entry), cam->rdir);
- gtk_entry_set_text (GTK_ENTRY (filename_entry), cam->rcapturefile);
+ gtk_entry_set_text(GTK_ENTRY(host_entry), cam->host);
+ gtk_entry_set_text(GTK_ENTRY(rdir_entry), cam->rdir);
+ gtk_entry_set_text(GTK_ENTRY(filename_entry), cam->rcapturefile);
if (!cam->proto)
cam->proto = g_strdup(protos[0]);
- for (i = 0; i < G_N_ELEMENTS (protos); i++) {
- gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(protocol), protos[i]);
+ for (i = 0; i < G_N_ELEMENTS(protos); i++) {
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(protocol),
+ protos[i]);
if (!strcmp(cam->proto, protos[i]))
gtk_combo_box_set_active(GTK_COMBO_BOX(protocol), i);
}
@@ -484,60 +514,49 @@ load_interface(cam* cam) {
cam->uri = NULL;
}
- g_signal_connect (gtk_builder_get_object(cam->xml, "timecb"),
- "toggled", G_CALLBACK (rappend_func), cam);
- gtk_toggle_button_set_active ((GtkToggleButton *)
- gtk_builder_get_object (cam->xml,
- "timecb"),
- cam->rtimefn);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "timecb"),
+ "toggled", G_CALLBACK(rappend_func), cam);
+ gtk_toggle_button_set_active((GtkToggleButton *)gtk_builder_get_object(cam->xml, "timecb"),
+ cam->rtimefn);
- g_signal_connect (gtk_builder_get_object(cam->xml, "fjpgb"),
- "toggled", G_CALLBACK (rjpg_func), cam);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "fjpgb"),
+ "toggled", G_CALLBACK(rjpg_func), cam);
if (cam->rsavetype == JPEG) {
- gtk_toggle_button_set_active ((GtkToggleButton *)
- gtk_builder_get_object (cam->xml,
- "fjpgb"), TRUE);
+ gtk_toggle_button_set_active((GtkToggleButton *)gtk_builder_get_object(cam->xml, "fjpgb"),
+ TRUE);
}
- g_signal_connect (gtk_builder_get_object(cam->xml, "fpngb"),
- "toggled", G_CALLBACK (rpng_func), cam);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "fpngb"),
+ "toggled", G_CALLBACK(rpng_func), cam);
if (cam->rsavetype == PNG) {
- gtk_toggle_button_set_active ((GtkToggleButton *)
- gtk_builder_get_object (cam->xml,
- "fpngb"), TRUE);
+ gtk_toggle_button_set_active((GtkToggleButton *)gtk_builder_get_object(cam->xml, "fpngb"),
+ TRUE);
}
- g_signal_connect (gtk_builder_get_object(cam->xml, "tsbutton2"),
- "toggled", G_CALLBACK (rts_func), cam);
- gtk_toggle_button_set_active ((GtkToggleButton *)
- gtk_builder_get_object (cam->xml,
- "tsbutton2"),
- cam->rtimestamp);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "tsbutton2"),
+ "toggled", G_CALLBACK(rts_func), cam);
+ gtk_toggle_button_set_active((GtkToggleButton *)gtk_builder_get_object(cam->xml, "tsbutton2"),
+ cam->rtimestamp);
/* timestamp */
- g_signal_connect (gtk_builder_get_object(cam->xml, "cscb"),
- "toggled", G_CALLBACK (customstring_func), cam);
- gtk_toggle_button_set_active ((GtkToggleButton *)
- GTK_WIDGET(gtk_builder_get_object(cam->xml, "cscb")),
- cam->usestring);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "cscb"),
+ "toggled", G_CALLBACK(customstring_func), cam);
+ gtk_toggle_button_set_active((GtkToggleButton *)GTK_WIDGET(gtk_builder_get_object(cam->xml, "cscb")),
+ cam->usestring);
string_entry = GTK_WIDGET(gtk_builder_get_object(cam->xml, "string_entry"));
- gtk_entry_set_text (GTK_ENTRY (string_entry), cam->ts_string);
+ gtk_entry_set_text(GTK_ENTRY(string_entry), cam->ts_string);
- g_signal_connect (gtk_builder_get_object(cam->xml, "tscb"),
- "toggled", G_CALLBACK (drawdate_func), cam);
- gtk_toggle_button_set_active ((GtkToggleButton *)
- GTK_WIDGET(gtk_builder_get_object(cam->xml, "tscb")),
- cam->usedate);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "tscb"),
+ "toggled", G_CALLBACK(drawdate_func), cam);
+ gtk_toggle_button_set_active((GtkToggleButton *)GTK_WIDGET(gtk_builder_get_object(cam->xml, "tscb")),
+ cam->usedate);
cam->status = GTK_WIDGET(gtk_builder_get_object(cam->xml, "status"));
- set_sensitive (cam);
- gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object
- (cam->xml, "string_entry")), cam->usestring);
+ set_sensitive(cam);
+ gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(cam->xml, "string_entry")),
+ cam->usestring);
- gtk_widget_set_size_request (GTK_WIDGET(gtk_builder_get_object(cam->xml, "da")),
- cam->width, cam->height);
+ set_image_scale(cam);
prefswindow = GTK_WIDGET(gtk_builder_get_object(cam->xml, "prefswindow"));
}
-
-
diff --git a/src/camorama-window.h b/src/camorama-window.h
index 5a25e87..2727246 100644
--- a/src/camorama-window.h
+++ b/src/camorama-window.h
@@ -29,8 +29,8 @@
G_BEGIN_DECLS
-void load_interface(cam* cam);
+void load_interface(cam_t *cam);
G_END_DECLS
-#endif /* !CAMORAMA_WINDOW_H */
+#endif /* !CAMORAMA_WINDOW_H */
diff --git a/src/fileio.c b/src/fileio.c
index df13dbe..7eb0518 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1,23 +1,23 @@
+#include "interface.h"
+#include "support.h"
+#include "fileio.h"
+#include "v4l.h"
+
#include <errno.h>
-#include <gtk/gtk.h>
#include <gio/gio.h>
#include <glib/gi18n.h>
#include <time.h>
#include <stdio.h>
-#include "interface.h"
-#include "support.h"
-#include "fileio.h"
-
-# define CHAR_HEIGHT 11
-# define CHAR_WIDTH 6
-# define CHAR_START 4
-# include "font_6x11.h"
+#define CHAR_HEIGHT 11
+#define CHAR_WIDTH 6
+#define CHAR_START 4
+#include "font_6x11.h"
/* add timestamp/text to image - "borrowed" from gspy */
int
-add_rgb_text (guchar *image, int width, int height, char *cstring, char *format,
- gboolean str, gboolean date)
+add_rgb_text(guchar *image, int width, int height, char *cstring,
+ char *format, gboolean str, gboolean date)
{
time_t t;
struct tm *tm;
@@ -28,22 +28,23 @@ add_rgb_text (guchar *image, int width, int height, char *cstring, char *format,
gchar *image_label;
if (str == TRUE && date == TRUE) {
- image_label = g_strdup_printf ("%s - %s", cstring, format);
-
+ image_label = g_strdup_printf("%s - %s", cstring, format);
} else if (str == TRUE && date == FALSE) {
- image_label = g_strdup_printf ("%s", cstring);
+ image_label = g_strdup_printf("%s", cstring);
} else if (str == FALSE && date == TRUE) {
- image_label = g_strdup_printf ("%s", format);
+ image_label = g_strdup_printf("%s", format);
} else if (str == FALSE && date == FALSE) {
return 0;
+ } else {
+ image_label = g_strdup("");
}
- time (&t);
- tm = localtime (&t);
+ time(&t);
+ tm = localtime(&t);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
- len = strftime (line, sizeof(line) - 1, image_label, tm);
+ len = strftime(line, sizeof(line) - 1, image_label, tm);
#pragma GCC diagnostic pop
for (y = 0; y < CHAR_HEIGHT; y++) {
@@ -56,25 +57,23 @@ add_rgb_text (guchar *image, int width, int height, char *cstring, char *format,
f = fontdata[line[x] * CHAR_HEIGHT + y];
/* loop for each column of font data */
- for (i = CHAR_WIDTH - 1; i >= 0; i--) {
+ for (i = CHAR_WIDTH - 1; i >= 0; i--) {
/* write a black background under text
* comment out the following block to get white letters on picture background */
/* ptr[0] = 0;
* ptr[1] = 0;
* ptr[2] = 0; */
if (f & (CHAR_START << i)) {
-
/* white text */
-
total = ptr[0] + ptr[1] + ptr[2];
if (total / 3 < 128) {
- ptr[0] = 255;
- ptr[1] = 255;
- ptr[2] = 255;
+ ptr[0] = 255;
+ ptr[1] = 255;
+ ptr[2] = 255;
} else {
- ptr[0] = 0;
- ptr[1] = 0;
- ptr[2] = 0;
+ ptr[0] = 0;
+ ptr[1] = 0;
+ ptr[2] = 0;
}
}
ptr += 3;
@@ -84,7 +83,7 @@ add_rgb_text (guchar *image, int width, int height, char *cstring, char *format,
return 1;
}
-void remote_save (cam * cam)
+void remote_save(cam_t *cam)
{
GThread *remote_thread;
char *filename, *error_message;
@@ -94,52 +93,55 @@ void remote_save (cam * cam)
switch (cam->rsavetype) {
case JPEG:
- ext = g_strdup ((gchar *) "jpeg");
+ ext = g_strdup((gchar *) "jpeg");
break;
case PNG:
- ext = g_strdup ((gchar *) "png");
+ ext = g_strdup((gchar *) "png");
break;
default:
- ext = g_strdup ((gchar *) "jpeg");
+ ext = g_strdup((gchar *) "jpeg");
}
if (cam->rtimestamp == TRUE) {
- add_rgb_text (cam->tmp, cam->width, cam->height, cam->ts_string,
- cam->date_format, cam->usestring, cam->usedate);
+ add_rgb_text(cam->tmp, cam->width, cam->height, cam->ts_string,
+ cam->date_format, cam->usestring, cam->usedate);
}
- if (chdir ("/tmp") != 0) {
- error_dialog (_("Could save temporary image file in /tmp."));
- g_free (ext);
+ if (chdir("/tmp") != 0) {
+ error_dialog(_("Could save temporary image file in /tmp."));
+ g_free(ext);
}
- filename = g_strdup_printf ("camorama.%s", ext);
- pb = gdk_pixbuf_new_from_data (cam->tmp, GDK_COLORSPACE_RGB, FALSE, 8,
- cam->width, cam->height,
- cam->width * cam->bpp / 8, NULL,
- NULL);
-
+ filename = g_strdup_printf("camorama.%s", ext);
+ pb = gdk_pixbuf_new_from_data(cam->tmp, GDK_COLORSPACE_RGB, FALSE, 8,
+ cam->width, cam->height,
+ cam->width * cam->bpp / 8, NULL, NULL);
+
if (pb == NULL) {
- error_message =
- g_strdup_printf (_("Unable to create image '%s'."), filename);
- error_dialog (error_message);
- g_free (error_message);
+ error_message = g_strdup_printf(_("Unable to create image '%s'."),
+ filename);
+ error_dialog(error_message);
+ g_free(error_message);
}
- pbs = gdk_pixbuf_save (pb, filename, ext, NULL, NULL);
+ pbs = gdk_pixbuf_save(pb, filename, ext, NULL, NULL);
if (pbs == FALSE) {
- error_message =
- g_strdup_printf (_("Could not save image '%s/%s'."),
- cam->pixdir, filename);
- error_dialog (error_message);
- g_free (filename);
+ error_message = g_strdup_printf(_("Could not save image '%s/%s'."),
+ cam->pixdir, filename);
+ error_dialog(error_message);
+ g_free(filename);
}
- g_free (filename);
+ g_free(filename);
+
+ remote_thread = g_thread_new("remote", &save_thread, cam);
+ if (!remote_thread) {
+ error_message = g_strdup_printf(_("Could not create a thread to save image '%s/%s'."),
+ cam->pixdir, filename);
+ error_dialog(error_message);
+ }
- remote_thread =
- g_thread_new ("remote", (GThreadFunc) save_thread, cam);
- g_free (ext);
+ g_free(ext);
}
struct mount_params {
@@ -148,16 +150,16 @@ struct mount_params {
gchar *uri;
};
-static void mount_cb (GObject * obj, GAsyncResult * res, gpointer user_data)
+static void mount_cb(GObject *obj, GAsyncResult *res, gpointer user_data)
{
- cam *cam = user_data;
+ cam_t *cam = user_data;
gboolean ret;
GError *err = NULL;
- ret = g_file_mount_enclosing_volume_finish (G_FILE (obj), res, &err);
+ ret = g_file_mount_enclosing_volume_finish(G_FILE(obj), res, &err);
/* Ignore G_IO_ERROR_ALREADY_MOUNTED */
- if (g_error_matches (err, G_IO_ERROR, G_IO_ERROR_ALREADY_MOUNTED))
+ if (g_error_matches(err, G_IO_ERROR, G_IO_ERROR_ALREADY_MOUNTED))
ret = 1;
if (ret) {
@@ -167,22 +169,21 @@ static void mount_cb (GObject * obj, GAsyncResult * res, gpointer user_data)
gconf_client_set_string(cam->gc, KEY8, cam->rdir, NULL);
gconf_client_set_string(cam->gc, KEY9, cam->rcapturefile, NULL);
} else {
- gchar *error_message = g_strdup_printf (_("An error occurred mounting %s:%s."),
- cam->uri, err->message);
- error_dialog (error_message);
- g_free (error_message);
+ gchar *error_message = g_strdup_printf(_("An error occurred mounting %s:%s."),
+ cam->uri, err->message);
+
+ error_dialog(error_message);
+ g_free(error_message);
}
}
gchar *volume_uri(gchar *host, gchar *proto, gchar *rdir)
{
- return g_strdup_printf ("%s://%s/%s", proto, host, rdir);
+ return g_strdup_printf("%s://%s/%s", proto, host, rdir);
}
-void umount_volume(cam *cam)
+void umount_volume(cam_t *cam)
{
- struct mount_params mount;
-
/* Unmount previous volume */
if (!cam->rdir_ok)
return;
@@ -194,7 +195,7 @@ void umount_volume(cam *cam)
NULL, cam);
}
-void mount_volume(cam *cam)
+void mount_volume(cam_t *cam)
{
/* Prepare a mount operation */
cam->rdir_file = g_file_new_for_uri(cam->uri);
@@ -204,134 +205,129 @@ void mount_volume(cam *cam)
cam->rdir_mop = NULL;
if (!cam->rdir_mop) {
- gchar *error_message = g_strdup_printf (_("An error occurred accessing %s."),
- cam->uri);
- error_dialog (error_message);
- g_free (error_message);
+ gchar *error_message = g_strdup_printf(_("An error occurred accessing %s."),
+ cam->uri);
+
+ error_dialog(error_message);
+ g_free(error_message);
return;
}
- g_file_mount_enclosing_volume(cam->rdir_file, G_MOUNT_MOUNT_NONE,
+ g_file_mount_enclosing_volume(cam->rdir_file, G_MOUNT_MOUNT_NONE,
cam->rdir_mop, NULL, mount_cb, cam);
}
-void save_thread (cam * cam)
+gpointer save_thread(gpointer data)
{
+ cam_t *cam = data;
char *output_uri_string, *input_uri_string;
GFile *uri_1;
GFileOutputStream *fout;
unsigned char *tmp;
- gboolean test;
- char *filename, *error_message;
+ char *error_message;
FILE *fp;
int bytes = 0;
time_t t;
char timenow[64], *ext;
struct tm *tm;
- gboolean pbs;
- GdkPixbuf *pb;
GError *error = NULL;
/* Check if it is ready to mount */
if (!cam->rdir_ok)
- return;
+ return NULL;
switch (cam->rsavetype) {
case JPEG:
- ext = g_strdup ((gchar *) "jpeg");
+ ext = g_strdup((gchar *) "jpeg");
break;
case PNG:
- ext = g_strdup ((gchar *) "png");
+ ext = g_strdup((gchar *) "png");
break;
default:
- ext = g_strdup ((gchar *) "jpeg");
+ ext = g_strdup((gchar *) "jpeg");
}
- input_uri_string = g_strdup_printf ("camorama.%s", ext);
+ input_uri_string = g_strdup_printf("camorama.%s", ext);
- if (chdir ("/tmp") != 0) {
- error_dialog (_("Could save temporary image file in /tmp."));
- g_free (ext);
- g_thread_exit (NULL);
+ if (chdir("/tmp") != 0) {
+ error_dialog(_("Could save temporary image file in /tmp."));
+ g_free(ext);
+ g_thread_exit(NULL);
}
- if (!(fp = fopen (input_uri_string, "rb"))) {
- error_message =
- g_strdup_printf (_
- ("Unable to open temporary image file '%s'.\nCannot upload image."),
- input_uri_string);
- error_dialog (error_message);
- g_free (input_uri_string);
- g_free (error_message);
- g_thread_exit (NULL);
+ if (!(fp = fopen(input_uri_string, "rb"))) {
+ error_message = g_strdup_printf(_("Unable to open temporary image file '%s'.\nCannot upload image."),
+ input_uri_string);
+ error_dialog(error_message);
+ g_free(input_uri_string);
+ g_free(error_message);
+ g_thread_exit(NULL);
//exit (0);
}
- tmp = malloc (sizeof (char) * cam->width * cam->height * cam->bpp * 2 / 8);
- while (!feof (fp)) {
- bytes += fread (tmp, 1, cam->width * cam->height * cam->bpp / 8, fp);
+ tmp = malloc(sizeof(char) * cam->width * cam->height * cam->bpp * 2 / 8);
+ while (!feof(fp)) {
+ bytes += fread(tmp, 1, cam->width * cam->height * cam->bpp / 8, fp);
}
- fclose (fp);
+ fclose(fp);
- time (&t);
- tm = localtime (&t);
- strftime (timenow, sizeof (timenow) - 1, "%s", tm);
+ time(&t);
+ tm = localtime(&t);
+ strftime(timenow, sizeof(timenow) - 1, "%s", tm);
if (cam->rtimefn == TRUE) {
- output_uri_string = g_strdup_printf ("%s/%s-%s.%s", cam->uri,
- cam->capturefile,
- timenow, ext);
+ output_uri_string = g_strdup_printf("%s/%s-%s.%s", cam->uri,
+ cam->capturefile,
+ timenow, ext);
} else {
- output_uri_string = g_strdup_printf ("%s/%s.%s", cam->uri,
- cam->capturefile, ext);
+ output_uri_string = g_strdup_printf("%s/%s.%s", cam->uri,
+ cam->capturefile, ext);
}
- uri_1 = g_file_new_for_uri (output_uri_string);
+ uri_1 = g_file_new_for_uri(output_uri_string);
if (!uri_1) {
- error_message =
- g_strdup_printf (_("An error occurred opening %s."),
- output_uri_string);
- error_dialog (error_message);
- g_free (error_message);
- g_thread_exit (NULL);
+ error_message = g_strdup_printf(_("An error occurred opening %s."),
+ output_uri_string);
+ error_dialog(error_message);
+ g_free(error_message);
+ g_thread_exit(NULL);
}
- fout = g_file_replace (uri_1, NULL, FALSE,
- G_FILE_CREATE_REPLACE_DESTINATION, NULL, &error);
+ fout = g_file_replace(uri_1, NULL, FALSE,
+ G_FILE_CREATE_REPLACE_DESTINATION, NULL, &error);
if (error) {
error_message =
- g_strdup_printf (_("An error occurred opening %s for write: %s."),
- output_uri_string, error->message);
- error_dialog (error_message);
- g_free (error_message);
- g_thread_exit (NULL);
+ g_strdup_printf(_("An error occurred opening %s for write: %s."),
+ output_uri_string, error->message);
+ error_dialog(error_message);
+ g_free(error_message);
+ g_thread_exit(NULL);
}
/* write the data */
g_output_stream_write(G_OUTPUT_STREAM(fout), tmp, bytes, NULL, &error);
if (error) {
- error_message =
- g_strdup_printf (_("An error occurred writing to %s: %s."),
- output_uri_string, error->message);
- error_dialog (error_message);
- g_free (error_message);
+ error_message = g_strdup_printf(_("An error occurred writing to %s: %s."),
+ output_uri_string, error->message);
+ error_dialog(error_message);
+ g_free(error_message);
}
g_output_stream_close(G_OUTPUT_STREAM(fout), NULL, &error);
if (error) {
- error_message =
- g_strdup_printf (_("An error occurred closing %s: %s."),
- output_uri_string, error->message);
- error_dialog (error_message);
- g_free (error_message);
+ error_message = g_strdup_printf(_("An error occurred closing %s: %s."),
+ output_uri_string, error->message);
+ error_dialog(error_message);
+ g_free(error_message);
}
g_object_unref(uri_1);
- free (tmp);
- g_thread_exit (NULL);
+ free(tmp);
+ g_thread_exit(NULL);
+
+ return NULL;
}
-int local_save (cam * cam)
+int local_save(cam_t *cam)
{
- int fc;
gchar *filename, *ext;
time_t t;
struct tm *tm;
@@ -340,86 +336,78 @@ int local_save (cam * cam)
gboolean pbs;
GdkPixbuf *pb;
- /* todo:
- * run gdk-pixbuf-query-loaders to get available image types*/
+ /*
+ * TODO: run gdk-pixbuf-query-loaders to get available image types
+ */
switch (cam->savetype) {
case JPEG:
- ext = g_strdup ((gchar *) "jpeg");
+ ext = g_strdup((gchar *) "jpeg");
break;
case PNG:
- ext = g_strdup ((gchar *) "png");
+ ext = g_strdup((gchar *) "png");
break;
default:
- ext = g_strdup ((gchar *) "jpeg");
+ ext = g_strdup((gchar *) "jpeg");
}
- if (cam->timestamp == TRUE) {
- add_rgb_text (cam->tmp, cam->width, cam->height, cam->ts_string,
- cam->date_format, cam->usestring, cam->usedate);
- }
+ if (cam->timestamp == TRUE)
+ add_rgb_text(cam->tmp, cam->width, cam->height, cam->ts_string,
+ cam->date_format, cam->usestring, cam->usedate);
- time (&t);
- tm = localtime (&t);
- len = strftime (timenow, sizeof (timenow) - 1, "%s", tm);
+ time(&t);
+ tm = localtime(&t);
+ len = strftime(timenow, sizeof(timenow) - 1, "%s", tm);
+ if (len < 0)
+ timenow[0] = '\0';
- if (cam->debug == TRUE) {
- fprintf (stderr, "time = %s\n", timenow);
- }
+ if (cam->debug == TRUE)
+ fprintf(stderr, "time = %s\n", timenow);
- if (cam->timefn == TRUE) {
- filename =
- g_strdup_printf ("%s-%s.%s", cam->capturefile, timenow, ext);
- } else {
- filename = g_strdup_printf ("%s.%s", cam->capturefile, ext);
- }
+ if (cam->timefn == TRUE)
+ filename = g_strdup_printf("%s-%s.%s", cam->capturefile, timenow, ext);
+ else
+ filename = g_strdup_printf("%s.%s", cam->capturefile, ext);
- if (cam->debug == TRUE) {
- fprintf (stderr, "filename = %s\n", filename);
- }
- mkd = mkdir (cam->pixdir, 0777);
+ if (cam->debug == TRUE)
+ fprintf(stderr, "filename = %s\n", filename);
- if (cam->debug == TRUE) {
- perror ("create dir: ");
- }
+ mkd = mkdir(cam->pixdir, 0777);
+
+ if (cam->debug == TRUE)
+ perror("create dir: ");
if (mkd != 0 && errno != EEXIST) {
- error_message =
- g_strdup_printf (_
- ("Could not create directory '%s'."),
- cam->pixdir);
- error_dialog (error_message);
- g_free (filename);
- g_free (error_message);
+ error_message = g_strdup_printf(_("Could not create directory '%s'."),
+ cam->pixdir);
+ error_dialog(error_message);
+ g_free(filename);
+ g_free(error_message);
return -1;
}
- if (chdir (cam->pixdir) != 0) {
- error_message =
- g_strdup_printf (_
- ("Could not change to directory '%s'."),
- cam->pixdir);
- error_dialog (error_message);
- g_free (filename);
- g_free (error_message);
+ if (chdir(cam->pixdir) != 0) {
+ error_message = g_strdup_printf(_("Could not change to directory '%s'."),
+ cam->pixdir);
+ error_dialog(error_message);
+ g_free(filename);
+ g_free(error_message);
return -1;
}
- pb = gdk_pixbuf_new_from_data (cam->tmp, GDK_COLORSPACE_RGB, FALSE, 8,
- cam->width, cam->height,
- (cam->width * cam->bpp / 8), NULL,
- NULL);
- pbs = gdk_pixbuf_save (pb, filename, ext, NULL, NULL);
- if (pbs == FALSE) {
- error_message =
- g_strdup_printf (_("Could not save image '%s/%s'."),
- cam->pixdir, filename);
- error_dialog (error_message);
- g_free (filename);
- g_free (error_message);
+ pb = gdk_pixbuf_new_from_data(cam->tmp, GDK_COLORSPACE_RGB, FALSE, 8,
+ cam->width, cam->height,
+ (cam->width * cam->bpp / 8), NULL, NULL);
+ pbs = gdk_pixbuf_save(pb, filename, ext, NULL, NULL);
+ if (pbs == FALSE) {
+ error_message = g_strdup_printf(_("Could not save image '%s/%s'."),
+ cam->pixdir, filename);
+ error_dialog(error_message);
+ g_free(filename);
+ g_free(error_message);
return -1;
}
- g_free (filename);
+ g_free(filename);
return 0;
}
diff --git a/src/fileio.h b/src/fileio.h
index 9aa8688..49f7742 100644
--- a/src/fileio.h
+++ b/src/fileio.h
@@ -1,9 +1,9 @@
#include "v4l.h"
-int add_rgb_text (guchar *, int, int, char *, char *, gboolean, gboolean);
-void remote_save (cam *);
-void save_thread (cam *);
-int local_save (cam *);
+int add_rgb_text(guchar *, int, int, char *, char *, gboolean, gboolean);
+void remote_save(cam_t *);
+gpointer save_thread(gpointer data);
+int local_save(cam_t *);
gchar *volume_uri(gchar *host, gchar *proto, gchar *rdir);
-void umount_volume(cam *);
-void mount_volume (cam *);
+void umount_volume(cam_t *);
+void mount_volume(cam_t *);
diff --git a/src/filter.c b/src/filter.c
index c55e9b8..9baab5d 100644
--- a/src/filter.c
+++ b/src/filter.c
@@ -6,43 +6,53 @@
#include <glib/gi18n.h>
-gchar const*
-camorama_filter_get_name(CamoramaFilter* self) {
- gchar const* name = CAMORAMA_FILTER_GET_CLASS(self)->name;
- g_return_val_if_fail(name, G_OBJECT_TYPE_NAME(self));
- return _(name);
+gchar const *camorama_filter_get_name(CamoramaFilter * self)
+{
+ gchar const *name = CAMORAMA_FILTER_GET_CLASS(self)->name;
+
+ g_return_val_if_fail(name, G_OBJECT_TYPE_NAME(self));
+ return _(name);
}
void
-camorama_filter_apply(CamoramaFilter* self, guchar* image, gint width, gint height, gint depth) {
- g_return_if_fail(CAMORAMA_FILTER_GET_CLASS(self)->filter);
+camorama_filter_apply(CamoramaFilter *self, guchar *image, gint width,
+ gint height, gint depth)
+{
+ g_return_if_fail(CAMORAMA_FILTER_GET_CLASS(self)->filter);
- CAMORAMA_FILTER_GET_CLASS(self)->filter(self, image, width, height, depth);
+ CAMORAMA_FILTER_GET_CLASS(self)->filter(self, image, width, height,
+ depth);
}
/* GType stuff ifor CamoramaFilter */
G_DEFINE_ABSTRACT_TYPE(CamoramaFilter, camorama_filter, G_TYPE_OBJECT);
-static void
-camorama_filter_init(CamoramaFilter* self) {}
+static void camorama_filter_init(CamoramaFilter *self)
+{
+}
-static void
-camorama_filter_class_init(CamoramaFilterClass* self_class) {}
+static void camorama_filter_class_init(CamoramaFilterClass *self_class)
+{
+}
#include "v4l.h"
-static inline void move_420_block (int yTL, int yTR, int yBL, int yBR, int u,
- int v, int rowPixels, unsigned char *rgb,
- int bits);
+static inline void move_420_block(int yTL, int yTR, int yBL, int yBR,
+ int u, int v, int rowPixels,
+ unsigned char *rgb, int bits);
-/*these two functions are borrowed from the ov511 driver, with the author,
- *Mark McClelland's kind encoragement*/
+/*
+ * these two functions are borrowed from the ov511 driver, with the author,
+ * Mark McClelland's kind encoragement
+ */
/* LIMIT: convert a 16.16 fixed-point value to a byte, with clipping. */
-#define LIMIT(x) ((x)>0xffffff?0xff: ((x)<=0xffff?0:((x)>>16)))
+#define LIMIT(x) ((x) > 0xffffff?0xff : ((x) <= 0xffff?0:((x)>>16)))
void
-yuv420p_to_rgb (unsigned char *image, unsigned char *temp, int x, int y, int z) {
+yuv420p_to_rgb(unsigned char *image, unsigned char *temp, int x, int y,
+ int z)
+{
const int numpix = x * y;
const int bytes = z; /* (z*8) >> 3; */
int i, j, y00, y01, y10, y11, u, v;
@@ -50,8 +60,9 @@ yuv420p_to_rgb (unsigned char *image, unsigned char *temp, int x, int y, int z)
unsigned char *pU = pY + numpix;
unsigned char *pV = pU + numpix / 4;
unsigned char *image2 = temp;
- if(FALSE) // FIXME: make TRUE to add debugging in here
- g_print("%s\n", "yuv420p->rgb");
+
+ if (FALSE) // FIXME: make TRUE to add debugging in here
+ g_print("%s\n", "yuv420p->rgb");
for (j = 0; j <= y - 2; j += 2) {
for (i = 0; i <= x - 2; i += 2) {
y00 = *pY;
@@ -61,19 +72,19 @@ yuv420p_to_rgb (unsigned char *image, unsigned char *temp, int x, int y, int z)
u = (*pU++) - 128;
v = (*pV++) - 128;
- move_420_block (y00, y01, y10, y11, u, v, x, image2, z * 8);
+ move_420_block(y00, y01, y10, y11, u, v, x, image2, z * 8);
- pY += 2;
- image2 += 2 * bytes;
- }
- pY += x;
- image2 += x * bytes;
+ pY += 2;
+ image2 += 2 * bytes;
}
+ pY += x;
+ image2 += x * bytes;
+ }
}
static inline void
-move_420_block (int yTL, int yTR, int yBL, int yBR, int u, int v,
- int rowPixels, unsigned char *rgb, int bits)
+move_420_block(int yTL, int yTR, int yBL, int yBR, int u, int v,
+ int rowPixels, unsigned char *rgb, int bits)
{
const int rvScale = 91881;
const int guScale = -22553;
@@ -98,123 +109,135 @@ move_420_block (int yTL, int yTR, int yBL, int yBR, int u, int v,
if (bits == 24) {
/* Write out top two pixels */
- rgb[0] = LIMIT (b + yTL);
- rgb[1] = LIMIT (g + yTL);
- rgb[2] = LIMIT (r + yTL);
+ rgb[0] = LIMIT(b + yTL);
+ rgb[1] = LIMIT(g + yTL);
+ rgb[2] = LIMIT(r + yTL);
- rgb[3] = LIMIT (b + yTR);
- rgb[4] = LIMIT (g + yTR);
- rgb[5] = LIMIT (r + yTR);
+ rgb[3] = LIMIT(b + yTR);
+ rgb[4] = LIMIT(g + yTR);
+ rgb[5] = LIMIT(r + yTR);
/* Skip down to next line to write out bottom two pixels */
rgb += 3 * rowPixels;
- rgb[0] = LIMIT (b + yBL);
- rgb[1] = LIMIT (g + yBL);
- rgb[2] = LIMIT (r + yBL);
+ rgb[0] = LIMIT(b + yBL);
+ rgb[1] = LIMIT(g + yBL);
+ rgb[2] = LIMIT(r + yBL);
- rgb[3] = LIMIT (b + yBR);
- rgb[4] = LIMIT (g + yBR);
- rgb[5] = LIMIT (r + yBR);
+ rgb[3] = LIMIT(b + yBR);
+ rgb[4] = LIMIT(g + yBR);
+ rgb[5] = LIMIT(r + yBR);
} else if (bits == 16) {
/* Write out top two pixels */
- rgb[0] = ((LIMIT (b + yTL) >> 3) & 0x1F)
- | ((LIMIT (g + yTL) << 3) & 0xE0);
- rgb[1] = ((LIMIT (g + yTL) >> 5) & 0x07)
- | (LIMIT (r + yTL) & 0xF8);
+ rgb[0] = ((LIMIT(b + yTL) >> 3) & 0x1F)
+ | ((LIMIT(g + yTL) << 3) & 0xE0);
+ rgb[1] = ((LIMIT(g + yTL) >> 5) & 0x07)
+ | (LIMIT(r + yTL) & 0xF8);
- rgb[2] = ((LIMIT (b + yTR) >> 3) & 0x1F)
- | ((LIMIT (g + yTR) << 3) & 0xE0);
- rgb[3] = ((LIMIT (g + yTR) >> 5) & 0x07)
- | (LIMIT (r + yTR) & 0xF8);
+ rgb[2] = ((LIMIT(b + yTR) >> 3) & 0x1F)
+ | ((LIMIT(g + yTR) << 3) & 0xE0);
+ rgb[3] = ((LIMIT(g + yTR) >> 5) & 0x07)
+ | (LIMIT(r + yTR) & 0xF8);
/* Skip down to next line to write out bottom two pixels */
rgb += 2 * rowPixels;
- rgb[0] = ((LIMIT (b + yBL) >> 3) & 0x1F)
- | ((LIMIT (g + yBL) << 3) & 0xE0);
- rgb[1] = ((LIMIT (g + yBL) >> 5) & 0x07)
- | (LIMIT (r + yBL) & 0xF8);
+ rgb[0] = ((LIMIT(b + yBL) >> 3) & 0x1F)
+ | ((LIMIT(g + yBL) << 3) & 0xE0);
+ rgb[1] = ((LIMIT(g + yBL) >> 5) & 0x07)
+ | (LIMIT(r + yBL) & 0xF8);
- rgb[2] = ((LIMIT (b + yBR) >> 3) & 0x1F)
- | ((LIMIT (g + yBR) << 3) & 0xE0);
- rgb[3] = ((LIMIT (g + yBR) >> 5) & 0x07)
- | (LIMIT (r + yBR) & 0xF8);
+ rgb[2] = ((LIMIT(b + yBR) >> 3) & 0x1F)
+ | ((LIMIT(g + yBR) << 3) & 0xE0);
+ rgb[3] = ((LIMIT(g + yBR) >> 5) & 0x07)
+ | (LIMIT(r + yBR) & 0xF8);
}
}
/* GType stuff for CamoramaFilterColor */
-typedef struct _CamoramaFilter CamoramaFilterColor;
+typedef struct _CamoramaFilter CamoramaFilterColor;
typedef struct _CamoramaFilterClass CamoramaFilterColorClass;
-G_DEFINE_TYPE(CamoramaFilterColor, camorama_filter_color, CAMORAMA_TYPE_FILTER);
+G_DEFINE_TYPE(CamoramaFilterColor, camorama_filter_color,
+ CAMORAMA_TYPE_FILTER);
-static void
-camorama_filter_color_init(CamoramaFilterColor* self) {}
+static void camorama_filter_color_init(CamoramaFilterColor *self)
+{
+}
void
-camorama_filter_color_filter(void *__filter, guchar *image, int x, int y, int depth) {
- CamoramaFilterColor *filter = __filter;
- int i;
- char tmp;
- i = x * y;
- while (i--) {
- tmp = image[0];
- image[0] = image[2];
- image[2] = tmp;
- image += 3;
- }
+camorama_filter_color_filter(void *__filter, guchar *image, int x, int y,
+ int depth)
+{
+ int i;
+ char tmp;
+
+ i = x * y;
+ while (i--) {
+ tmp = image[0];
+ image[0] = image[2];
+ image[2] = tmp;
+ image += 3;
+ }
}
static void
-camorama_filter_color_class_init(CamoramaFilterColorClass* self_class) {
- self_class->filter = camorama_filter_color_filter;
- self_class->name = _("Color Correction");
+camorama_filter_color_class_init(CamoramaFilterColorClass *self_class)
+{
+ self_class->filter = camorama_filter_color_filter;
+ self_class->name = _("Color Correction");
}
/* GType stuff for CamoramaFilterInvert */
-typedef struct _CamoramaFilter CamoramaFilterInvert;
+typedef struct _CamoramaFilter CamoramaFilterInvert;
typedef struct _CamoramaFilterClass CamoramaFilterInvertClass;
-G_DEFINE_TYPE(CamoramaFilterInvert, camorama_filter_invert, CAMORAMA_TYPE_FILTER);
+G_DEFINE_TYPE(CamoramaFilterInvert, camorama_filter_invert,
+ CAMORAMA_TYPE_FILTER);
-static void
-camorama_filter_invert_init(CamoramaFilterInvert* self) {}
+static void camorama_filter_invert_init(CamoramaFilterInvert *self)
+{
+}
static void
-camorama_filter_invert_filter(CamoramaFilter* filter, guchar *image, int x, int y, int depth) {
-#warning "FIXME: add a checking cast here"
- CamoramaFilterInvert* self = (CamoramaFilterInvert*)filter;
- int i;
- for (i = 0; i < x * y * depth; i++) {
- image[i] = 255 - image[i];
- }
+camorama_filter_invert_filter(void *filter, guchar *image, int x, int y,
+ int depth)
+{
+ int i;
+
+ for (i = 0; i < x * y * depth; i++) {
+ image[i] = 255 - image[i];
+ }
}
static void
-camorama_filter_invert_class_init(CamoramaFilterClass* self_class) {
- self_class->filter = camorama_filter_invert_filter;
- self_class->name = _("Invert");
+camorama_filter_invert_class_init(CamoramaFilterClass *self_class)
+{
+ self_class->filter = camorama_filter_invert_filter;
+ self_class->name = _("Invert");
}
/* GType stuff for CamoramaFilterThreshold */
typedef struct _CamoramaFilterThreshold {
- CamoramaFilter base_instance;
- gint threshold;
+ CamoramaFilter base_instance;
+ gint threshold;
} CamoramaFilterThreshold;
typedef struct _CamoramaFilterClass CamoramaFilterThresholdClass;
-G_DEFINE_TYPE(CamoramaFilterThreshold, camorama_filter_threshold, CAMORAMA_TYPE_FILTER);
+G_DEFINE_TYPE(CamoramaFilterThreshold, camorama_filter_threshold,
+ CAMORAMA_TYPE_FILTER);
-static void
-camorama_filter_threshold_init(CamoramaFilterThreshold* self) {
- self->threshold = 127;
+static void camorama_filter_threshold_init(CamoramaFilterThreshold *self)
+{
+ self->threshold = 127;
}
static void
-camorama_filter_threshold_filter(CamoramaFilter* filter, guchar *image, int x, int y, int depth) {
-#warning "FIXME: cast"
- CamoramaFilterThreshold* self = (CamoramaFilterThreshold*)filter;
+camorama_filter_threshold_filter(void *filter, guchar *image, int x,
+ int y, int depth)
+{
+ CamoramaFilterThreshold *self = filter;
int i;
+
for (i = 0; i < x * y; i++) {
if ((image[0] + image[1] + image[2]) > (self->threshold * 3)) {
image[0] = 255;
@@ -230,27 +253,35 @@ camorama_filter_threshold_filter(CamoramaFilter* filter, guchar *image, int x, i
}
static void
-camorama_filter_threshold_class_init(CamoramaFilterThresholdClass* self_class) {
- self_class->filter = camorama_filter_threshold_filter;
- self_class->name = _("Threshold (Overall)");
+camorama_filter_threshold_class_init(CamoramaFilterThresholdClass *
+ self_class)
+{
+ self_class->filter = camorama_filter_threshold_filter;
+ self_class->name = _("Threshold (Overall)");
}
/* GType stuff for CamoramaFilterThresholdChannel */
typedef struct _CamoramaFilterThreshold CamoramaFilterThresholdChannel;
-typedef struct _CamoramaFilterClass CamoramaFilterThresholdChannelClass;
+typedef struct _CamoramaFilterClass CamoramaFilterThresholdChannelClass;
-G_DEFINE_TYPE(CamoramaFilterThresholdChannel, camorama_filter_threshold_channel, CAMORAMA_TYPE_FILTER);
+G_DEFINE_TYPE(CamoramaFilterThresholdChannel,
+ camorama_filter_threshold_channel, CAMORAMA_TYPE_FILTER);
static void
-camorama_filter_threshold_channel_init(CamoramaFilterThresholdChannel* self) {
- self->threshold = 127;
+camorama_filter_threshold_channel_init(CamoramaFilterThresholdChannel *
+ self)
+{
+ self->threshold = 127;
}
static void
-camorama_filter_threshold_channel_filter(CamoramaFilter* filter, unsigned char *image, int x, int y, int depth) {
-#warning "FIXME: cast"
- CamoramaFilterThresholdChannel* self = (CamoramaFilterThresholdChannel*)filter;
+camorama_filter_threshold_channel_filter(void *filter,
+ unsigned char *image, int x,
+ int y, int depth)
+{
+ CamoramaFilterThresholdChannel *self = filter;
int i;
+
for (i = 0; i < x * y; i++) {
if (image[0] > self->threshold) {
image[0] = 255;
@@ -272,29 +303,35 @@ camorama_filter_threshold_channel_filter(CamoramaFilter* filter, unsigned char *
}
static void
-camorama_filter_threshold_channel_class_init(CamoramaFilterThresholdChannelClass* self_class) {
- self_class->filter = camorama_filter_threshold_channel_filter;
- self_class->name = _("Threshold (Per Channel)");
+camorama_filter_threshold_channel_class_init
+(CamoramaFilterThresholdChannelClass *self_class)
+{
+ self_class->filter = camorama_filter_threshold_channel_filter;
+ self_class->name = _("Threshold (Per Channel)");
}
/* GType stuff for CamoramaFilterWacky */
-typedef struct _CamoramaFilter CamoramaFilterWacky;
+typedef struct _CamoramaFilter CamoramaFilterWacky;
typedef struct _CamoramaFilterClass CamoramaFilterWackyClass;
-G_DEFINE_TYPE(CamoramaFilterWacky, camorama_filter_wacky, CAMORAMA_TYPE_FILTER);
+G_DEFINE_TYPE(CamoramaFilterWacky, camorama_filter_wacky,
+ CAMORAMA_TYPE_FILTER);
-static void
-camorama_filter_wacky_init(CamoramaFilterWacky* self) {}
+static void camorama_filter_wacky_init(CamoramaFilterWacky *self)
+{
+}
static void
-camorama_filter_wacky_filter(CamoramaFilter* filter, unsigned char *image, int x, int y, int depth) {
+camorama_filter_wacky_filter(void *filter, unsigned char *image, int x,
+ int y, int depth)
+{
int i;
int neighbours;
int total;
- unsigned char *image2, *image3;
- image2 = (unsigned char *) malloc (sizeof (unsigned char) * x * y * depth);
- memcpy (image2, image, x * y * depth);
- image3 = image2;
+ unsigned char *image2;
+
+ image2 = malloc(sizeof(unsigned char) * x * y * depth);
+ memcpy(image2, image, x * y * depth);
for (i = 0; i < x * y; i++) {
total = 0;
@@ -341,34 +378,39 @@ camorama_filter_wacky_filter(CamoramaFilter* filter, unsigned char *image, int x
image[2] = image[0];
image += depth;
}
- free (image2);
+ free(image2);
}
static void
-camorama_filter_wacky_class_init(CamoramaFilterWackyClass* self_class) {
- self_class->filter = camorama_filter_wacky_filter;
- self_class->name = _("Wacky");
+camorama_filter_wacky_class_init(CamoramaFilterWackyClass *self_class)
+{
+ self_class->filter = camorama_filter_wacky_filter;
+ self_class->name = _("Wacky");
}
/* GType stuff for CamoramaFilterSmotth */
-typedef struct _CamoramaFilter CamoramaFilterSmooth;
+typedef struct _CamoramaFilter CamoramaFilterSmooth;
typedef struct _CamoramaFilterClass CamoramaFilterSmoothClass;
-G_DEFINE_TYPE(CamoramaFilterSmooth, camorama_filter_smooth, CAMORAMA_TYPE_FILTER);
+G_DEFINE_TYPE(CamoramaFilterSmooth, camorama_filter_smooth,
+ CAMORAMA_TYPE_FILTER);
-static void
-camorama_filter_smooth_init(CamoramaFilterSmooth* self) {}
+static void camorama_filter_smooth_init(CamoramaFilterSmooth *self)
+{
+}
static void
-camorama_filter_smooth_filter(CamoramaFilter* filter, guchar *image, int x, int y, int depth) {
+camorama_filter_smooth_filter(void *filter, guchar *image, int x, int y,
+ int depth)
+{
int i;
int neighbours;
int total0, total1, total2;
unsigned char *image2, *image3;
int tr = 0, br = 0;
- image2 = (unsigned char *) malloc (sizeof (unsigned char) * x * y * depth);
- memcpy (image2, image, x * y * depth);
+ image2 = malloc(sizeof(unsigned char) * x * y * depth);
+ memcpy(image2, image, x * y * depth);
image3 = image2;
for (i = 0; i < x * y; i++) {
@@ -394,9 +436,9 @@ camorama_filter_smooth_filter(CamoramaFilter* filter, guchar *image, int x, int
total1 = total1 + image2[7];
total2 = total2 + image2[8];
neighbours = neighbours + depth;
- if (tr > 1) {
+ if (tr > 1) {
tr = 0;
- }
+ }
image2 += (x + 1) * depth;
}
if (i > x * (y - 1)) {
@@ -435,39 +477,44 @@ camorama_filter_smooth_filter(CamoramaFilter* filter, guchar *image, int x, int
image2 += 3;
neighbours++;
- image[0] = (int) (total0 / neighbours);
- image[1] = (int) (total1 / neighbours);
- image[2] = (int) (total2 / neighbours);
+ image[0] = (int)(total0 / neighbours);
+ image[1] = (int)(total1 / neighbours);
+ image[2] = (int)(total2 / neighbours);
image += 3;
image2 += 3;
}
- free (image3);
+ free(image3);
}
static void
-camorama_filter_smooth_class_init(CamoramaFilterSmoothClass* self_class) {
- self_class->filter = camorama_filter_smooth_filter;
- self_class->name = _("Smooth");
+camorama_filter_smooth_class_init(CamoramaFilterSmoothClass *self_class)
+{
+ self_class->filter = camorama_filter_smooth_filter;
+ self_class->name = _("Smooth");
}
/* GType for CamoramaFilterMono */
-typedef struct _CamoramaFilter CamoramaFilterMono;
+typedef struct _CamoramaFilter CamoramaFilterMono;
typedef struct _CamoramaFilterClass CamoramaFilterMonoClass;
-G_DEFINE_TYPE(CamoramaFilterMono, camorama_filter_mono, CAMORAMA_TYPE_FILTER);
+G_DEFINE_TYPE(CamoramaFilterMono, camorama_filter_mono,
+ CAMORAMA_TYPE_FILTER);
-static void
-camorama_filter_mono_init(CamoramaFilterMono* self) {}
+static void camorama_filter_mono_init(CamoramaFilterMono *self)
+{
+}
static void
-camorama_filter_mono_filter(CamoramaFilter* filter, unsigned char *image, int x, int y, int depth) {
+camorama_filter_mono_filter(void *filter, unsigned char *image, int x,
+ int y, int depth)
+{
int i;
int total, avg;
for (i = 0; i < x * y; i++) {
total = image[0] + image[1] + image[2];
- avg = (int) (total / 3);
+ avg = (int)(total / 3);
image[0] = avg;
image[1] = avg;
@@ -477,27 +524,34 @@ camorama_filter_mono_filter(CamoramaFilter* filter, unsigned char *image, int x,
}
static void
-camorama_filter_mono_class_init(CamoramaFilterMonoClass* self_class) {
- self_class->filter = camorama_filter_mono_filter;
- self_class->name = _("Monochrome");
+camorama_filter_mono_class_init(CamoramaFilterMonoClass *self_class)
+{
+ self_class->filter = camorama_filter_mono_filter;
+ self_class->name = _("Monochrome");
}
/* GType for CamoramaFilterMonoWeight */
-typedef struct _CamoramaFilter CamoramaFilterMonoWeight;
+typedef struct _CamoramaFilter CamoramaFilterMonoWeight;
typedef struct _CamoramaFilterClass CamoramaFilterMonoWeightClass;
-G_DEFINE_TYPE(CamoramaFilterMonoWeight, camorama_filter_mono_weight, CAMORAMA_TYPE_FILTER);
+G_DEFINE_TYPE(CamoramaFilterMonoWeight, camorama_filter_mono_weight,
+ CAMORAMA_TYPE_FILTER);
static void
-camorama_filter_mono_weight_init(CamoramaFilterMonoWeight* self) {}
+camorama_filter_mono_weight_init(CamoramaFilterMonoWeight *self)
+{
+}
static void
-camorama_filter_mono_weight_filter(CamoramaFilter* filter, unsigned char *image, int x, int y, int depth) {
+camorama_filter_mono_weight_filter(void *filter, unsigned char *image,
+ int x, int y, int depth)
+{
int i;
int avg;
+
for (i = 0; i < x * y; i++) {
- avg = (int) ((image[0] * 0.2125) + (image[1] * 0.7154) +
- (image[2] * 0.0721));
+ avg = (int)((image[0] * 0.2125) + (image[1] * 0.7154) +
+ (image[2] * 0.0721));
image[0] = avg;
image[1] = avg;
@@ -507,29 +561,35 @@ camorama_filter_mono_weight_filter(CamoramaFilter* filter, unsigned char *image,
}
static void
-camorama_filter_mono_weight_class_init(CamoramaFilterMonoWeightClass* self_class) {
- self_class->filter = camorama_filter_mono_weight_filter;
- self_class->name = _("Monochrome (Weight)");
+camorama_filter_mono_weight_class_init(CamoramaFilterMonoWeightClass *
+ self_class)
+{
+ self_class->filter = camorama_filter_mono_weight_filter;
+ self_class->name = _("Monochrome (Weight)");
}
/* GType stuff for CamoramaFilterSobel */
-typedef struct _CamoramaFilter CamoramaFilterSobel;
+typedef struct _CamoramaFilter CamoramaFilterSobel;
typedef struct _CamoramaFilterClass CamoramaFilterSobelClass;
-G_DEFINE_TYPE(CamoramaFilterSobel, camorama_filter_sobel, CAMORAMA_TYPE_FILTER);
+G_DEFINE_TYPE(CamoramaFilterSobel, camorama_filter_sobel,
+ CAMORAMA_TYPE_FILTER);
-static void
-camorama_filter_sobel_init(CamoramaFilterSobel* self) {}
+static void camorama_filter_sobel_init(CamoramaFilterSobel *self)
+{
+}
/* fix this at some point, very slow */
static void
-camorama_filter_sobel_filter(CamoramaFilter* filter, unsigned char *image, int x, int y, int depth) {
+camorama_filter_sobel_filter(void *filter, unsigned char *image, int x,
+ int y, int depth)
+{
int i, j, grad[3];
int deltaX[3], deltaY[3];
int width = x * 3;
guchar *image2;
- image2 = (guchar *) malloc (sizeof (guchar) * (x * y * 3));
+ image2 = (guchar *) malloc(sizeof(guchar) * (x * y * 3));
for (i = width; i < (y - 1) * width; i++) {
for (j = 0; j <= 2; j++) {
@@ -544,40 +604,40 @@ camorama_filter_sobel_filter(CamoramaFilter* filter, unsigned char *image, int x
image[i - width + 1] - image[i + width -
1] -
2 * image[i + width] - image[i + width + 1];
- grad[j] = (abs (deltaX[j]) + abs (deltaY[j]));
+ grad[j] = (abs(deltaX[j]) + abs(deltaY[j]));
grad[j] = grad[j] / 5.66; /* <<<<<------------------------ new line */
- if (grad[j] > 255) {
+ if (grad[j] > 255) {
grad[j] = 255;
- }
- image2[i + j] = (unsigned char) grad[j];
+ }
+ image2[i + j] = (unsigned char)grad[j];
}
}
- memcpy (image, image2, (x * y * 3));
- free (image2);
+ memcpy(image, image2, (x * y * 3));
+ free(image2);
}
static void
-camorama_filter_sobel_class_init(CamoramaFilterSobelClass* self_class) {
- self_class->filter = camorama_filter_sobel_filter;
- // TRANSLATORS: http://en.wikipedia.org/wiki/Sobel
- self_class->name = _("Sobel");
+camorama_filter_sobel_class_init(CamoramaFilterSobelClass *self_class)
+{
+ self_class->filter = camorama_filter_sobel_filter;
+ // TRANSLATORS: http://en.wikipedia.org/wiki/Sobel
+ self_class->name = _("Sobel");
}
/* general filter initialization */
-void
-camorama_filters_init(void) {
- camorama_filter_color_get_type();
- camorama_filter_invert_get_type();
- camorama_filter_threshold_get_type();
- camorama_filter_threshold_channel_get_type();
- camorama_filter_mirror_get_type();
- camorama_filter_reichardt_get_type();
- camorama_filter_wacky_get_type();
- camorama_filter_smooth_get_type();
- camorama_filter_laplace_get_type();
- camorama_filter_mono_get_type();
- camorama_filter_mono_weight_get_type();
- camorama_filter_sobel_get_type();
+void camorama_filters_init(void)
+{
+ camorama_filter_color_get_type();
+ camorama_filter_invert_get_type();
+ camorama_filter_threshold_get_type();
+ camorama_filter_threshold_channel_get_type();
+ camorama_filter_mirror_get_type();
+ camorama_filter_reichardt_get_type();
+ camorama_filter_wacky_get_type();
+ camorama_filter_smooth_get_type();
+ camorama_filter_laplace_get_type();
+ camorama_filter_mono_get_type();
+ camorama_filter_mono_weight_get_type();
+ camorama_filter_sobel_get_type();
}
-
diff --git a/src/filter.h b/src/filter.h
index 24b526d..1a37f67 100644
--- a/src/filter.h
+++ b/src/filter.h
@@ -1,8 +1,8 @@
/* this file is part of camorama, a gnome webcam viewer
*
* AUTHORS
- * Greg Jones <greg@fixedgear.org>
- * Bastien Nocera <hadess@hadess.net>
+ * Greg Jones <greg@fixedgear.org>
+ * Bastien Nocera <hadess@hadess.net>
* Sven Herzberg <herzi@gnome-de.org>
*
* Copyright (C) 2003 Greg Jones
@@ -32,18 +32,25 @@
G_BEGIN_DECLS
-typedef struct _CamoramaFilter CamoramaFilter;
+typedef struct _CamoramaFilter CamoramaFilter;
typedef struct _CamoramaFilterClass CamoramaFilterClass;
#define CAMORAMA_TYPE_FILTER (camorama_filter_get_type())
-#define CAMORAMA_FILTER(i) (G_TYPE_CHECK_INSTANCE_CAST((i), CAMORAMA_TYPE_FILTER, CamoramaFilter))
-#define CAMORAMA_FILTER_CLASS(c) (G_TYPE_CHECK_CLASS_CAST((c), CAMORAMA_TYPE_FILTER, CamoramaFilterClass))
-#define CAMORAMA_IS_FILTER(i) (G_TYPE_CHECK_INSTANCE_TYPE((i), CAMORAMA_TYPE_FILTER))
-#define CAMORAMA_IS_FILTER_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE((c), CAMORAMA_TYPE_FILTER))
-#define CAMORAMA_FILTER_GET_CLASS(i) (G_TYPE_INSTANCE_GET_CLASS((i), CAMORAMA_TYPE_FILTER, CamoramaFilterClass))
-
-GType camorama_filter_get_type (void);
-GType camorama_filter_mirror_get_type (void);
+#define CAMORAMA_FILTER(i) (G_TYPE_CHECK_INSTANCE_CAST((i), \
+ CAMORAMA_TYPE_FILTER, CamoramaFilter))
+#define CAMORAMA_FILTER_CLASS(c) (G_TYPE_CHECK_CLASS_CAST((c), \
+ CAMORAMA_TYPE_FILTER, \
+ CamoramaFilterClass))
+#define CAMORAMA_IS_FILTER(i) (G_TYPE_CHECK_INSTANCE_TYPE((i), \
+ CAMORAMA_TYPE_FILTER))
+#define CAMORAMA_IS_FILTER_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE((c), \
+ CAMORAMA_TYPE_FILTER))
+#define CAMORAMA_FILTER_GET_CLASS(i) (G_TYPE_INSTANCE_GET_CLASS((i), \
+ CAMORAMA_TYPE_FILTER, \
+ CamoramaFilterClass))
+
+GType camorama_filter_get_type(void);
+GType camorama_filter_mirror_get_type(void);
GType camorama_filter_laplace_get_type(void);
GType camorama_filter_reichardt_get_type(void);
GType camorama_filter_color_get_type(void);
@@ -56,36 +63,29 @@ GType camorama_filter_mono_weight_get_type(void);
GType camorama_filter_sobel_get_type(void);
GType camorama_filter_smooth_get_type(void);
-void
-camorama_filter_color_filter(void *__filter, guchar *image, int x, int y, int depth);
+void camorama_filter_color_filter(void *__filter, guchar *image, int x, int y,
+ int depth);
-void camorama_filters_init (void);
-gchar const* camorama_filter_get_name(CamoramaFilter* self);
-void camorama_filter_apply (CamoramaFilter* self,
- guchar* image,
- gint width,
- gint height,
- gint depth);
+void camorama_filters_init(void);
+gchar const *camorama_filter_get_name(CamoramaFilter * self);
+void camorama_filter_apply(CamoramaFilter *self, guchar *image,
+ gint width, gint height, gint depth);
struct _CamoramaFilter {
- GObject base_instance;
+ GObject base_instance;
};
struct _CamoramaFilterClass {
- GObjectClass base_class;
+ GObjectClass base_class;
- gchar const* name;
+ gchar const *name;
- void (*filter) (CamoramaFilter* self,
- guchar * image,
- gint width,
- gint height,
- gint depth);
+ void (*filter)(void *self,
+ guchar *image, gint width, gint height, gint depth);
};
-void yuv420p_to_rgb (guchar *image, guchar *temp, gint x, gint y, gint z);
+void yuv420p_to_rgb(guchar *image, guchar *temp, gint x, gint y, gint z);
G_END_DECLS
-#endif /* !CAMORAMA_FILTER_H */
-
+#endif /* !CAMORAMA_FILTER_H */
diff --git a/src/font_6x11.h b/src/font_6x11.h
index a88c8a7..89e814a 100644
--- a/src/font_6x11.h
+++ b/src/font_6x11.h
@@ -5,3333 +5,3331 @@
/**********************************************/
static unsigned char fontdata[] = {
-
- /* 0 0x00 '^A' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 1 0x01 '^B' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 2 0x02 '^C' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 3 0x03 '^D' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 4 0x04 '^E' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 5 0x05 '^F' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 6 0x06 '^G' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 7 0x07 '^H' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 8 0x08 '^I' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 9 0x09 '^J' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 10 0x0a '^K' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 11 0x0b '^L' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 12 0x0c '^M' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 13 0x0d '^N' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 14 0x0e '^O' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 15 0x0f '^P' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 16 0x10 '^Q' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 17 0x11 '^R' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x28, /* 00 0 000 */
- 0x54, /* 0 0 0 00 */
- 0x38, /* 00 000 */
- 0x54, /* 0 0 0 00 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 18 0x12 '^S' */
- 0x04, /* 00000 00 */
- 0x04, /* 00000 00 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x50, /* 0 0 0000 */
- 0x50, /* 0 0 0000 */
- 0x20, /* 00 00000 */
- 0x20, /* 00 00000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 19 0x13 '^T' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x38, /* 00 000 */
- 0x7c, /* 0 00 */
- 0x38, /* 00 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 20 0x14 '^U' */
- 0x18, /* 000 000 */
- 0x10, /* 000 0000 */
- 0x28, /* 00 0 000 */
- 0x7c, /* 0 00 */
- 0x78, /* 0 000 */
- 0x78, /* 0 000 */
- 0x7c, /* 0 00 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 21 0x15 '^V' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 22 0x16 '^W' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 23 0x17 '^X' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 24 0x18 '^Y' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 25 0x19 '^Z' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 26 0x1a '^[' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 27 0x1b '^\' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 28 0x1c '^]' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 29 0x1d '^^' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 30 0x1e '^_' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 31 0x1f '^`' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 32 0x20 ' ' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 33 0x21 '!' */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 34 0x22 '"' */
- 0x28, /* 00 0 000 */
- 0x28, /* 00 0 000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 35 0x23 '#' */
- 0x00, /* 00000000 */
- 0x28, /* 00 0 000 */
- 0x7c, /* 0 00 */
- 0x28, /* 00 0 000 */
- 0x7c, /* 0 00 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 36 0x24 '$' */
- 0x10, /* 000 0000 */
- 0x38, /* 00 000 */
- 0x54, /* 0 0 0 00 */
- 0x50, /* 0 0 0000 */
- 0x38, /* 00 000 */
- 0x14, /* 000 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x38, /* 00 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 37 0x25 '%' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x54, /* 0 0 0 00 */
- 0x58, /* 0 0 000 */
- 0x28, /* 00 0 000 */
- 0x34, /* 00 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x48, /* 0 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 38 0x26 '&' */
- 0x00, /* 00000000 */
- 0x30, /* 00 0000 */
- 0x48, /* 0 00 000 */
- 0x50, /* 0 0 0000 */
- 0x20, /* 00 00000 */
- 0x54, /* 0 0 0 00 */
- 0x48, /* 0 00 000 */
- 0x34, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 39 0x27 ''' */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 40 0x28 '(' */
- 0x04, /* 00000 00 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x08, /* 0000 000 */
- 0x04, /* 00000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 41 0x29 ')' */
- 0x20, /* 00 00000 */
- 0x10, /* 000 0000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x20, /* 00 00000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 42 0x2a '*' */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x54, /* 0 0 0 00 */
- 0x38, /* 00 000 */
- 0x54, /* 0 0 0 00 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 43 0x2b '+' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x7c, /* 0 00 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 44 0x2c ',' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x30, /* 00 0000 */
- 0x30, /* 00 0000 */
- 0x10, /* 000 0000 */
- 0x20, /* 00 00000 */
- 0x00, /* 00000000 */
-
- /* 45 0x2d '-' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 46 0x2e '.' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x18, /* 000 000 */
- 0x18, /* 000 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 47 0x2f '/' */
- 0x04, /* 00000 00 */
- 0x04, /* 00000 00 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x20, /* 00 00000 */
- 0x20, /* 00 00000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x00, /* 00000000 */
-
- /* 48 0x30 '0' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x54, /* 0 0 0 00 */
- 0x64, /* 0 00 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 49 0x31 '1' */
- 0x00, /* 00000000 */
- 0x08, /* 0000 000 */
- 0x18, /* 000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x1c, /* 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 50 0x32 '2' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x04, /* 00000 00 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x20, /* 00 00000 */
- 0x7c, /* 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 51 0x33 '3' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x04, /* 00000 00 */
- 0x18, /* 000 000 */
- 0x04, /* 00000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 52 0x34 '4' */
- 0x00, /* 00000000 */
- 0x08, /* 0000 000 */
- 0x18, /* 000 000 */
- 0x28, /* 00 0 000 */
- 0x48, /* 0 00 000 */
- 0x7c, /* 0 00 */
- 0x08, /* 0000 000 */
- 0x1c, /* 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 53 0x35 '5' */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x40, /* 0 000000 */
- 0x78, /* 0 000 */
- 0x04, /* 00000 00 */
- 0x04, /* 00000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 54 0x36 '6' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x40, /* 0 000000 */
- 0x78, /* 0 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 55 0x37 '7' */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x04, /* 00000 00 */
- 0x04, /* 00000 00 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 56 0x38 '8' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 57 0x39 '9' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x3c, /* 00 00 */
- 0x04, /* 00000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 58 0x3a ':' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x18, /* 000 000 */
- 0x18, /* 000 000 */
- 0x00, /* 00000000 */
- 0x18, /* 000 000 */
- 0x18, /* 000 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 59 0x3b ';' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x30, /* 00 0000 */
- 0x30, /* 00 0000 */
- 0x00, /* 00000000 */
- 0x30, /* 00 0000 */
- 0x30, /* 00 0000 */
- 0x10, /* 000 0000 */
- 0x20, /* 00 00000 */
- 0x00, /* 00000000 */
-
- /* 60 0x3c '<' */
- 0x00, /* 00000000 */
- 0x04, /* 00000 00 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x20, /* 00 00000 */
- 0x10, /* 000 0000 */
- 0x08, /* 0000 000 */
- 0x04, /* 00000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 61 0x3d '=' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 62 0x3e '>' */
- 0x00, /* 00000000 */
- 0x20, /* 00 00000 */
- 0x10, /* 000 0000 */
- 0x08, /* 0000 000 */
- 0x04, /* 00000 00 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x20, /* 00 00000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 63 0x3f '?' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x04, /* 00000 00 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 64 0x40 '@' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x74, /* 0 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x78, /* 0 000 */
- 0x40, /* 0 000000 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 65 0x41 'A' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x7c, /* 0 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 66 0x42 'B' */
- 0x00, /* 00000000 */
- 0x78, /* 0 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x78, /* 0 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x78, /* 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 67 0x43 'C' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 68 0x44 'D' */
- 0x00, /* 00000000 */
- 0x78, /* 0 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x78, /* 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 69 0x45 'E' */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x78, /* 0 000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x7c, /* 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 70 0x46 'F' */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x78, /* 0 000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 71 0x47 'G' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x40, /* 0 000000 */
- 0x4c, /* 0 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 72 0x48 'H' */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x7c, /* 0 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 73 0x49 'I' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 74 0x4a 'J' */
- 0x00, /* 00000000 */
- 0x04, /* 00000 00 */
- 0x04, /* 00000 00 */
- 0x04, /* 00000 00 */
- 0x04, /* 00000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 75 0x4b 'K' */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x48, /* 0 00 000 */
- 0x50, /* 0 0 0000 */
- 0x60, /* 0 00000 */
- 0x50, /* 0 0 0000 */
- 0x48, /* 0 00 000 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 76 0x4c 'L' */
- 0x00, /* 00000000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x7c, /* 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 77 0x4d 'M' */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x6c, /* 0 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 78 0x4e 'N' */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x64, /* 0 00 00 */
- 0x54, /* 0 0 0 00 */
- 0x4c, /* 0 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 79 0x4f 'O' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 80 0x50 'P' */
- 0x00, /* 00000000 */
- 0x78, /* 0 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x78, /* 0 000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 81 0x51 'Q' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x54, /* 0 0 0 00 */
- 0x38, /* 00 000 */
- 0x04, /* 00000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 82 0x52 'R' */
- 0x00, /* 00000000 */
- 0x78, /* 0 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x78, /* 0 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 83 0x53 'S' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x40, /* 0 000000 */
- 0x38, /* 00 000 */
- 0x04, /* 00000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 84 0x54 'T' */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 85 0x55 'U' */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 86 0x56 'V' */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x28, /* 00 0 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 87 0x57 'W' */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x54, /* 0 0 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x6c, /* 0 0 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 88 0x58 'X' */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x28, /* 00 0 000 */
- 0x10, /* 000 0000 */
- 0x28, /* 00 0 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 89 0x59 'Y' */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x28, /* 00 0 000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 90 0x5a 'Z' */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x04, /* 00000 00 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x20, /* 00 00000 */
- 0x40, /* 0 000000 */
- 0x7c, /* 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 91 0x5b '[' */
- 0x0c, /* 0000 00 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x0c, /* 0000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 92 0x5c '\' */
- 0x20, /* 00 00000 */
- 0x20, /* 00 00000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x04, /* 00000 00 */
- 0x04, /* 00000 00 */
- 0x02, /* 000000 0 */
- 0x02, /* 000000 0 */
- 0x00, /* 00000000 */
-
- /* 93 0x5d ']' */
- 0x30, /* 00 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x30, /* 00 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 94 0x5e '^' */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x28, /* 00 0 000 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 95 0x5f '_' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x7e, /* 0 0 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 96 0x60 '`' */
- 0x20, /* 00 00000 */
- 0x10, /* 000 0000 */
- 0x08, /* 0000 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 97 0x61 'a' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x34, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 98 0x62 'b' */
- 0x00, /* 00000000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x78, /* 0 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x78, /* 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 99 0x63 'c' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x40, /* 0 000000 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 100 0x64 'd' */
- 0x00, /* 00000000 */
- 0x04, /* 00000 00 */
- 0x04, /* 00000 00 */
- 0x3c, /* 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 101 0x65 'e' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x7c, /* 0 00 */
- 0x40, /* 0 000000 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 102 0x66 'f' */
- 0x00, /* 00000000 */
- 0x0c, /* 0000 00 */
- 0x10, /* 000 0000 */
- 0x38, /* 00 000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 103 0x67 'g' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x3c, /* 00 00 */
- 0x04, /* 00000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
-
- /* 104 0x68 'h' */
- 0x00, /* 00000000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x78, /* 0 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 105 0x69 'i' */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x30, /* 00 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 106 0x6a 'j' */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x30, /* 00 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x60, /* 0 00000 */
- 0x00, /* 00000000 */
-
- /* 107 0x6b 'k' */
- 0x00, /* 00000000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x48, /* 0 00 000 */
- 0x50, /* 0 0 0000 */
- 0x70, /* 0 0000 */
- 0x48, /* 0 00 000 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 108 0x6c 'l' */
- 0x00, /* 00000000 */
- 0x30, /* 00 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 109 0x6d 'm' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x78, /* 0 000 */
- 0x54, /* 0 0 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 110 0x6e 'n' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x58, /* 0 0 000 */
- 0x64, /* 0 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 111 0x6f 'o' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 112 0x70 'p' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x78, /* 0 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x78, /* 0 000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x00, /* 00000000 */
-
- /* 113 0x71 'q' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x3c, /* 00 00 */
- 0x04, /* 00000 00 */
- 0x04, /* 00000 00 */
- 0x00, /* 00000000 */
-
- /* 114 0x72 'r' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x58, /* 0 0 000 */
- 0x64, /* 0 00 00 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 115 0x73 's' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x40, /* 0 000000 */
- 0x38, /* 00 000 */
- 0x04, /* 00000 00 */
- 0x78, /* 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 116 0x74 't' */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x38, /* 00 000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x0c, /* 0000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 117 0x75 'u' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x34, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 118 0x76 'v' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x28, /* 00 0 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 119 0x77 'w' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x54, /* 0 0 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 120 0x78 'x' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x28, /* 00 0 000 */
- 0x10, /* 000 0000 */
- 0x28, /* 00 0 000 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 121 0x79 'y' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x3c, /* 00 00 */
- 0x04, /* 00000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
-
- /* 122 0x7a 'z' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x20, /* 00 00000 */
- 0x7c, /* 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 123 0x7b '{' */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x04, /* 00000 00 */
- 0x00, /* 00000000 */
-
- /* 124 0x7c '|' */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 125 0x7d '}' */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x20, /* 00 00000 */
- 0x00, /* 00000000 */
-
- /* 126 0x7e '~' */
- 0x00, /* 00000000 */
- 0x34, /* 00 0 00 */
- 0x58, /* 0 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 127 0x7f '^?' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 128 0x80 '\200' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x7c, /* 0 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 129 0x81 '\201' */
- 0x28, /* 00 0 000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x7c, /* 0 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 130 0x82 '\202' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 131 0x83 '\203' */
- 0x10, /* 000 0000 */
- 0x7c, /* 0 00 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x78, /* 0 000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x7c, /* 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 132 0x84 '\204' */
- 0x58, /* 0 0 000 */
- 0x44, /* 0 000 00 */
- 0x64, /* 0 00 00 */
- 0x54, /* 0 0 0 00 */
- 0x4c, /* 0 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 133 0x85 '\205' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 134 0x86 '\206' */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 135 0x87 '\207' */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x34, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 136 0x88 '\210' */
- 0x10, /* 000 0000 */
- 0x08, /* 0000 000 */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x34, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 137 0x89 '\211' */
- 0x10, /* 000 0000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x34, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 138 0x8a '\212' */
- 0x00, /* 00000000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x34, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 139 0x8b '\213' */
- 0x34, /* 00 0 00 */
- 0x58, /* 0 0 000 */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x34, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 140 0x8c '\214' */
- 0x18, /* 000 000 */
- 0x24, /* 00 00 00 */
- 0x18, /* 000 000 */
- 0x3c, /* 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x34, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 141 0x8d '\215' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x3c, /* 00 00 */
- 0x10, /* 000 0000 */
- 0x20, /* 00 00000 */
- 0x00, /* 00000000 */
-
- /* 142 0x8e '\216' */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x7c, /* 0 00 */
- 0x40, /* 0 000000 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 143 0x8f '\217' */
- 0x20, /* 00 00000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x7c, /* 0 00 */
- 0x40, /* 0 000000 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 144 0x90 '\220' */
- 0x10, /* 000 0000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x7c, /* 0 00 */
- 0x40, /* 0 000000 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 145 0x91 '\221' */
- 0x00, /* 00000000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x7c, /* 0 00 */
- 0x40, /* 0 000000 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 146 0x92 '\222' */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 147 0x93 '\223' */
- 0x20, /* 00 00000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 148 0x94 '\224' */
- 0x10, /* 000 0000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 149 0x95 '\225' */
- 0x00, /* 00000000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 150 0x96 '\226' */
- 0x34, /* 00 0 00 */
- 0x58, /* 0 0 000 */
- 0x00, /* 00000000 */
- 0x58, /* 0 0 000 */
- 0x64, /* 0 00 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 151 0x97 '\227' */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 152 0x98 '\230' */
- 0x20, /* 00 00000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 153 0x99 '\231' */
- 0x10, /* 000 0000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 154 0x9a '\232' */
- 0x00, /* 00000000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 155 0x9b '\233' */
- 0x34, /* 00 0 00 */
- 0x58, /* 0 0 000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 156 0x9c '\234' */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x34, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 157 0x9d '\235' */
- 0x20, /* 00 00000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x34, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 158 0x9e '\236' */
- 0x10, /* 000 0000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x34, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 159 0x9f '\237' */
- 0x00, /* 00000000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x34, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 160 0xa0 '\240' */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x38, /* 00 000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 161 0xa1 '\241' */
- 0x18, /* 000 000 */
- 0x24, /* 00 00 00 */
- 0x24, /* 00 00 00 */
- 0x18, /* 000 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 162 0xa2 '\242' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x38, /* 00 000 */
- 0x54, /* 0 0 0 00 */
- 0x50, /* 0 0 0000 */
- 0x54, /* 0 0 0 00 */
- 0x38, /* 00 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 163 0xa3 '\243' */
- 0x30, /* 00 0000 */
- 0x48, /* 0 00 000 */
- 0x40, /* 0 000000 */
- 0x70, /* 0 0000 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x44, /* 0 000 00 */
- 0x78, /* 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 164 0xa4 '\244' */
- 0x44, /* 0 000 00 */
- 0x24, /* 00 00 00 */
- 0x50, /* 0 0 0000 */
- 0x48, /* 0 00 000 */
- 0x24, /* 00 00 00 */
- 0x14, /* 000 0 00 */
- 0x48, /* 0 00 000 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 165 0xa5 '\245' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x7c, /* 0 00 */
- 0x7c, /* 0 00 */
- 0x7c, /* 0 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 166 0xa6 '\246' */
- 0x3c, /* 00 00 */
- 0x54, /* 0 0 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x3c, /* 00 00 */
- 0x14, /* 000 0 00 */
- 0x14, /* 000 0 00 */
- 0x14, /* 000 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 167 0xa7 '\247' */
- 0x18, /* 000 000 */
- 0x24, /* 00 00 00 */
- 0x44, /* 0 000 00 */
- 0x48, /* 0 00 000 */
- 0x48, /* 0 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x58, /* 0 0 000 */
- 0x40, /* 0 000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 168 0xa8 '\250' */
- 0x00, /* 00000000 */
- 0x70, /* 0 0000 */
- 0x08, /* 0000 000 */
- 0x64, /* 0 00 00 */
- 0x54, /* 0 0 0 00 */
- 0x64, /* 0 00 00 */
- 0x58, /* 0 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 169 0xa9 '\251' */
- 0x00, /* 00000000 */
- 0x70, /* 0 0000 */
- 0x08, /* 0000 000 */
- 0x34, /* 00 0 00 */
- 0x44, /* 0 000 00 */
- 0x34, /* 00 0 00 */
- 0x08, /* 0000 000 */
- 0x70, /* 0 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 170 0xaa '\252' */
- 0x00, /* 00000000 */
- 0x7a, /* 0 0 0 */
- 0x2e, /* 00 0 0 */
- 0x2e, /* 00 0 0 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 171 0xab '\253' */
- 0x00, /* 00000000 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 172 0xac '\254' */
- 0x00, /* 00000000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 173 0xad '\255' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x08, /* 0000 000 */
- 0x7c, /* 0 00 */
- 0x10, /* 000 0000 */
- 0x7c, /* 0 00 */
- 0x20, /* 00 00000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 174 0xae '\256' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x50, /* 0 0 0000 */
- 0x50, /* 0 0 0000 */
- 0x78, /* 0 000 */
- 0x50, /* 0 0 0000 */
- 0x50, /* 0 0 0000 */
- 0x5c, /* 0 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 175 0xaf '\257' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x4c, /* 0 00 00 */
- 0x54, /* 0 0 0 00 */
- 0x64, /* 0 00 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 176 0xb0 '\260' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x6c, /* 0 0 00 */
- 0x54, /* 0 0 0 00 */
- 0x6c, /* 0 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 177 0xb1 '\261' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x7c, /* 0 00 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x7c, /* 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 178 0xb2 '\262' */
- 0x00, /* 00000000 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x20, /* 00 00000 */
- 0x10, /* 000 0000 */
- 0x08, /* 0000 000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 179 0xb3 '\263' */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x08, /* 0000 000 */
- 0x04, /* 00000 00 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x1c, /* 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 180 0xb4 '\264' */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x28, /* 00 0 000 */
- 0x7c, /* 0 00 */
- 0x10, /* 000 0000 */
- 0x7c, /* 0 00 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 181 0xb5 '\265' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x48, /* 0 00 000 */
- 0x48, /* 0 00 000 */
- 0x48, /* 0 00 000 */
- 0x48, /* 0 00 000 */
- 0x74, /* 0 0 00 */
- 0x40, /* 0 000000 */
- 0x40, /* 0 000000 */
- 0x00, /* 00000000 */
-
- /* 182 0xb6 '\266' */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x08, /* 0000 000 */
- 0x0c, /* 0000 00 */
- 0x14, /* 000 0 00 */
- 0x24, /* 00 00 00 */
- 0x24, /* 00 00 00 */
- 0x18, /* 000 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 183 0xb7 '\267' */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x24, /* 00 00 00 */
- 0x10, /* 000 0000 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x24, /* 00 00 00 */
- 0x7c, /* 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 184 0xb8 '\270' */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x28, /* 00 0 000 */
- 0x28, /* 00 0 000 */
- 0x28, /* 00 0 000 */
- 0x28, /* 00 0 000 */
- 0x28, /* 00 0 000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 185 0xb9 '\271' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x28, /* 00 0 000 */
- 0x28, /* 00 0 000 */
- 0x28, /* 00 0 000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 186 0xba '\272' */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x60, /* 0 00000 */
- 0x00, /* 00000000 */
-
- /* 187 0xbb '\273' */
- 0x00, /* 00000000 */
- 0x1c, /* 000 00 */
- 0x24, /* 00 00 00 */
- 0x24, /* 00 00 00 */
- 0x1c, /* 000 00 */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 188 0xbc '\274' */
- 0x00, /* 00000000 */
- 0x18, /* 000 000 */
- 0x24, /* 00 00 00 */
- 0x24, /* 00 00 00 */
- 0x18, /* 000 000 */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 189 0xbd '\275' */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x28, /* 00 0 000 */
- 0x6c, /* 0 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 190 0xbe '\276' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x54, /* 0 0 0 00 */
- 0x5c, /* 0 0 00 */
- 0x50, /* 0 0 0000 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 191 0xbf '\277' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x4c, /* 0 00 00 */
- 0x54, /* 0 0 0 00 */
- 0x64, /* 0 00 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 192 0xc0 '\300' */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x20, /* 00 00000 */
- 0x40, /* 0 000000 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 193 0xc1 '\301' */
- 0x00, /* 00000000 */
- 0x08, /* 0000 000 */
- 0x00, /* 00000000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x08, /* 0000 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 194 0xc2 '\302' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x04, /* 00000 00 */
- 0x04, /* 00000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 195 0xc3 '\303' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x0c, /* 0000 00 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x50, /* 0 0 0000 */
- 0x20, /* 00 00000 */
- 0x20, /* 00 00000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 196 0xc4 '\304' */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x38, /* 00 000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x60, /* 0 00000 */
- 0x00, /* 00000000 */
-
- /* 197 0xc5 '\305' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x04, /* 00000 00 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x40, /* 0 000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 198 0xc6 '\306' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x10, /* 000 0000 */
- 0x28, /* 00 0 000 */
- 0x28, /* 00 0 000 */
- 0x44, /* 0 000 00 */
- 0x7c, /* 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 199 0xc7 '\307' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x24, /* 00 00 00 */
- 0x48, /* 0 00 000 */
- 0x48, /* 0 00 000 */
- 0x24, /* 00 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 200 0xc8 '\310' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x48, /* 0 00 000 */
- 0x24, /* 00 00 00 */
- 0x24, /* 00 00 00 */
- 0x48, /* 0 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 201 0xc9 '\311' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x54, /* 0 0 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 202 0xca '\312' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 203 0xcb '\313' */
- 0x10, /* 000 0000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x7c, /* 0 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 204 0xcc '\314' */
- 0x58, /* 0 0 000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x7c, /* 0 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 205 0xcd '\315' */
- 0x58, /* 0 0 000 */
- 0x38, /* 00 000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 206 0xce '\316' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x50, /* 0 0 0000 */
- 0x50, /* 0 0 0000 */
- 0x58, /* 0 0 000 */
- 0x50, /* 0 0 0000 */
- 0x50, /* 0 0 0000 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 207 0xcf '\317' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x28, /* 00 0 000 */
- 0x54, /* 0 0 0 00 */
- 0x5c, /* 0 0 00 */
- 0x50, /* 0 0 0000 */
- 0x2c, /* 00 0 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 208 0xd0 '\320' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 209 0xd1 '\321' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x7e, /* 0 0 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 210 0xd2 '\322' */
- 0x00, /* 00000000 */
- 0x14, /* 000 0 00 */
- 0x28, /* 00 0 000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 211 0xd3 '\323' */
- 0x00, /* 00000000 */
- 0x14, /* 000 0 00 */
- 0x14, /* 000 0 00 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 212 0xd4 '\324' */
- 0x00, /* 00000000 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x18, /* 000 000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 213 0xd5 '\325' */
- 0x00, /* 00000000 */
- 0x18, /* 000 000 */
- 0x08, /* 0000 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 214 0xd6 '\326' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x7c, /* 0 00 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 215 0xd7 '\327' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x10, /* 000 0000 */
- 0x28, /* 00 0 000 */
- 0x44, /* 0 000 00 */
- 0x28, /* 00 0 000 */
- 0x10, /* 000 0000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 216 0xd8 '\330' */
- 0x00, /* 00000000 */
- 0x28, /* 00 0 000 */
- 0x00, /* 00000000 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x44, /* 0 000 00 */
- 0x3c, /* 00 00 */
- 0x04, /* 00000 00 */
- 0x38, /* 00 000 */
- 0x00, /* 00000000 */
-
- /* 217 0xd9 '\331' */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x7e, /* 0 0 */
- 0x00, /* 00000000 */
- 0x7e, /* 0 0 */
- 0x00, /* 00000000 */
- 0x7e, /* 0 0 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 218 0xda '\332' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 219 0xdb '\333' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 220 0xdc '\334' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 221 0xdd '\335' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 222 0xde '\336' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 223 0xdf '\337' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 224 0xe0 '\340' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 225 0xe1 '\341' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 226 0xe2 '\342' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 227 0xe3 '\343' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 228 0xe4 '\344' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 229 0xe5 '\345' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 230 0xe6 '\346' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 231 0xe7 '\347' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 232 0xe8 '\350' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 233 0xe9 '\351' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 234 0xea '\352' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 235 0xeb '\353' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 236 0xec '\354' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 237 0xed '\355' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 238 0xee '\356' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 239 0xef '\357' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 240 0xf0 '\360' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 241 0xf1 '\361' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 242 0xf2 '\362' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 243 0xf3 '\363' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 244 0xf4 '\364' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 245 0xf5 '\365' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 246 0xf6 '\366' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 247 0xf7 '\367' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 248 0xf8 '\370' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 249 0xf9 '\371' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 250 0xfa '\372' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 251 0xfb '\373' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 252 0xfc '\374' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 253 0xfd '\375' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 254 0xfe '\376' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
- /* 255 0xff '\377' */
- 0x00, /* 00000000 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x3c, /* 00 00 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
- 0x00, /* 00000000 */
-
+ /* 0 0x00 '^A' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 1 0x01 '^B' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 2 0x02 '^C' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 3 0x03 '^D' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 4 0x04 '^E' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 5 0x05 '^F' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 6 0x06 '^G' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 7 0x07 '^H' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 8 0x08 '^I' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 9 0x09 '^J' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 10 0x0a '^K' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 11 0x0b '^L' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 12 0x0c '^M' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 13 0x0d '^N' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 14 0x0e '^O' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 15 0x0f '^P' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 16 0x10 '^Q' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 17 0x11 '^R' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x28, /* 00 0 000 */
+ 0x54, /* 0 0 0 00 */
+ 0x38, /* 00 000 */
+ 0x54, /* 0 0 0 00 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 18 0x12 '^S' */
+ 0x04, /* 00000 00 */
+ 0x04, /* 00000 00 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x50, /* 0 0 0000 */
+ 0x50, /* 0 0 0000 */
+ 0x20, /* 00 00000 */
+ 0x20, /* 00 00000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 19 0x13 '^T' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x38, /* 00 000 */
+ 0x7c, /* 0 00 */
+ 0x38, /* 00 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 20 0x14 '^U' */
+ 0x18, /* 000 000 */
+ 0x10, /* 000 0000 */
+ 0x28, /* 00 0 000 */
+ 0x7c, /* 0 00 */
+ 0x78, /* 0 000 */
+ 0x78, /* 0 000 */
+ 0x7c, /* 0 00 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 21 0x15 '^V' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 22 0x16 '^W' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 23 0x17 '^X' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 24 0x18 '^Y' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 25 0x19 '^Z' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 26 0x1a '^[' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 27 0x1b '^\' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 28 0x1c '^]' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 29 0x1d '^^' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 30 0x1e '^_' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 31 0x1f '^`' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 32 0x20 ' ' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 33 0x21 '!' */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 34 0x22 '"' */
+ 0x28, /* 00 0 000 */
+ 0x28, /* 00 0 000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 35 0x23 '#' */
+ 0x00, /* 00000000 */
+ 0x28, /* 00 0 000 */
+ 0x7c, /* 0 00 */
+ 0x28, /* 00 0 000 */
+ 0x7c, /* 0 00 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 36 0x24 '$' */
+ 0x10, /* 000 0000 */
+ 0x38, /* 00 000 */
+ 0x54, /* 0 0 0 00 */
+ 0x50, /* 0 0 0000 */
+ 0x38, /* 00 000 */
+ 0x14, /* 000 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x38, /* 00 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 37 0x25 '%' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x58, /* 0 0 000 */
+ 0x28, /* 00 0 000 */
+ 0x34, /* 00 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x48, /* 0 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 38 0x26 '&' */
+ 0x00, /* 00000000 */
+ 0x30, /* 00 0000 */
+ 0x48, /* 0 00 000 */
+ 0x50, /* 0 0 0000 */
+ 0x20, /* 00 00000 */
+ 0x54, /* 0 0 0 00 */
+ 0x48, /* 0 00 000 */
+ 0x34, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 39 0x27 ''' */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 40 0x28 '(' */
+ 0x04, /* 00000 00 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x08, /* 0000 000 */
+ 0x04, /* 00000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 41 0x29 ')' */
+ 0x20, /* 00 00000 */
+ 0x10, /* 000 0000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x20, /* 00 00000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 42 0x2a '*' */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x54, /* 0 0 0 00 */
+ 0x38, /* 00 000 */
+ 0x54, /* 0 0 0 00 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 43 0x2b '+' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x7c, /* 0 00 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 44 0x2c ',' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x30, /* 00 0000 */
+ 0x30, /* 00 0000 */
+ 0x10, /* 000 0000 */
+ 0x20, /* 00 00000 */
+ 0x00, /* 00000000 */
+
+ /* 45 0x2d '-' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 46 0x2e '.' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x18, /* 000 000 */
+ 0x18, /* 000 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 47 0x2f '/' */
+ 0x04, /* 00000 00 */
+ 0x04, /* 00000 00 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x20, /* 00 00000 */
+ 0x20, /* 00 00000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x00, /* 00000000 */
+
+ /* 48 0x30 '0' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x64, /* 0 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 49 0x31 '1' */
+ 0x00, /* 00000000 */
+ 0x08, /* 0000 000 */
+ 0x18, /* 000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x1c, /* 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 50 0x32 '2' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x04, /* 00000 00 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x20, /* 00 00000 */
+ 0x7c, /* 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 51 0x33 '3' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x04, /* 00000 00 */
+ 0x18, /* 000 000 */
+ 0x04, /* 00000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 52 0x34 '4' */
+ 0x00, /* 00000000 */
+ 0x08, /* 0000 000 */
+ 0x18, /* 000 000 */
+ 0x28, /* 00 0 000 */
+ 0x48, /* 0 00 000 */
+ 0x7c, /* 0 00 */
+ 0x08, /* 0000 000 */
+ 0x1c, /* 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 53 0x35 '5' */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x40, /* 0 000000 */
+ 0x78, /* 0 000 */
+ 0x04, /* 00000 00 */
+ 0x04, /* 00000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 54 0x36 '6' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x40, /* 0 000000 */
+ 0x78, /* 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 55 0x37 '7' */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x04, /* 00000 00 */
+ 0x04, /* 00000 00 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 56 0x38 '8' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 57 0x39 '9' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x3c, /* 00 00 */
+ 0x04, /* 00000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 58 0x3a ':' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x18, /* 000 000 */
+ 0x18, /* 000 000 */
+ 0x00, /* 00000000 */
+ 0x18, /* 000 000 */
+ 0x18, /* 000 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 59 0x3b ';' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x30, /* 00 0000 */
+ 0x30, /* 00 0000 */
+ 0x00, /* 00000000 */
+ 0x30, /* 00 0000 */
+ 0x30, /* 00 0000 */
+ 0x10, /* 000 0000 */
+ 0x20, /* 00 00000 */
+ 0x00, /* 00000000 */
+
+ /* 60 0x3c '<' */
+ 0x00, /* 00000000 */
+ 0x04, /* 00000 00 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x20, /* 00 00000 */
+ 0x10, /* 000 0000 */
+ 0x08, /* 0000 000 */
+ 0x04, /* 00000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 61 0x3d '=' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 62 0x3e '>' */
+ 0x00, /* 00000000 */
+ 0x20, /* 00 00000 */
+ 0x10, /* 000 0000 */
+ 0x08, /* 0000 000 */
+ 0x04, /* 00000 00 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x20, /* 00 00000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 63 0x3f '?' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x04, /* 00000 00 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 64 0x40 '@' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x74, /* 0 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x78, /* 0 000 */
+ 0x40, /* 0 000000 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 65 0x41 'A' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x7c, /* 0 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 66 0x42 'B' */
+ 0x00, /* 00000000 */
+ 0x78, /* 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x78, /* 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x78, /* 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 67 0x43 'C' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 68 0x44 'D' */
+ 0x00, /* 00000000 */
+ 0x78, /* 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x78, /* 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 69 0x45 'E' */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x78, /* 0 000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x7c, /* 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 70 0x46 'F' */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x78, /* 0 000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 71 0x47 'G' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x40, /* 0 000000 */
+ 0x4c, /* 0 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 72 0x48 'H' */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x7c, /* 0 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 73 0x49 'I' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 74 0x4a 'J' */
+ 0x00, /* 00000000 */
+ 0x04, /* 00000 00 */
+ 0x04, /* 00000 00 */
+ 0x04, /* 00000 00 */
+ 0x04, /* 00000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 75 0x4b 'K' */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x48, /* 0 00 000 */
+ 0x50, /* 0 0 0000 */
+ 0x60, /* 0 00000 */
+ 0x50, /* 0 0 0000 */
+ 0x48, /* 0 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 76 0x4c 'L' */
+ 0x00, /* 00000000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x7c, /* 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 77 0x4d 'M' */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x6c, /* 0 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 78 0x4e 'N' */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x64, /* 0 00 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x4c, /* 0 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 79 0x4f 'O' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 80 0x50 'P' */
+ 0x00, /* 00000000 */
+ 0x78, /* 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x78, /* 0 000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 81 0x51 'Q' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x38, /* 00 000 */
+ 0x04, /* 00000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 82 0x52 'R' */
+ 0x00, /* 00000000 */
+ 0x78, /* 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x78, /* 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 83 0x53 'S' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x40, /* 0 000000 */
+ 0x38, /* 00 000 */
+ 0x04, /* 00000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 84 0x54 'T' */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 85 0x55 'U' */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 86 0x56 'V' */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x28, /* 00 0 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 87 0x57 'W' */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x6c, /* 0 0 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 88 0x58 'X' */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x28, /* 00 0 000 */
+ 0x10, /* 000 0000 */
+ 0x28, /* 00 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 89 0x59 'Y' */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x28, /* 00 0 000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 90 0x5a 'Z' */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x04, /* 00000 00 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x20, /* 00 00000 */
+ 0x40, /* 0 000000 */
+ 0x7c, /* 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 91 0x5b '[' */
+ 0x0c, /* 0000 00 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x0c, /* 0000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 92 0x5c '\' */
+ 0x20, /* 00 00000 */
+ 0x20, /* 00 00000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x04, /* 00000 00 */
+ 0x04, /* 00000 00 */
+ 0x02, /* 000000 0 */
+ 0x02, /* 000000 0 */
+ 0x00, /* 00000000 */
+
+ /* 93 0x5d ']' */
+ 0x30, /* 00 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x30, /* 00 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 94 0x5e '^' */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x28, /* 00 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 95 0x5f '_' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x7e, /* 0 0 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 96 0x60 '`' */
+ 0x20, /* 00 00000 */
+ 0x10, /* 000 0000 */
+ 0x08, /* 0000 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 97 0x61 'a' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x34, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 98 0x62 'b' */
+ 0x00, /* 00000000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x78, /* 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x78, /* 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 99 0x63 'c' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x40, /* 0 000000 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 100 0x64 'd' */
+ 0x00, /* 00000000 */
+ 0x04, /* 00000 00 */
+ 0x04, /* 00000 00 */
+ 0x3c, /* 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 101 0x65 'e' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x7c, /* 0 00 */
+ 0x40, /* 0 000000 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 102 0x66 'f' */
+ 0x00, /* 00000000 */
+ 0x0c, /* 0000 00 */
+ 0x10, /* 000 0000 */
+ 0x38, /* 00 000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 103 0x67 'g' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x3c, /* 00 00 */
+ 0x04, /* 00000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+
+ /* 104 0x68 'h' */
+ 0x00, /* 00000000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x78, /* 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 105 0x69 'i' */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x30, /* 00 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 106 0x6a 'j' */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x30, /* 00 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x60, /* 0 00000 */
+ 0x00, /* 00000000 */
+
+ /* 107 0x6b 'k' */
+ 0x00, /* 00000000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x48, /* 0 00 000 */
+ 0x50, /* 0 0 0000 */
+ 0x70, /* 0 0000 */
+ 0x48, /* 0 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 108 0x6c 'l' */
+ 0x00, /* 00000000 */
+ 0x30, /* 00 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 109 0x6d 'm' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x78, /* 0 000 */
+ 0x54, /* 0 0 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 110 0x6e 'n' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x58, /* 0 0 000 */
+ 0x64, /* 0 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 111 0x6f 'o' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 112 0x70 'p' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x78, /* 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x78, /* 0 000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x00, /* 00000000 */
+
+ /* 113 0x71 'q' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x3c, /* 00 00 */
+ 0x04, /* 00000 00 */
+ 0x04, /* 00000 00 */
+ 0x00, /* 00000000 */
+
+ /* 114 0x72 'r' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x58, /* 0 0 000 */
+ 0x64, /* 0 00 00 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 115 0x73 's' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x40, /* 0 000000 */
+ 0x38, /* 00 000 */
+ 0x04, /* 00000 00 */
+ 0x78, /* 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 116 0x74 't' */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x38, /* 00 000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x0c, /* 0000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 117 0x75 'u' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x34, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 118 0x76 'v' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x28, /* 00 0 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 119 0x77 'w' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x54, /* 0 0 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 120 0x78 'x' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x28, /* 00 0 000 */
+ 0x10, /* 000 0000 */
+ 0x28, /* 00 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 121 0x79 'y' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x3c, /* 00 00 */
+ 0x04, /* 00000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+
+ /* 122 0x7a 'z' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x20, /* 00 00000 */
+ 0x7c, /* 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 123 0x7b '{' */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x04, /* 00000 00 */
+ 0x00, /* 00000000 */
+
+ /* 124 0x7c '|' */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 125 0x7d '}' */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x20, /* 00 00000 */
+ 0x00, /* 00000000 */
+
+ /* 126 0x7e '~' */
+ 0x00, /* 00000000 */
+ 0x34, /* 00 0 00 */
+ 0x58, /* 0 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 127 0x7f '^?' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 128 0x80 '\200' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x7c, /* 0 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 129 0x81 '\201' */
+ 0x28, /* 00 0 000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x7c, /* 0 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 130 0x82 '\202' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 131 0x83 '\203' */
+ 0x10, /* 000 0000 */
+ 0x7c, /* 0 00 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x78, /* 0 000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x7c, /* 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 132 0x84 '\204' */
+ 0x58, /* 0 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x64, /* 0 00 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x4c, /* 0 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 133 0x85 '\205' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 134 0x86 '\206' */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 135 0x87 '\207' */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x34, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 136 0x88 '\210' */
+ 0x10, /* 000 0000 */
+ 0x08, /* 0000 000 */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x34, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 137 0x89 '\211' */
+ 0x10, /* 000 0000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x34, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 138 0x8a '\212' */
+ 0x00, /* 00000000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x34, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 139 0x8b '\213' */
+ 0x34, /* 00 0 00 */
+ 0x58, /* 0 0 000 */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x34, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 140 0x8c '\214' */
+ 0x18, /* 000 000 */
+ 0x24, /* 00 00 00 */
+ 0x18, /* 000 000 */
+ 0x3c, /* 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x34, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 141 0x8d '\215' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x3c, /* 00 00 */
+ 0x10, /* 000 0000 */
+ 0x20, /* 00 00000 */
+ 0x00, /* 00000000 */
+
+ /* 142 0x8e '\216' */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x7c, /* 0 00 */
+ 0x40, /* 0 000000 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 143 0x8f '\217' */
+ 0x20, /* 00 00000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x7c, /* 0 00 */
+ 0x40, /* 0 000000 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 144 0x90 '\220' */
+ 0x10, /* 000 0000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x7c, /* 0 00 */
+ 0x40, /* 0 000000 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 145 0x91 '\221' */
+ 0x00, /* 00000000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x7c, /* 0 00 */
+ 0x40, /* 0 000000 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 146 0x92 '\222' */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 147 0x93 '\223' */
+ 0x20, /* 00 00000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 148 0x94 '\224' */
+ 0x10, /* 000 0000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 149 0x95 '\225' */
+ 0x00, /* 00000000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 150 0x96 '\226' */
+ 0x34, /* 00 0 00 */
+ 0x58, /* 0 0 000 */
+ 0x00, /* 00000000 */
+ 0x58, /* 0 0 000 */
+ 0x64, /* 0 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 151 0x97 '\227' */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 152 0x98 '\230' */
+ 0x20, /* 00 00000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 153 0x99 '\231' */
+ 0x10, /* 000 0000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 154 0x9a '\232' */
+ 0x00, /* 00000000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 155 0x9b '\233' */
+ 0x34, /* 00 0 00 */
+ 0x58, /* 0 0 000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 156 0x9c '\234' */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x34, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 157 0x9d '\235' */
+ 0x20, /* 00 00000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x34, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 158 0x9e '\236' */
+ 0x10, /* 000 0000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x34, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 159 0x9f '\237' */
+ 0x00, /* 00000000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x34, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 160 0xa0 '\240' */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x38, /* 00 000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 161 0xa1 '\241' */
+ 0x18, /* 000 000 */
+ 0x24, /* 00 00 00 */
+ 0x24, /* 00 00 00 */
+ 0x18, /* 000 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 162 0xa2 '\242' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x38, /* 00 000 */
+ 0x54, /* 0 0 0 00 */
+ 0x50, /* 0 0 0000 */
+ 0x54, /* 0 0 0 00 */
+ 0x38, /* 00 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 163 0xa3 '\243' */
+ 0x30, /* 00 0000 */
+ 0x48, /* 0 00 000 */
+ 0x40, /* 0 000000 */
+ 0x70, /* 0 0000 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x44, /* 0 000 00 */
+ 0x78, /* 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 164 0xa4 '\244' */
+ 0x44, /* 0 000 00 */
+ 0x24, /* 00 00 00 */
+ 0x50, /* 0 0 0000 */
+ 0x48, /* 0 00 000 */
+ 0x24, /* 00 00 00 */
+ 0x14, /* 000 0 00 */
+ 0x48, /* 0 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 165 0xa5 '\245' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x7c, /* 0 00 */
+ 0x7c, /* 0 00 */
+ 0x7c, /* 0 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 166 0xa6 '\246' */
+ 0x3c, /* 00 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x3c, /* 00 00 */
+ 0x14, /* 000 0 00 */
+ 0x14, /* 000 0 00 */
+ 0x14, /* 000 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 167 0xa7 '\247' */
+ 0x18, /* 000 000 */
+ 0x24, /* 00 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x48, /* 0 00 000 */
+ 0x48, /* 0 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x58, /* 0 0 000 */
+ 0x40, /* 0 000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 168 0xa8 '\250' */
+ 0x00, /* 00000000 */
+ 0x70, /* 0 0000 */
+ 0x08, /* 0000 000 */
+ 0x64, /* 0 00 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x64, /* 0 00 00 */
+ 0x58, /* 0 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 169 0xa9 '\251' */
+ 0x00, /* 00000000 */
+ 0x70, /* 0 0000 */
+ 0x08, /* 0000 000 */
+ 0x34, /* 00 0 00 */
+ 0x44, /* 0 000 00 */
+ 0x34, /* 00 0 00 */
+ 0x08, /* 0000 000 */
+ 0x70, /* 0 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 170 0xaa '\252' */
+ 0x00, /* 00000000 */
+ 0x7a, /* 0 0 0 */
+ 0x2e, /* 00 0 0 */
+ 0x2e, /* 00 0 0 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 171 0xab '\253' */
+ 0x00, /* 00000000 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 172 0xac '\254' */
+ 0x00, /* 00000000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 173 0xad '\255' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x08, /* 0000 000 */
+ 0x7c, /* 0 00 */
+ 0x10, /* 000 0000 */
+ 0x7c, /* 0 00 */
+ 0x20, /* 00 00000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 174 0xae '\256' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x50, /* 0 0 0000 */
+ 0x50, /* 0 0 0000 */
+ 0x78, /* 0 000 */
+ 0x50, /* 0 0 0000 */
+ 0x50, /* 0 0 0000 */
+ 0x5c, /* 0 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 175 0xaf '\257' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x4c, /* 0 00 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x64, /* 0 00 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 176 0xb0 '\260' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x6c, /* 0 0 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x6c, /* 0 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 177 0xb1 '\261' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x7c, /* 0 00 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x7c, /* 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 178 0xb2 '\262' */
+ 0x00, /* 00000000 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x20, /* 00 00000 */
+ 0x10, /* 000 0000 */
+ 0x08, /* 0000 000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 179 0xb3 '\263' */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x08, /* 0000 000 */
+ 0x04, /* 00000 00 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x1c, /* 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 180 0xb4 '\264' */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x28, /* 00 0 000 */
+ 0x7c, /* 0 00 */
+ 0x10, /* 000 0000 */
+ 0x7c, /* 0 00 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 181 0xb5 '\265' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x48, /* 0 00 000 */
+ 0x48, /* 0 00 000 */
+ 0x48, /* 0 00 000 */
+ 0x48, /* 0 00 000 */
+ 0x74, /* 0 0 00 */
+ 0x40, /* 0 000000 */
+ 0x40, /* 0 000000 */
+ 0x00, /* 00000000 */
+
+ /* 182 0xb6 '\266' */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x08, /* 0000 000 */
+ 0x0c, /* 0000 00 */
+ 0x14, /* 000 0 00 */
+ 0x24, /* 00 00 00 */
+ 0x24, /* 00 00 00 */
+ 0x18, /* 000 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 183 0xb7 '\267' */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x24, /* 00 00 00 */
+ 0x10, /* 000 0000 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x24, /* 00 00 00 */
+ 0x7c, /* 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 184 0xb8 '\270' */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x28, /* 00 0 000 */
+ 0x28, /* 00 0 000 */
+ 0x28, /* 00 0 000 */
+ 0x28, /* 00 0 000 */
+ 0x28, /* 00 0 000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 185 0xb9 '\271' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x28, /* 00 0 000 */
+ 0x28, /* 00 0 000 */
+ 0x28, /* 00 0 000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 186 0xba '\272' */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x60, /* 0 00000 */
+ 0x00, /* 00000000 */
+
+ /* 187 0xbb '\273' */
+ 0x00, /* 00000000 */
+ 0x1c, /* 000 00 */
+ 0x24, /* 00 00 00 */
+ 0x24, /* 00 00 00 */
+ 0x1c, /* 000 00 */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 188 0xbc '\274' */
+ 0x00, /* 00000000 */
+ 0x18, /* 000 000 */
+ 0x24, /* 00 00 00 */
+ 0x24, /* 00 00 00 */
+ 0x18, /* 000 000 */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 189 0xbd '\275' */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x28, /* 00 0 000 */
+ 0x6c, /* 0 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 190 0xbe '\276' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x54, /* 0 0 0 00 */
+ 0x5c, /* 0 0 00 */
+ 0x50, /* 0 0 0000 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 191 0xbf '\277' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x4c, /* 0 00 00 */
+ 0x54, /* 0 0 0 00 */
+ 0x64, /* 0 00 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 192 0xc0 '\300' */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x20, /* 00 00000 */
+ 0x40, /* 0 000000 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 193 0xc1 '\301' */
+ 0x00, /* 00000000 */
+ 0x08, /* 0000 000 */
+ 0x00, /* 00000000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x08, /* 0000 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 194 0xc2 '\302' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x04, /* 00000 00 */
+ 0x04, /* 00000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 195 0xc3 '\303' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x0c, /* 0000 00 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x50, /* 0 0 0000 */
+ 0x20, /* 00 00000 */
+ 0x20, /* 00 00000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 196 0xc4 '\304' */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x38, /* 00 000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x60, /* 0 00000 */
+ 0x00, /* 00000000 */
+
+ /* 197 0xc5 '\305' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x04, /* 00000 00 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x40, /* 0 000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 198 0xc6 '\306' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x10, /* 000 0000 */
+ 0x28, /* 00 0 000 */
+ 0x28, /* 00 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x7c, /* 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 199 0xc7 '\307' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x24, /* 00 00 00 */
+ 0x48, /* 0 00 000 */
+ 0x48, /* 0 00 000 */
+ 0x24, /* 00 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 200 0xc8 '\310' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x48, /* 0 00 000 */
+ 0x24, /* 00 00 00 */
+ 0x24, /* 00 00 00 */
+ 0x48, /* 0 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 201 0xc9 '\311' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x54, /* 0 0 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 202 0xca '\312' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 203 0xcb '\313' */
+ 0x10, /* 000 0000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x7c, /* 0 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 204 0xcc '\314' */
+ 0x58, /* 0 0 000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x7c, /* 0 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 205 0xcd '\315' */
+ 0x58, /* 0 0 000 */
+ 0x38, /* 00 000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 206 0xce '\316' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x50, /* 0 0 0000 */
+ 0x50, /* 0 0 0000 */
+ 0x58, /* 0 0 000 */
+ 0x50, /* 0 0 0000 */
+ 0x50, /* 0 0 0000 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 207 0xcf '\317' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x28, /* 00 0 000 */
+ 0x54, /* 0 0 0 00 */
+ 0x5c, /* 0 0 00 */
+ 0x50, /* 0 0 0000 */
+ 0x2c, /* 00 0 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 208 0xd0 '\320' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 209 0xd1 '\321' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x7e, /* 0 0 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 210 0xd2 '\322' */
+ 0x00, /* 00000000 */
+ 0x14, /* 000 0 00 */
+ 0x28, /* 00 0 000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 211 0xd3 '\323' */
+ 0x00, /* 00000000 */
+ 0x14, /* 000 0 00 */
+ 0x14, /* 000 0 00 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 212 0xd4 '\324' */
+ 0x00, /* 00000000 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x18, /* 000 000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 213 0xd5 '\325' */
+ 0x00, /* 00000000 */
+ 0x18, /* 000 000 */
+ 0x08, /* 0000 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 214 0xd6 '\326' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x7c, /* 0 00 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 215 0xd7 '\327' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x10, /* 000 0000 */
+ 0x28, /* 00 0 000 */
+ 0x44, /* 0 000 00 */
+ 0x28, /* 00 0 000 */
+ 0x10, /* 000 0000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 216 0xd8 '\330' */
+ 0x00, /* 00000000 */
+ 0x28, /* 00 0 000 */
+ 0x00, /* 00000000 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x44, /* 0 000 00 */
+ 0x3c, /* 00 00 */
+ 0x04, /* 00000 00 */
+ 0x38, /* 00 000 */
+ 0x00, /* 00000000 */
+
+ /* 217 0xd9 '\331' */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x7e, /* 0 0 */
+ 0x00, /* 00000000 */
+ 0x7e, /* 0 0 */
+ 0x00, /* 00000000 */
+ 0x7e, /* 0 0 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 218 0xda '\332' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 219 0xdb '\333' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 220 0xdc '\334' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 221 0xdd '\335' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 222 0xde '\336' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 223 0xdf '\337' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 224 0xe0 '\340' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 225 0xe1 '\341' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 226 0xe2 '\342' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 227 0xe3 '\343' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 228 0xe4 '\344' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 229 0xe5 '\345' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 230 0xe6 '\346' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 231 0xe7 '\347' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 232 0xe8 '\350' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 233 0xe9 '\351' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 234 0xea '\352' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 235 0xeb '\353' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 236 0xec '\354' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 237 0xed '\355' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 238 0xee '\356' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 239 0xef '\357' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 240 0xf0 '\360' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 241 0xf1 '\361' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 242 0xf2 '\362' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 243 0xf3 '\363' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 244 0xf4 '\364' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 245 0xf5 '\365' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 246 0xf6 '\366' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 247 0xf7 '\367' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 248 0xf8 '\370' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 249 0xf9 '\371' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 250 0xfa '\372' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 251 0xfb '\373' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 252 0xfc '\374' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 253 0xfd '\375' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 254 0xfe '\376' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+
+ /* 255 0xff '\377' */
+ 0x00, /* 00000000 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x3c, /* 00 00 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
+ 0x00, /* 00000000 */
};
diff --git a/src/glib-helpers.h b/src/glib-helpers.h
index bbc3a2d..b3da8b0 100644
--- a/src/glib-helpers.h
+++ b/src/glib-helpers.h
@@ -28,10 +28,9 @@
G_BEGIN_DECLS
-#define G_FUNC(func) ((GFunc)(func))
+#define G_FUNC(func) ((GFunc)(func))
#define G_SOURCE_FUNC(func) ((GSourceFunc)(func))
G_END_DECLS
-#endif /* GLIB_HELPERS_H */
-
+#endif /* GLIB_HELPERS_H */
diff --git a/src/main.c b/src/main.c
index f6f0671..1420c01 100644
--- a/src/main.c
+++ b/src/main.c
@@ -8,47 +8,49 @@
#include <config.h>
#include <gdk/gdkx.h>
-#include <gdk-pixbuf-xlib/gdk-pixbuf-xlib.h>
-#include <gdk-pixbuf-xlib/gdk-pixbuf-xlibrgb.h>
#include <glib/gi18n.h>
#include <locale.h>
#include <libv4l2.h>
#include "camorama-stock-items.h"
-static int ver = 0, max = 0, min = 0;
+static int ver = 0, max = 0, min;
static int half = 0, use_read = 0, buggery = 0;
static gchar *poopoo = NULL;
-static int x = -1, y = -1;
+static int x = 0, y = 0;
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
static GOptionEntry options[] = {
{"version", 'V', 0, G_OPTION_ARG_NONE, &ver,
- N_("show version and exit"), NULL},
+ N_("show version and exit"), NULL},
{"device", 'd', 0, G_OPTION_ARG_STRING, &poopoo,
- N_("v4l device to use"), NULL},
+ N_("v4l device to use"), NULL},
{"debug", 'D', 0, G_OPTION_ARG_NONE, &buggery,
- N_("enable debugging code"), NULL},
+ N_("enable debugging code"), NULL},
{"width", 'x', 0, G_OPTION_ARG_INT, &x,
- N_("capture width"), NULL},
+ N_("capture width"), NULL},
{"height", 'y', 0, G_OPTION_ARG_INT, &y,
- N_("capture height"), NULL},
+ N_("capture height"), NULL},
{"max", 'M', 0, G_OPTION_ARG_NONE, &max,
- N_("maximum capture size"), NULL},
+ N_("maximum capture size"), NULL},
{"min", 'm', 0, G_OPTION_ARG_NONE, &min,
- N_("minimum capture size"), NULL},
+ N_("minimum capture size"), NULL},
{"half", 'H', 0, G_OPTION_ARG_NONE, &half,
- N_("middle capture size"), NULL},
+ N_("middle capture size"), NULL},
{"read", 'R', 0, G_OPTION_ARG_NONE, &use_read,
- N_("use read() rather than mmap()"), NULL},
- { NULL }
+ N_("use read() rather than mmap()"), NULL},
+ {NULL}
};
-int
-main(int argc, char *argv[]) {
- cam cam_object, *cam;
- Display *display;
- Screen *screen_num;
+#pragma GCC diagnostic pop
+
+int main(int argc, char *argv[])
+{
+ cam_t cam_object, *cam;
GConfClient *gc;
+ GtkWidget *widget;
unsigned int bufsize;
GError *error = NULL;
@@ -63,13 +65,14 @@ main(int argc, char *argv[]) {
cam->height = 0;
cam->res = NULL;
cam->n_res = 0;
+ cam->scale = 1.f;
- bindtextdomain (PACKAGE_NAME, PACKAGE_LOCALE_DIR);
- bind_textdomain_codeset (PACKAGE_NAME, "UTF-8");
- textdomain (PACKAGE_NAME);
+ bindtextdomain(PACKAGE_NAME, PACKAGE_LOCALE_DIR);
+ bind_textdomain_codeset(PACKAGE_NAME, "UTF-8");
+ textdomain(PACKAGE_NAME);
- if (!gtk_init_with_args(&argc, &argv,_("camorama"), options,
- PACKAGE_NAME, &error) || error) {
+ if (!gtk_init_with_args(&argc, &argv, _("camorama"), options,
+ PACKAGE_NAME, &error) || error) {
g_printerr(_("Invalid argument\nRun '%s --help'\n"), argv[0]);
return 1;
}
@@ -80,133 +83,129 @@ main(int argc, char *argv[]) {
cam->debug = buggery;
- cam->width = x;
- cam->height = y;
+ cam->width = x;
+ cam->height = y;
+
+ cam->screen_width = gdk_screen_width();
+ cam->screen_height = gdk_screen_height();
if (ver) {
- fprintf (stderr, _("\n\nCamorama version %s\n\n"), PACKAGE_VERSION);
- exit (0);
+ fprintf(stderr, _("\n\nCamorama version %s\n\n"), PACKAGE_VERSION);
+ exit(0);
}
- if (max) {
+ if (max)
cam->size = PICMAX;
- }
- if (min) {
+
+ if (min)
cam->size = PICMIN;
- }
- if (half) {
+
+ if (half)
cam->size = PICHALF;
- }
+
if (use_read) {
- printf ("Forcing read mode\n");
+ printf("Forcing read mode\n");
cam->read = TRUE;
}
- gc = gconf_client_get_default ();
+ gc = gconf_client_get_default();
cam->gc = gc;
- gconf_client_add_dir (cam->gc, PATH, GCONF_CLIENT_PRELOAD_NONE, NULL);
- gconf_client_notify_add (cam->gc, KEY1, (void *) gconf_notify_func,
- cam->pixdir, NULL, NULL);
- gconf_client_notify_add (cam->gc, KEY2, (void *) gconf_notify_func,
- cam->capturefile, NULL, NULL);
- gconf_client_notify_add (cam->gc, KEY3,
- (void *) gconf_notify_func_int,
- GINT_TO_POINTER (cam->savetype), NULL, NULL);
- gconf_client_notify_add (cam->gc, KEY4,
- (void *) gconf_notify_func_bool,
- &cam->timestamp, NULL, NULL);
- gconf_client_notify_add (cam->gc, KEY5, (void *) gconf_notify_func,
- cam->host, NULL, NULL);
- gconf_client_notify_add (cam->gc, KEY6, (void *) gconf_notify_func,
- cam->proto, NULL, NULL);
- gconf_client_notify_add (cam->gc, KEY8, (void *) gconf_notify_func,
- cam->rdir, NULL, NULL);
- gconf_client_notify_add (cam->gc, KEY9, (void *) gconf_notify_func,
- cam->rcapturefile, NULL, NULL);
+ gconf_client_add_dir(cam->gc, PATH, GCONF_CLIENT_PRELOAD_NONE, NULL);
+ gconf_client_notify_add(cam->gc, KEY1, (void *)gconf_notify_func,
+ &cam->pixdir, NULL, NULL);
+ gconf_client_notify_add(cam->gc, KEY2, (void *)gconf_notify_func,
+ &cam->capturefile, NULL, NULL);
+ gconf_client_notify_add(cam->gc, KEY3,
+ (void *)gconf_notify_func_int,
+ &cam->savetype, NULL, NULL);
+ gconf_client_notify_add(cam->gc, KEY4,
+ (void *)gconf_notify_func_bool,
+ &cam->timestamp, NULL, NULL);
+ gconf_client_notify_add(cam->gc, KEY5, (void *)gconf_notify_func,
+ &cam->host, NULL, NULL);
+ gconf_client_notify_add(cam->gc, KEY6, (void *)gconf_notify_func,
+ &cam->proto, NULL, NULL);
+ gconf_client_notify_add(cam->gc, KEY8, (void *)gconf_notify_func,
+ &cam->rdir, NULL, NULL);
+ gconf_client_notify_add(cam->gc, KEY9, (void *)gconf_notify_func,
+ &cam->rcapturefile, NULL, NULL);
if (!poopoo) {
- gchar const* gconf_device = gconf_client_get_string(cam->gc, KEY_DEVICE, NULL);
- if(gconf_device) {
- cam->video_dev = g_strdup(gconf_device);
- } else {
- cam->video_dev = g_strdup ("/dev/video0");
- }
+ gchar const *gconf_device = gconf_client_get_string(cam->gc, KEY_DEVICE,
+ NULL);
+ if (gconf_device)
+ cam->video_dev = g_strdup(gconf_device);
+ else
+ cam->video_dev = g_strdup("/dev/video0");
} else {
- cam->video_dev = g_strdup (poopoo);
+ cam->video_dev = g_strdup(poopoo);
}
- cam->pixdir = g_strdup (gconf_client_get_string (cam->gc, KEY1, NULL));
- cam->capturefile =
- g_strdup (gconf_client_get_string (cam->gc, KEY2, NULL));
- cam->savetype = gconf_client_get_int (cam->gc, KEY3, NULL);
- cam->host = g_strdup (gconf_client_get_string (cam->gc, KEY5, NULL));
- cam->proto = g_strdup (gconf_client_get_string (cam->gc, KEY6, NULL));
- cam->rdir = g_strdup (gconf_client_get_string (cam->gc, KEY8, NULL));
- cam->rcapturefile = g_strdup (gconf_client_get_string (cam->gc, KEY9, NULL));
- cam->rsavetype = gconf_client_get_int (cam->gc, KEY10, NULL);
- cam->ts_string =
- g_strdup (gconf_client_get_string (cam->gc, KEY16, NULL));
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
cam->date_format = "%Y-%m-%d %H:%M:%S";
- cam->timestamp = gconf_client_get_bool (cam->gc, KEY4, NULL);
- cam->rtimestamp = gconf_client_get_bool (cam->gc, KEY11, NULL);
-
- cam->cap = gconf_client_get_bool (cam->gc, KEY12, NULL);
- cam->rcap = gconf_client_get_bool (cam->gc, KEY13, NULL);
- cam->timefn = gconf_client_get_bool (cam->gc, KEY14, NULL);
- cam->rtimefn = gconf_client_get_bool (cam->gc, KEY15, NULL);
- cam->usestring = gconf_client_get_bool (cam->gc, KEY18, NULL);
- cam->usedate = gconf_client_get_bool (cam->gc, KEY19, NULL);
- cam->acap = gconf_client_get_bool (cam->gc, KEY20, NULL);
- cam->timeout_interval = gconf_client_get_int (cam->gc, KEY21, NULL);
- cam->show_adjustments = gconf_client_get_bool (cam->gc, KEY22, NULL);
- cam->show_effects = gconf_client_get_bool (cam->gc, KEY23, NULL);
-
-
- /* get desktop depth */
- display = (Display *) gdk_x11_get_default_xdisplay ();
- screen_num = xlib_rgb_get_screen ();
-
- gdk_pixbuf_xlib_init (display, 0);
- cam->desk_depth = xlib_rgb_get_depth ();
+#pragma GCC diagnostic pop
+
+ cam->pixdir = g_strdup(gconf_client_get_string(cam->gc, KEY1, NULL));
+ cam->capturefile = g_strdup(gconf_client_get_string(cam->gc, KEY2, NULL));
+ cam->savetype = gconf_client_get_int(cam->gc, KEY3, NULL);
+ cam->host = g_strdup(gconf_client_get_string(cam->gc, KEY5, NULL));
+ cam->proto = g_strdup(gconf_client_get_string(cam->gc, KEY6, NULL));
+ cam->rdir = g_strdup(gconf_client_get_string(cam->gc, KEY8, NULL));
+ cam->rcapturefile = g_strdup(gconf_client_get_string(cam->gc, KEY9, NULL));
+ cam->rsavetype = gconf_client_get_int(cam->gc, KEY10, NULL);
+ cam->ts_string = g_strdup(gconf_client_get_string(cam->gc, KEY16, NULL));
+ cam->timestamp = gconf_client_get_bool(cam->gc, KEY4, NULL);
+ cam->rtimestamp = gconf_client_get_bool(cam->gc, KEY11, NULL);
+
+ cam->cap = gconf_client_get_bool(cam->gc, KEY12, NULL);
+ cam->rcap = gconf_client_get_bool(cam->gc, KEY13, NULL);
+ cam->timefn = gconf_client_get_bool(cam->gc, KEY14, NULL);
+ cam->rtimefn = gconf_client_get_bool(cam->gc, KEY15, NULL);
+ cam->usestring = gconf_client_get_bool(cam->gc, KEY18, NULL);
+ cam->usedate = gconf_client_get_bool(cam->gc, KEY19, NULL);
+ cam->acap = gconf_client_get_bool(cam->gc, KEY20, NULL);
+ cam->timeout_interval = gconf_client_get_int(cam->gc, KEY21, NULL);
+ cam->show_adjustments = gconf_client_get_bool(cam->gc, KEY22, NULL);
+ cam->show_effects = gconf_client_get_bool(cam->gc, KEY23, NULL);
if (use_read)
- cam->dev = v4l2_open (cam->video_dev, O_RDWR);
+ cam->dev = v4l2_open(cam->video_dev, O_RDWR);
else
- cam->dev = v4l2_open (cam->video_dev, O_RDWR | O_NONBLOCK);
+ cam->dev = v4l2_open(cam->video_dev, O_RDWR | O_NONBLOCK);
- camera_cap (cam);
- get_win_info (cam);
+ camera_cap(cam);
+ get_win_info(cam);
- set_win_info (cam);
- get_win_info (cam);
+ set_win_info(cam);
+ get_win_info(cam);
/* get picture attributes */
- get_pic_info (cam);
+ get_pic_info(cam);
bufsize = cam->max_width * cam->max_height * cam->bpp / 8;
- cam->pic_buf = malloc (bufsize);
- cam->tmp = malloc (bufsize);
+ cam->pic_buf = malloc(bufsize);
+ cam->tmp = malloc(bufsize);
if (!cam->pic_buf || !cam->tmp) {
- printf("Failed to allocate memory for buffers\n");
- exit(0);
+ printf("Failed to allocate memory for buffers\n");
+ exit(0);
}
-
//cam->read = FALSE;
/* initialize cam and create the window */
if (cam->read == FALSE) {
pt2Function = timeout_func;
- start_streaming (cam);
+ start_streaming(cam);
} else {
- printf ("using read()\n");
+ printf("using read()\n");
pt2Function = read_timeout_func;
}
- cam->xml = gtk_builder_new ();
- if (!gtk_builder_add_from_file (cam->xml,
- PACKAGE_DATA_DIR "/camorama/camorama.ui",
- NULL)) {
- error_dialog (_("Couldn't load builder file"));
+ cam->xml = gtk_builder_new();
+ if (!gtk_builder_add_from_file(cam->xml,
+ PACKAGE_DATA_DIR
+ "/camorama/camorama.ui", NULL)) {
+ error_dialog(_("Couldn't load builder file"));
exit(1);
}
@@ -216,24 +215,29 @@ main(int argc, char *argv[]) {
* button = gtk_button_new_with_label ("This is a another\ncool tray icon");
* g_signal_connect (button, "clicked",
* G_CALLBACK (second_button_pressed), tray_icon);
- *
+ *
* gtk_container_add (GTK_CONTAINER (tray_icon), button);
* gtk_widget_show_all (GTK_WIDGET (tray_icon)); */
- load_interface (cam);
+ load_interface(cam);
+
+ widget = GTK_WIDGET(gtk_builder_get_object(cam->xml, "da"));
+
+#if GTK_MAJOR_VERSION >= 3
+ g_signal_connect(G_OBJECT(widget), "draw", G_CALLBACK(draw_callback), cam);
+#endif
- GtkWidget *widget = GTK_WIDGET (gtk_builder_get_object (cam->xml, "da"));
- gtk_widget_show (widget);
+ gtk_widget_show(widget);
- cam->idle_id = g_idle_add ((GSourceFunc) pt2Function, (gpointer) cam);
+ cam->idle_id = g_idle_add((GSourceFunc) pt2Function, (gpointer) cam);
- g_timeout_add (2000, (GSourceFunc) fps, cam->status);
+ g_timeout_add(2000, (GSourceFunc) fps, cam->status);
if (cam->debug == TRUE)
- print_cam(cam);
+ print_cam(cam);
- gtk_main ();
+ gtk_main();
if (cam->read == FALSE) {
- stop_streaming(cam);
+ stop_streaming(cam);
}
v4l2_close(cam->dev);
diff --git a/src/support.c b/src/support.c
index 5783b0a..cb90cda 100644
--- a/src/support.c
+++ b/src/support.c
@@ -1,38 +1,37 @@
+#include "callbacks.h"
+#include "interface.h"
+#include "support.h"
+
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
-
#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-#include "callbacks.h"
-#include "interface.h"
-#include "support.h"
#include <config.h>
-GtkWidget *xpm_label_box (gchar * xpm_filename)
+GtkWidget *xpm_label_box(gchar *xpm_filename)
{
GtkWidget *box;
GtkWidget *image;
/* Create box for image and label */
- box = gtk_hbox_new (FALSE, 0);
- gtk_container_set_border_width (GTK_CONTAINER (box), 2);
+ box = gtk_hbox_new(FALSE, 0);
+ gtk_container_set_border_width(GTK_CONTAINER(box), 2);
/* Now on to the image stuff */
- image = gtk_image_new_from_file (xpm_filename);
+ image = gtk_image_new_from_file(xpm_filename);
/* Create a label for the button */
/* Pack the image and label into the box */
- gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 3);
+ gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 3);
- gtk_widget_show (image);
+ gtk_widget_show(image);
return box;
}
-int error_dialog (char *message)
+int error_dialog(char *message)
{
GtkWidget *dialog;
int test;
@@ -40,10 +39,9 @@ int error_dialog (char *message)
dialog = gtk_message_dialog_new(NULL,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "%s", message);
+ GTK_BUTTONS_CLOSE, "%s", message);
- test = gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
+ test = gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
return test;
}
diff --git a/src/support.h b/src/support.h
index 63fab01..2b0f400 100644
--- a/src/support.h
+++ b/src/support.h
@@ -1,2 +1,4 @@
-GtkWidget *xpm_label_box (gchar *);
-int error_dialog (char *);
+#include "v4l.h"
+
+GtkWidget * xpm_label_box(gchar *);
+int error_dialog(char *);
diff --git a/src/v4l.c b/src/v4l.c
index 7e3d7d5..e9ce8f2 100644
--- a/src/v4l.c
+++ b/src/v4l.c
@@ -8,586 +8,609 @@
extern int frame_number;
-void print_cam(cam *cam){
- printf("\nCamera Info\n");
- printf("-----------\n");
- printf("device = %s, x = %d, y = %d\n",cam->video_dev, cam->width,cam->height);
- printf("bits per pixel = %d, desk_depth = %d\n", cam->bpp, cam->desk_depth);
- if(cam->width <= 0 || cam->height <= 0) {
- switch (cam->size) {
- case PICMAX:
- printf("size = PICMAX\n");
- break;
- case PICMIN:
- printf("size = PICMIN\n");
- break;
- case PICHALF:
- default:
- printf("size = PICHALF\n");
- break;
- }
- }
- printf("capture directory = %s, capture file = %s\n",cam->pixdir, cam->capturefile);
- printf("remote host = %s\n",cam->uri);
- if (strcmp(cam->ts_string, "Camorama!"))
- printf("timestamp = %s\n\n",cam->ts_string);
+void print_cam(cam_t *cam)
+{
+ printf("\nCamera Info\n");
+ printf("-----------\n");
+ printf("device = %s, x = %d, y = %d\n", cam->video_dev, cam->width,
+ cam->height);
+ printf("bits per pixel = %d\n", cam->bpp);
+ if (cam->width <= 0 || cam->height <= 0) {
+ switch (cam->size) {
+ case PICMAX:
+ printf("size = PICMAX\n");
+ break;
+ case PICMIN:
+ printf("size = PICMIN\n");
+ break;
+ case PICHALF:
+ default:
+ printf("size = PICHALF\n");
+ break;
+ }
+ }
+ printf("capture directory = %s, capture file = %s\n", cam->pixdir,
+ cam->capturefile);
+ printf("remote host = %s\n", cam->uri);
+ if (strcmp(cam->ts_string, "Camorama!"))
+ printf("timestamp = %s\n\n", cam->ts_string);
}
-static void insert_resolution(cam * cam, int x, int y)
+static void insert_resolution(cam_t *cam, unsigned int x, unsigned int y)
{
- int i;
+ unsigned int i;
- try_set_win_info(cam, &x, &y);
- for (i = 0; i < cam->n_res; i++) {
- if (cam->res[i].x == x && cam->res[i].y == y)
- return;
- }
+ try_set_win_info(cam, &x, &y);
+ for (i = 0; i < cam->n_res; i++) {
+ if (cam->res[i].x == x && cam->res[i].y == y)
+ return;
+ }
- cam->res = realloc(cam->res, (cam->n_res + 1) * sizeof(struct resolutions));
+ cam->res = realloc(cam->res, (cam->n_res + 1) * sizeof(struct resolutions));
- cam->res[cam->n_res].x = x;
- cam->res[cam->n_res].y = y;
- cam->n_res++;
+ cam->res[cam->n_res].x = x;
+ cam->res[cam->n_res].y = y;
+ cam->n_res++;
}
-static int sort_func(const void *__b,
- const void *__a)
+static int sort_func(const void *__b, const void *__a)
{
- const struct resolutions *a = __a;
- const struct resolutions *b = __b;
- int r;
+ const struct resolutions *a = __a;
+ const struct resolutions *b = __b;
+ int r;
- r = b->x - a->x;
- if (!r)
- r = b->y - a->y;
+ r = (int)b->x - a->x;
+ if (!r)
+ r = (int)b->y - a->y;
- return r;
+ return r;
}
-void get_supported_resolutions(cam * cam)
+void get_supported_resolutions(cam_t *cam)
{
- struct v4l2_fmtdesc fmt;
- struct v4l2_frmsizeenum frmsize;
- int i, x, y;
+ struct v4l2_fmtdesc fmt;
+ struct v4l2_frmsizeenum frmsize;
+ int i;
+ unsigned int x, y;
+
+ fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ for (fmt.index = 0;
+ !v4l2_ioctl(cam->dev, VIDIOC_ENUM_FMT, &fmt);
+ fmt.index++) {
+ if (cam->pixformat != fmt.pixelformat)
+ continue;
- for (fmt.index = 0;
- !v4l2_ioctl(cam->dev, VIDIOC_ENUM_FMT, &fmt);
- fmt.index++) {
- if (cam->pixformat != fmt.pixelformat)
- continue;
+ frmsize.pixel_format = fmt.pixelformat;
+ frmsize.index = 0;
- frmsize.pixel_format = fmt.pixelformat;
- frmsize.index = 0;
- while (!v4l2_ioctl(cam->dev, VIDIOC_ENUM_FRAMESIZES, &frmsize)) {
+ while (!v4l2_ioctl(cam->dev, VIDIOC_ENUM_FRAMESIZES, &frmsize)) {
if (frmsize.type == V4L2_FRMSIZE_TYPE_DISCRETE) {
- insert_resolution(cam, frmsize.discrete.width,
- frmsize.discrete.height);
+ insert_resolution(cam, frmsize.discrete.width,
+ frmsize.discrete.height);
} else if (frmsize.type == V4L2_FRMSIZE_TYPE_STEPWISE) {
- for (i = 0; i < 4; i++) {
- x = frmsize.stepwise.min_width +
- i * (frmsize.stepwise.max_width - frmsize.stepwise.min_width) / 4;
- y = frmsize.stepwise.min_height +
- i * (frmsize.stepwise.max_height - frmsize.stepwise.min_height) / 4;
- insert_resolution(cam, x, y);
- }
+ for (i = 0; i < 4; i++) {
+ x = frmsize.stepwise.min_width +
+ i * (frmsize.stepwise.max_width -
+ frmsize.stepwise.min_width) / 4;
+ y = frmsize.stepwise.min_height +
+ i * (frmsize.stepwise.max_height -
+ frmsize.stepwise.min_height) / 4;
+ insert_resolution(cam, x, y);
+ }
}
frmsize.index++;
- }
- }
- qsort(cam->res, cam->n_res, sizeof(struct resolutions), sort_func);
+ }
+ }
+ qsort(cam->res, cam->n_res, sizeof(struct resolutions), sort_func);
}
-void camera_cap(cam * cam)
+void camera_cap(cam_t *cam)
{
- char *msg;
- int i;
- struct v4l2_capability vid_cap = { 0 };
- struct v4l2_fmtdesc fmtdesc = { .type = V4L2_BUF_TYPE_VIDEO_CAPTURE };
- struct v4l2_format fmt;
-
- /* Query device capabilities */
- if(v4l2_ioctl(cam->dev, VIDIOC_QUERYCAP, &vid_cap) == -1) {
- if(cam->debug == TRUE) {
- fprintf(stderr, "VIDIOC_QUERYCAP -- could not get camera capabilities, exiting.....\n");
- }
- msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."), cam->video_dev);
- error_dialog(msg);
- g_free(msg);
- exit(0);
- }
-
- /* Query supported resolutions */
-
- cam->rdir_ok = FALSE;
- cam->min_width = -1;
- cam->min_height = -1;
- cam->max_width = 0;
- cam->max_height = 0;
- for (i = 0; ; i++) {
- fmtdesc.index = i;
-
- if (v4l2_ioctl(cam->dev, VIDIOC_ENUM_FMT, &fmtdesc))
- break;
-
- if (cam->debug == TRUE)
- printf("format index %d: FOURCC: '%c%c%c%c' (%08x)%s\n", i,
- fmtdesc.pixelformat & 0xff,
- (fmtdesc.pixelformat >> 8) & 0xff,
- (fmtdesc.pixelformat >> 16) & 0xff,
- fmtdesc.pixelformat >> 24,
- fmtdesc.pixelformat,
- fmtdesc.flags & V4L2_FMT_FLAG_EMULATED ? " (emulated)" : ""
- );
-
- /* FIXME: add a check for emulated formats */
-
- memset(&fmt, 0, sizeof(fmt));
- fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- fmt.fmt.pix.pixelformat = fmtdesc.pixelformat;
- fmt.fmt.pix.width = 48;
- fmt.fmt.pix.height = 32;
-
- if (!v4l2_ioctl(cam->dev, VIDIOC_TRY_FMT, &fmt)) {
- if (fmt.fmt.pix.width < cam->min_width)
- cam->min_width = fmt.fmt.pix.width;
- if (fmt.fmt.pix.height < cam->min_height)
- cam->min_height = fmt.fmt.pix.height;
- if (cam->debug == TRUE)
- printf(" MIN: %dx%d\n", fmt.fmt.pix.width, fmt.fmt.pix.height);
- }
-
- memset(&fmt, 0, sizeof(fmt));
- fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- fmt.fmt.pix.pixelformat = fmtdesc.pixelformat;
- fmt.fmt.pix.width = 100000;
- fmt.fmt.pix.height = 100000;
-
- if (!v4l2_ioctl(cam->dev, VIDIOC_TRY_FMT, &fmt)) {
- if (fmt.fmt.pix.width > cam->max_width)
- cam->max_width = fmt.fmt.pix.width;
- if (fmt.fmt.pix.height > cam->max_height)
- cam->max_height = fmt.fmt.pix.height;
- if(cam->debug == TRUE)
- printf(" MAX: %dx%d\n", fmt.fmt.pix.width, fmt.fmt.pix.height);
- }
- }
-
- /* Adjust camera resolution */
-
- if(cam->width > 0 && cam->height > 0) {
- if(cam->max_width < cam->width) {
- cam->width = cam->max_width;
- }
- if(cam->min_width > cam->width) {
- cam->width = cam->min_width;
- }
- if(cam->max_height < cam->height) {
- cam->height = cam->max_height;
- }
- if(cam->min_height > cam->height) {
- cam->height = cam->min_height;
- }
- } else {
- switch (cam->size) {
- case PICMAX:
- cam->width = cam->max_width;
- cam->height = cam->max_height;
- break;
-
- case PICMIN:
- cam->width = cam->min_width;
- cam->height = cam->min_height;
- break;
-
- case PICHALF:
- cam->width = cam->max_width / 2;
- cam->height = cam->max_height / 2;
- break;
-
- default:
- cam->width = cam->max_width / 2;
- cam->height = cam->max_height / 2;
- break;
- }
- }
-
- if(!(vid_cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) {
- if(cam->debug == TRUE) {
- fprintf(stderr, "VIDIOC_QUERYCAP -- it is not a capture device, exiting.....\n");
- }
- msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."), cam->video_dev);
- error_dialog(msg);
- g_free(msg);
- exit(0);
- }
-
- if(!(vid_cap.capabilities & V4L2_CAP_STREAMING)) {
- cam->read = TRUE;
- }
-
- strncpy(cam->name, (const char *)vid_cap.card, sizeof(cam->name));
- cam->name[sizeof(cam->name) - 1] = '\0';
-
- if(cam->debug == TRUE) {
- printf("\nVIDIOC_QUERYCAP\n");
- printf("device name = %s\n", vid_cap.card);
- printf("device caps = 0x%08x\n", vid_cap.capabilities);
- printf("max width = %d\n", cam->max_width);
- printf("max height = %d\n", cam->max_height);
- printf("min width = %d\n", cam->min_width);
- printf("min height = %d\n", cam->min_height);
- }
+ char *msg;
+ int i;
+ struct v4l2_capability vid_cap = { 0 };
+ struct v4l2_fmtdesc fmtdesc = {.type = V4L2_BUF_TYPE_VIDEO_CAPTURE };
+ struct v4l2_format fmt;
+
+ /* Query device capabilities */
+ if (v4l2_ioctl(cam->dev, VIDIOC_QUERYCAP, &vid_cap) == -1) {
+ if (cam->debug == TRUE) {
+ fprintf(stderr,
+ "VIDIOC_QUERYCAP -- could not get camera capabilities, exiting.....\n");
+ }
+ msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."),
+ cam->video_dev);
+ error_dialog(msg);
+ g_free(msg);
+ exit(0);
+ }
+
+ /* Query supported resolutions */
+
+ cam->rdir_ok = FALSE;
+ cam->min_width = (unsigned)-1;
+ cam->min_height = (unsigned)-1;
+ cam->max_width = 0;
+ cam->max_height = 0;
+ for (i = 0;; i++) {
+ fmtdesc.index = i;
+
+ if (v4l2_ioctl(cam->dev, VIDIOC_ENUM_FMT, &fmtdesc))
+ break;
+
+ if (cam->debug == TRUE)
+ printf("format index %d: FOURCC: '%c%c%c%c' (%08x)%s\n", i,
+ fmtdesc.pixelformat & 0xff,
+ (fmtdesc.pixelformat >> 8) & 0xff,
+ (fmtdesc.pixelformat >> 16) & 0xff,
+ fmtdesc.pixelformat >> 24,
+ fmtdesc.pixelformat,
+ fmtdesc.
+ flags & V4L2_FMT_FLAG_EMULATED ? " (emulated)" : "");
+
+ /* FIXME: add a check for emulated formats */
+
+ memset(&fmt, 0, sizeof(fmt));
+ fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ fmt.fmt.pix.pixelformat = fmtdesc.pixelformat;
+ fmt.fmt.pix.width = 48;
+ fmt.fmt.pix.height = 32;
+
+ if (!v4l2_ioctl(cam->dev, VIDIOC_TRY_FMT, &fmt)) {
+ if (fmt.fmt.pix.width < cam->min_width)
+ cam->min_width = fmt.fmt.pix.width;
+ if (fmt.fmt.pix.height < cam->min_height)
+ cam->min_height = fmt.fmt.pix.height;
+ if (cam->debug == TRUE)
+ printf(" MIN: %dx%d\n", fmt.fmt.pix.width,
+ fmt.fmt.pix.height);
+ }
+
+ memset(&fmt, 0, sizeof(fmt));
+ fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ fmt.fmt.pix.pixelformat = fmtdesc.pixelformat;
+ fmt.fmt.pix.width = 100000;
+ fmt.fmt.pix.height = 100000;
+
+ if (!v4l2_ioctl(cam->dev, VIDIOC_TRY_FMT, &fmt)) {
+ if (fmt.fmt.pix.width > cam->max_width)
+ cam->max_width = fmt.fmt.pix.width;
+ if (fmt.fmt.pix.height > cam->max_height)
+ cam->max_height = fmt.fmt.pix.height;
+ if (cam->debug == TRUE)
+ printf(" MAX: %dx%d\n", fmt.fmt.pix.width,
+ fmt.fmt.pix.height);
+ }
+ }
+
+ /* Adjust camera resolution */
+
+ if (cam->width > 0 && cam->height > 0) {
+ if (cam->max_width < cam->width)
+ cam->width = cam->max_width;
+ else if (cam->min_width > cam->width)
+ cam->width = cam->min_width;
+
+ if (cam->max_height < cam->height)
+ cam->height = cam->max_height;
+ else if (cam->min_height > cam->height)
+ cam->height = cam->min_height;
+ } else {
+ switch (cam->size) {
+ case PICMAX:
+ cam->width = cam->max_width;
+ cam->height = cam->max_height;
+ break;
+
+ case PICMIN:
+ cam->width = cam->min_width;
+ cam->height = cam->min_height;
+ break;
+
+ case PICHALF:
+ cam->width = cam->max_width / 2;
+ cam->height = cam->max_height / 2;
+ break;
+
+ default:
+ cam->width = cam->max_width / 2;
+ cam->height = cam->max_height / 2;
+ break;
+ }
+ }
+
+ if (!(vid_cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) {
+ if (cam->debug == TRUE) {
+ fprintf(stderr,
+ "VIDIOC_QUERYCAP -- it is not a capture device, exiting.....\n");
+ }
+ msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."),
+ cam->video_dev);
+ error_dialog(msg);
+ g_free(msg);
+ exit(0);
+ }
+
+ if (!(vid_cap.capabilities & V4L2_CAP_STREAMING))
+ cam->read = TRUE;
+
+ strncpy(cam->name, (const char *)vid_cap.card, sizeof(cam->name));
+ cam->name[sizeof(cam->name) - 1] = '\0';
+
+ if (cam->debug == TRUE) {
+ printf("\nVIDIOC_QUERYCAP\n");
+ printf("device name = %s\n", vid_cap.card);
+ printf("device caps = 0x%08x\n", vid_cap.capabilities);
+ printf("max width = %d\n", cam->max_width);
+ printf("max height = %d\n", cam->max_height);
+ printf("min width = %d\n", cam->min_width);
+ printf("min height = %d\n", cam->min_height);
+ }
}
-void get_pic_info(cam * cam){
- int i;
-
- if(cam->debug == TRUE)
- printf("\nVideo control settings:\n");
-
- i = v4l2_get_control(cam->dev, V4L2_CID_HUE);
- if (i >= 0) {
- cam->hue = i;
- if(cam->debug == TRUE)
- printf("hue = %d\n", cam->hue);
- } else {
- cam->hue = -1;
- }
- i = v4l2_get_control(cam->dev, V4L2_CID_SATURATION);
- if (i >= 0) {
- cam->colour = i;
- if(cam->debug == TRUE)
- printf("colour = %d\n", cam->colour);
- } else {
- cam->colour = -1;
- }
- i = v4l2_get_control(cam->dev, V4L2_CID_CONTRAST);
- if (i >= 0) {
- cam->contrast = i;
- if(cam->debug == TRUE)
- printf("contrast = %d\n", cam->contrast);
- } else {
- cam->contrast = -1;
- }
- i = v4l2_get_control(cam->dev, V4L2_CID_WHITENESS);
- if (i >= 0) {
- cam->whiteness = i;
- if(cam->debug == TRUE)
- printf("whiteness = %d\n", cam->whiteness);
- } else {
- cam->whiteness = -1;
- }
- i = v4l2_get_control(cam->dev, V4L2_CID_BRIGHTNESS);
- if (i >= 0) {
- cam->brightness = i;
- if(cam->debug == TRUE)
- printf("brightness = %d\n", cam->brightness);
- } else {
- cam->brightness = -1;
- }
+void get_pic_info(cam_t *cam)
+{
+ int i;
+
+ if (cam->debug == TRUE)
+ printf("\nVideo control settings:\n");
+
+ i = v4l2_get_control(cam->dev, V4L2_CID_HUE);
+ if (i >= 0) {
+ cam->hue = i;
+ if (cam->debug == TRUE)
+ printf("hue = %d\n", cam->hue);
+ } else {
+ cam->hue = -1;
+ }
+ i = v4l2_get_control(cam->dev, V4L2_CID_SATURATION);
+ if (i >= 0) {
+ cam->colour = i;
+ if (cam->debug == TRUE)
+ printf("colour = %d\n", cam->colour);
+ } else {
+ cam->colour = -1;
+ }
+ i = v4l2_get_control(cam->dev, V4L2_CID_CONTRAST);
+ if (i >= 0) {
+ cam->contrast = i;
+ if (cam->debug == TRUE)
+ printf("contrast = %d\n", cam->contrast);
+ } else {
+ cam->contrast = -1;
+ }
+ i = v4l2_get_control(cam->dev, V4L2_CID_WHITENESS);
+ if (i >= 0) {
+ cam->whiteness = i;
+ if (cam->debug == TRUE)
+ printf("whiteness = %d\n", cam->whiteness);
+ } else {
+ cam->whiteness = -1;
+ }
+ i = v4l2_get_control(cam->dev, V4L2_CID_BRIGHTNESS);
+ if (i >= 0) {
+ cam->brightness = i;
+ if (cam->debug == TRUE)
+ printf("brightness = %d\n", cam->brightness);
+ } else {
+ cam->brightness = -1;
+ }
}
-void get_win_info(cam * cam)
+void get_win_info(cam_t *cam)
{
- gchar *msg;
- struct v4l2_format fmt = { 0 };
-
- fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-
- if (v4l2_ioctl(cam->dev, VIDIOC_G_FMT, &fmt)) {
- msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."), cam->video_dev);
- error_dialog(msg);
- if(cam->debug == TRUE) {
- g_message("VIDIOC_G_FMT -- could not get picture info");
- }
- return;
- }
-
- if(cam->debug == TRUE) {
- printf("\nVIDIOC_G_FMT\n");
- printf("format FOURCC: '%c%c%c%c' (%08x)\n",
- fmt.fmt.pix.pixelformat & 0xff,
- (fmt.fmt.pix.pixelformat >> 8) & 0xff,
- (fmt.fmt.pix.pixelformat >> 16) & 0xff,
- fmt.fmt.pix.pixelformat >> 24,
- fmt.fmt.pix.pixelformat);
- printf("x = %d\n", fmt.fmt.pix.width);
- printf("y = %d\n", fmt.fmt.pix.height);
- if (fmt.fmt.pix.bytesperline)
- printf("bytes/line = %d\n", fmt.fmt.pix.bytesperline);
- }
-
- if (!fmt.fmt.pix.bytesperline) {
- if (fmt.fmt.pix.pixelformat == V4L2_PIX_FMT_YUV420)
- fmt.fmt.pix.bytesperline = fmt.fmt.pix.width * 2;
- else
- fmt.fmt.pix.bytesperline = fmt.fmt.pix.width * 3;
- }
-
- if (fmt.fmt.pix.pixelformat == V4L2_PIX_FMT_BGR24 ||
- fmt.fmt.pix.pixelformat == V4L2_PIX_FMT_YUV420) {
-
- cam->pixformat = fmt.fmt.pix.pixelformat;
- cam->bpp = ((fmt.fmt.pix.bytesperline << 3) + (fmt.fmt.pix.width - 1)) / fmt.fmt.pix.width;
- cam->width = fmt.fmt.pix.width;
- cam->height = fmt.fmt.pix.height;
- cam->bytesperline = fmt.fmt.pix.bytesperline;
- }
+ gchar *msg;
+ struct v4l2_format fmt = { 0 };
+
+ fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+
+ if (v4l2_ioctl(cam->dev, VIDIOC_G_FMT, &fmt)) {
+ msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."),
+ cam->video_dev);
+ error_dialog(msg);
+ if (cam->debug == TRUE)
+ g_message("VIDIOC_G_FMT -- could not get picture info");
+
+ return;
+ }
+
+ if (cam->debug == TRUE) {
+ printf("\nVIDIOC_G_FMT\n");
+ printf("format FOURCC: '%c%c%c%c' (%08x)\n",
+ fmt.fmt.pix.pixelformat & 0xff,
+ (fmt.fmt.pix.pixelformat >> 8) & 0xff,
+ (fmt.fmt.pix.pixelformat >> 16) & 0xff,
+ fmt.fmt.pix.pixelformat >> 24,
+ fmt.fmt.pix.pixelformat);
+ printf("x = %d\n", fmt.fmt.pix.width);
+ printf("y = %d\n", fmt.fmt.pix.height);
+ if (fmt.fmt.pix.bytesperline)
+ printf("bytes/line = %d\n", fmt.fmt.pix.bytesperline);
+ }
+
+ if (!fmt.fmt.pix.bytesperline) {
+ if (fmt.fmt.pix.pixelformat == V4L2_PIX_FMT_YUV420)
+ fmt.fmt.pix.bytesperline = fmt.fmt.pix.width * 2;
+ else
+ fmt.fmt.pix.bytesperline = fmt.fmt.pix.width * 3;
+ }
+
+ if (fmt.fmt.pix.pixelformat == V4L2_PIX_FMT_BGR24 ||
+ fmt.fmt.pix.pixelformat == V4L2_PIX_FMT_YUV420) {
+
+ cam->pixformat = fmt.fmt.pix.pixelformat;
+ cam->bpp = ((fmt.fmt.pix.bytesperline << 3) + (fmt.fmt.pix.width - 1)) / fmt.fmt.pix.width;
+ cam->width = fmt.fmt.pix.width;
+ cam->height = fmt.fmt.pix.height;
+ cam->bytesperline = fmt.fmt.pix.bytesperline;
+ }
}
-void try_set_win_info(cam * cam, int *x, int *y)
+void try_set_win_info(cam_t *cam, unsigned int *x, unsigned int *y)
{
- struct v4l2_format fmt;
-
- memset(&fmt, 0, sizeof(fmt));
- fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- fmt.fmt.pix.pixelformat = cam->pixformat;
- fmt.fmt.pix.width = *x;
- fmt.fmt.pix.height = *y;
- if (!v4l2_ioctl(cam->dev, VIDIOC_TRY_FMT, &fmt)) {
- *x = fmt.fmt.pix.width;
- *y = fmt.fmt.pix.height;
- }
+ struct v4l2_format fmt;
+
+ memset(&fmt, 0, sizeof(fmt));
+ fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ fmt.fmt.pix.pixelformat = cam->pixformat;
+ fmt.fmt.pix.width = *x;
+ fmt.fmt.pix.height = *y;
+ if (!v4l2_ioctl(cam->dev, VIDIOC_TRY_FMT, &fmt)) {
+ *x = fmt.fmt.pix.width;
+ *y = fmt.fmt.pix.height;
+ }
}
-void set_win_info(cam * cam)
+void set_win_info(cam_t *cam)
{
- gchar *msg;
- struct v4l2_format fmt;
-
- memset(&fmt, 0, sizeof(fmt));
- fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-
- /* Get current settings, apply our changes and try the new setting */
- if (v4l2_ioctl(cam->dev, VIDIOC_G_FMT, &fmt)) {
- if(cam->debug) {
- g_message("VIDIOC_G_FMT -- could not get window info, exiting....");
- }
- msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."), cam->video_dev);
- error_dialog(msg);
- g_free(msg);
- exit(0);
- }
-
- if (fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_BGR24 &&
- fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_YUV420)
- cam->pixformat = V4L2_PIX_FMT_BGR24;
-
- fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- fmt.fmt.pix.pixelformat = cam->pixformat;
- fmt.fmt.pix.width = cam->width;
- fmt.fmt.pix.height = cam->height;
- if (v4l2_ioctl(cam->dev, VIDIOC_S_FMT, &fmt)) {
- if(cam->debug) {
- g_message("VIDIOC_S_FMT -- could not set window info, exiting....");
- }
- msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."), cam->video_dev);
- error_dialog(msg);
- g_free(msg);
- exit(0);
- }
-
- /* Check if returned format is valid */
- if (fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_BGR24 &&
- fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_YUV420) {
- if(cam->debug) {
- g_message("VIDIOC_S_FMT -- could not set format to %c%c%c%c (was set to %c%c%c%c instead), exiting....",
- cam->pixformat & 0xff,
- (cam->pixformat >> 8) & 0xff,
- (cam->pixformat >> 16) & 0xff,
- cam->pixformat >> 24,
- fmt.fmt.pix.pixelformat & 0xff,
- (fmt.fmt.pix.pixelformat >> 8) & 0xff,
- (fmt.fmt.pix.pixelformat >> 16) & 0xff,
- fmt.fmt.pix.pixelformat >> 24);
- }
- msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."), cam->video_dev);
- error_dialog(msg);
- g_free(msg);
- exit(0);
- }
-
- /* Resolution may have changed. Store the retrieved one */
- cam->pixformat = fmt.fmt.pix.pixelformat;
- cam->bytesperline = fmt.fmt.pix.bytesperline;
-
- cam->bpp = ((fmt.fmt.pix.bytesperline << 3) + (fmt.fmt.pix.width - 1)) / fmt.fmt.pix.width;
-
- cam->width = fmt.fmt.pix.width;
- cam->height = fmt.fmt.pix.height;
+ gchar *msg;
+ struct v4l2_format fmt;
+
+ memset(&fmt, 0, sizeof(fmt));
+ fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+
+ /* Get current settings, apply our changes and try the new setting */
+ if (v4l2_ioctl(cam->dev, VIDIOC_G_FMT, &fmt)) {
+ if (cam->debug) {
+ g_message("VIDIOC_G_FMT -- could not get window info, exiting....");
+ }
+ msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."),
+ cam->video_dev);
+ error_dialog(msg);
+ g_free(msg);
+ exit(0);
+ }
+
+ if (fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_BGR24 &&
+ fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_YUV420)
+ cam->pixformat = V4L2_PIX_FMT_BGR24;
+
+ fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ fmt.fmt.pix.pixelformat = cam->pixformat;
+ fmt.fmt.pix.width = cam->width;
+ fmt.fmt.pix.height = cam->height;
+ if (v4l2_ioctl(cam->dev, VIDIOC_S_FMT, &fmt)) {
+ if (cam->debug)
+ g_message("VIDIOC_S_FMT -- could not set window info, exiting....");
+
+ msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."),
+ cam->video_dev);
+ error_dialog(msg);
+ g_free(msg);
+ exit(0);
+ }
+
+ /* Check if returned format is valid */
+ if (fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_BGR24 &&
+ fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_YUV420) {
+ if (cam->debug) {
+ g_message("VIDIOC_S_FMT -- could not set format to %c%c%c%c (was set to %c%c%c%c instead), exiting....",
+ cam->pixformat & 0xff,
+ (cam->pixformat >> 8) & 0xff,
+ (cam->pixformat >> 16) & 0xff,
+ cam->pixformat >> 24,
+ fmt.fmt.pix.pixelformat & 0xff,
+ (fmt.fmt.pix.pixelformat >> 8) & 0xff,
+ (fmt.fmt.pix.pixelformat >> 16) & 0xff,
+ fmt.fmt.pix.pixelformat >> 24);
+ }
+ msg = g_strdup_printf(_("Could not connect to video device (%s).\nPlease check connection."),
+ cam->video_dev);
+ error_dialog(msg);
+ g_free(msg);
+ exit(0);
+ }
+
+ /* Resolution may have changed. Store the retrieved one */
+ cam->pixformat = fmt.fmt.pix.pixelformat;
+ cam->bytesperline = fmt.fmt.pix.bytesperline;
+
+ cam->bpp = ((fmt.fmt.pix.bytesperline << 3) + (fmt.fmt.pix.width - 1)) / fmt.fmt.pix.width;
+
+ cam->width = fmt.fmt.pix.width;
+ cam->height = fmt.fmt.pix.height;
}
-void start_streaming(cam * cam)
+void start_streaming(cam_t *cam)
{
- char *msg;
- unsigned int i;
- enum v4l2_buf_type type;
- struct v4l2_buffer buf;
-
- memset(&cam->req, 0, sizeof(cam->req));
- cam->req.count = 2;
- cam->req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- cam->req.memory = V4L2_MEMORY_MMAP;
- if (v4l2_ioctl(cam->dev, VIDIOC_REQBUFS, &cam->req)) {
- msg = g_strdup_printf(_("VIDIOC_REQBUFS -- could not request buffers (%s), exiting...."), cam->video_dev);
- error_dialog(msg);
- g_free(msg);
- exit(0);
- }
-
- cam->buffers = calloc(cam->req.count, sizeof(*cam->buffers));
- for (cam->n_buffers = 0; cam->n_buffers < cam->req.count; ++cam->n_buffers) {
- memset(&buf, 0, sizeof(buf));
-
- buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- buf.memory = V4L2_MEMORY_MMAP;
- buf.index = cam->n_buffers;
-
- if (v4l2_ioctl(cam->dev, VIDIOC_QUERYBUF, &buf)) {
- msg = g_strdup_printf(_("VIDIOC_QUERYBUF -- could not query buffers (%s), exiting...."), cam->video_dev);
- error_dialog(msg);
- g_free(msg);
- exit(0);
- }
-
- cam->buffers[cam->n_buffers].length = buf.length;
- cam->buffers[cam->n_buffers].start = v4l2_mmap(NULL, buf.length,
- PROT_READ | PROT_WRITE,
- MAP_SHARED,
- cam->dev, buf.m.offset);
-
- if (MAP_FAILED == cam->buffers[cam->n_buffers].start) {
- msg = g_strdup_printf(_("failed to memory map buffers (%s), exiting...."), cam->video_dev);
- error_dialog(msg);
- g_free(msg);
- exit(0);
- }
- }
-
- for (i = 0; i < cam->n_buffers; ++i) {
- memset(&buf, 0, sizeof(buf));
- buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- buf.memory = V4L2_MEMORY_MMAP;
- buf.index = i;
- if (v4l2_ioctl(cam->dev, VIDIOC_QBUF, &buf)) {
- msg = g_strdup_printf(_("VIDIOC_QBUF -- could not enqueue buffers (%s), exiting...."), cam->video_dev);
- error_dialog(msg);
- g_free(msg);
- exit(0);
- }
- }
- type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-
- if (v4l2_ioctl(cam->dev, VIDIOC_STREAMON, &type)) {
- msg = g_strdup_printf(_("failed to start streaming (%s), exiting...."), cam->video_dev);
- error_dialog(msg);
- g_free(msg);
- exit(0);
- }
+ char *msg;
+ unsigned int i;
+ enum v4l2_buf_type type;
+ struct v4l2_buffer buf;
+
+ memset(&cam->req, 0, sizeof(cam->req));
+ cam->req.count = 2;
+ cam->req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ cam->req.memory = V4L2_MEMORY_MMAP;
+ if (v4l2_ioctl(cam->dev, VIDIOC_REQBUFS, &cam->req)) {
+ msg = g_strdup_printf(_("VIDIOC_REQBUFS -- could not request buffers (%s), exiting...."),
+ cam->video_dev);
+ error_dialog(msg);
+ g_free(msg);
+ exit(0);
+ }
+
+ cam->buffers = calloc(cam->req.count, sizeof(*cam->buffers));
+ for (cam->n_buffers = 0;
+ cam->n_buffers < cam->req.count;
+ ++cam->n_buffers) {
+ memset(&buf, 0, sizeof(buf));
+
+ buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ buf.memory = V4L2_MEMORY_MMAP;
+ buf.index = cam->n_buffers;
+
+ if (v4l2_ioctl(cam->dev, VIDIOC_QUERYBUF, &buf)) {
+ msg = g_strdup_printf(_("VIDIOC_QUERYBUF -- could not query buffers (%s), exiting...."),
+ cam->video_dev);
+ error_dialog(msg);
+ g_free(msg);
+ exit(0);
+ }
+
+ cam->buffers[cam->n_buffers].length = buf.length;
+ cam->buffers[cam->n_buffers].start = v4l2_mmap(NULL, buf.length,
+ PROT_READ | PROT_WRITE,
+ MAP_SHARED,
+ cam->dev,
+ buf.m.offset);
+
+ if (cam->buffers[cam->n_buffers].start == MAP_FAILED) {
+ msg = g_strdup_printf(_("failed to memory map buffers (%s), exiting...."),
+ cam->video_dev);
+ error_dialog(msg);
+ g_free(msg);
+ exit(0);
+ }
+ }
+
+ for (i = 0; i < cam->n_buffers; ++i) {
+ memset(&buf, 0, sizeof(buf));
+ buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ buf.memory = V4L2_MEMORY_MMAP;
+ buf.index = i;
+ if (v4l2_ioctl(cam->dev, VIDIOC_QBUF, &buf)) {
+ msg = g_strdup_printf(_("VIDIOC_QBUF -- could not enqueue buffers (%s), exiting...."),
+ cam->video_dev);
+ error_dialog(msg);
+ g_free(msg);
+ exit(0);
+ }
+ }
+ type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+
+ if (v4l2_ioctl(cam->dev, VIDIOC_STREAMON, &type)) {
+ msg = g_strdup_printf(_("failed to start streaming (%s), exiting...."),
+ cam->video_dev);
+ error_dialog(msg);
+ g_free(msg);
+ exit(0);
+ }
}
-void capture_buffers(cam * cam, unsigned char *outbuf, int len)
+void capture_buffers(cam_t *cam, unsigned char *outbuf, unsigned int len)
{
- char *msg;
- unsigned char *inbuf;
- int r, y;
- fd_set fds;
- struct v4l2_buffer buf;
- struct timeval tv;
-
- do {
- FD_ZERO(&fds);
- FD_SET(cam->dev, &fds);
-
- /* Timeout. */
- tv.tv_sec = 2;
- tv.tv_usec = 0;
-
- r = select(cam->dev + 1, &fds, NULL, NULL, &tv);
- } while ((r == -1 && (errno == EINTR)));
-
- if (r == -1) {
- msg = g_strdup_printf(_("Timeout while waiting for frames (%s)"), cam->video_dev);
- error_dialog(msg);
- g_free(msg);
- exit(0);
- }
-
- memset(&buf, 0, sizeof(buf));
- buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- buf.memory = V4L2_MEMORY_MMAP;
- v4l2_ioctl(cam->dev, VIDIOC_DQBUF, &buf);
-
- if (len > buf.bytesused)
- len = buf.bytesused;
-
- inbuf = cam->buffers[buf.index].start;
- for (y = 0; y < cam->height; y++) {
- memcpy(outbuf, inbuf, cam->width * cam->bpp / 8);
- outbuf += cam->width * cam->bpp / 8;
- inbuf += cam->bytesperline;
- }
-
- v4l2_ioctl(cam->dev, VIDIOC_QBUF, &buf);
+ char *msg;
+ unsigned char *inbuf;
+ int r;
+ unsigned int y;
+ fd_set fds;
+ struct v4l2_buffer buf;
+ struct timeval tv;
+
+ do {
+ FD_ZERO(&fds);
+ FD_SET(cam->dev, &fds);
+
+ /* Timeout. */
+ tv.tv_sec = 2;
+ tv.tv_usec = 0;
+
+ r = select(cam->dev + 1, &fds, NULL, NULL, &tv);
+ } while ((r == -1 && (errno == EINTR)));
+
+ if (r == -1) {
+ msg = g_strdup_printf(_("Timeout while waiting for frames (%s)"),
+ cam->video_dev);
+ error_dialog(msg);
+ g_free(msg);
+ exit(0);
+ }
+
+ memset(&buf, 0, sizeof(buf));
+ buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ buf.memory = V4L2_MEMORY_MMAP;
+ v4l2_ioctl(cam->dev, VIDIOC_DQBUF, &buf);
+
+ if (len > buf.bytesused)
+ len = buf.bytesused;
+
+ inbuf = cam->buffers[buf.index].start;
+ for (y = 0; y < cam->height; y++) {
+ memcpy(outbuf, inbuf, cam->width * cam->bpp / 8);
+ outbuf += cam->width * cam->bpp / 8;
+ inbuf += cam->bytesperline;
+ }
+
+ v4l2_ioctl(cam->dev, VIDIOC_QBUF, &buf);
}
-
-void stop_streaming(cam * cam)
+void stop_streaming(cam_t *cam)
{
- char *msg;
- unsigned int i;
- int r;
- enum v4l2_buf_type type;
- fd_set fds, fderrs;
- struct v4l2_buffer buf;
- struct timeval tv;
-
- /* Dequeue all pending buffers */
- for (i = 0; i < cam->n_buffers; ++i) {
- FD_ZERO(&fds);
- FD_SET(cam->dev, &fds);
- FD_ZERO(&fderrs);
- FD_SET(cam->dev, &fderrs);
-
- /* Timeout. */
- tv.tv_sec = 2;
- tv.tv_usec = 0;
-
- r = select(cam->dev + 1, &fds, NULL, &fderrs, &tv);
- if (r == -1 && errno == EINTR)
- continue;
-
- if (r != -1) {
- memset(&buf, 0, sizeof(buf));
- buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- buf.memory = V4L2_MEMORY_MMAP;
- if (v4l2_ioctl(cam->dev, VIDIOC_DQBUF, &buf))
- break;
- }
- };
-
- /* Streams off */
- type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- if (v4l2_ioctl(cam->dev, VIDIOC_STREAMOFF, &type)) {
- msg = g_strdup_printf(_("failed to stop streaming (%s), exiting...."), cam->video_dev);
- error_dialog(msg);
- g_free(msg);
- exit(0);
- }
-
- /* Unmap buffers */
- for (i = 0; i < cam->n_buffers; ++i)
- v4l2_munmap(cam->buffers[i].start, cam->buffers[i].length);
-
- /* Free existing buffers */
- memset(&cam->req, 0, sizeof(cam->req));
- cam->req.count = 0;
- cam->req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- cam->req.memory = V4L2_MEMORY_MMAP;
- v4l2_ioctl(cam->dev, VIDIOC_REQBUFS, &cam->req);
-
- free(cam->buffers);
- cam->buffers = NULL;
+ char *msg;
+ unsigned int i;
+ int r;
+ enum v4l2_buf_type type;
+ fd_set fds, fderrs;
+ struct v4l2_buffer buf;
+ struct timeval tv;
+
+ /* Dequeue all pending buffers */
+ for (i = 0; i < cam->n_buffers; ++i) {
+ FD_ZERO(&fds);
+ FD_SET(cam->dev, &fds);
+ FD_ZERO(&fderrs);
+ FD_SET(cam->dev, &fderrs);
+
+ /* Timeout. */
+ tv.tv_sec = 2;
+ tv.tv_usec = 0;
+
+ r = select(cam->dev + 1, &fds, NULL, &fderrs, &tv);
+ if (r == -1 && errno == EINTR)
+ continue;
+
+ if (r != -1) {
+ memset(&buf, 0, sizeof(buf));
+ buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ buf.memory = V4L2_MEMORY_MMAP;
+ if (v4l2_ioctl(cam->dev, VIDIOC_DQBUF, &buf))
+ break;
+ }
+ };
+
+ /* Streams off */
+ type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ if (v4l2_ioctl(cam->dev, VIDIOC_STREAMOFF, &type)) {
+ msg = g_strdup_printf(_("failed to stop streaming (%s), exiting...."),
+ cam->video_dev);
+ error_dialog(msg);
+ g_free(msg);
+ exit(0);
+ }
+
+ /* Unmap buffers */
+ for (i = 0; i < cam->n_buffers; ++i)
+ v4l2_munmap(cam->buffers[i].start, cam->buffers[i].length);
+
+ /* Free existing buffers */
+ memset(&cam->req, 0, sizeof(cam->req));
+ cam->req.count = 0;
+ cam->req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ cam->req.memory = V4L2_MEMORY_MMAP;
+ v4l2_ioctl(cam->dev, VIDIOC_REQBUFS, &cam->req);
+
+ free(cam->buffers);
+ cam->buffers = NULL;
}
diff --git a/src/v4l.h b/src/v4l.h
index 89260c6..bc81061 100644
--- a/src/v4l.h
+++ b/src/v4l.h
@@ -12,7 +12,6 @@
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <fcntl.h>
-#include <gtk/gtk.h>
#include <linux/types.h>
#include <linux/videodev2.h>
#include <libv4l2.h>
@@ -20,90 +19,95 @@
#include <png.h>
#include <gconf/gconf-client.h>
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wstrict-prototypes"
+#include <gtk/gtk.h>
+#pragma GCC diagnostic pop
+
#include "camorama-filter-chain.h"
typedef enum {
- PICMAX = 0,
- PICMIN = 1,
- PICHALF = 2
+ PICMAX = 0,
+ PICMIN = 1,
+ PICHALF = 2
} CamoImageSize;
enum {
- JPEG = 0,
- PNG = 1,
- PPM = 2
+ JPEG = 0,
+ PNG = 1,
+ PPM = 2
};
struct buffer_start_len {
- void *start;
- size_t length;
+ void *start;
+ size_t length;
};
struct resolutions {
- int x, y;
+ unsigned int x, y;
};
typedef struct camera {
- int dev;
- int width;
- int height;
- int bpp;
- int desk_depth;
- CamoImageSize size;
- char name[32];
- int contrast, brightness, whiteness, colour, hue, bytesperline;
- unsigned int pixformat;
- int frame_number;
-
- int min_width, min_height, max_width, max_height;
-
- int n_res;
- struct resolutions *res;
-
- char *video_dev;
- unsigned char *image;
- gchar *capturefile, *rcapturefile;
- gchar *pixdir, *host, *proto, *rdir, *uri;
- int savetype, rsavetype;
- gchar *ts_string;
- gchar *date_format;
- gboolean debug, read, hidden;
- gboolean cap, rcap, acap, show_adjustments, show_effects;
- gboolean timestamp, rtimestamp, usedate, usestring;
- gboolean rtimefn, timefn;
- GtkWidget *da, *tray_tooltip, *status;
- unsigned char *pic_buf, *tmp;
- guint timeout_id, idle_id;
- guint32 timeout_interval;
- GConfClient *gc;
- GtkBuilder *xml;
- GtkStatusIcon *tray_icon;
-
- CamoramaFilterChain* filter_chain;
-
- gboolean rdir_ok;
- GFile *rdir_file;
- GMountOperation *rdir_mop;
-
- /* Buffer handling - should be used only inside v4l.c */
- struct v4l2_requestbuffers req;
- unsigned int n_buffers;
- struct {
- void *start;
- size_t length;
- } *buffers;
-} cam;
-
-void camera_cap (cam *);
-void print_cam (cam *);
-void try_set_win_info(cam * cam, int *x, int *y);
-void set_win_info (cam * cam);
-void get_pic_info (cam *);
-void get_win_info (cam *);
-void get_supported_resolutions(cam * cam);
-void start_streaming(cam * cam);
-void capture_buffers(cam * cam, unsigned char *outbuf, int len);
-void stop_streaming(cam * cam);
-
-#endif /* !CAMORAMA_V4L_H */
-
+ int dev;
+ unsigned int width, height;
+ unsigned int screen_width, screen_height;
+ int bpp;
+ float scale;
+ CamoImageSize size;
+ char name[32];
+ int contrast, brightness, whiteness, colour, hue, bytesperline;
+ unsigned int pixformat;
+ int frame_number;
+
+ unsigned int min_width, min_height, max_width, max_height;
+
+ unsigned int n_res;
+ struct resolutions *res;
+
+ char *video_dev;
+ unsigned char *image;
+ gchar *capturefile, *rcapturefile;
+ gchar *pixdir, *host, *proto, *rdir, *uri;
+ int savetype, rsavetype;
+ gchar *ts_string;
+ gchar *date_format;
+ gboolean debug, read, hidden;
+ gboolean cap, rcap, acap, show_adjustments, show_effects;
+ gboolean timestamp, rtimestamp, usedate, usestring;
+ gboolean rtimefn, timefn;
+ GtkWidget *da, *tray_tooltip, *status;
+ unsigned char *pic_buf, *tmp;
+ guint timeout_id, idle_id;
+ guint32 timeout_interval;
+ GConfClient *gc;
+ GtkBuilder *xml;
+ GdkPixbuf *pb;
+ GtkStatusIcon *tray_icon;
+
+ CamoramaFilterChain *filter_chain;
+
+ gboolean rdir_ok;
+ GFile *rdir_file;
+ GMountOperation *rdir_mop;
+
+ /* Buffer handling - should be used only inside v4l.c */
+ struct v4l2_requestbuffers req;
+ unsigned int n_buffers;
+ struct {
+ void *start;
+ size_t length;
+ } *buffers;
+} cam_t;
+
+void camera_cap(cam_t *);
+void print_cam(cam_t *);
+void try_set_win_info(cam_t *cam, unsigned int *x, unsigned int *y);
+void set_win_info(cam_t *cam);
+void get_pic_info(cam_t *);
+void get_win_info(cam_t *);
+void get_supported_resolutions(cam_t *cam);
+void start_streaming(cam_t *cam);
+void capture_buffers(cam_t *cam, unsigned char *outbuf, unsigned int len);
+void stop_streaming(cam_t *cam);
+
+#endif /* !CAMORAMA_V4L_H */

Privacy Policy