static int writeUTF8(const QRcode *qrcode, const char *outfile, int use_ansi, int invert) { FILE *fp; int x, y; int realwidth; const char *white, *reset; const char *empty, *lowhalf, *uphalf, *full; empty = " "; lowhalf = "\342\226\204"; uphalf = "\342\226\200"; full = "\342\226\210"; if (invert) { const char *tmp; tmp = empty; empty = full; full = tmp; tmp = lowhalf; lowhalf = uphalf; uphalf = tmp; } if (use_ansi){ white = "\033[40;37;1m"; reset = "\033[0m"; } else { white = ""; reset = ""; } fp = openFile(outfile); realwidth = (qrcode->width + margin * 2); /* top margin */ writeUTF8_margin(fp, realwidth, white, reset, full); /* data */ for(y = 0; y < qrcode->width; y += 2) { unsigned char *row1, *row2; row1 = qrcode->data + y*qrcode->width; row2 = row1 + qrcode->width; fputs(white, fp); for (x = 0; x < margin; x++) { fputs(full, fp); } for (x = 0; x < qrcode->width; x++) { if(row1[x] & 1) { if(y < qrcode->width - 1 && row2[x] & 1) { fputs(empty, fp); } else { fputs(lowhalf, fp); } } else if(y < qrcode->width - 1 && row2[x] & 1) { fputs(uphalf, fp); } else { fputs(full, fp); } } for (x = 0; x < margin; x++) fputs(full, fp); fputs(reset, fp); fputc('\n', fp); } /* bottom margin */ writeUTF8_margin(fp, realwidth, white, reset, full); fclose(fp); return 0; }
static int writeUTF8(QRcode *qrcode, const char *outfile, int use_ansi) { FILE *fp; int x, y; int realwidth; const char *white, *reset; if (use_ansi){ white = "\033[40;37;1m"; reset = "\033[0m"; } else { white = ""; reset = ""; } fp = openFile(outfile); realwidth = (qrcode->width + margin * 2); /* top margin */ writeUTF8_margin(fp, realwidth, white, reset, use_ansi); /* data */ for(y = 0; y < qrcode->width; y += 2) { unsigned char *row1, *row2; row1 = qrcode->data + y*qrcode->width; row2 = row1 + qrcode->width; fputs(white, fp); for (x = 0; x < margin; x++) fputs("\342\226\210", fp); for (x = 0; x < qrcode->width; x++) { if(row1[x] & 1) { if(y < qrcode->width - 1 && row2[x] & 1) { fputc(' ', fp); } else { fputs("\342\226\204", fp); } } else { if(y < qrcode->width - 1 && row2[x] & 1) { fputs("\342\226\200", fp); } else { fputs("\342\226\210", fp); } } } for (x = 0; x < margin; x++) fputs("\342\226\210", fp); fputs(reset, fp); fputc('\n', fp); } /* bottom margin */ writeUTF8_margin(fp, realwidth, white, reset, use_ansi); fclose(fp); return 0; }
static QRimageResultType writeUTF8(QRcode *qrcode, const char *outfile, int use_ansi) { FILE *fp; int x, y; int realwidth; const char *white, *reset; if (use_ansi){ white = "\033[40;37;1m"; reset = "\033[0m"; } else { white = ""; reset = ""; } fp = fopen(outfile, "wb"); if(fp == NULL) { return QR_IMG_FAILED_CREATE_FILE; } realwidth = (qrcode->width + margin * 2); /* top margin */ writeUTF8_margin(fp, realwidth, white, reset, use_ansi); /* data */ for(y = 0; y < qrcode->width; y += 2) { unsigned char *row1, *row2; row1 = qrcode->data + y*qrcode->width; row2 = row1 + qrcode->width; fputs(white, fp); for (x = 0; x < margin; x++) fputs("\342\226\210", fp); for (x = 0; x < qrcode->width; x++) { if(row1[x] & 1) { if(y < qrcode->width - 1 && row2[x] & 1) { fputc(' ', fp); } else { fputs("\342\226\204", fp); } } else { if(y < qrcode->width - 1 && row2[x] & 1) { fputs("\342\226\200", fp); } else { fputs("\342\226\210", fp); } } } for (x = 0; x < margin; x++) fputs("\342\226\210", fp); fputs(reset, fp); fputc('\n', fp); } /* bottom margin */ writeUTF8_margin(fp, realwidth, white, reset, use_ansi); fclose(fp); return QR_IMG_SUCCESS; }