From 1ea285d2ddc51e59ee15a7b2f35b8a46402a8ae7 Mon Sep 17 00:00:00 2001 From: patrick Date: Thu, 21 Jan 2010 18:13:41 +0100 Subject: few barcode improvements --- friendfinder/Makefile.inc | 3 +- friendfinder/barcode.c | 83 ++++++++++++++++++++++++----------------------- friendfinder/barcode.h | 7 ++++ friendfinder/gui.c | 1 + friendfinder/read_file.c | 3 +- friendfinder/read_file.h | 1 - 6 files changed, 54 insertions(+), 44 deletions(-) (limited to 'friendfinder') diff --git a/friendfinder/Makefile.inc b/friendfinder/Makefile.inc index cf69284..08585be 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 +LIBS = -ledje -lecore -levas -lelementary -lircclient -lcrypto -lproj -lpthread -lqrencode -lImlib2 ########### @@ -18,6 +18,7 @@ OBJECTS += handler.o OBJECTS += receiver.o OBJECTS += sender.o OBJECTS += read_file.o +OBJECTS += barcode.o OBJECTS += e_smart_tile.o OBJECTS += e_smart_map.o diff --git a/friendfinder/barcode.c b/friendfinder/barcode.c index 8573f80..50627e5 100644 --- a/friendfinder/barcode.c +++ b/friendfinder/barcode.c @@ -3,60 +3,61 @@ #include #include -#include "dmtx.h" -#include "file_read.h" +#include "qrencode.h" +#include "Imlib2.h" +#include "barcode.h" -void generate_barcode(unsigned char* key) -{ /* - 1. Call dmtxEncodeCreate() - - Creates a new DmtxEncode structure and initializes the encoding pro- - cess. This function must be called before using the other encoding - functions. +Imlib2 doku: + http://docs.enlightenment.org/api/imlib2/html/ - 2. Call dmtxEncodeSetProp() [optional] +unter imlib2-1.2.2/src/bin bsp'le durchsehen +*/ +void generate_barcode(char* key) +{ + QRcode *code; - Allows you to control specific aspects of the encoding behavior. If - this function is not called, libdmtx will use the defaults set by dmtx- - EncodeCreate() above. The complementary function, dmtxEncodeGetProp(), - allows you to detect the current settings. + code = QRcode_encodeString(key, 0, QR_ECLEVEL_M, QR_MODE_8, 0); - 3. Call either dmtxEncodeDataMatrix() or dmtxEncodeDataMosaic() + /* create image */ + create_img(code); - Call one of these functions to generate an image of the desired barcode - type. Your program is responsible for dispatching the resulting output - to its destination, whether that means displaying it on a screen, writ- - ing an image file, copying it elsewhere, etc... + //QRcode_free(&code); +} - 4. Call dmtxEncodeDestroy() +//TODO: create picture +void create_img(QRcode *code) +{ + printf("create_img 1 \n"); + Imlib_Image img; + int width = code->width; - Releases memory allocated during the encoding process. -*/ - size_t width, height, bytesPerPixel; - unsigned char *pxl; - DmtxEncode *enc; - DmtxImage *img; + img = imlib_create_image_using_data(width, width, code->data); + if (img == NULL) + { + printf("Barcode creation failed \n"); + return; + } + else + { + //set img to current context + imlib_context_set_image(img); - enc = dmtxEncodeCreate(); - assert(enc != NULL); - dmtxEncodeDataMatrix(enc, strlen(key), key); + //disable usage of filters + imlib_context_set_filter(NULL); - width = dmtxImageGetProp(enc->image, DmtxPropWidth); - height = dmtxImageGetProp(enc->image, DmtxPropHeight); + //set color of the context....everything is printed in this color + //black + imlib_context_set_color(255, 255, 255, 0); - pxl = (unsigned char *)malloc(width * height * bytesPerPixel); - assert(pxl != NULL); - memcpy(pxl, enc->image->pxl, width * height * bytesPerPixel); + imlib_image_set_format("png"); - img = dmtxImageCreate(pxl, width, height, DmtxPack24bppRGB); - assert(img != NULL); - - /* write to png file */ - - dmtxEncodeDestroy(&enc); - dmtxImageDestroy(&img); + imlib_save_image("barcode"); + + printf("Image written \n"); + imlib_free_image_and_decache(); + } } diff --git a/friendfinder/barcode.h b/friendfinder/barcode.h index e69de29..ca00d68 100644 --- a/friendfinder/barcode.h +++ b/friendfinder/barcode.h @@ -0,0 +1,7 @@ +#ifndef __GUI_H_ +#define __GUI_H_ + +void generate_barcode(char* key); + +#endif + diff --git a/friendfinder/gui.c b/friendfinder/gui.c index 8eb17c3..0227033 100644 --- a/friendfinder/gui.c +++ b/friendfinder/gui.c @@ -13,6 +13,7 @@ #include "handler.h" #include "sender.h" #include "draw_user.h" +#include "barcode.h" int h= 600; int w = 450; diff --git a/friendfinder/read_file.c b/friendfinder/read_file.c index 0b423d3..cdbf684 100644 --- a/friendfinder/read_file.c +++ b/friendfinder/read_file.c @@ -1,4 +1,5 @@ -#include "stdio.h" +#include +#include char* read_key() diff --git a/friendfinder/read_file.h b/friendfinder/read_file.h index e18ea6c..a520f76 100644 --- a/friendfinder/read_file.h +++ b/friendfinder/read_file.h @@ -2,6 +2,5 @@ #define __READ_FILE_H_ char* read_key(); -void write_png(DmtxImage *img); #endif -- cgit v1.2.3-55-g7522