Module Name:    xsrc
Committed By:   macallan
Date:           Tue Aug 16 21:28:53 UTC 2022

Modified Files:
        xsrc/local/programs/bdfload: bdfload.c

Log Message:
add -d option to dump rendered characters to the console


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 xsrc/local/programs/bdfload/bdfload.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/local/programs/bdfload/bdfload.c
diff -u xsrc/local/programs/bdfload/bdfload.c:1.4 xsrc/local/programs/bdfload/bdfload.c:1.5
--- xsrc/local/programs/bdfload/bdfload.c:1.4	Tue Aug 16 20:27:33 2022
+++ xsrc/local/programs/bdfload/bdfload.c	Tue Aug 16 21:28:53 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: bdfload.c,v 1.4 2022/08/16 20:27:33 macallan Exp $	*/
+/*	$NetBSD: bdfload.c,v 1.5 2022/08/16 21:28:53 macallan Exp $	*/
 
 /*
  * Copyright (c) 2018 Michael Lorenz
@@ -98,8 +98,24 @@ const char * const encname[] = {
 const char *ofile = NULL;
 int encoding = -1;
 int verbose = 0;
+int dump = 0;
 
+void
+dump_line(char *gptr, int stride)
+{
+	int i, j, msk, c;
 
+	for (i = 0; i < stride; i++) {
+		c = gptr[i];
+		msk = 0x80;
+		for (j = 0; j < 8; j++) {
+			putchar((c & msk) != 0 ? '#' : ' ');
+			msk = msk >> 1;
+		}
+		printf("\n");
+	}
+}
+ 
 void
 interpret(FILE *foo)
 {
@@ -164,6 +180,7 @@ interpret(FILE *foo)
 				if (current >= 0 && current < 256) {
 					if (current < first) first = current;
 					if (current > last) last = current;
+					if (dump) printf("glyph %d\n", current);
 				}
 			}
 		} else if (strcmp(line, "BBX") == 0) {
@@ -177,6 +194,7 @@ interpret(FILE *foo)
 				if (top < bt) bt = top;
 				if ((left + cwi) > br) br = left + cwi;
 				if ((top + che) > bb) bb = top + che;
+				if(dump && verbose) printf("top %d left %d\n", top, left);
 			}
 		} else if (strcmp(line, "BITMAP") == 0) {
 			int i, j, k, l;
@@ -202,6 +220,13 @@ interpret(FILE *foo)
 					bptr16++;
 				}
 			}
+			if (dump) {
+				gptr = &buffer[charsize * current];
+				for (i = 0; i < height; i++) {
+					dump_line(gptr, stride);
+					gptr += stride;
+				}
+			}
 		}
 	}
 	if (verbose) {
@@ -270,7 +295,7 @@ interpret(FILE *foo)
 __dead void
 usage()
 {
-	fprintf(stderr, "usage: bdfload [-v] [-e encoding] [-o ofile.wsf] font.bdf\n");
+	fprintf(stderr, "usage: bdfload [-vd] [-e encoding] [-o ofile.wsf] font.bdf\n");
 	exit(EXIT_FAILURE);
 }
 
@@ -281,7 +306,7 @@ main(int argc, char *argv[])
 	const char *encname = NULL;
 
 	int c;
-	while ((c = getopt(argc, argv, "e:o:v")) != -1) {
+	while ((c = getopt(argc, argv, "e:o:vd")) != -1) {
 		switch (c) {
 
 		/* font encoding */
@@ -302,6 +327,10 @@ main(int argc, char *argv[])
 			verbose = 1;
 			break;
 
+		case 'd':
+			dump = 1;
+			break;
+
 		case '?':	/* FALLTHROUGH */
 		default:
 			usage();

Reply via email to