From 432e2114767540dc9d3d005be43f6efddbd579e3 Mon Sep 17 00:00:00 2001 From: Patrick Hornecker Date: Mon, 25 Jan 2010 14:57:42 +0100 Subject: tex sources --- friendfinder/Makefile.inc | 2 +- friendfinder/barcode.c | 62 +++++++++++++++-------------------------------- friendfinder/gui.c | 41 +++++++++++++++++++++++++++---- 3 files changed, 56 insertions(+), 49 deletions(-) (limited to 'friendfinder') 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 -#include #include #include -#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 */ -- cgit v1.2.3-55-g7522