shithub: cardgen

Download patch

ref: d2f22e757da666296b82b7f7592d4b061b28272b
parent: 7bb3106f2d5b80e142ceb853fbec8399c07368f2
author: sirjofri <sirjofri@sirjofri.de>
date: Mon Feb 16 16:59:18 EST 2026

adds border around default card

--- a/cardgen.c
+++ b/cardgen.c
@@ -68,6 +68,7 @@
 
 Memimage *memred;
 Memimage *memgreen;
+Memimage *memagrey;
 Memsubfont *memfont;
 int fontheight;
 int debug = 0;
@@ -213,6 +214,47 @@
 }
 
 static void
+drawemptycard(Memimage *mi)
+{
+	Point p;
+	Rectangle r;
+	
+	/* offsets and radii are adjusted for pixel perfect size */
+	
+	/* black border */
+	p = Pt(cardrad*2+1, cardrad*2+1);
+	memimageline(mi, p, p, Enddisc, Enddisc, cardrad*2+1, memagrey, ZP, SoverD);
+	p = Pt(cardwid-cardrad*2-1, cardrad*2+1);
+	memimageline(mi, p, p, Enddisc, Enddisc, cardrad*2+1, memagrey, ZP, SoverD);
+	p = Pt(cardwid-cardrad*2-1, cardhgt-cardrad*2-1);
+	memimageline(mi, p, p, Enddisc, Enddisc, cardrad*2+1, memagrey, ZP, SoverD);
+	p = Pt(cardrad*2+1, cardhgt-cardrad*2-1);
+	memimageline(mi, p, p, Enddisc, Enddisc, cardrad*2+1, memagrey, ZP, SoverD);
+	r.min = Pt(cardrad*2, 0);
+	r.max = Pt(cardwid-cardrad*2, cardhgt);
+	memdraw(mi, r, memagrey, ZP, nil, ZP, S);
+	r.min = Pt(0, cardrad*2);
+	r.max = Pt(cardwid, cardhgt-cardrad*2);
+	memdraw(mi, r, memagrey, ZP, nil, ZP, S);
+	
+	/* white card */
+	p = Pt(cardrad*2+1, cardrad*2+1);
+	memimageline(mi, p, p, Enddisc, Enddisc, cardrad*2, memwhite, ZP, SoverD);
+	p = Pt(cardwid-cardrad*2-2, cardrad*2+1);
+	memimageline(mi, p, p, Enddisc, Enddisc, cardrad*2, memwhite, ZP, SoverD);
+	p = Pt(cardwid-cardrad*2-1, cardhgt-cardrad*2-1);
+	memimageline(mi, p, p, Enddisc, Enddisc, cardrad*2-1, memwhite, ZP, SoverD);
+	p = Pt(cardrad*2+1, cardhgt-cardrad*2-2);
+	memimageline(mi, p, p, Enddisc, Enddisc, cardrad*2, memwhite, ZP, SoverD);
+	r.min = Pt(cardrad*2+1, 1);
+	r.max = Pt(cardwid-cardrad*2-1, cardhgt-1);
+	memdraw(mi, r, memwhite, ZP, nil, ZP, S);
+	r.min = Pt(1, cardrad*2+1);
+	r.max = Pt(cardwid-1, cardhgt-cardrad*2-1);
+	memdraw(mi, r, memwhite, ZP, nil, ZP, S);
+}
+
+static void
 drawborder(Memimage *mi)
 {
 	memimageline(mi,
@@ -245,8 +287,6 @@
 	int fhearts;
 	int fclubs;
 	int fspades;
-	Rectangle r;
-	Point p;
 	
 	fcard = create("tcard", OWRITE, 0664);
 	if (fcard < 0)
@@ -274,21 +314,7 @@
 		sysfatal("%r");
 	
 	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);
-	
+	drawemptycard(mi);
 	FINISH(fcard)
 	
 	mi = allocmemimage(Rect(-1, -1, symwid+1, symhgt+1), RGBA32);
@@ -451,6 +477,11 @@
 	memfillcolor(memgreen, 0x00CC00FF);
 	memgreen->flags |= Frepl;
 	memgreen->clipr = memblack->clipr;
+	
+	memagrey = allocmemimage(Rect(0, 0, 1, 1), RGBA32);
+	memfillcolor(memagrey, 0x00000088);
+	memagrey->flags |= Frepl;
+	memagrey->clipr = memblack->clipr;
 	
 	if (fontfile) {
 		memfont = openmemsubfont(fontfile, 0);
--