restructured glyph blitting a bit and fixed bug

pull/2/merge
HW 13 years ago
parent b49b776962
commit 6582ad8f95

11
ft.c

@ -107,7 +107,7 @@ static int renderGlyph(lua_State *L) {
return luaL_error(L, "freetype error"); return luaL_error(L, "freetype error");
} }
int w = (*face)->glyph->bitmap.width; // 2px steps int w = (*face)->glyph->bitmap.width;
int h = (*face)->glyph->bitmap.rows; int h = (*face)->glyph->bitmap.rows;
lua_newtable(L); lua_newtable(L);
@ -120,22 +120,19 @@ static int renderGlyph(lua_State *L) {
lua_setfield(L, -2, "bb"); lua_setfield(L, -2, "bb");
bb->w = w;
bb->h = h;
uint8_t *dst = bb->data; uint8_t *dst = bb->data;
int y; int y;
int x; int x;
w = (*face)->glyph->bitmap.width;
for(y = 0; y < h; y++) { for(y = 0; y < h; y++) {
uint8_t *src = (*face)->glyph->bitmap.buffer + y * (*face)->glyph->bitmap.pitch; uint8_t *src = (*face)->glyph->bitmap.buffer + y * (*face)->glyph->bitmap.pitch;
for(x = 0; x < w; x+=2) { for(x = 0; x < (w/2); x++) {
*dst = (src[0] & 0xF0) | (src[1] >> 4); *dst = (src[0] & 0xF0) | (src[1] >> 4);
src+=2; src+=2;
dst++; dst++;
} }
if(w & 1) { if(w & 1) {
*dst = (*src & 0xF0) >> 4; *dst = *src & 0xF0;
dst++;
} }
} }

Loading…
Cancel
Save