Changeset 7dba813 in mainline for uspace/srv/hid/compositor/compositor.c
- Timestamp:
- 2012-11-22T09:03:39Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ba733e83
- Parents:
- 8e6ec6e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/compositor/compositor.c
r8e6ec6e r7dba813 314 314 /* Paint background color. */ 315 315 for (sysarg_t y = y_dmg_vp - vp->pos.y; y < y_dmg_vp - vp->pos.y + h_dmg_vp; ++y) { 316 for (sysarg_t x = x_dmg_vp - vp->pos.x; x < x_dmg_vp - vp->pos.x + w_dmg_vp; ++x) { 317 surface_put_pixel(vp->surface, x, y, bg_color); 316 pixel_t *dst = pixelmap_pixel_at( 317 surface_pixmap_access(vp->surface), x_dmg_vp - vp->pos.x, y); 318 sysarg_t count = w_dmg_vp; 319 while (count-- != 0) { 320 *dst++ = bg_color; 318 321 } 319 322 } 323 surface_add_damaged_region(vp->surface, 324 x_dmg_vp - vp->pos.x, y_dmg_vp - vp->pos.y, w_dmg_vp, h_dmg_vp); 320 325 321 326 transform_t transform; … … 381 386 if (isec_ptr) { 382 387 /* Pointer is currently painted directly by copying pixels. 383 * However, it is possible to draw the p ainter similarly388 * However, it is possible to draw the pointer similarly 384 389 * as window by using drawctx_transfer. It would allow 385 390 * more sophisticated control over drawing, but would also 386 391 * cost more regarding the performance. */ 387 392 388 pixel_t pix = 0;389 393 sysarg_t x_vp = x_dmg_ptr - vp->pos.x; 390 394 sysarg_t y_vp = y_dmg_ptr - vp->pos.y; … … 393 397 394 398 for (sysarg_t y = 0; y < h_dmg_ptr; ++y) { 395 for (sysarg_t x = 0; x < w_dmg_ptr; ++x) { 396 pix = surface_get_pixel(sf_ptr, x_ptr + x, y_ptr + y); 397 if (ALPHA(pix) == 255) { 398 surface_put_pixel(vp->surface, x_vp + x, y_vp + y, pix); 399 } 399 pixel_t *src = pixelmap_pixel_at( 400 surface_pixmap_access(sf_ptr), x_ptr, y_ptr + y); 401 pixel_t *dst = pixelmap_pixel_at( 402 surface_pixmap_access(vp->surface), x_vp, y_vp + y); 403 sysarg_t count = w_dmg_ptr; 404 while (count-- != 0) { 405 *dst = (*src & 0xff000000) ? *src : *dst; 406 ++dst; ++src; 400 407 } 401 408 } 409 surface_add_damaged_region(vp->surface, x_vp, y_vp, w_dmg_ptr, h_dmg_ptr); 402 410 } 403 411 }
Note:
See TracChangeset
for help on using the changeset viewer.