<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">Thanks Sebastian,<br>ppm module is indeed very useful. So, I guess my question then just boils down to, how can I write a function to mimic the setPixel function -&gt;<br><br>Basically, a blank white image would look like this&nbsp; (as per ppm module)<br> [ <br>&nbsp;&nbsp; [ (255, 255, 255)&nbsp; , (255, 255, 255)  , (255, 255, 255) ] ,&nbsp; -- 3 columns of row 1<br>&nbsp;&nbsp; [ (255, 255, 255) , (255, 255, 255) , (255, 255, 255)&nbsp; ]&nbsp;&nbsp;&nbsp; --- 3 columns of row 2<br> ]<br><br>setPixel x y r g b when called like this - setPixel 0,0,255,0,0<br><br> [ <br>
&nbsp;&nbsp; [ (255, 0, 0)&nbsp; , (255, 255, 255)  , (255, 255, 255) ] ,&nbsp; -- 3 columns of row 1<br>
&nbsp;&nbsp; [ (255, 255, 255) , (255, 255, 255) , (255, 255, 255)&nbsp; ]&nbsp;&nbsp;&nbsp; --- 3 columns of row 2<br>
 ]<br><br>What would be a good way to implement such a function?<br><br>Regards,<br>Kashyap<br><br>
<br><br><br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight: bold;">From:</span></b> Sebastian Sylvan &lt;sebastian.sylvan@gmail.com&gt;<br><b><span style="font-weight: bold;">To:</span></b> CK Kashyap &lt;ck_kashyap@yahoo.com&gt;<br><b><span style="font-weight: bold;">Cc:</span></b> haskell-cafe@haskell.org<br><b><span style="font-weight: bold;">Sent:</span></b> Sunday, August 2, 2009 9:30:08 PM<br><b><span style="font-weight: bold;">Subject:</span></b> Re: [Haskell-cafe] Writing a pnm file<br></font><br>
<br><br><div class="gmail_quote">On Sun, Aug 2, 2009 at 4:00 PM, CK Kashyap <span dir="ltr">&lt;<a rel="nofollow" ymailto="mailto:ck_kashyap@yahoo.com" target="_blank" href="mailto:ck_kashyap@yahoo.com">ck_kashyap@yahoo.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div style="font-size: 12pt;"><div>Hi,</div><div>Now that I've understood how to generate raster points of a line in Haskell - the next thing I want to do is generate a pnm file with it. I've done it in perl as of now. In perl, I can have a scalar variable $x contain a string of 256*256*3 bytes (for 24-bit 256x256 image) and set pixels using substr on LHS. I was wondering how I could do something similar in Haskell?</div>
<div><br></div><div><div>sub setPixel{</div><div><span style="white-space: pre;">        </span>my($x,$y,$red,$green,$blue)=@_;</div><div><span style="white-space: pre;">        </span>my$pixel=pack "CCC",$red,$green,$blue;</div>
<div><span style="white-space: pre;">        </span>my$offset=$WIDTH*$y*3 + $x*3;</div><div><span style="white-space: pre;">        </span>substr($image,$offset,3) = $pixel;</div><div>}</div></div></div></div></blockquote><div><br></div><div>
There's a library on hackage which does this</div><div><span><a target="_blank" href="http://hackage.haskell.org/package/ppm">http://hackage.haskell.org/package/ppm</a></span></div><div><br></div><div>You can install this by doing</div><div>&gt;cabal install ppm</div>
<div><br></div><div>Here's an example usage (this uses the binary version of ppm, the docs for ppm has an example for the ASCII version):</div><div><br></div><div>writePPM fname img =&nbsp;withBinaryFile fname WriteMode (\h -&gt; hPutStr h (ppm_p6 img) )&nbsp;</div>
<div><br></div><div>If you're looking for the learning experience, you could always read the source for the library (which is pretty tiny).</div></div><br>-- <br>Sebastian Sylvan<br>+44(0)7857-300802<br>UIN: 44640862<br>

</div></div></div><br>

      </body></html>