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
+}
--
⑨