summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2015-03-08 15:54:09 +0100
committerSebastian Reichel <sre@ring0.de>2015-03-08 15:55:30 +0100
commit0585c78a6edc9b1fcc7c1bbbd66097d5a50016f7 (patch)
tree9b0488fd2bd0802603da33fe51a6b7c64a165040
parentbd55b468c605f55a070698935e0ad591db9c6b4b (diff)
downloadserial-barcode-scanner-0585c78a6edc9b1fcc7c1bbbd66097d5a50016f7.tar.bz2
libcairobarcode: build libcairobarcode.so
-rw-r--r--TODO.md4
-rw-r--r--libcairobarcode/.gitignore5
-rw-r--r--libcairobarcode/Makefile11
-rw-r--r--libcairobarcode/ean.vala36
-rw-r--r--libcairobarcode/test.vala53
5 files changed, 21 insertions, 88 deletions
diff --git a/TODO.md b/TODO.md
index 16283b1..41c62fd 100644
--- a/TODO.md
+++ b/TODO.md
@@ -11,10 +11,6 @@
* drop to user rights in all daemons if started as root user
- [old code](https://github.com/ktt-ol/serial-barcode-scanner/commit/504cefec4a93a9b52fa9d25d6f353a4676485c43)
-#### libcairobarcode
- * make this a library instead of a test binary
- * cleanup code
-
### frontend
* add auto-logout
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<ean.length; i++) {
diff --git a/libcairobarcode/test.vala b/libcairobarcode/test.vala
deleted file mode 100644
index de42d80..0000000
--- a/libcairobarcode/test.vala
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Copyright 2014, Sebastian Reichel <sre@ring0.de>
- *
- * 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 <ean|code39> <message>\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 <ean|code39> <message>\n", args[0]);
- return 1;
- }
- } catch (BarcodeError e) {
- stderr.printf(e.message + "\n");
- }
-
- /* cleanup */
- code39 = null;
- ean = null;
- ctx = null;
- surface = null;
-
- return 0;
- }