[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sc-dev] SF.net SVN: quarks:[1305] redSys



Revision: 1305
          http://quarks.svn.sourceforge.net/quarks/?rev=1305&view=rev
Author:   redFrik
Date:     2009-12-29 19:21:26 +0000 (Tue, 29 Dec 2009)

Log Message:
-----------
added RedRLE and minor updates

Modified Paths:
--------------
    redSys/RedSys.html
    redSys/redTools/RedBase64.html
    redSys/redTools/RedHuffman.html
    redSys/redTools/RedHuffman.sc
    redSys/redTools/RedLZW.html

Added Paths:
-----------
    redSys/redTools/RedRLE.html
    redSys/redTools/RedRLE.sc

Modified: redSys/RedSys.html
===================================================================
--- redSys/RedSys.html	2009-12-29 14:24:31 UTC (rev 1304)
+++ redSys/RedSys.html	2009-12-29 19:21:26 UTC (rev 1305)
@@ -9,16 +9,15 @@
 <style type="text/css">
 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #902f20}
+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #ad1d13}
 p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001fe8}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #062cb0}
+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0019ba}
 span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #062cb0}
+span.s2 {color: #0019ba}
 span.s3 {text-decoration: underline ; color: #000000}
 span.s4 {text-decoration: underline}
 span.s5 {text-decoration: underline ; color: #001fe8}
 span.s6 {color: #000000}
-span.s7 {color: #0000ff}
 span.Apple-tab-span {white-space:pre}
 </style>
 </head>
@@ -94,11 +93,12 @@
 <p class="p1"><span class="s5"><a href="redTest/RedTest.html">RedTest</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-generate test signals</p>
 <p class="p2"><br></p>
 <p class="p1"><span class="s4">redTools:</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-various</p>
-<p class="p1"><span class="s5"><a href="redTools/RedBase64.html">RedBase64</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-base64 encoding and decoding</p>
+<p class="p1"><span class="s5"><a href="redTools/RedBase64.html">RedBase64</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-base64 encoding/decoding</p>
 <p class="p1"><span class="s5"><a href="redTools/RedHarmonicTree.html">RedHarmonicTree</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-sorted harmonic tree</p>
-<p class="p1"><span class="s7"><a href="redTools/RedHuffman.html">RedHuffman</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-huffman coding</p>
-<p class="p1"><span class="s5"><a href="redTools/RedLZW.html">RedLZW</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-lzw compression and decompression</p>
+<p class="p1"><span class="s5"><a href="redTools/RedHuffman.html">RedHuffman</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-huffman coding</p>
+<p class="p1"><span class="s5"><a href="redTools/RedLZW.html">RedLZW</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-lzw compression/decompression</p>
 <p class="p1"><span class="s5"><a href="redTools/Redraw.html">Redraw</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-simple drawing with the mouse</p>
+<p class="p1"><span class="s5"><a href="redTools/RedRLE.html">RedRLE</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-run-length encoding/decodnig</p>
 <p class="p1"><span class="s5"><a href="redTools/RedTime.html">RedTime</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-calculate with time</p>
 <p class="p1"><span class="s5"><a href="redTools/RedToolsMenu.html">RedToolsMenu</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-various tools</p>
 <p class="p2"><br></p>
@@ -118,6 +118,8 @@
 <p class="p1"><span class="s5"><a href="redUGens/RedTapeRecorder.html">RedTapeRecorder</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-sampling and looping</p>
 <p class="p2"><br></p>
 <p class="p2"><br></p>
+<p class="p3">//--changes 091229:</p>
+<p class="p3">//added RedRLE</p>
 <p class="p3">//--changes 091226:</p>
 <p class="p3">//added RedHuffman</p>
 <p class="p3">//--changes 091025:</p>

Modified: redSys/redTools/RedBase64.html
===================================================================
--- redSys/redTools/RedBase64.html	2009-12-29 14:24:31 UTC (rev 1304)
+++ redSys/redTools/RedBase64.html	2009-12-29 19:21:26 UTC (rev 1305)
@@ -9,50 +9,52 @@
 <style type="text/css">
 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #843424}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #544234; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #843424; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d281b}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #723b2a}
+p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0030f2}
+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #4f4236; min-height: 12.0px}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #723b2a; min-height: 12.0px}
+p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
+p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
+p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
+p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
 span.s1 {font: 18.0px Helvetica}
 span.s2 {color: #000000}
 span.s3 {text-decoration: underline ; color: #000000}
 span.s4 {text-decoration: underline}
-span.s5 {color: #0030f2}
-span.s6 {color: #0000ff}
-span.s7 {color: #0024b5}
-span.s8 {color: #606060}
+span.s5 {color: #1142e6}
+span.s6 {color: #0030f2}
+span.s7 {color: #0022f8}
+span.s8 {color: #0000bf}
+span.s9 {color: #606060}
 span.Apple-tab-span {white-space:pre}
 </style>
 </head>
 <body>
-<p class="p1"><span class="s1"><b>RedBase64</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>base64 encoder/decoder</b></p>
+<p class="p1"><span class="s1"><b>RedBase64</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>base64 encoding/decoding</b></p>
 <p class="p2"><br></p>
 <p class="p3"><span class="s2">see </span><span class="s3">http:</span><span class="s4">//en.wikipedia.org/wiki/Base64</span></p>
 <p class="p2"><br></p>
-<p class="p1">see also: <a href="RedLZW.html"><span class="s5">RedLZW</span></a><span class="s5"> <a href="RedHuffman.html"><span class="s6">RedHuffman</span></a></span></p>
+<p class="p4"><span class="s2">see also: <a href="RedLZW.html"><span class="s5">RedLZW</span></a></span><span class="s5"> <a href="RedHuffman.html"><span class="s6">RedHuffman</span></a></span> <a href="RedRLE.html"><span class="s7">RedRLE</span></a></p>
 <p class="p2"><br></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>*encode(string)</b></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>*decode(string)</b></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>&lt;&gt;map</b></p>
-<p class="p4"><br></p>
 <p class="p5"><br></p>
-<p class="p6">//--</p>
-<p class="p7"><span class="s2">a= </span>"Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure."<span class="s2">;</span></p>
-<p class="p8"><br></p>
-<p class="p9">b= <span class="s7">RedBase64</span>.encode(a);</p>
-<p class="p9"><span class="s7">RedBase64</span>.decode(b)</p>
-<p class="p8"><br></p>
-<p class="p9"><span class="s7">RedBase64</span>.encode(a.keep(a.size-0))</p>
-<p class="p9"><span class="s7">RedBase64</span>.encode(a.keep(a.size-1))</p>
-<p class="p9"><span class="s7">RedBase64</span>.encode(a.keep(a.size-2))</p>
-<p class="p9"><span class="s7">RedBase64</span>.encode(a.keep(a.size-3))</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s7">RedBase64</span><span class="s2">.encode(</span>"leasure."<span class="s2">)</span></p>
-<p class="p9"><span class="s7">RedBase64</span>.encode(<span class="s8">"easure."</span>)</p>
-<p class="p9"><span class="s7">RedBase64</span>.encode(<span class="s8">"asure."</span>)</p>
-<p class="p9"><span class="s7">RedBase64</span>.encode(<span class="s8">"sure."</span>)</p>
+<p class="p6"><br></p>
+<p class="p7">//--</p>
+<p class="p8"><span class="s2">a= </span>"Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure."<span class="s2">;</span></p>
+<p class="p9"><br></p>
+<p class="p10">b= <span class="s8">RedBase64</span>.encode(a);</p>
+<p class="p10"><span class="s8">RedBase64</span>.decode(b);</p>
+<p class="p9"><br></p>
+<p class="p10"><span class="s8">RedBase64</span>.encode(a.keep(a.size-0));</p>
+<p class="p10"><span class="s8">RedBase64</span>.encode(a.keep(a.size-1));</p>
+<p class="p10"><span class="s8">RedBase64</span>.encode(a.keep(a.size-2));</p>
+<p class="p10"><span class="s8">RedBase64</span>.encode(a.keep(a.size-3));</p>
+<p class="p9"><br></p>
+<p class="p10"><span class="s8">RedBase64</span>.encode(<span class="s9">"leasure."</span>);</p>
+<p class="p10"><span class="s8">RedBase64</span>.encode(<span class="s9">"easure."</span>);</p>
+<p class="p10"><span class="s8">RedBase64</span>.encode(<span class="s9">"asure."</span>);</p>
+<p class="p10"><span class="s8">RedBase64</span>.encode(<span class="s9">"sure."</span>);</p>
 </body>
 </html>

Modified: redSys/redTools/RedHuffman.html
===================================================================
--- redSys/redTools/RedHuffman.html	2009-12-29 14:24:31 UTC (rev 1304)
+++ redSys/redTools/RedHuffman.html	2009-12-29 19:21:26 UTC (rev 1305)
@@ -9,20 +9,21 @@
 <style type="text/css">
 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #7a3827}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #4f4236; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #723b2a; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d281b}
+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #653f2e}
+p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001fe8}
+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #4a4239; min-height: 12.0px}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #604030; min-height: 12.0px}
+p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
 p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0024b5}
+p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
+p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
 span.s1 {font: 18.0px Helvetica}
 span.s2 {color: #000000}
 span.s3 {text-decoration: underline ; color: #000000}
 span.s4 {text-decoration: underline}
-span.s5 {color: #0024b5}
+span.s5 {color: #0736dc}
+span.s6 {color: #0022f8}
+span.s7 {color: #0000bf}
 span.Apple-tab-span {white-space:pre}
 </style>
 </head>
@@ -32,7 +33,7 @@
 <p class="p1"><i>"to use fewer bits for more frequently occurring character"</i></p>
 <p class="p3"><span class="s2">see </span><span class="s3">http:</span><span class="s4">//www.cs.duke.edu/csed/poop/huff/info/</span></p>
 <p class="p2"><br></p>
-<p class="p4"><span class="s2">see also: <a href="RedBase64.html"><span class="s4">RedBase64</span></a> <a href="RedLZW.html"><span class="s4">RedLZW</span></a></span></p>
+<p class="p4"><span class="s2">see also: <a href="RedBase64.html"><span class="s4">RedBase64</span></a> <a href="RedLZW.html"><span class="s4">RedLZW</span></a></span><span class="s5"> <a href="RedRLE.html"><span class="s6">RedRLE</span></a></span></p>
 <p class="p2"><br></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>*encode(string)</b></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>encodes a string with ascii characters into a string with binary numbers.</p>
@@ -40,25 +41,41 @@
 <p class="p1"><b><span class="Apple-tab-span">	</span>*decode(string)</b></p>
 <p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>decodes a binary string into a string with ascii characters.</p>
 <p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>make sure you use the tree and dict generated by the encode method.</p>
+<p class="p1"><span class="Apple-tab-span">	</span><b>*binaryStringToBytes(string)</b></p>
+<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>convert a binary string into 8-bit bytes.</p>
+<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>up to 7 zeros might be padded automatically at the end.<span class="Apple-converted-space">  </span>the number of zeros is stored in <b>pad</b>.</p>
+<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>pad</b> is semi-private and used when converting back to bytes.</p>
+<p class="p1"><b><span class="Apple-tab-span">	</span>*bytesToBinaryString(array)</b></p>
+<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>convert an array of 8-bit bytes into a binary string.</p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>&lt;&gt;tree</b></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>multi-level array with characters as leaves.</p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>&lt;&gt;dict</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>look-up dictionary with characters and binary strings</p>
+<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>look-up dictionary with characters and binary strings.</p>
+<p class="p1"><span class="Apple-tab-span">	</span><b>&lt;&gt;pad</b></p>
+<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>semi-private counter for number of padded zeros.</p>
+<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set by <b>binaryStringToBytes</b> and read by <b>bytesToBinaryString</b>.</p>
 <p class="p5"><br></p>
 <p class="p6"><br></p>
 <p class="p7">//--</p>
-<p class="p8"><span class="s2">a= </span><span class="s5">RedHuffman</span><span class="s2">.encode(</span>"streets are stone stars are not"<span class="s2">);</span></p>
-<p class="p9"><span class="s5">RedHuffman</span>.decode(a);</p>
+<p class="p8"><span class="s2">a= </span><span class="s7">RedHuffman</span><span class="s2">.encode(</span>"streets are stone stars are not"<span class="s2">);</span></p>
+<p class="p9"><span class="s7">RedHuffman</span>.decode(a);</p>
 <p class="p10"><br></p>
-<p class="p8"><span class="s2">a= </span><span class="s5">RedHuffman</span><span class="s2">.encode(</span>"go go gophers"<span class="s2">)</span></p>
-<p class="p7"><span class="s5">RedHuffman</span><span class="s2">.tree<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//current tree</p>
-<p class="p7"><span class="s5">RedHuffman</span><span class="s2">.dict<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//current dict</p>
-<p class="p9"><span class="s5">RedHuffman</span>.decode(a)</p>
 <p class="p10"><br></p>
+<p class="p7">//--</p>
+<p class="p8"><span class="s2">a= </span><span class="s7">RedHuffman</span><span class="s2">.encode(</span>"go go gophers"<span class="s2">);</span></p>
+<p class="p7"><span class="s7">RedHuffman</span><span class="s2">.tree;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//current tree</p>
+<p class="p7"><span class="s7">RedHuffman</span><span class="s2">.dict;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//current dict</p>
+<p class="p9"><span class="s7">RedHuffman</span>.decode(a);</p>
+<p class="p10"><br></p>
+<p class="p10"><br></p>
+<p class="p7">//--</p>
 <p class="p8"><span class="s2">b= </span>"Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure."<span class="s2">;</span></p>
-<p class="p9">a= <span class="s5">RedHuffman</span>.encode(b)</p>
-<p class="p11">RedHuffman<span class="s2">.tree</span></p>
-<p class="p11">RedHuffman<span class="s2">.dict</span></p>
-<p class="p9"><span class="s5">RedHuffman</span>.decode(a)</p>
+<p class="p9">a= <span class="s7">RedHuffman</span>.encode(b);</p>
+<p class="p10"><br></p>
+<p class="p9">c= <span class="s7">RedHuffman</span>.binaryStringToBytes(a);</p>
+<p class="p7"><span class="s2">c.size/b.size;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//53% smaller than the original</p>
+<p class="p10"><br></p>
+<p class="p9">d= <span class="s7">RedHuffman</span>.bytesToBinaryString(c);</p>
+<p class="p9"><span class="s7">RedHuffman</span>.decode(d);</p>
 </body>
 </html>

Modified: redSys/redTools/RedHuffman.sc
===================================================================
--- redSys/redTools/RedHuffman.sc	2009-12-29 14:24:31 UTC (rev 1304)
+++ redSys/redTools/RedHuffman.sc	2009-12-29 19:21:26 UTC (rev 1305)
@@ -1,13 +1,10 @@
 //redFrik
 
-//--todo:
-//file read/write
-
 RedHuffman {
-	classvar <>tree, <>dict;
+	classvar <>tree, <>dict, <>pad;
 	
 	*encode {|str|
-		var out;
+		var out, n0, n1;
 		
 		//--build a forest of small trees
 		tree= [];
@@ -22,8 +19,8 @@
 		
 		//--collect greedy as a single big tree
 		while({tree.size>2}, {
-			var n0= this.prTakeMinimum;
-			var n1= this.prTakeMinimum;
+			n0= this.prTakeMinimum;
+			n1= this.prTakeMinimum;
 			tree= tree.add(([n0, n1] -> (n0.value+n1.value)));
 		});
 		
@@ -52,7 +49,24 @@
 		};
 		^out;
 	}
+	*binaryStringToBytes {|str|
+		pad= 0;
+		^str.clump(8).collect{|x|
+			while({x.size<8}, {
+				x= x++0;
+				pad= pad+1;
+			});
+			("2r"++x).interpret;
+		};
+	}
+	*bytesToBinaryString {|arr|
+		var str= arr.collect{|x|
+			x.asBinaryString(8);
+		}.join;
+		^str.copyRange(0, str.size-1-pad);
+	}
 	
+	
 	//--private
 	*prTakeMinimum {
 		var ii, nn, min= 2147483647;

Modified: redSys/redTools/RedLZW.html
===================================================================
--- redSys/redTools/RedLZW.html	2009-12-29 14:24:31 UTC (rev 1304)
+++ redSys/redTools/RedLZW.html	2009-12-29 19:21:26 UTC (rev 1305)
@@ -9,18 +9,21 @@
 <style type="text/css">
 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #9d281b}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902f20}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #843424}
+p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0030f2}
+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
+p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
+p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
+p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
 span.s1 {font: 18.0px Helvetica}
 span.s2 {color: #000000}
 span.s3 {text-decoration: underline ; color: #000000}
 span.s4 {text-decoration: underline}
-span.s5 {color: #0030f2}
-span.s6 {color: #0000ff}
-span.s7 {color: #062cb0}
+span.s5 {color: #1142e6}
+span.s6 {color: #0030f2}
+span.s7 {color: #0022f8}
+span.s8 {color: #0000bf}
 span.Apple-tab-span {white-space:pre}
 </style>
 </head>
@@ -30,38 +33,38 @@
 <p class="p3"><span class="s2">see </span><span class="s3">http:</span><span class="s4">//en.wikipedia.org/wiki/LZW</span></p>
 <p class="p3"><span class="s2">and </span><span class="s3">http:</span><span class="s4">//marknelson.us/1989/10/01/lzw-data-compression/</span></p>
 <p class="p2"><br></p>
-<p class="p1">see also: <a href="RedBase64.html"><span class="s5">RedBase64</span></a><span class="s5"> <a href="RedHuffman.html"><span class="s6">RedHuffman</span></a></span></p>
+<p class="p4"><span class="s2">see also: <a href="RedBase64.html"><span class="s5">RedBase64</span></a></span><span class="s5"> <a href="RedHuffman.html"><span class="s6">RedHuffman</span></a></span> <a href="RedRLE.html"><span class="s7">RedRLE</span></a></p>
 <p class="p2"><br></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>*compress(string)</b></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an array with integers</p>
 <p class="p1"><b><span class="Apple-tab-span">	</span>*decompress(array)</b></p>
 <p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array must be integers</p>
 <p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns a string</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">//--</p>
-<p class="p6"><span class="s2">a= </span>"TOBEORNOTTOBEORTOBEORNOT"<span class="s2">;</span></p>
-<p class="p7">a.size;</p>
-<p class="p7">b= <span class="s7">RedLZW</span>.compress(a);</p>
-<p class="p7">b.size;</p>
-<p class="p7">c= <span class="s7">RedLZW</span>.decompress(b);</p>
-<p class="p7">c.size;</p>
-<p class="p7">a==c;</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2">a= </span>"/WED/WE/WEE/WEB/WET"<span class="s2">;</span></p>
-<p class="p7">a.size;</p>
-<p class="p7">b= <span class="s7">RedLZW</span>.compress(a);</p>
-<p class="p7">b.size</p>
-<p class="p7">c= <span class="s7">RedLZW</span>.decompress(b);</p>
-<p class="p7">c.size</p>
-<p class="p7">a==c</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2">a= </span>"JOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEY"<span class="s2">;</span></p>
-<p class="p7">a.size;</p>
-<p class="p7">b= <span class="s7">RedLZW</span>.compress(a);</p>
-<p class="p7">b.size</p>
-<p class="p7">c= <span class="s7">RedLZW</span>.decompress(b);</p>
-<p class="p7">c.size</p>
-<p class="p7">a==c</p>
+<p class="p5"><br></p>
+<p class="p5"><br></p>
+<p class="p6">//--</p>
+<p class="p7"><span class="s2">a= </span>"TOBEORNOTTOBEORTOBEORNOT"<span class="s2">;</span></p>
+<p class="p8">a.size;</p>
+<p class="p8">b= <span class="s8">RedLZW</span>.compress(a);</p>
+<p class="p8">b.size;</p>
+<p class="p8">c= <span class="s8">RedLZW</span>.decompress(b);</p>
+<p class="p8">c.size;</p>
+<p class="p8">a==c;</p>
+<p class="p9"><br></p>
+<p class="p7"><span class="s2">a= </span>"/WED/WE/WEE/WEB/WET"<span class="s2">;</span></p>
+<p class="p8">a.size;</p>
+<p class="p8">b= <span class="s8">RedLZW</span>.compress(a);</p>
+<p class="p8">b.size;</p>
+<p class="p8">c= <span class="s8">RedLZW</span>.decompress(b);</p>
+<p class="p8">c.size;</p>
+<p class="p8">a==c;</p>
+<p class="p9"><br></p>
+<p class="p7"><span class="s2">a= </span>"JOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEY"<span class="s2">;</span></p>
+<p class="p8">a.size;</p>
+<p class="p8">b= <span class="s8">RedLZW</span>.compress(a);</p>
+<p class="p8">b.size;</p>
+<p class="p8">c= <span class="s8">RedLZW</span>.decompress(b);</p>
+<p class="p8">c.size;</p>
+<p class="p8">a==c;</p>
 </body>
 </html>

Added: redSys/redTools/RedRLE.html
===================================================================
--- redSys/redTools/RedRLE.html	                        (rev 0)
+++ redSys/redTools/RedRLE.html	2009-12-29 19:21:26 UTC (rev 1305)
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<title></title>
+<meta name="Generator" content="Cocoa HTML Writer">
+<meta name="CocoaVersion" content="949.54">
+<style type="text/css">
+p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
+p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #843424}
+p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0030f2}
+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad1d13}
+p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
+p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
+span.s1 {font: 18.0px Helvetica}
+span.s2 {color: #000000}
+span.s3 {text-decoration: underline ; color: #000000}
+span.s4 {text-decoration: underline}
+span.s5 {text-decoration: underline ; color: #002ce2}
+span.s6 {color: #355ccc}
+span.s7 {color: #0030f2}
+span.s8 {color: #2854d6}
+span.s9 {color: #0019ba}
+span.Apple-tab-span {white-space:pre}
+</style>
+</head>
+<body>
+<p class="p1"><span class="s1"><b>RedRLE</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>run-length encoding/decoding</b></p>
+<p class="p2"><br></p>
+<p class="p3"><span class="s2">see </span><span class="s3">http:</span><span class="s4">//en.wikipedia.org/wiki/Run-length_encoding</span></p>
+<p class="p2"><br></p>
+<p class="p4"><span class="s2">see also: <a href="RedBase64.html"><span class="s5">RedBase64</span></a></span><span class="s6"> <a href="RedHuffman.html"><span class="s7">RedHuffman</span></a></span><span class="s8"> <a href="RedLZW.html"><span class="s7">RedLZW</span></a></span></p>
+<p class="p2"><br></p>
+<p class="p1"><b><span class="Apple-tab-span">	</span>*encode(array)</b></p>
+<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an array with length, value pairs integers</p>
+<p class="p1"><b><span class="Apple-tab-span">	</span>*decode(array)</b></p>
+<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array must be length, value pairs integers</p>
+<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns a string</p>
+<p class="p5"><br></p>
+<p class="p5"><br></p>
+<p class="p6">//--</p>
+<p class="p7"><span class="s2">a= </span>"WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"<span class="s2">;</span></p>
+<p class="p8">a.size;</p>
+<p class="p8">b= <span class="s9">RedRLE</span>.encode(a);</p>
+<p class="p8">b.size;</p>
+<p class="p8">c= <span class="s9">RedRLE</span>.decode(b);</p>
+<p class="p8">c.size;</p>
+<p class="p8">a==c;</p>
+<p class="p5"><br></p>
+<p class="p7"><span class="s2">a= </span>"JOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEYJOEYNJOEYNJOEY"<span class="s2">;</span></p>
+<p class="p8">a.size;</p>
+<p class="p8">b= <span class="s9">RedRLE</span>.encode(a);</p>
+<p class="p6"><span class="s2">b.size;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//performs really bad with non repeating data</p>
+<p class="p8">c= <span class="s9">RedRLE</span>.decode(b);</p>
+<p class="p8">c.size;</p>
+<p class="p8">a==c;</p>
+</body>
+</html>

Added: redSys/redTools/RedRLE.sc
===================================================================
--- redSys/redTools/RedRLE.sc	                        (rev 0)
+++ redSys/redTools/RedRLE.sc	2009-12-29 19:21:26 UTC (rev 1305)
@@ -0,0 +1,28 @@
+//redFrik
+
+RedRLE {
+	*encode {|input|
+		var out= [], cnt, chr, i= 0;
+		while({i<input.size}, {
+			cnt= 1;
+			chr= input[i];
+			while({i+1<input.size and:{input[i+1]==chr}}, {
+				cnt= cnt+1;
+				i= i+1;
+			});
+			out= out++cnt++chr.ascii;
+			i= i+1;
+		});
+		^out;
+	}
+	*decode {|input|
+		var out= "", cnt, chr, i= 0;
+		while({i<input.size}, {
+			cnt= input[i];
+			chr= input[i+1].asAscii;
+			out= out++chr.dup(cnt).join;
+			i= i+2;
+		});
+		^out;
+	}
+}


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-dev/
search: https://listarc.bham.ac.uk/lists/sc-dev/search/