staticvoid
RASTERIZE_EDGES (pixman_image_t *image,
pixman_edge_t *l,
pixman_edge_t *r,
pixman_fixed_t t,
pixman_fixed_t b)
{
pixman_fixed_t y = t;
uint32_t *line;
uint32_t *buf = (image)->bits.bits; int stride = (image)->bits.rowstride; int width = (image)->bits.width;
line = buf + pixman_fixed_to_int (y) * stride;
for (;;)
{
pixman_fixed_t lx;
pixman_fixed_t rx; int lxi; int rxi;
lx = l->x;
rx = r->x; #if N_BITS == 1 /* For the non-antialiased case, round the coordinates up, in effect * sampling just slightly to the left of the pixel. This is so that * when the sample point lies exactly on the line, we round towards * north-west. * * (The AA case does a similar adjustment in RENDER_SAMPLES_X)
*/
lx += X_FRAC_FIRST(1) - pixman_fixed_e;
rx += X_FRAC_FIRST(1) - pixman_fixed_e; #endif /* clip X */ if (lx < 0)
lx = 0; if (pixman_fixed_to_int (rx) >= width) #if N_BITS == 1
rx = pixman_int_to_fixed (width); #else /* Use the last pixel of the scanline, covered 100%. * We can't use the first pixel following the scanline, * because accessing it could result in a buffer overrun.
*/
rx = pixman_int_to_fixed (width) - 1; #endif
if (startmask) {
WRITE(image, a, READ(image, a) | startmask);
a++;
} while (nmiddle--)
WRITE(image, a++, 0xffffffff); if (endmask)
WRITE(image, a, READ(image, a) | endmask);
} #else
{
DEFINE_ALPHA(line,lxi); int lxs; int rxs;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.