<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[143052] trunk/dports/science/gr-fosphor</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="https://trac.macports.org/changeset/143052">143052</a></dd>
<dt>Author</dt> <dd>michaelld@macports.org</dd>
<dt>Date</dt> <dd>2015-12-02 10:21:00 -0800 (Wed, 02 Dec 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>gr-fosphor:
+ update to 12c1a6d3 (20151112);
+ patch to temporarily add back in the PNG stuff removed in 12c1a6d3.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkdportssciencegrfosphorPortfile">trunk/dports/science/gr-fosphor/Portfile</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkdportssciencegrfosphorfilespatchaddpngdiff">trunk/dports/science/gr-fosphor/files/patch-add-png.diff</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkdportssciencegrfosphorPortfile"></a>
<div class="modfile"><h4>Modified: trunk/dports/science/gr-fosphor/Portfile (143051 => 143052)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/science/gr-fosphor/Portfile        2015-12-02 17:04:08 UTC (rev 143051)
+++ trunk/dports/science/gr-fosphor/Portfile        2015-12-02 18:21:00 UTC (rev 143052)
</span><span class="lines">@@ -22,10 +22,10 @@
</span><span class="cx"> long_description    ${description}  \
</span><span class="cx">     This port is kept up with the gr-fosphor GIT 'master' branch, which is typically updated weekly to monthly, providing compatibility with GNU Radio release 3.7 API: the gnuradio and gnuradio-devel ports.
</span><span class="cx"> 
</span><del>-set commit          4ae2f539df6ec247751cc1f2196652c30ec25efe
-version             20150828
-checksums           rmd160 6d3532e75b88acbb4d1e9d2a085d4f14eb4f42d2 \
-                    sha256 ea946ded50f90e05e54ce1d6d11824b24ab830ec3e10e9f040c0d0daaf283440
</del><ins>+set commit          12c1a6d3f8e2b4540e870cfa612e51727fa0b1b1
+version             20151112
+checksums           rmd160 23e3dca61301fd87583485ff0ae537bee0af77c8 \
+                    sha256 784b8f3ca9a725e9642228b019a9e7155c9cad304b1fe6ebf6a3f7865fb84f73
</ins><span class="cx"> 
</span><span class="cx"> distname            ${name}-${commit}
</span><span class="cx"> master_sites        http://cgit.osmocom.org/gr-fosphor/snapshot/
</span><span class="lines">@@ -58,6 +58,10 @@
</span><span class="cx"> 
</span><span class="cx"> patchfiles-append patch-cmake_Modules_FindGLFW3.cmake.diff
</span><span class="cx"> 
</span><ins>+# temporary patch to add back in the PNG stuff
+
+patchfiles-append patch-add-png.diff
+
</ins><span class="cx"> # remove top-level library path, such that internal libraries are used
</span><span class="cx"> # instead of any already-installed ones.
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkdportssciencegrfosphorfilespatchaddpngdiff"></a>
<div class="addfile"><h4>Added: trunk/dports/science/gr-fosphor/files/patch-add-png.diff (0 => 143052)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/science/gr-fosphor/files/patch-add-png.diff                                (rev 0)
+++ trunk/dports/science/gr-fosphor/files/patch-add-png.diff        2015-12-02 18:21:00 UTC (rev 143052)
</span><span class="lines">@@ -0,0 +1,139 @@
</span><ins>+--- lib/fosphor/Makefile.orig
++++ lib/fosphor/Makefile
+@@ -1,7 +1,7 @@
+ UNAME=$(shell uname)
+ CC=gcc
+-CFLAGS=-Wall -Werror -O2 `pkg-config freetype2 glfw3 --cflags` -g
+-LDLIBS=`pkg-config freetype2 glfw3 --libs` -lm
++CFLAGS=-Wall -Werror -O2 `pkg-config freetype2 glfw3 libpng --cflags` -g
++LDLIBS=`pkg-config freetype2 glfw3 libpng --libs` -lm
+ ifneq ($(AMDAPPSDKROOT), )
+ CFLAGS+=-I$(AMDAPPSDKROOT)/include
+ endif
+--- lib/fosphor/gl_cmap_gen.c.orig
++++ lib/fosphor/gl_cmap_gen.c
+@@ -27,10 +27,16 @@
+  *  \brief OpenGL color map generators
+  */

++#include &lt;errno.h&gt;
+ #include &lt;stdint.h&gt;
++#include &lt;stdlib.h&gt;
++#include &lt;string.h&gt;
+ #include &lt;math.h&gt;

++#include &lt;png.h&gt;
++
+ #include &quot;gl_cmap_gen.h&quot;
++#include &quot;resource.h&quot;


+ static void
+@@ -128,6 +134,33 @@ _set_rgba_from_hsv(uint32_t *rgba, float h, float s, float v)
+ }


++static uint32_t
++_rgba_interpolate(uint32_t *rgba, int sz, int p, int N)
++{
++        int pos_i = (p * (sz-1)) / (N-1);
++        int pos_f = (p * (sz-1)) - (pos_i * (N-1));
++        uint32_t vl, vh, vf = 0;
++        int i;
++
++        if (pos_f == 0)
++                return rgba[pos_i];
++
++        vl = rgba[pos_i];
++        vh = rgba[pos_i+1];
++
++        for (i=0; i&lt;4; i++)
++        {
++                uint32_t nv =
++                        ((vl &gt;&gt; (8 * i)) &amp; 0xff) * ((N-1) - pos_f) +
++                        ((vh &gt;&gt; (8 * i)) &amp; 0xff) * pos_f;
++
++                vf |= ((nv / (N-1)) &amp; 0xff) &lt;&lt; (8 * i);
++        }
++
++        return vf;
++}
++
++
+ int
+ fosphor_gl_cmap_histogram(uint32_t *rgba, int N, void *arg)
+ {
+@@ -179,4 +212,63 @@ fosphor_gl_cmap_waterfall(uint32_t *rgba, int N, void *arg)
+         return 0;
+ }

++int
++fosphor_gl_cmap_png(uint32_t *rgba, int N, void *arg)
++{
++        const char *rsrc_name = arg;
++        png_image img;
++        const void *png_data = NULL;
++        void *png_rgba = NULL;
++        int png_len, i, rv;
++
++        /* Grab the file */
++        png_data = resource_get(rsrc_name, &amp;png_len);
++        if (!png_data)
++                return -ENOENT;
++
++        /* Read PNG */
++        memset(&amp;img, 0x00, sizeof(img));
++        img.version = PNG_IMAGE_VERSION;
++
++        rv = png_image_begin_read_from_memory(&amp;img, png_data, png_len);
++        if (!rv) {
++                rv = -EINVAL;
++                goto error;
++        }
++
++        img.format = PNG_FORMAT_RGBA;
++
++        png_rgba = malloc(sizeof(uint32_t) * img.width * img.height);
++        if (!png_rgba) {
++                rv = -ENOMEM;
++                goto error;
++        }
++
++        rv = png_image_finish_read(&amp;img,
++                NULL,                                /* background */
++                png_rgba,                        /* buffer */
++                sizeof(uint32_t) * img.width,        /* row_stride */
++                NULL                                /* colormap */
++        );
++        if (!rv) {
++                rv = -EINVAL;
++                goto error;
++        }
++
++        /* Interpolate the PNG to the requested linear scale */
++        for (i=0; i&lt;N; i++)
++                rgba[i] = _rgba_interpolate(png_rgba, img.width, i, N);
++
++        /* Done */
++        rv = 0;
++
++error:
++        free(png_rgba);
++
++        if (png_data)
++                resource_put(png_data);
++
++        return rv;
++}
++
+ /*! @} */
+--- lib/fosphor/gl_cmap_gen.h.orig
++++ lib/fosphor/gl_cmap_gen.h
+@@ -34,6 +34,7 @@

+ int fosphor_gl_cmap_histogram(uint32_t *rgba, int N, void *arg);
+ int fosphor_gl_cmap_waterfall(uint32_t *rgba, int N, void *arg);
++int fosphor_gl_cmap_png(uint32_t *rgba, int N, void *rsrc_name);

+ /*! @} */

</ins></span></pre>
</div>
</div>

</body>
</html>