From 0585c78a6edc9b1fcc7c1bbbd66097d5a50016f7 Mon Sep 17 00:00:00 2001 From: Sebastian Reichel Date: Sun, 8 Mar 2015 15:54:09 +0100 Subject: libcairobarcode: build libcairobarcode.so --- libcairobarcode/.gitignore | 5 +++-- libcairobarcode/Makefile | 11 ++++------ libcairobarcode/ean.vala | 36 ++++++++++++------------------- libcairobarcode/test.vala | 53 ---------------------------------------------- 4 files changed, 21 insertions(+), 84 deletions(-) delete mode 100644 libcairobarcode/test.vala (limited to 'libcairobarcode') diff --git a/libcairobarcode/.gitignore b/libcairobarcode/.gitignore index c0503b2..8721023 100644 --- a/libcairobarcode/.gitignore +++ b/libcairobarcode/.gitignore @@ -1,2 +1,3 @@ -test -test.svg +libcairobarcode.h +libcairobarcode.so +libcairobarcode.vapi diff --git a/libcairobarcode/Makefile b/libcairobarcode/Makefile index b47d3b3..b51cf30 100644 --- a/libcairobarcode/Makefile +++ b/libcairobarcode/Makefile @@ -1,14 +1,11 @@ include ../config.mk -all: test +all: libcairobarcode.so -libcairobarcode.so: - #TODO - -test: test.vala ean.vala code39.vala error.vala - ${VALAC} -o $@ --pkg cairo $^ +libcairobarcode.so: ean.vala code39.vala error.vala + ${VALAC} -o $@ -H libcairobarcode.h --library libcairobarcode -X -fPIC -X -shared --pkg cairo $^ clean: - rm -f test test.svg + rm -f libcairobarcode.h libcairobarcode.so libcairobarcode.vapi .PHONY: all clean diff --git a/libcairobarcode/ean.vala b/libcairobarcode/ean.vala index d76f079..9709987 100644 --- a/libcairobarcode/ean.vala +++ b/libcairobarcode/ean.vala @@ -18,6 +18,8 @@ public class EAN { double width; double height; const double marker_length_diff = 10.0; + double basex; + double basey; static const uint8[] C = { 0x00, 0x0b, 0x0d, 0x0e, 0x13, 0x19, 0x1c, 0x15, 0x16, 0x1a }; @@ -33,7 +35,7 @@ public class EAN { this.height = height; } - private void draw_line(bool black, bool marker=false) { + private void draw_line(bool black) { double x,y; if(black) @@ -41,13 +43,8 @@ public class EAN { else ctx.set_source_rgb(1, 1, 1); - if(marker) { - ctx.rel_line_to(0,height); - ctx.rel_move_to(width,-height); - } else { - ctx.rel_line_to(0,height-marker_length_diff); - ctx.rel_move_to(width,-(height-marker_length_diff)); - } + ctx.rel_line_to(0,height); + ctx.rel_move_to(width,-height); ctx.get_current_point(out x, out y); ctx.stroke(); @@ -55,26 +52,23 @@ public class EAN { } private void draw_startstop() { - draw_line(true, true); - draw_line(false, true); - draw_line(true, true); + draw_line(true); + draw_line(false); + draw_line(true); } private void draw_middle() { - draw_line(false, true); - draw_line(true, true); - draw_line(false, true); - draw_line(true, true); - draw_line(false, true); + draw_line(false); + draw_line(true); + draw_line(false); + draw_line(true); + draw_line(false); } private void draw_number_text(uint8 number) { double x, y; ctx.get_current_point(out x, out y); ctx.set_source_rgb(0, 0, 0); - ctx.rel_move_to(2.5,height); - - ctx.show_text("%d".printf(number)); ctx.stroke(); ctx.move_to(x,y); @@ -98,8 +92,6 @@ public class EAN { width = (width * 95.0) / 102.0; uint8 LG = C[get_number(ean, 0)]; - draw_number_text(get_number(ean, 0)); - ctx.move_to(7*width,0); draw_startstop(); for(int i=1, x = 5; i<7; i++, x--) { @@ -129,7 +121,7 @@ public class EAN { public void draw(string ean) throws BarcodeError { ctx.save(); ctx.set_line_width(width); - ctx.move_to(0,0); + ctx.get_current_point(out basex, out basey); ctx.rel_move_to(0.5*width,0); for(int i=0; i - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -public static int main(string[] args) { - double width = 190.0; - double height = 40.0; - - var surface = new Cairo.SvgSurface("test.svg", width, height); - var ctx = new Cairo.Context(surface); - var ean = new EAN(ctx, width, height); - var code39 = new Code39(ctx, width, height); - - if(args.length < 3) { - stderr.printf("Usage: %s \n", args[0]); - return 1; - } - - try { - switch(args[1]) { - case "ean": - ean.draw(args[2]); - break; - case "code39": - code39.draw(args[2]); - break; - default: - stderr.printf("Usage: %s \n", args[0]); - return 1; - } - } catch (BarcodeError e) { - stderr.printf(e.message + "\n"); - } - - /* cleanup */ - code39 = null; - ean = null; - ctx = null; - surface = null; - - return 0; - } -- cgit v1.2.3