ref: 1793e1013312086ebf77222bf984aa184e59946e
parent: d6198959f03e4369688f0f13808f5dbad0c0c948
author: sirjofri <sirjofri@sirjofri.de>
date: Fri Feb 13 20:29:17 EST 2026
improves card generation, adds default syms
--- a/cardgen.c
+++ b/cardgen.c
@@ -12,9 +12,9 @@
int cardwid = 200;
int cardhgt = 300;
+int cardrad = 7;
int symwid = 30;
int symhgt = 30;
-int ncards = 15; /* max number */
Point symlocs[2] = { { 10, 10 },@@ -45,10 +45,10 @@
"8",
"9",
"10",
- "J",
- "Q",
- "K",
- "A",
+ "J (11)",
+ "Q (12)",
+ "K (13)",
+ "A (14)",
};
@@ -62,6 +62,8 @@
Memimage *mi;
int fcard;
int fsym;
+ Rectangle r;
+ Point p;
fcard = create("tcard", OWRITE, 0664);if (fcard < 0)
@@ -73,27 +75,41 @@
#define LN(A, B) memimageline(mi, A, B, Endsquare, Endsquare, 1, memblack, ZP, S)
#define FINISH(A) writememimage(A, mi);freememimage(mi);close(A);
- mi = allocmemimage(Rect(0, 0, cardwid, cardhgt), RGB24);
+ mi = allocmemimage(Rect(-1, -1, cardwid+1, cardhgt+1), RGBA32);
if (!mi)
sysfatal("%r");- memfillcolor(mi, DWhite);
- LN(Pt(-1, -1), Pt(cardwid, -1));
- LN(Pt(cardwid, -1), Pt(cardwid, cardhgt));
- LN(Pt(cardwid, cardhgt), Pt(-1, cardhgt));
- LN(Pt(-1, cardhgt), Pt(-1, -1));
+ memfillcolor(mi, DTransparent);
+ p = Pt(cardrad*2, cardrad*2);
+ memimageline(mi, p, p, Enddisc, Enddisc, cardrad*2, memwhite, ZP, SoverD);
+ p = Pt(cardwid-cardrad*2, cardrad*2);
+ memimageline(mi, p, p, Enddisc, Enddisc, cardrad*2, memwhite, ZP, SoverD);
+ p = Pt(cardwid-cardrad*2, cardhgt-cardrad*2);
+ memimageline(mi, p, p, Enddisc, Enddisc, cardrad*2, memwhite, ZP, SoverD);
+ p = Pt(cardrad*2, cardhgt-cardrad*2);
+ memimageline(mi, p, p, Enddisc, Enddisc, cardrad*2, memwhite, ZP, SoverD);
+ r.min = Pt(cardrad*2, 0);
+ r.max = Pt(cardwid-cardrad*2, cardhgt);
+ memdraw(mi, r, memwhite, ZP, nil, ZP, S);
+ r.min = Pt(0, cardrad*2);
+ r.max = Pt(cardwid, cardhgt-cardrad*2);
+ memdraw(mi, r, memwhite, ZP, nil, ZP, S);
+ LN(Pt(-2, -2), Pt(cardwid+1, -2));
+ LN(Pt(cardwid+1, -2), Pt(cardwid+1, cardhgt+1));
+ LN(Pt(cardwid+1, cardhgt+1), Pt(-2, cardhgt+1));
+ LN(Pt(-2, cardhgt+1), Pt(-2, -2));
FINISH(fcard)
- mi = allocmemimage(Rect(0, 0, symwid, symhgt), RGBA32);
+ mi = allocmemimage(Rect(-1, -1, symwid+1, symhgt+1), RGBA32);
if (!mi)
sysfatal("%r");memfillcolor(mi, DTransparent);
- LN(Pt(-1, -1), Pt(symwid, -1));
- LN(Pt(symwid, -1), Pt(symwid, symhgt));
- LN(Pt(symwid, symhgt), Pt(-1, symhgt));
- LN(Pt(-1, symhgt), Pt(-1, -1));
+ LN(Pt(-2, -2), Pt(symwid+1, -2));
+ LN(Pt(symwid+1, -2), Pt(symwid+1, symhgt+1));
+ LN(Pt(symwid+1, symhgt+1), Pt(-2, symhgt+1));
+ LN(Pt(-2, symhgt+1), Pt(-2, -2));
FINISH(fsym);
#undef LN
@@ -128,6 +144,7 @@
char *label;
Point text;
Point p;
+ Rectangle r;
label = labels[num];
if (!label)
@@ -136,13 +153,15 @@
defont = getmemdefont();
text = memsubfontwidth(defont, label);
- mi = allocmemimage(Rect(0, 0, cardwid, cardhgt), RGB24);
+ mi = allocmemimage(Rect(0, 0, cardwid, cardhgt), RGBA32);
if (!mi)
sysfatal("%r");+ memfillcolor(mi, DTransparent);
memdraw(mi, mi->r, card, ZP, nil, ZP, S);
+ r = insetrect(sym->r, 1);
for (i = 0; i < nelem(symlocs); i++) {- memdraw(mi, rectaddpt(sym->r, symlocs[i]), sym, ZP, nil, ZP, SatopD);
+ memdraw(mi, rectaddpt(r, symlocs[i]), sym, ZP, nil, ZP, SatopD);
}
for (i = 0; i < nelem(lbllocs); i++) {binary files /dev/null b/sym0 differ
binary files /dev/null b/sym1 differ
binary files /dev/null b/sym2 differ
binary files /dev/null b/sym3 differ
--
⑨