shithub: cardgen

Download patch

ref: dccbc248e1aab2ede5a98903b686f7c1fd0f54e3
parent: d31223d13cc200c30e009755992c8f13494e7b35
author: sirjofri <sirjofri@sirjofri.de>
date: Sat Feb 14 12:31:05 EST 2026

adds separate face image

--- a/cardgen.c
+++ b/cardgen.c
@@ -348,7 +348,7 @@
 Memimage *syms[4];
 
 static void
-gencard(int num, Memimage *sym, int fadd)
+gencard(int num, Memimage *sym, int fadd, Memimage *face)
 {
 	Memimage *mi;
 	int i, fd;
@@ -385,6 +385,12 @@
 		memimagestring(mi, p, memblack, ZP, memfont, label);
 	}
 	
+	if (face) {
+		p.x = (Dx(mi->r) - Dx(face->r))/2.;
+		p.y = (Dy(mi->r) - Dy(face->r))/2.;
+		memdraw(mi, rectaddpt(face->r, p), face, ZP, nil, ZP, SatopD);
+	}
+	
 	file = smprint("out/%d", num+fadd);
 	if (!file)
 		sysfatal("%r");
@@ -396,11 +402,28 @@
 	close(fd);
 }
 
+static Memimage*
+loadface(int value, int color)
+{
+	char file[512];
+	int fd;
+	Memimage *mi;
+	
+	snprint(file, sizeof file, "face/%d.%d", color, value);
+	fd = open(file, OREAD);
+	if (fd < 0)
+		return nil;
+	mi = readmemimage(fd);
+	close(fd);
+	return mi;
+}
+
 void
 main(int argc, char **argv)
 {
 	int i, j;
 	char *fontfile = getenv("cardfont");
+	Memimage *face;
 	
 	ARGBEGIN{
 	case 't':
@@ -452,7 +475,9 @@
 	
 	for (j = 0; j < 4; j++) {
 		for (i = 0; i < nelem(labels); i++) {
-			gencard(i, syms[j], j*nelem(labels));
+			face = loadface(i, j);
+			gencard(i, syms[j], j*nelem(labels), face);
+			freememimage(face);
 		}
 	}
 	exits(nil);
binary files /dev/null b/face/0.11 differ
binary files /dev/null b/face/0.12 differ
binary files /dev/null b/face/0.13 differ
binary files /dev/null b/face/0.14 differ
binary files /dev/null b/face/1.11 differ
binary files /dev/null b/face/1.12 differ
binary files /dev/null b/face/1.13 differ
binary files /dev/null b/face/1.14 differ
binary files /dev/null b/face/2.11 differ
binary files /dev/null b/face/2.12 differ
binary files /dev/null b/face/2.13 differ
binary files /dev/null b/face/2.14 differ
binary files /dev/null b/face/3.11 differ
binary files /dev/null b/face/3.12 differ
binary files /dev/null b/face/3.13 differ
binary files /dev/null b/face/3.14 differ
--- /dev/null
+++ b/face/norm.rc
@@ -1,0 +1,23 @@
+#!/bin/rc
+
+rfork en
+ramfs
+
+fn fix{
+	crop -c 255 255 255 $1 > /tmp/cropped
+	rect=`{dd -if /tmp/cropped -ibs 1 -count 48 -skip 23 -quiet 1}
+	if (! ~ $rect '0 0 '*' '*) {
+		echo fixing $1
+		offx=`{echo '-1 * ' $rect(1) | hoc}
+		offy=`{echo '-1 * ' $rect(2) | hoc}
+		crop -t $offx $offy /tmp/cropped > /tmp/translated
+		cp /tmp/translated $1
+	}
+	if not {
+		cp /tmp/cropped $1
+	}
+}
+
+for (f in *.*) {
+	! ~ $f 'norm.rc' && fix $f
+}
--