Graphics-Framebuffer
view release on metacpan or search on metacpan
lib/Graphics/Framebuffer.pm view on Meta::CPAN
if (x0 > x1d) {
swap_(x0, x1d);
swap_(y0, y1d);
}
double dx = x1d - x0;
double dy = y1d - y0;
double gradient = (dx == 0.0) ? 1.0 : dy / dx;
/* handle first endpoint */
double xend = roundd(x0);
double yend = y0 + gradient * (xend - x0);
double xgap = rfpart(x0 + 0.5);
long xpxl1 = (long)xend;
long ypxl1 = (long)floor(yend);
/* plot first endpoint */
double intery = yend + gradient; /* first y-intersection for the main loop */
/* First endpoint pixels */
plot_aa_pixel(framebuffer,
color,
bcolor,
alpha,
bytes_per_pixel,
bits_per_pixel,
bytes_per_line,
x_clip,
y_clip,
xx_clip,
lib/Graphics/Framebuffer.pm view on Meta::CPAN
y_clip,
xx_clip,
yy_clip,
xoffset,
yoffset,
steep,
xpxl1,
ypxl1 + 1,
fpart(yend) * xgap);
/* handle second endpoint */
xend = roundd(x1d);
yend = y1d + gradient * (xend - x1d);
xgap = fpart(x1d + 0.5);
long xpxl2 = (long)xend;
long ypxl2 = (long)floor(yend);
plot_aa_pixel(framebuffer,
color,
bcolor,
alpha,
lib/Graphics/Framebuffer.pm view on Meta::CPAN
($x0, $x1, $y0, $y1) = ($x1, $x0, $y1, $y0);
}
my $dx = $x1 - $x0;
my $dy = $y1 - $y0;
my $gradient = $dy / $dx;
my @xends;
my $intery;
# handle the endpoints
foreach my $xy ([$x0, $y0], [$x1, $y1]) {
my ($x, $y) = @{$xy};
my $xend = int($x + 0.5); # POSIX::lround($x);
my $yend = $y + $gradient * ($xend - $x);
my $xgap = _rfpart($x + 0.5);
my $x_pixel = $xend;
my $y_pixel = int($yend);
push(@xends, $x_pixel);
src/Framebuffer.c view on Meta::CPAN
if (x0 > x1d) {
swap_(x0, x1d);
swap_(y0, y1d);
}
double dx = x1d - x0;
double dy = y1d - y0;
double gradient = (dx == 0.0) ? 1.0 : dy / dx;
/* handle first endpoint */
double xend = roundd(x0);
double yend = y0 + gradient * (xend - x0);
double xgap = rfpart(x0 + 0.5);
long xpxl1 = (long)xend;
long ypxl1 = (long)floor(yend);
/* plot first endpoint */
double intery = yend + gradient; /* first y-intersection for the main loop */
/* First endpoint pixels */
plot_aa_pixel(framebuffer,
color,
bcolor,
alpha,
bytes_per_pixel,
bits_per_pixel,
bytes_per_line,
x_clip,
y_clip,
xx_clip,
src/Framebuffer.c view on Meta::CPAN
y_clip,
xx_clip,
yy_clip,
xoffset,
yoffset,
steep,
xpxl1,
ypxl1 + 1,
fpart(yend) * xgap);
/* handle second endpoint */
xend = roundd(x1d);
yend = y1d + gradient * (xend - x1d);
xgap = fpart(x1d + 0.5);
long xpxl2 = (long)xend;
long ypxl2 = (long)floor(yend);
plot_aa_pixel(framebuffer,
color,
bcolor,
alpha,
src/Framebuffer.pm view on Meta::CPAN
($x0, $x1, $y0, $y1) = ($x1, $x0, $y1, $y0);
}
my $dx = $x1 - $x0;
my $dy = $y1 - $y0;
my $gradient = $dy / $dx;
my @xends;
my $intery;
# handle the endpoints
foreach my $xy ([$x0, $y0], [$x1, $y1]) {
my ($x, $y) = @{$xy};
my $xend = int($x + 0.5); # POSIX::lround($x);
my $yend = $y + $gradient * ($xend - $x);
my $xgap = _rfpart($x + 0.5);
my $x_pixel = $xend;
my $y_pixel = int($yend);
push(@xends, $x_pixel);
( run in 3.620 seconds using v1.01-cache-2.11-cpan-55a6197bec7 )