Subversion Repositories HelenOS

Rev

Rev 4176 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4176 Rev 4187
Line 99... Line 99...
99
 
99
 
100
close(BDF);
100
close(BDF);
101
 
101
 
102
@chars = sort { $a <=> $b } (@chars);
102
@chars = sort { $a <=> $b } (@chars);
103
 
103
 
104
print "#define FONT_GLYPHS     " . @chars . "\n";
104
print "#define FONT_GLYPHS     " . (@chars + 1). "\n";
105
print "#define FONT_SCANLINES  " . $height . "\n";
105
print "#define FONT_SCANLINES  " . $height . "\n";
106
 
106
 
107
print "\n";
107
print "\n";
108
print "index_t fb_font_glyph(const wchar_t ch)\n";
108
print "index_t fb_font_glyph(const wchar_t ch)\n";
109
print "{";
109
print "{\n";
-
 
110
print "\tif (ch == 0x0000)\n";
-
 
111
print "\t\treturn 0;\n\n";
110
 
112
 
111
my $pos = 0;
113
my $pos = 0;
112
my $start = -1;
114
my $start = -1;
113
my $start_pos = 0;
115
my $start_pos = 0;
114
my $prev = 0;
116
my $prev = 0;
115
for $index (@chars) {
117
for $index (@chars) {
116
    if ($prev + 1 < $index) {
118
    if ($prev + 1 < $index) {
117
        if ($start != -1) {
119
        if ($start != -1) {
118
            if ($start == $prev) {
120
            if ($start == $prev) {
119
                printf "\tif (ch == 0x%.4x)\n", $start;
121
                printf "\tif (ch == 0x%.4x)\n", $start;
-
 
122
                print "\t\treturn " . $start_pos . ";\n";
120
            } else {
123
            } else {
121
                printf "\tif ((ch >= 0x%.4x) && (ch <= 0x%.4x))\n", $start, $prev;
124
                printf "\tif ((ch >= 0x%.4x) && (ch <= 0x%.4x))\n", $start, $prev;
-
 
125
                print "\t\treturn (ch - " . ($start - $start_pos) . ");\n";
122
            }
126
            }
123
           
127
           
124
            print "\t\treturn (ch - " . ($start - $start_pos) . ");\n";
-
 
125
            print "\t\n";
128
            print "\t\n";
126
        }
129
        }
127
       
130
       
128
        $start = $index;
131
        $start = $index;
129
        $start_pos = $pos;
132
        $start_pos = $pos;
130
    }
133
    }
-
 
134
   
131
    $pos++;
135
    $pos++;
132
    $prev = $index;
136
    $prev = $index;
133
}
137
}
134
 
138
 
135
print "\treturn 31;\n";
139
print "\treturn " . @chars . ";\n";
136
print "}\n";
140
print "}\n";
137
 
141
 
138
print "\n";
142
print "\n";
139
print "uint8_t fb_font[FONT_GLYPHS][FONT_SCANLINES] = {";
143
print "uint8_t fb_font[FONT_GLYPHS][FONT_SCANLINES] = {";
140
 
144
 
141
my $f1 = 0;
-
 
142
for $index (@chars) {
145
for $index (@chars) {
143
    print "," if ($f1 > 0);
-
 
144
    print "\n\t{";
146
    print "\n\t{";
145
   
147
   
146
    my $y;
148
    my $y;
147
    for ($y = 0; $y < $height; $y++) {
149
    for ($y = 0; $y < $height; $y++) {
148
        print ", " if ($y > 0);
150
        print ", " if ($y > 0);
149
        printf "0x%.2x", $glyphs[$index]->[$y];
151
        printf "0x%.2x", $glyphs[$index]->[$y];
150
    }
152
    }
151
   
153
   
152
    print "}";
154
    print "},";
-
 
155
}
-
 
156
 
-
 
157
print "\n\t\n\t/* Special glyph for unknown character */\n\t{";
153
    $f1++;
158
my $y;
-
 
159
for ($y = 0; $y < $height; $y++) {
-
 
160
    print ", " if ($y > 0);
-
 
161
    printf "0x%.2x", $glyphs[63]->[$y];
154
}
162
}
155
 
163
 
156
print "\n};\n";
164
print "}\n};\n";