Changeset 313ac8e in mainline for uspace/lib/gfxfont/src/glyph_bmp.c
- Timestamp:
- 2020-09-17T15:28:03Z (4 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7bef2d8
- Parents:
- 414020d9
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/gfxfont/src/glyph_bmp.c
r414020d9 r313ac8e 66 66 return ENOMEM; 67 67 68 bmp->rect.p0.x = 0; 69 bmp->rect.p0.y = 0; 70 bmp->rect.p1.x = glyph->rect.p1.x - glyph->rect.p0.x; 71 bmp->rect.p1.y = glyph->rect.p1.y - glyph->rect.p0.y; 72 73 bmp->pixels = calloc(bmp->rect.p1.x * bmp->rect.p1.y, sizeof(int)); 68 /* Bitmap coordinates are relative to glyph origin point */ 69 gfx_rect_rtranslate(&glyph->origin, &glyph->rect, &bmp->rect); 70 71 bmp->pixels = calloc((bmp->rect.p1.x - bmp->rect.p0.x) * 72 (bmp->rect.p1.y - bmp->rect.p0.y), sizeof(int)); 74 73 if (bmp->pixels == NULL) { 75 74 free(bmp); … … 92 91 /* Copy pixels from font bitmap */ 93 92 94 for (y = 0; y < bmp->rect.p1.y; y++) { 95 for (x = 0; x < bmp->rect.p1.x; x++) { 96 pixel = pixelmap_get_pixel(&pmap, glyph->rect.p0.x + x, 97 glyph->rect.p0.y + y); 98 bmp->pixels[y * bmp->rect.p1.x + x] = 99 (pixel != 0) ? 1 : 0; 93 for (y = bmp->rect.p0.y; y < bmp->rect.p1.y; y++) { 94 for (x = bmp->rect.p0.x; x < bmp->rect.p1.x; x++) { 95 pixel = pixelmap_get_pixel(&pmap, glyph->origin.x + x, 96 glyph->origin.y + y); 97 bmp->pixels[(y - bmp->rect.p0.y) * 98 (bmp->rect.p1.x - bmp->rect.p0.x) + 99 (x - bmp->rect.p0.x)] = (pixel != 0) ? 1 : 0; 100 100 } 101 101 } … … 126 126 * is adjusted. 127 127 */ 128 rc = gfx_font_splice_at_glyph(font, glyph, 129 bmp->rect.p1.x - bmp->rect.p0.x, bmp->rect.p1.y - bmp->rect.p0.y); 128 rc = gfx_font_splice_at_glyph(font, glyph, &bmp->rect); 130 129 if (rc != EOK) 131 130 return rc; … … 143 142 /* Copy pixels to font bitmap */ 144 143 145 for (y = 0; y < bmp->rect.p1.y; y++) { 146 for (x = 0; x < bmp->rect.p1.x; x++) { 147 pixel = bmp->pixels[y * bmp->rect.p1.x + x] ? 144 for (y = bmp->rect.p0.y; y < bmp->rect.p1.y; y++) { 145 for (x = bmp->rect.p0.x; x < bmp->rect.p1.x; x++) { 146 pixel = bmp->pixels[(y - bmp->rect.p0.y) * 147 (bmp->rect.p1.x - bmp->rect.p0.x) + 148 (x - bmp->rect.p0.x)] ? 148 149 PIXEL(255, 255, 255, 255) : PIXEL(0, 0, 0, 0); 149 pixelmap_put_pixel(&pmap, glyph-> rect.p0.x + x,150 glyph-> rect.p0.y + y, pixel);150 pixelmap_put_pixel(&pmap, glyph->origin.x + x, 151 glyph->origin.y + y, pixel); 151 152 } 152 153 } … … 193 194 194 195 pitch = bmp->rect.p1.x - bmp->rect.p0.x; 196 195 197 return bmp->pixels[(y - bmp->rect.p0.y) * pitch + 196 198 (x - bmp->rect.p0.x)]; … … 214 216 pos.x = x; 215 217 pos.y = y; 218 216 219 if (!gfx_pix_inside_rect(&pos, &bmp->rect)) { 217 220 rc = gfx_glyph_bmp_extend(bmp, &pos);
Note:
See TracChangeset
for help on using the changeset viewer.