Bitmap/Write a PPM file: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) m (→{{header|11l}}) |
(Added solution for Action!) |
||
Line 89: | Line 89: | ||
0 0 0 255 255 255 0 0 0 0 0 0 |
0 0 0 255 255 255 0 0 0 0 0 0 |
||
0 0 0 255 255 255 0 0 0 0 0 0 |
0 0 0 255 255 255 0 0 0 0 0 0 |
||
</pre> |
|||
=={{header|Action!}}== |
|||
{{libheader|Action! Bitmap tools}} |
|||
<lang Action!>INCLUDE "H6:RGBIMAGE.ACT" ;from task Bitmap |
|||
PROC SaveHeader(RgbImage POINTER img |
|||
CHAR ARRAY format BYTE dev) |
|||
PrintDE(dev,format) |
|||
PrintBD(dev,img.w) |
|||
PutD(dev,32) |
|||
PrintBDE(dev,img.h) |
|||
PrintBDE(dev,255) |
|||
RETURN |
|||
PROC SavePPM3(RgbImage POINTER img CHAR ARRAY path) |
|||
BYTE dev=[1],x,y |
|||
RGB c |
|||
Close(dev) |
|||
Open(dev,path,8) |
|||
SaveHeader(img,"P3",dev) |
|||
FOR y=0 TO img.h-1 |
|||
DO |
|||
FOR x=0 TO img.w-1 |
|||
DO |
|||
GetRgbPixel(img,x,y,c) |
|||
PrintBD(dev,c.r) PutD(dev,32) |
|||
PrintBD(dev,c.g) PutD(dev,32) |
|||
PrintBD(dev,c.b) |
|||
IF x=img.w-1 THEN |
|||
PutDE(dev) |
|||
ELSE |
|||
PutD(dev,32) |
|||
FI |
|||
OD |
|||
OD |
|||
Close(dev) |
|||
RETURN |
|||
PROC SavePPM6(RgbImage POINTER img CHAR ARRAY path) |
|||
BYTE dev=[1],x,y |
|||
RGB c |
|||
Close(dev) |
|||
Open(dev,path,8) |
|||
SaveHeader(img,"P6",dev) |
|||
FOR y=0 TO img.h-1 |
|||
DO |
|||
FOR x=0 TO img.w-1 |
|||
DO |
|||
GetRgbPixel(img,x,y,c) |
|||
PutD(dev,c.r) |
|||
PutD(dev,c.g) |
|||
PutD(dev,c.b) |
|||
OD |
|||
OD |
|||
Close(dev) |
|||
RETURN |
|||
PROC Load(CHAR ARRAY path) |
|||
CHAR ARRAY line(255) |
|||
BYTE dev=[1] |
|||
Close(dev) |
|||
Open(dev,path,4) |
|||
WHILE Eof(dev)=0 |
|||
DO |
|||
InputSD(dev,line) |
|||
PrintE(line) |
|||
OD |
|||
Close(dev) |
|||
RETURN |
|||
PROC Main() |
|||
BYTE ARRAY rgbdata=[ |
|||
0 0 0 0 0 255 0 255 0 |
|||
255 0 0 0 255 255 255 0 255 |
|||
255 255 0 255 255 255 31 63 127 |
|||
63 31 127 127 31 63 127 63 31] |
|||
BYTE width=[3],height=[4] |
|||
RgbImage img |
|||
CHAR ARRAY path3="D:PPM3.PPM" |
|||
CHAR ARRAY path6="D:PPM6.PPM" |
|||
Put(125) PutE() ;clear the screen |
|||
InitRgbImage(img,width,height,rgbdata) |
|||
PrintF("Saving %S...%E%E",path3) |
|||
SavePPM3(img,path3) |
|||
PrintF("Saving %S...%E%E",path6) |
|||
SavePPM6(img,path6) |
|||
PrintF("Loading %S...%E%E",path3) |
|||
Load(path3) |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Write_a_PPM_file.png Screenshot from Atari 8-bit computer] |
|||
<pre> |
|||
Saving D:PPM3.PPM... |
|||
Saving D:PPM6.PPM... |
|||
Loading D:PPM3.PPM... |
|||
P3 |
|||
3 4 |
|||
255 |
|||
0 0 0 0 0 255 0 255 0 |
|||
255 0 0 0 255 255 255 0 255 |
|||
255 255 0 255 255 255 31 63 127 |
|||
63 31 127 127 31 63 127 63 31 |
|||
</pre> |
</pre> |
||