Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,55 @@
|
|||
use MONKEY-TYPING;
|
||||
|
||||
class Pixel { has UInt ($.R, $.G, $.B) }
|
||||
class Bitmap {
|
||||
has UInt ($.width, $.height);
|
||||
has Pixel @!data;
|
||||
|
||||
method fill(Pixel \p) {
|
||||
@!data = p xx ($!width × $!height)
|
||||
}
|
||||
|
||||
method pixel( \i where ^$!width, \j where ^$!height --> Pixel) is rw {
|
||||
@!data[i × $!width + j]
|
||||
}
|
||||
|
||||
method set-pixel (\i, \j, Pixel \p) {
|
||||
self.pixel(i, j) = p;
|
||||
}
|
||||
|
||||
method get-pixel (\i, \j) returns Pixel {
|
||||
self.pixel(i, j);
|
||||
}
|
||||
}
|
||||
|
||||
augment class Pixel { method Str { "$.R $.G $.B" } }
|
||||
augment class Bitmap {
|
||||
method P3 {
|
||||
join "\n", «P3 "$.width $.height" 255»,
|
||||
do for ^($.width × $.height) { join ' ', @!data[$_] }
|
||||
}
|
||||
|
||||
method raster-circle ( \x0, \y0, \r, Pixel \value ) {
|
||||
my $ddF_x = 0;
|
||||
my $ddF_y = -2 × r;
|
||||
my $f = 1 - r;
|
||||
my ($x, $y) = 0, r;
|
||||
for flat (0 X 1,-1),(1,-1 X 0) -> \i, \j {
|
||||
self.set-pixel(x0 + i×r, y0 + j×r, value)
|
||||
}
|
||||
|
||||
while $x < $y {
|
||||
($y--; $f += ($ddF_y += 2)) if $f ≥ 0;
|
||||
$x++; $f += 1 + ($ddF_x += 2);
|
||||
for flat (1,-1) X (1,-1) -> \i, \j {
|
||||
self.set-pixel(x0 + i×$x, y0 + j×$y, value);
|
||||
self.set-pixel(x0 + i×$y, y0 + j×$x, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my Bitmap $b = Bitmap.new( width => 32, height => 32);
|
||||
$b.fill( Pixel.new( R => 0, G => 0, B => 0) );
|
||||
$b.raster-circle(16, 16, 15, Pixel.new(R=>0, G=>0, B=>100));
|
||||
say $b.P3;
|
||||
Loading…
Add table
Add a link
Reference in a new issue