summaryrefslogtreecommitdiffstats
path: root/friendfinder
diff options
context:
space:
mode:
authorPatrick Hornecker2010-01-25 14:57:42 +0100
committerPatrick Hornecker2010-01-25 14:57:42 +0100
commit432e2114767540dc9d3d005be43f6efddbd579e3 (patch)
treefd28b6b422ce21d0da1d1e72b40edf35986964a9 /friendfinder
parentfew barcode improvements (diff)
downloadfriendfinder-432e2114767540dc9d3d005be43f6efddbd579e3.tar.gz
friendfinder-432e2114767540dc9d3d005be43f6efddbd579e3.tar.xz
friendfinder-432e2114767540dc9d3d005be43f6efddbd579e3.zip
tex sources
Diffstat (limited to 'friendfinder')
-rw-r--r--friendfinder/Makefile.inc2
-rw-r--r--friendfinder/barcode.c62
-rw-r--r--friendfinder/gui.c41
3 files changed, 56 insertions, 49 deletions
diff --git a/friendfinder/Makefile.inc b/friendfinder/Makefile.inc
index 08585be..41494e8 100644
--- a/friendfinder/Makefile.inc
+++ b/friendfinder/Makefile.inc
@@ -4,7 +4,7 @@
CFLAGS = -g -Wall -std=c99
INCLUDES = -I../include
-LIBS = -ledje -lecore -levas -lelementary -lircclient -lcrypto -lproj -lpthread -lqrencode -lImlib2
+LIBS = -ledje -lecore -levas -lelementary -lircclient -lcrypto -lproj -lpthread -ldmtx -lImlib2
###########
diff --git a/friendfinder/barcode.c b/friendfinder/barcode.c
index 50627e5..25866e0 100644
--- a/friendfinder/barcode.c
+++ b/friendfinder/barcode.c
@@ -1,63 +1,39 @@
#include <stdio.h>
-#include <assert.h>
#include <string.h>
#include <stdlib.h>
-#include "qrencode.h"
+#include "dmtx.h"
#include "Imlib2.h"
#include "barcode.h"
-/*
-Imlib2 doku:
- http://docs.enlightenment.org/api/imlib2/html/
-unter imlib2-1.2.2/src/bin bsp'le durchsehen
-*/
void generate_barcode(char* key)
{
- QRcode *code;
+ size_t width, height, bytesPerPixel;
+ unsigned char *pxl;
+ DmtxEncode *enc;
- code = QRcode_encodeString(key, 0, QR_ECLEVEL_M, QR_MODE_8, 0);
+ enc = dmtxEncodeCreate();
+ if (enc != NULL);
+ dmtxEncodeDataMatrix(enc, strlen(key), key);
- /* create image */
- create_img(code);
+ width = dmtxImageGetProp(enc->image, DmtxPropWidth);
+ height = dmtxImageGetProp(enc->image, DmtxPropHeight);
+ bytesPerPixel = dmtxImageGetProp(enc->image, DmtxPropBytesPerPixel);
- //QRcode_free(&code);
-}
-
-//TODO: create picture
-void create_img(QRcode *code)
-{
- printf("create_img 1 \n");
- Imlib_Image img;
- int width = code->width;
-
- img = imlib_create_image_using_data(width, width, code->data);
+ pxl = (unsigned char *)malloc(width * height * bytesPerPixel);
- if (img == NULL)
- {
- printf("Barcode creation failed \n");
- return;
- }
- else
- {
- //set img to current context
- imlib_context_set_image(img);
-
- //disable usage of filters
- imlib_context_set_filter(NULL);
+ if(pxl != NULL);
+ memcpy(pxl, enc->image->pxl, width * height * bytesPerPixel);
- //set color of the context....everything is printed in this color
- //black
- imlib_context_set_color(255, 255, 255, 0);
-
- imlib_image_set_format("png");
+ dmtxImageSetProp(enc->image, DmtxPropImageFlip, DmtxFlipNone);
+
+ write_img(enc);
+}
- imlib_save_image("barcode");
- printf("Image written \n");
+void write_img(DmtxEncode* enc)
+{
- imlib_free_image_and_decache();
- }
}
diff --git a/friendfinder/gui.c b/friendfinder/gui.c
index 0227033..3c14291 100644
--- a/friendfinder/gui.c
+++ b/friendfinder/gui.c
@@ -25,7 +25,7 @@ int enable_chat = 0;
double current_lat = 47.996578;
double current_lon = 7.840171;
-const char *msg_text, *ip = NULL, *nickname = NULL, *partner_nickname = NULL;
+const char *msg_text, *key, *ip = NULL, *nickname = NULL, *partner_nickname = NULL;
char *from = NULL, *to = NULL, *current_msg, *last_msg;
static Evas_Object *win, *bbx, *map;
@@ -102,6 +102,29 @@ static void set_partner_nickname(void *data, Evas_Object *obj, void *event_info)
}
}
+static void create_barcode(void *data, Evas_Object *obj, void *event_info)
+{
+ if (key != NULL && strlen(key) > 0)
+ {
+ generate_barcode(key);
+ }
+ else return;
+
+ Evas_Object *img = elm_image_add(win);
+ printf("%i \n",elm_image_file_set(img, "barcode.png", ""));
+ evas_object_size_hint_weight_set(img, 1.0, 1.0);
+ evas_object_size_hint_align_set(img, -1.0, -1.0);
+ evas_object_resize(img, w*0.5, h*0.5);
+ elm_box_pack_end((Evas_Object*)data, img);
+ evas_object_show(img);
+
+}
+
+static void on_keyenter(void *data, Evas_Object *obj, void *event_info)
+{
+ key = elm_entry_entry_get(obj);
+}
+
static void on_chat(void *data, Evas_Object *obj, void *event_info)
{
enable_chat = 1;
@@ -372,7 +395,7 @@ void init_toolbar()
void init_barcode()
{
- Evas_Object *bg, *bx1, *bx2, *bx3, *lb1, *sc, *en, *bt;
+ Evas_Object *bg, *bx1, *bx2, *bx3, *bx4, *lb1, *sc, *en, *bt, *img;
bg = elm_bg_add(win);
@@ -409,7 +432,7 @@ void init_barcode()
evas_object_size_hint_weight_set(en, 1.0, 1.0);
evas_object_size_hint_align_set(en, 0.0, 0.0);
elm_scroller_content_set(sc, en);
- evas_object_smart_callback_add(en, "changed", NULL, NULL);
+ evas_object_smart_callback_add(en, "changed", on_keyenter, NULL);
evas_object_show(en);
evas_object_show(sc);
@@ -422,13 +445,21 @@ void init_barcode()
evas_object_move(bx3, w*0.1, h*0.83);
evas_object_show(bx3);
+ bx4 = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx4, 1.0, 1.0);
+ evas_object_size_hint_align_set(bx4, -1.0, -1.0);
+ evas_object_resize(bx4, w*0.6, h*0.6);
+ evas_object_move(bx4, w*0.2, h*0.15);
+ evas_object_show(bx4);
+
+
bt = elm_button_add(win);
elm_button_label_set(bt, "Generate barcode");
evas_object_size_hint_weight_set(bt, 1.0, 1.0);
evas_object_size_hint_align_set(bt, -1.0, -1.0);
evas_object_resize(bt, w*0.9, h*0.1);
elm_box_pack_end(bx3, bt);
- evas_object_smart_callback_add(bt, "clicked", NULL, NULL);
+ evas_object_smart_callback_add(bt, "clicked", create_barcode, bx4);
evas_object_show(bt);
}
@@ -700,7 +731,7 @@ void elm_main ()
{
/* new window - do the usual and give it a name, title and delete handler */
win = elm_win_add(NULL, "Main", ELM_WIN_BASIC);
- elm_win_title_set(win, "Main");
+ elm_win_title_set(win, "Friend Finder");
evas_object_smart_callback_add(win, "delete,request", on_cancel, NULL);
/* resize window */