Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
39
Task/Bitmap-Write-a-PPM-file/Oz/bitmap-write-a-ppm-file.oz
Normal file
39
Task/Bitmap-Write-a-PPM-file/Oz/bitmap-write-a-ppm-file.oz
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
functor
|
||||
import
|
||||
Bitmap
|
||||
Open
|
||||
export
|
||||
%% Read
|
||||
Write
|
||||
define
|
||||
%% Omitted: Read
|
||||
|
||||
proc {Write B=bitmap(array2d(width:W height:H ...)) Filename}
|
||||
F = {New Open.file init(name:Filename flags:[write create truncate binary])}
|
||||
|
||||
proc {WriteColor8 color(R G B)}
|
||||
{F write(vs:[R G B])}
|
||||
end
|
||||
|
||||
fun {ToBytes C}
|
||||
[C div 0x100 C mod 0x100]
|
||||
end
|
||||
|
||||
proc {WriteColor16 color(R G B)}
|
||||
{F write(vs:{Flatten {Map [R G B] ToBytes}})}
|
||||
end
|
||||
|
||||
MaxCol = {Bitmap.maxValue B}
|
||||
MaxVal#Writer = if MaxCol =< 0xff then 0xff#WriteColor8
|
||||
else 0xffff#WriteColor16
|
||||
end
|
||||
Header = "P6\n"#W#" "#H#" "#MaxVal#"\n"
|
||||
in
|
||||
try
|
||||
{F write(vs:Header)}
|
||||
{Bitmap.forAllPixels B Writer}
|
||||
finally
|
||||
{F close}
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue