summaryrefslogtreecommitdiffstats
path: root/lib/libcqrlogo.h
diff options
context:
space:
mode:
authorGravatar Christian Hesse <mail@eworm.de>2014-02-25 12:12:30 +0100
committerGravatar Christian Hesse <mail@eworm.de>2014-02-25 12:12:30 +0100
commitf5f01f3ff143edd87b7e36f1b3540cbc5d42c51f (patch)
tree5c2b6f5dbbb342ccc5ba770fd4bb4f73c151c246 /lib/libcqrlogo.h
parent0f32341ead4f1534270a82c4372d84a1aaa9b0cd (diff)
downloadcqrlogo-f5f01f3ff143edd87b7e36f1b3540cbc5d42c51f.tar.gz
cqrlogo-f5f01f3ff143edd87b7e36f1b3540cbc5d42c51f.tar.zst
build a shared library and rework parts of the code
Diffstat (limited to 'lib/libcqrlogo.h')
-rw-r--r--lib/libcqrlogo.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/lib/libcqrlogo.h b/lib/libcqrlogo.h
new file mode 100644
index 0000000..8ce04f2
--- /dev/null
+++ b/lib/libcqrlogo.h
@@ -0,0 +1,84 @@
+/*
+ * (C) 2013-2014 by Christian Hesse <mail@eworm.de>
+ *
+ * This software may be used and distributed according to the terms
+ * of the GNU General Public License, incorporated herein by reference.
+ */
+
+#ifndef _LIBCQRLOGO_H
+#define _LIBCQRLOGO_H
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <inttypes.h>
+#include <stdbool.h>
+
+#include <png.h>
+#include <zlib.h>
+#include <qrencode.h>
+#include <iniparser.h>
+
+/* a bitmap */
+struct bitmap_t {
+ unsigned int width;
+ unsigned int height;
+ uint8_t *pixel;
+};
+
+/* finished PNG image */
+struct png_t {
+ unsigned char * buffer;
+ size_t size;
+};
+
+/* config */
+struct cqrconf_t {
+ uint8_t scale;
+ uint8_t border;
+ uint8_t level;
+ bool overwrite;
+};
+
+#define CQR_COMMENT 0x1
+#define CQR_REFERER 0x2
+#define CQR_VERSION 0x4
+#define CQR_LIBVERSION 0x8
+
+#define VERSIONSTR VERSION " (" __DATE__ ", " __TIME__ ")"
+#define LIBSSTR "libqrencode %s, libpng %s, zlib %s"
+
+/*** png_write_stdout ***/
+void png_write_fn(png_structp png_ptr, png_bytep data, png_size_t length);
+
+#if defined PNG_TEXT_SUPPORTED
+/*** add_png_text ***/
+png_text * add_png_text(png_text *pngtext, unsigned int *textcount, char *key, char *text);
+#endif
+
+/*** generate_png ***/
+struct png_t * generate_png (struct bitmap_t *bitmap, const uint8_t meta, const char *uri);
+
+/*** bitmap_new ***/
+struct bitmap_t * bitmap_new(int width, int height);
+/*** bitmap_free ***/
+void bitmap_free(struct bitmap_t * bitmap);
+
+/*** encode_qrcode ***/
+struct bitmap_t * encode_qrcode (const char *text, const struct cqrconf_t);
+
+/*** get_query_value ***/
+unsigned int get_query_value(const char *query_string, const char *pattern,
+ unsigned int value, unsigned int min, unsigned int max);
+/*** get_ini_value ***/
+unsigned int get_ini_value(dictionary * ini, uint8_t type, const char * section, const char * parameter,
+ unsigned int value, unsigned int min, unsigned int max);
+
+/*** cqrconf_file ***/
+void cqrconf_file(const char * server_name, struct cqrconf_t * cqrconf);
+/*** cqrconf_string ***/
+void cqrconf_string(const char * query_string, struct cqrconf_t * cqrconf);
+
+#endif /* _LIBCQRLOGO_H */
+
+// vim: set syntax=c: