The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/hpc/fontconv.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: fontconv.c,v 1.3 2001/11/13 12:47:56 lukem Exp $       */
    2 
    3 #include <sys/cdefs.h>
    4 __KERNEL_RCSID(0, "$NetBSD: fontconv.c,v 1.3 2001/11/13 12:47:56 lukem Exp $");
    5 
    6 #include <stdio.h>
    7 
    8 
    9 int width, height, ascent;
   10 char *fontname;
   11 FILE *ifp;
   12 FILE *ofp;
   13 
   14 
   15 void fc_rcons(int ac, char* av[]);
   16 void fc_rasops(int ac, char* av[]);
   17 
   18 
   19 main(int ac, char* av[])
   20 {
   21         ifp = stdin;
   22         ofp = stdout;
   23         width = 8;
   24         height = 8;
   25         ascent = 8;
   26         fontname = "vt220l";
   27 
   28         /*
   29           fc_rcons(ac, av);
   30         */
   31         fc_rasops(ac, av);
   32 }
   33 
   34 
   35 void
   36 fc_rasops(int ac, char* av[])
   37 {
   38         int code;
   39         int width_in_bytes;
   40         long code_min = 0x10000;
   41         long code_max = -1;
   42 
   43         width_in_bytes = (width + 7) / 8;
   44 
   45         code = 0;
   46         fprintf(ofp, "static u_char %s%dx%d_data[] = {\n",
   47             fontname, width, height, code);
   48         while (1) {
   49                 int n;
   50                 int i, j, k;
   51                 unsigned char buf[200];
   52 
   53                 n = fread(buf, width_in_bytes, height, ifp);
   54                 if (n != height) {
   55                         if (!feof(ifp)) {
   56                                 perror("fread()");
   57                                 exit(1);
   58                         } else {
   59                                 break;
   60                         }
   61                 }
   62 
   63                 k = 0;
   64                 fprintf(ofp, "    /* code %d */\n", code);
   65                 for (i = 0; i < height; i++) {
   66                         unsigned long d = 0, m;
   67                         fprintf(ofp, "    ");
   68                         for (j = 0; j < width_in_bytes; j++) {
   69                                 d |= (((unsigned long)buf[k]) << (24 - 8*j));
   70                                 fprintf(ofp, "0x%02x,", (buf[k] & 0xff));
   71                                 k++;
   72                         }
   73                         fprintf(ofp, " /* ");
   74                         for (m = 0x80000000, j = 0; j < width; j++, m >>= 1) {
   75                                 printf((m & d) ? "##" : "..");
   76                         }
   77                         fprintf(ofp, " */\n");
   78                 }
   79                 fprintf(ofp, "\n");
   80                 if (code < code_min) {
   81                         code_min = code;
   82                 }
   83                 if (code_max < code) {
   84                         code_max = code;
   85                 }
   86                 code++;
   87         }
   88         fprintf(ofp, "};\n");
   89 
   90         fprintf(ofp, "struct wsdisplay_font %s%dx%d = {\n",
   91             fontname, width, height);
   92         fprintf(ofp, "    \"%s\",\t\t\t/* typeface name */\n", fontname);
   93         fprintf(ofp, "    0x%02x,\t\t\t/* firstchar */\n", code_min);
   94         fprintf(ofp, "    %d,\t\t\t/* numchars */\n", code_max - code_min + 1);
   95         fprintf(ofp, "    WSDISPLAY_FONTENC_ISO,\t/* encoding */\n");
   96         fprintf(ofp, "    %d,\t\t\t\t/* width */\n", width);
   97         fprintf(ofp, "    %d,\t\t\t\t/* height */\n", height);
   98         fprintf(ofp, "    %d,\t\t\t\t/* stride */\n", width_in_bytes);
   99         fprintf(ofp, "    WSDISPLAY_FONTENC_L2R,\t/* bit order */\n");
  100         fprintf(ofp, "    WSDISPLAY_FONTENC_L2R,\t/* byte order */\n");
  101         fprintf(ofp, "    %s%dx%d_data\t\t/* data */\n",
  102             fontname, width, height);
  103         fprintf(ofp, "};\n");
  104 }
  105 
  106 
  107 void
  108 fc_rcons(int ac, char* av[])
  109 {
  110         int code;
  111         int width_in_bytes;
  112         long code_min = 0x10000;
  113         long code_max = -1;
  114 
  115         width_in_bytes = (width + 7) / 8;
  116 
  117         code = 0;
  118         while (1) {
  119                 int n;
  120                 int i, j, k;
  121                 unsigned char buf[200];
  122 
  123                 n = fread(buf, width_in_bytes, height, ifp);
  124                 if (n != height) {
  125                         if (!feof(ifp)) {
  126                                 perror("fread()");
  127                                 exit(1);
  128                         } else {
  129                                 break;
  130                         }
  131                 }
  132 
  133                 fprintf(ofp, "static u_int32_t %s%dx%d_%d_pix[] = {\n",
  134                     fontname, width, height, code);
  135 
  136                 k = 0;
  137                 for (i = 0; i < height; i++) {
  138                         unsigned long d = 0, m;
  139                         for (j = 0; j < width_in_bytes; j++) {
  140                                 d |= (((unsigned long)buf[k++]) << (24 - 8*j));
  141                         }
  142                         fprintf(ofp, "    0x%08x, /* ", d);
  143                         for (m = 0x80000000, j = 0; j < width; j++, m >>= 1) {
  144                                 printf((m & d) ? "##" : "..");
  145                         }
  146                         fprintf(ofp, " */\n");
  147                 }
  148                 fprintf(ofp, "};\n");
  149                 fprintf(ofp, "static struct raster %s%dx%d_%d = {",
  150                     fontname, width, height, code);
  151                 fprintf(ofp, " %d, %d, 1, 1, %s%dx%d_%d_pix, 0 };\n",
  152                     width, height, fontname, width, height, code);
  153                 if (code < code_min) {
  154                         code_min = code;
  155                 }
  156                 if (code_max < code) {
  157                         code_max = code;
  158                 }
  159                 code++;
  160         }
  161 
  162         fprintf(ofp, "struct raster_font %s%dx%d = {\n",
  163             fontname, width, height);
  164         fprintf(ofp, "    %d, %d, %d, ", width, height, ascent);
  165         fprintf(ofp, "RASFONT_FIXEDWIDTH|RASFONT_NOVERTICALMOVEMENT,\n");
  166         fprintf(ofp, "    {\n");
  167         for (code = code_min; code <= code_max; code++) {
  168                 fprintf(ofp, "        { &%s%dx%d_%d, ",
  169                     fontname, width, height, code);
  170                 fprintf(ofp, "%d, %d, %d, %d },\n", 0, -ascent, width, 0);
  171         }
  172         fprintf(ofp, "    },\n");
  173         fprintf(ofp, "#ifdef COLORFONT_CACHE\n");
  174         fprintf(ofp, "    (struct raster_fontcache*) -1\n");
  175         fprintf(ofp, "#endif /*COLORFONT_CACHE*/\n");
  176         fprintf(ofp, "};\n");
  177 }

Cache object: fb0a36ac2f0b467ea89de3566313d18a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.