Changeset 0d62c10 in mainline for uspace/drv/fb
- Timestamp:
- 2020-10-09T20:27:24Z (5 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f80690a
- Parents:
- 8bf9058
- Location:
- uspace/drv/fb
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/fb/amdm37x_dispc/amdm37x_dispc.c
r8bf9058 r0d62c10 383 383 384 384 /* Check that we support all required flags */ 385 if ((params->flags & ~ bmpf_color_key) != 0)385 if ((params->flags & ~(bmpf_color_key | bmpf_colorize)) != 0) 386 386 return ENOTSUP; 387 387 … … 392 392 gfx_coord2_subtract(¶ms->rect.p1, ¶ms->rect.p0, &dim); 393 393 dcbm->rect = params->rect; 394 dcbm->flags = params->flags; 394 395 395 396 if (alloc == NULL) { … … 487 488 gfx_rect_clip(&srect, &skfbrect, &crect); 488 489 489 // XXX bmpf_color_key 490 for (pos.y = crect.p0.y; pos.y < crect.p1.y; pos.y++) { 491 for (pos.x = crect.p0.x; pos.x < crect.p1.x; pos.x++) { 492 gfx_coord2_subtract(&pos, &dcbm->rect.p0, &sp); 493 gfx_coord2_add(&pos, &offs, &dp); 494 495 color = pixelmap_get_pixel(&pbm, sp.x, sp.y); 496 dispc->active_fb.pixel2visual(dispc->fb_data + 497 FB_POS(dispc, dp.x, dp.y), color); 490 if ((dcbm->flags & bmpf_color_key) == 0) { 491 /* Simple copy */ 492 for (pos.y = crect.p0.y; pos.y < crect.p1.y; pos.y++) { 493 for (pos.x = crect.p0.x; pos.x < crect.p1.x; pos.x++) { 494 gfx_coord2_subtract(&pos, &dcbm->rect.p0, &sp); 495 gfx_coord2_add(&pos, &offs, &dp); 496 497 color = pixelmap_get_pixel(&pbm, sp.x, sp.y); 498 dispc->active_fb.pixel2visual(dispc->fb_data + 499 FB_POS(dispc, dp.x, dp.y), color); 500 } 501 } 502 } else if ((dcbm->flags & bmpf_colorize) == 0) { 503 /* Color key */ 504 for (pos.y = crect.p0.y; pos.y < crect.p1.y; pos.y++) { 505 for (pos.x = crect.p0.x; pos.x < crect.p1.x; pos.x++) { 506 gfx_coord2_subtract(&pos, &dcbm->rect.p0, &sp); 507 gfx_coord2_add(&pos, &offs, &dp); 508 509 color = pixelmap_get_pixel(&pbm, sp.x, sp.y); 510 if (color != dcbm->key_color) { 511 dispc->active_fb.pixel2visual(dispc->fb_data + 512 FB_POS(dispc, dp.x, dp.y), color); 513 } 514 } 515 } 516 } else { 517 /* Color key & colorize */ 518 for (pos.y = crect.p0.y; pos.y < crect.p1.y; pos.y++) { 519 for (pos.x = crect.p0.x; pos.x < crect.p1.x; pos.x++) { 520 gfx_coord2_subtract(&pos, &dcbm->rect.p0, &sp); 521 gfx_coord2_add(&pos, &offs, &dp); 522 523 color = pixelmap_get_pixel(&pbm, sp.x, sp.y); 524 if (color != dcbm->key_color) { 525 dispc->active_fb.pixel2visual(dispc->fb_data + 526 FB_POS(dispc, dp.x, dp.y), 527 dcbm->dispc->color); 528 } 529 } 498 530 } 499 531 } -
uspace/drv/fb/amdm37x_dispc/amdm37x_dispc.h
r8bf9058 r0d62c10 68 68 69 69 typedef struct { 70 /* Containing display controller */ 70 71 amdm37x_dispc_t *dispc; 72 /** Allocation info */ 71 73 gfx_bitmap_alloc_t alloc; 74 /** @c true if we allocated the bitmap, @c false if allocated by caller */ 75 bool myalloc; 76 /** Rectangle covered by bitmap */ 72 77 gfx_rect_t rect; 73 bool myalloc; 78 /** Bitmap flags */ 79 gfx_bitmap_flags_t flags; 80 /** Key color */ 81 pixel_t key_color; 74 82 } amdm37x_bitmap_t; 75 83 -
uspace/drv/fb/kfb/port.c
r8bf9058 r0d62c10 200 200 201 201 /* Check that we support all required flags */ 202 if ((params->flags & ~ bmpf_color_key) != 0)202 if ((params->flags & ~(bmpf_color_key | bmpf_colorize)) != 0) 203 203 return ENOTSUP; 204 204 … … 307 307 308 308 if ((kfbbm->flags & bmpf_color_key) != 0) { 309 /* Simple copy */ 309 310 for (pos.y = crect.p0.y; pos.y < crect.p1.y; pos.y++) { 310 311 for (pos.x = crect.p0.x; pos.x < crect.p1.x; pos.x++) { … … 319 320 } 320 321 } 322 } else if ((kfbbm->flags & bmpf_colorize) != 0) { 323 /* Color key */ 324 for (pos.y = crect.p0.y; pos.y < crect.p1.y; pos.y++) { 325 for (pos.x = crect.p0.x; pos.x < crect.p1.x; pos.x++) { 326 gfx_coord2_subtract(&pos, &kfbbm->rect.p0, &sp); 327 gfx_coord2_add(&pos, &offs, &dp); 328 329 color = pixelmap_get_pixel(&pbm, sp.x, sp.y); 330 kfb->pixel2visual(kfb->addr + 331 FB_POS(kfb, dp.x, dp.y), color); 332 } 333 } 321 334 } else { 335 /* Color key & colorize */ 322 336 for (pos.y = crect.p0.y; pos.y < crect.p1.y; pos.y++) { 323 337 for (pos.x = crect.p0.x; pos.x < crect.p1.x; pos.x++) {
Note:
See TracChangeset
for help on using the changeset viewer.