<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rubinium.org &#187; Code</title>
	<atom:link href="http://rubinium.org/blog/archives/category/code/feed/" rel="self" type="application/rss+xml" />
	<link>http://rubinium.org/blog</link>
	<description>The Element of Aron and Heather</description>
	<lastBuildDate>Fri, 25 Mar 2011 14:04:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Freshmeat.net Finally Updates Site</title>
		<link>http://rubinium.org/blog/archives/2009/03/15/freshmeatnet-finally-updates-site/</link>
		<comments>http://rubinium.org/blog/archives/2009/03/15/freshmeatnet-finally-updates-site/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 16:25:20 +0000</pubDate>
		<dc:creator>A R Baboon</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Graphic Design]]></category>
		<category><![CDATA[freshmeat]]></category>
		<category><![CDATA[osdn]]></category>
		<category><![CDATA[redesign]]></category>
		<category><![CDATA[websites]]></category>

		<guid isPermaLink="false">http://rubinium.org/blog/?p=227</guid>
		<description><![CDATA[Freshmeat.net has updated its site after many years of stagnation. It is such a shame because they were very well positioned to have really good marketshare any they mostly sat on their laurels. For example they should have been on top of the code search business. Maybe they will take over the extension/addon business from [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_226" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-226" title="Freshmeat 3.0 Screen Cap" src="http://rubinium.org/blog/wp-content/uploads/2009/03/freshmeat_ss.png" alt="Freshmeat 3.0 Screen Cap" width="480" height="391" /><p class="wp-caption-text">Freshmeat 3.0 Screen Cap</p></div>
<p>Freshmeat.net has updated its site after many years of stagnation. It is such a shame because they were very well positioned to have really good marketshare any they mostly sat on their laurels. For example they should have been on top of the code search business. Maybe they will take over the extension/addon business from dysfunctional services like Addons Mozilla Org (AMO) [shakes fist]. AMO is a very well designed site/service with a crappy moderation process behind it (and I have personal experience).</p>
<p>The old design was an example of good design at the time with a not overcrowded feeling and convenient but mellow quick link icons. I In any case, my biggest dislike with the old site was the search. It may have been ok in a pre-Google world but if you cannot beat Googles search you need to embed it.</p>
<div id="attachment_228" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-228" title="Freshmeat 3.0 Design Close-up" src="http://rubinium.org/blog/wp-content/uploads/2009/03/freshmeat_ss_2.png" alt="Freshmeat 3.0 Design Close-up" width="480" height="434" /><p class="wp-caption-text">Freshmeat 3.0 Design Close-up</p></div>
<p>In this new design the listings are nice and compact. Textual buttons appear on mouse over to remove some clutter (I kind of liked the icons as opposed to text for repetition). Unfortunately they have removed a quick way to visit the homepage or full change log. They replaced some of the info effectively with a more modern tag construct but other info is missing. The search is much better but the language of a listing does not display in the results. The language was pretty important to me when browsing for a library. I have not seen if there is a good set of syntax for the search. Google codesearch like <code>lang:c license:MIT</code> syntax would be nice.</p>
]]></content:encoded>
			<wfw:commentRss>http://rubinium.org/blog/archives/2009/03/15/freshmeatnet-finally-updates-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gtk Pie Chart Widget</title>
		<link>http://rubinium.org/blog/archives/2008/06/10/gtk-pie-chart-widget/</link>
		<comments>http://rubinium.org/blog/archives/2008/06/10/gtk-pie-chart-widget/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 00:03:47 +0000</pubDate>
		<dc:creator>A R Baboon</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[cairo]]></category>
		<category><![CDATA[chart]]></category>
		<category><![CDATA[graph]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[pie]]></category>
		<category><![CDATA[pie chart]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://rubinium.org/blog/?p=181</guid>
		<description><![CDATA[I needed a pie chart widget for a project so I made one. I used cairo for rendering of course. This API has add_segment and remove_segment functions but I will change that to take a tree model. There are almost no options or style at this point which would obviously be important but I have [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://rubinium.org/blog/wp-content/uploads/2008/06/gtk_pie_chart_widget.jpg" title="Gtk Pie Chart Widget" /></p>
<p>I needed a pie chart widget for a project so I made one. I used <a href="http://cairographics.org">cairo</a> for rendering of course. This API has add_segment and remove_segment functions but I will change that to take a tree model. There are almost no options or style at this point which would obviously be important but I have got the basic outline down I think. I am considering writing an entire charting widget set. There are several packages focused on plotting but they are not presentation oriented.</p>
<p>Code Follows:</p>
<p><span id="more-181"></span></p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/*
 * Gtk Pie Chart Widget
 * Copyright (C) 2008 Aron Rubin
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; version 2
 * of the License.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 */</span>
&nbsp;
<span style="color: #339933;">#ifndef GTK_PIE_CHART_H_INCLUDED</span>
<span style="color: #339933;">#define GTK_PIE_CHART_H_INCLUDED</span>
&nbsp;
<span style="color: #339933;">#include &lt;gdk/gdk.h&gt;</span>
<span style="color: #339933;">#include &lt;gtk/gtkwidget.h&gt;</span>
&nbsp;
G_BEGIN_DECLS
&nbsp;
<span style="color: #339933;">#define GTK_PIE_CHART(obj)	   GTK_CHECK_CAST( obj, gtk_pie_chart_get_type(), GtkPieChart )</span>
<span style="color: #339933;">#define GTK_PIE_CHART_CLASS(klass) GTK_CHECK_CLASS_CAST( klass, gtk_pie_chart_get_type(), GtkPieChartClass )</span>
<span style="color: #339933;">#define GTK_IS_PIE_CHART(obj)	   GTK_CHECK_TYPE( obj, gtk_pie_chart_get_type() )</span>
&nbsp;
<span style="color: #993333;">typedef</span> <span style="color: #993333;">struct</span> GtkPieChart GtkPieChart<span style="color: #339933;">;</span>
<span style="color: #993333;">typedef</span> <span style="color: #993333;">struct</span> GtkPieChartClass GtkPieChartClass<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">typedef</span> <span style="color: #993333;">struct</span> GtkPieSegment <span style="color: #009900;">&#123;</span>
  <span style="color: #993333;">float</span> sweep<span style="color: #339933;">;</span>
  <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>name<span style="color: #339933;">;</span>
  <span style="color: #993333;">float</span> rgba<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> GtkPieSegment<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">struct</span> GtkPieChart <span style="color: #009900;">&#123;</span>
  GtkWidget base<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #993333;">int</span> width<span style="color: #339933;">;</span>
  <span style="color: #993333;">int</span> height<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #993333;">float</span> start_angle<span style="color: #339933;">;</span>
  <span style="color: #993333;">float</span> sweep_factor<span style="color: #339933;">;</span>
  <span style="color: #993333;">float</span> radius<span style="color: #339933;">;</span>
&nbsp;
  GList <span style="color: #339933;">*</span>segments<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">struct</span> GtkPieChartClass <span style="color: #009900;">&#123;</span>
  GtkWidgetClass parent_class<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
GtkType gtk_pie_chart_get_type<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
GtkWidget <span style="color: #339933;">*</span>gtk_pie_chart_new<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
guint gtk_pie_chart_add_segment<span style="color: #009900;">&#40;</span> GtkPieChart <span style="color: #339933;">*</span>pie<span style="color: #339933;">,</span> <span style="color: #993333;">float</span> sweep<span style="color: #339933;">,</span> <span style="color: #993333;">const</span> gchar <span style="color: #339933;">*</span>name<span style="color: #339933;">,</span> <span style="color: #993333;">float</span> <span style="color: #339933;">*</span>rgba <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">void</span> gtk_pie_chart_remove_segment<span style="color: #009900;">&#40;</span> GtkPieChart <span style="color: #339933;">*</span>pie<span style="color: #339933;">,</span> guint id <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
G_END_DECLS
&nbsp;
<span style="color: #339933;">#endif</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/*
 * Gtk Pie Chart Widget
 * Copyright (C) 2008 Aron Rubin
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; version 2
 * of the License.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 */</span>
&nbsp;
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include &lt;string.h&gt;</span>
<span style="color: #339933;">#include &lt;math.h&gt;</span>
<span style="color: #339933;">#include &lt;glib.h&gt;</span>
<span style="color: #339933;">#include &lt;glib-object.h&gt;</span>
<span style="color: #339933;">#include &lt;gtk/gtkwidget.h&gt;</span>
<span style="color: #339933;">#include &lt;cairo.h&gt;</span>
<span style="color: #339933;">#include &quot;gtk_pie_chart.h&quot;</span>
&nbsp;
<span style="color: #339933;">#define UNUSED __attribute__ ((unused))</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Properties</span>
<span style="color: #000000; font-weight: bold;">enum</span> <span style="color: #009900;">&#123;</span>
  PROP_0<span style="color: #339933;">,</span>
  PROP_START_ANGLE<span style="color: #339933;">,</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">static</span> GtkWidgetClass <span style="color: #339933;">*</span>parent_class <span style="color: #339933;">=</span> NULL<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// object signals</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_class_init<span style="color: #009900;">&#40;</span> GtkPieChartClass <span style="color: #339933;">*</span>class <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_init<span style="color: #009900;">&#40;</span> GtkPieChart <span style="color: #339933;">*</span>pie <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_finalize<span style="color: #009900;">&#40;</span> GObject <span style="color: #339933;">*</span>pie <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_set_property<span style="color: #009900;">&#40;</span> GObject <span style="color: #339933;">*</span>object<span style="color: #339933;">,</span> guint prop_id<span style="color: #339933;">,</span> <span style="color: #993333;">const</span> GValue <span style="color: #339933;">*</span>value<span style="color: #339933;">,</span> GParamSpec <span style="color: #339933;">*</span>pspec <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_get_property<span style="color: #009900;">&#40;</span> GObject <span style="color: #339933;">*</span>object<span style="color: #339933;">,</span> guint prop_id<span style="color: #339933;">,</span> GValue <span style="color: #339933;">*</span>value<span style="color: #339933;">,</span> GParamSpec <span style="color: #339933;">*</span>pspec <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// widget signals</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_realize<span style="color: #009900;">&#40;</span> GtkWidget <span style="color: #339933;">*</span>pie <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_size_allocate<span style="color: #009900;">&#40;</span> GtkWidget <span style="color: #339933;">*</span>pie<span style="color: #339933;">,</span> GtkAllocation <span style="color: #339933;">*</span>allocation <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> gboolean gtk_pie_chart_expose<span style="color: #009900;">&#40;</span> GtkWidget <span style="color: #339933;">*</span>pie<span style="color: #339933;">,</span> GdkEventExpose <span style="color: #339933;">*</span>event <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// internals</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/**********************************************\
&nbsp;
         Section: GtkPieChart Methods
&nbsp;
\**********************************************/</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* ===========================================
&nbsp;
      Group: GtkPieChart Core Object Methods
&nbsp;
   =========================================== */</span>
&nbsp;
GtkType gtk_pie_chart_get_type<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #993333;">static</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> gtk_pie_chart_type <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span>gtk_pie_chart_type <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    GtkTypeInfo gtk_pie_chart_info <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #ff0000;">&quot;GtkPieChart&quot;</span><span style="color: #339933;">,</span>
      <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>GtkPieChart<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
      <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>GtkPieChartClass<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
      <span style="color: #009900;">&#40;</span>GtkClassInitFunc<span style="color: #009900;">&#41;</span>gtk_pie_chart_class_init<span style="color: #339933;">,</span>
      <span style="color: #009900;">&#40;</span>GtkObjectInitFunc<span style="color: #009900;">&#41;</span>gtk_pie_chart_init<span style="color: #339933;">,</span>
      NULL<span style="color: #339933;">,</span> NULL<span style="color: #339933;">,</span> NULL
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    gtk_pie_chart_type <span style="color: #339933;">=</span> gtk_type_unique<span style="color: #009900;">&#40;</span> GTK_TYPE_WIDGET<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>gtk_pie_chart_info <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span> gtk_pie_chart_type <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
GtkWidget <span style="color: #339933;">*</span>gtk_pie_chart_new<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  GtkPieChart <span style="color: #339933;">*</span>pie<span style="color: #339933;">;</span>
  GtkWidget <span style="color: #339933;">*</span>widget<span style="color: #339933;">;</span>
&nbsp;
  pie <span style="color: #339933;">=</span> gtk_type_new<span style="color: #009900;">&#40;</span> gtk_pie_chart_get_type<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  widget <span style="color: #339933;">=</span> GTK_WIDGET<span style="color: #009900;">&#40;</span>pie<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  widget<span style="color: #339933;">-&gt;</span>style <span style="color: #339933;">=</span> gtk_style_new<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> widget<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_class_init<span style="color: #009900;">&#40;</span> GtkPieChartClass <span style="color: #339933;">*</span>class <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  GObjectClass <span style="color: #339933;">*</span>obj_class<span style="color: #339933;">;</span>
  GtkWidgetClass <span style="color: #339933;">*</span>wid_class<span style="color: #339933;">;</span>
&nbsp;
  obj_class <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>GObjectClass <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>class<span style="color: #339933;">;</span>
  wid_class <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>GtkWidgetClass <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>class<span style="color: #339933;">;</span>
  parent_class <span style="color: #339933;">=</span> gtk_type_class<span style="color: #009900;">&#40;</span> gtk_widget_get_type<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  obj_class<span style="color: #339933;">-&gt;</span>finalize <span style="color: #339933;">=</span> gtk_pie_chart_finalize<span style="color: #339933;">;</span>
  obj_class<span style="color: #339933;">-&gt;</span>set_property <span style="color: #339933;">=</span> gtk_pie_chart_set_property<span style="color: #339933;">;</span>
  obj_class<span style="color: #339933;">-&gt;</span>get_property <span style="color: #339933;">=</span> gtk_pie_chart_get_property<span style="color: #339933;">;</span>
&nbsp;
  wid_class<span style="color: #339933;">-&gt;</span>realize <span style="color: #339933;">=</span> gtk_pie_chart_realize<span style="color: #339933;">;</span>
  wid_class<span style="color: #339933;">-&gt;</span>size_allocate <span style="color: #339933;">=</span> gtk_pie_chart_size_allocate<span style="color: #339933;">;</span>
  wid_class<span style="color: #339933;">-&gt;</span>expose_event <span style="color: #339933;">=</span> gtk_pie_chart_expose<span style="color: #339933;">;</span>
&nbsp;
  g_object_class_install_property<span style="color: #009900;">&#40;</span> obj_class<span style="color: #339933;">,</span> PROP_START_ANGLE<span style="color: #339933;">,</span>
                                  g_param_spec_double<span style="color: #009900;">&#40;</span> <span style="color: #ff0000;">&quot;start_angle&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Start Angle&quot;</span><span style="color: #339933;">,</span>
						       <span style="color: #ff0000;">&quot;The angle of the leading edge of the first segment.&quot;</span><span style="color: #339933;">,</span>
						       <span style="color: #339933;">-</span>M_PI<span style="color: #339933;">,</span> M_PI<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> G_PARAM_READWRITE <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_init<span style="color: #009900;">&#40;</span> GtkPieChart <span style="color: #339933;">*</span>pie <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_finalize<span style="color: #009900;">&#40;</span> GObject <span style="color: #339933;">*</span>pie <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// GObject Methods</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_set_property<span style="color: #009900;">&#40;</span> GObject <span style="color: #339933;">*</span>object<span style="color: #339933;">,</span> guint prop_id<span style="color: #339933;">,</span> <span style="color: #993333;">const</span> GValue <span style="color: #339933;">*</span>value<span style="color: #339933;">,</span> GParamSpec <span style="color: #339933;">*</span>pspec UNUSED <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  GtkPieChart <span style="color: #339933;">*</span>pie<span style="color: #339933;">;</span>
&nbsp;
  pie <span style="color: #339933;">=</span> GTK_PIE_CHART<span style="color: #009900;">&#40;</span>object<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span> prop_id <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">case</span> PROP_START_ANGLE<span style="color: #339933;">:</span> pie<span style="color: #339933;">-&gt;</span>start_angle <span style="color: #339933;">=</span> g_value_get_double<span style="color: #009900;">&#40;</span> value <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_get_property<span style="color: #009900;">&#40;</span> GObject <span style="color: #339933;">*</span>object<span style="color: #339933;">,</span> guint prop_id<span style="color: #339933;">,</span> GValue <span style="color: #339933;">*</span>value<span style="color: #339933;">,</span> GParamSpec <span style="color: #339933;">*</span>pspec <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  GtkPieChart <span style="color: #339933;">*</span>pie<span style="color: #339933;">;</span>
&nbsp;
  pie <span style="color: #339933;">=</span> GTK_PIE_CHART<span style="color: #009900;">&#40;</span>object<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span> prop_id <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">case</span> PROP_START_ANGLE<span style="color: #339933;">:</span> g_value_set_int<span style="color: #009900;">&#40;</span> value<span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>start_angle <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
    G_OBJECT_WARN_INVALID_PROPERTY_ID<span style="color: #009900;">&#40;</span> object<span style="color: #339933;">,</span> prop_id<span style="color: #339933;">,</span> pspec <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_set_size<span style="color: #009900;">&#40;</span> GtkPieChart <span style="color: #339933;">*</span>pie<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> width<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> height <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  pie<span style="color: #339933;">-&gt;</span>width <span style="color: #339933;">=</span> width<span style="color: #339933;">;</span>
  pie<span style="color: #339933;">-&gt;</span>height <span style="color: #339933;">=</span> height<span style="color: #339933;">;</span>
&nbsp;
  pie<span style="color: #339933;">-&gt;</span>radius <span style="color: #339933;">=</span> fmin<span style="color: #009900;">&#40;</span> width<span style="color: #339933;">,</span> height <span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color:#800080;">0.33</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_update_segments<span style="color: #009900;">&#40;</span> GtkPieChart <span style="color: #339933;">*</span>pie <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #993333;">float</span> total_sweep <span style="color: #339933;">=</span> <span style="color:#800080;">0.0</span><span style="color: #339933;">;</span>
  gboolean divide_remaining <span style="color: #339933;">=</span> FALSE<span style="color: #339933;">;</span>
  GList <span style="color: #339933;">*</span>list<span style="color: #339933;">;</span>
&nbsp;
  g_return_if_fail<span style="color: #009900;">&#40;</span> GTK_IS_PIE_CHART<span style="color: #009900;">&#40;</span>pie<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  list <span style="color: #339933;">=</span> pie<span style="color: #339933;">-&gt;</span>segments<span style="color: #339933;">;</span>
  <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span> list <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>GtkPieSegment <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>list<span style="color: #339933;">-&gt;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span>sweep <span style="color: #339933;">&gt;</span> <span style="color:#800080;">0.0</span> <span style="color: #009900;">&#41;</span>
      total_sweep <span style="color: #339933;">+=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>GtkPieSegment <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>list<span style="color: #339933;">-&gt;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span>sweep<span style="color: #339933;">;</span>
    <span style="color: #b1b100;">else</span>
      divide_remaining <span style="color: #339933;">=</span> TRUE<span style="color: #339933;">;</span>
    list <span style="color: #339933;">=</span> list<span style="color: #339933;">-&gt;</span>next<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> total_sweep <span style="color: #339933;">&gt;</span> <span style="color:#800080;">0.0</span> <span style="color: #009900;">&#41;</span>
    pie<span style="color: #339933;">-&gt;</span>sweep_factor <span style="color: #339933;">=</span> <span style="color:#800080;">100.0</span><span style="color: #339933;">/</span>total_sweep<span style="color: #339933;">;</span>
  <span style="color: #b1b100;">else</span>
    pie<span style="color: #339933;">-&gt;</span>sweep_factor <span style="color: #339933;">=</span> <span style="color:#800080;">1.0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
guint gtk_pie_chart_add_segment<span style="color: #009900;">&#40;</span> GtkPieChart <span style="color: #339933;">*</span>pie<span style="color: #339933;">,</span> <span style="color: #993333;">float</span> sweep<span style="color: #339933;">,</span> <span style="color: #993333;">const</span> gchar <span style="color: #339933;">*</span>name<span style="color: #339933;">,</span> <span style="color: #993333;">float</span> <span style="color: #339933;">*</span>rgba <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  GtkPieSegment <span style="color: #339933;">*</span>segment<span style="color: #339933;">;</span>
&nbsp;
  g_return_val_if_fail<span style="color: #009900;">&#40;</span> GTK_IS_PIE_CHART<span style="color: #009900;">&#40;</span>pie<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  segment <span style="color: #339933;">=</span> g_new0<span style="color: #009900;">&#40;</span> GtkPieSegment<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  g_return_val_if_fail<span style="color: #009900;">&#40;</span> segment<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  segment<span style="color: #339933;">-&gt;</span>sweep <span style="color: #339933;">=</span> sweep<span style="color: #339933;">;</span>
  segment<span style="color: #339933;">-&gt;</span>name <span style="color: #339933;">=</span> g_strdup<span style="color: #009900;">&#40;</span> name <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> rgba <span style="color: #009900;">&#41;</span>
    memcpy<span style="color: #009900;">&#40;</span> segment<span style="color: #339933;">-&gt;</span>rgba<span style="color: #339933;">,</span> rgba<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">float</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #0000dd;">4</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  pie<span style="color: #339933;">-&gt;</span>segments <span style="color: #339933;">=</span> g_list_append<span style="color: #009900;">&#40;</span> pie<span style="color: #339933;">-&gt;</span>segments<span style="color: #339933;">,</span> segment <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  gtk_pie_chart_update_segments<span style="color: #009900;">&#40;</span> pie <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  gtk_widget_queue_draw<span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>GtkWidget <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>pie <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span> g_list_length<span style="color: #009900;">&#40;</span> pie<span style="color: #339933;">-&gt;</span>segments <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> gtk_pie_chart_remove_segment<span style="color: #009900;">&#40;</span> GtkPieChart <span style="color: #339933;">*</span>pie<span style="color: #339933;">,</span> guint id <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  GtkPieSegment <span style="color: #339933;">*</span>segment<span style="color: #339933;">;</span>
  GList <span style="color: #339933;">*</span>segment_item<span style="color: #339933;">;</span>
&nbsp;
  g_return_if_fail<span style="color: #009900;">&#40;</span> GTK_IS_PIE_CHART<span style="color: #009900;">&#40;</span>pie<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  segment_item <span style="color: #339933;">=</span> g_list_nth<span style="color: #009900;">&#40;</span> pie<span style="color: #339933;">-&gt;</span>segments<span style="color: #339933;">,</span> id <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  g_return_if_fail<span style="color: #009900;">&#40;</span> segment_item <span style="color: #339933;">&amp;&amp;</span> segment_item<span style="color: #339933;">-&gt;</span>data <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  segment <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>GtkPieSegment <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>segment_item<span style="color: #339933;">-&gt;</span>data<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> segment<span style="color: #339933;">-&gt;</span>name <span style="color: #009900;">&#41;</span>
    g_free<span style="color: #009900;">&#40;</span> segment<span style="color: #339933;">-&gt;</span>name <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  pie<span style="color: #339933;">-&gt;</span>segments <span style="color: #339933;">=</span> g_list_delete_link<span style="color: #009900;">&#40;</span> pie<span style="color: #339933;">-&gt;</span>segments<span style="color: #339933;">,</span> segment_item <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  g_free<span style="color: #009900;">&#40;</span> segment <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  gtk_widget_queue_draw<span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>GtkWidget <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>pie <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_realize<span style="color: #009900;">&#40;</span> GtkWidget <span style="color: #339933;">*</span>widget <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  GtkPieChart <span style="color: #339933;">*</span>pie<span style="color: #339933;">;</span>
  GdkWindowAttr attributes<span style="color: #339933;">;</span>
  <span style="color: #993333;">int</span> attributes_mask <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
  g_return_if_fail<span style="color: #009900;">&#40;</span> widget <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  g_return_if_fail<span style="color: #009900;">&#40;</span> GTK_IS_PIE_CHART<span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  pie <span style="color: #339933;">=</span> GTK_PIE_CHART<span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  GTK_WIDGET_SET_FLAGS<span style="color: #009900;">&#40;</span> widget<span style="color: #339933;">,</span> GTK_REALIZED <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  attributes.<span style="color: #202020;">x</span> <span style="color: #339933;">=</span> widget<span style="color: #339933;">-&gt;</span>allocation.<span style="color: #202020;">x</span><span style="color: #339933;">;</span>
  attributes.<span style="color: #202020;">y</span> <span style="color: #339933;">=</span> widget<span style="color: #339933;">-&gt;</span>allocation.<span style="color: #202020;">y</span><span style="color: #339933;">;</span>
  attributes.<span style="color: #202020;">width</span> <span style="color: #339933;">=</span> widget<span style="color: #339933;">-&gt;</span>allocation.<span style="color: #202020;">width</span><span style="color: #339933;">;</span>
  attributes.<span style="color: #202020;">height</span> <span style="color: #339933;">=</span> widget<span style="color: #339933;">-&gt;</span>allocation.<span style="color: #202020;">height</span><span style="color: #339933;">;</span>
&nbsp;
  attributes.<span style="color: #202020;">wclass</span> <span style="color: #339933;">=</span> GDK_INPUT_OUTPUT<span style="color: #339933;">;</span>
  attributes.<span style="color: #202020;">window_type</span> <span style="color: #339933;">=</span> GDK_WINDOW_CHILD<span style="color: #339933;">;</span>
  attributes.<span style="color: #202020;">event_mask</span> <span style="color: #339933;">=</span> gtk_widget_get_events<span style="color: #009900;">&#40;</span> widget <span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> GDK_EXPOSURE_MASK<span style="color: #339933;">;</span>
  attributes.<span style="color: #202020;">visual</span> <span style="color: #339933;">=</span> gtk_widget_get_visual<span style="color: #009900;">&#40;</span> widget <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  attributes.<span style="color: #202020;">colormap</span> <span style="color: #339933;">=</span> gtk_widget_get_colormap<span style="color: #009900;">&#40;</span> widget <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  attributes_mask <span style="color: #339933;">=</span> GDK_WA_X <span style="color: #339933;">|</span> GDK_WA_Y <span style="color: #339933;">|</span> GDK_WA_VISUAL <span style="color: #339933;">|</span> GDK_WA_COLORMAP<span style="color: #339933;">;</span>
  widget<span style="color: #339933;">-&gt;</span>window <span style="color: #339933;">=</span> gdk_window_new<span style="color: #009900;">&#40;</span> widget<span style="color: #339933;">-&gt;</span>parent<span style="color: #339933;">-&gt;</span>window<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>attributes<span style="color: #339933;">,</span> attributes_mask <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  widget<span style="color: #339933;">-&gt;</span>style <span style="color: #339933;">=</span> gtk_style_attach<span style="color: #009900;">&#40;</span> widget<span style="color: #339933;">-&gt;</span>style<span style="color: #339933;">,</span> widget<span style="color: #339933;">-&gt;</span>window <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  gdk_window_set_user_data<span style="color: #009900;">&#40;</span> widget<span style="color: #339933;">-&gt;</span>window<span style="color: #339933;">,</span> widget <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  gdk_window_set_background<span style="color: #009900;">&#40;</span> widget<span style="color: #339933;">-&gt;</span>window<span style="color: #339933;">,</span> widget<span style="color: #339933;">-&gt;</span>style<span style="color: #339933;">-&gt;</span>bg <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  gtk_pie_chart_set_size<span style="color: #009900;">&#40;</span> pie<span style="color: #339933;">,</span> widget<span style="color: #339933;">-&gt;</span>allocation.<span style="color: #202020;">width</span><span style="color: #339933;">,</span> widget<span style="color: #339933;">-&gt;</span>allocation.<span style="color: #202020;">height</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> gtk_pie_chart_size_allocate<span style="color: #009900;">&#40;</span> GtkWidget <span style="color: #339933;">*</span>widget<span style="color: #339933;">,</span> GtkAllocation <span style="color: #339933;">*</span>allocation <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  GtkPieChart <span style="color: #339933;">*</span>pie<span style="color: #339933;">;</span>
&nbsp;
  g_return_if_fail<span style="color: #009900;">&#40;</span> widget <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  g_return_if_fail<span style="color: #009900;">&#40;</span> GTK_IS_PIE_CHART<span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  g_return_if_fail<span style="color: #009900;">&#40;</span> allocation <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  pie <span style="color: #339933;">=</span> GTK_PIE_CHART<span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  widget<span style="color: #339933;">-&gt;</span>allocation <span style="color: #339933;">=</span> <span style="color: #339933;">*</span>allocation<span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> GTK_WIDGET_REALIZED<span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
    gdk_window_move_resize<span style="color: #009900;">&#40;</span> widget<span style="color: #339933;">-&gt;</span>window<span style="color: #339933;">,</span> allocation<span style="color: #339933;">-&gt;</span>x<span style="color: #339933;">,</span> allocation<span style="color: #339933;">-&gt;</span>y<span style="color: #339933;">,</span> allocation<span style="color: #339933;">-&gt;</span>width<span style="color: #339933;">,</span> allocation<span style="color: #339933;">-&gt;</span>height <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  gtk_pie_chart_set_size<span style="color: #009900;">&#40;</span> pie<span style="color: #339933;">,</span> widget<span style="color: #339933;">-&gt;</span>allocation.<span style="color: #202020;">width</span><span style="color: #339933;">,</span> widget<span style="color: #339933;">-&gt;</span>allocation.<span style="color: #202020;">height</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">float</span> gtk_pie_chart_draw_segment<span style="color: #009900;">&#40;</span> GtkPieChart <span style="color: #339933;">*</span>pie<span style="color: #339933;">,</span> cairo_t <span style="color: #339933;">*</span>cr<span style="color: #339933;">,</span> GtkPieSegment <span style="color: #339933;">*</span>segment<span style="color: #339933;">,</span> <span style="color: #993333;">float</span> start <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #993333;">float</span> end <span style="color: #339933;">=</span> start <span style="color: #339933;">+</span> <span style="color: #808080; font-style: italic;">/* pie-&gt;sweep_factor* */</span> segment<span style="color: #339933;">-&gt;</span>sweep<span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color:#800080;">2.0</span><span style="color: #339933;">*</span>M_PI<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #993333;">float</span> mid <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>start <span style="color: #339933;">+</span> end<span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color:#800080;">0.5</span><span style="color: #339933;">;</span>
&nbsp;
  cairo_save<span style="color: #009900;">&#40;</span> cr <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">//cairo_move_to( cr, pie-&gt;radius*cos( start*2*pi ), pie-&gt;radius*sin( start*(2.0*M_PI) ) )</span>
  cairo_move_to<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>width<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>height<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_line_to<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>width<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span> <span style="color: #339933;">+</span> pie<span style="color: #339933;">-&gt;</span>radius<span style="color: #339933;">*</span>cos<span style="color: #009900;">&#40;</span> start <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>height<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span> <span style="color: #339933;">+</span> pie<span style="color: #339933;">-&gt;</span>radius<span style="color: #339933;">*</span>sin<span style="color: #009900;">&#40;</span> start <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_arc<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>width<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>height<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>radius<span style="color: #339933;">,</span> start<span style="color: #339933;">,</span> end <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">//cairo_arc_negative( cr, pie-&gt;width/2, pie-&gt;height/2, 0, end*(2.0*M_PI), start*(2.0*M_PI) );</span>
  cairo_close_path<span style="color: #009900;">&#40;</span> cr <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  cairo_set_line_width<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> <span style="color:#800080;">1.0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_set_source_rgba<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> segment<span style="color: #339933;">-&gt;</span>rgba<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> segment<span style="color: #339933;">-&gt;</span>rgba<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> segment<span style="color: #339933;">-&gt;</span>rgba<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> segment<span style="color: #339933;">-&gt;</span>rgba<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#93;</span>  <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_fill_preserve<span style="color: #009900;">&#40;</span> cr <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_set_source_rgba<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color:#800080;">1.0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_stroke<span style="color: #009900;">&#40;</span> cr <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  cairo_move_to<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>width<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span> <span style="color: #339933;">+</span> <span style="color:#800080;">0.5</span><span style="color: #339933;">*</span>pie<span style="color: #339933;">-&gt;</span>radius<span style="color: #339933;">*</span>cos<span style="color: #009900;">&#40;</span> mid <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>height<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span> <span style="color: #339933;">+</span> <span style="color:#800080;">0.5</span><span style="color: #339933;">*</span>pie<span style="color: #339933;">-&gt;</span>radius<span style="color: #339933;">*</span>sin<span style="color: #009900;">&#40;</span> mid <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_line_to<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>width<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span> <span style="color: #339933;">+</span> <span style="color:#800080;">1.3</span><span style="color: #339933;">*</span>pie<span style="color: #339933;">-&gt;</span>radius<span style="color: #339933;">*</span>cos<span style="color: #009900;">&#40;</span> mid <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>height<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span> <span style="color: #339933;">+</span> <span style="color:#800080;">1.3</span><span style="color: #339933;">*</span>pie<span style="color: #339933;">-&gt;</span>radius<span style="color: #339933;">*</span>sin<span style="color: #009900;">&#40;</span> mid <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> mid <span style="color: #339933;">&gt;</span> M_PI_2 <span style="color: #339933;">&amp;&amp;</span> mid <span style="color: #339933;">&lt;</span> <span style="color: #009900;">&#40;</span>M_PI_2 <span style="color: #339933;">+</span> M_PI<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
    cairo_line_to<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>width<span style="color: #339933;">/</span><span style="color: #0000dd;">6</span><span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>height<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span> <span style="color: #339933;">+</span> <span style="color:#800080;">1.3</span><span style="color: #339933;">*</span>pie<span style="color: #339933;">-&gt;</span>radius<span style="color: #339933;">*</span>sin<span style="color: #009900;">&#40;</span> mid <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">else</span>
    cairo_line_to<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>width<span style="color: #339933;">*</span><span style="color: #0000dd;">5</span><span style="color: #339933;">/</span><span style="color: #0000dd;">6</span><span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>height<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span> <span style="color: #339933;">+</span> <span style="color:#800080;">1.3</span><span style="color: #339933;">*</span>pie<span style="color: #339933;">-&gt;</span>radius<span style="color: #339933;">*</span>sin<span style="color: #009900;">&#40;</span> mid <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_stroke<span style="color: #009900;">&#40;</span> cr <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_restore<span style="color: #009900;">&#40;</span> cr <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  cairo_save<span style="color: #009900;">&#40;</span> cr <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> mid <span style="color: #339933;">&gt;</span> M_PI_2 <span style="color: #339933;">&amp;&amp;</span> mid <span style="color: #339933;">&lt;</span> <span style="color: #009900;">&#40;</span>M_PI_2 <span style="color: #339933;">+</span> M_PI<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    cairo_text_extents_t text_extents <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    cairo_text_extents<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> segment<span style="color: #339933;">-&gt;</span>name <span style="color: #339933;">?</span> segment<span style="color: #339933;">-&gt;</span>name <span style="color: #339933;">:</span> <span style="color: #ff0000;">&quot;&quot;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>text_extents <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    cairo_move_to<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>width<span style="color: #339933;">/</span><span style="color: #0000dd;">6</span> <span style="color: #339933;">-</span> text_extents.<span style="color: #202020;">width</span><span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>height<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span> <span style="color: #339933;">+</span> <span style="color:#800080;">1.3</span><span style="color: #339933;">*</span>pie<span style="color: #339933;">-&gt;</span>radius<span style="color: #339933;">*</span>sin<span style="color: #009900;">&#40;</span> mid <span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color:#800080;">4.0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    cairo_move_to<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>width<span style="color: #339933;">*</span><span style="color: #0000dd;">5</span><span style="color: #339933;">/</span><span style="color: #0000dd;">6</span><span style="color: #339933;">,</span> pie<span style="color: #339933;">-&gt;</span>height<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span> <span style="color: #339933;">+</span> <span style="color:#800080;">1.3</span><span style="color: #339933;">*</span>pie<span style="color: #339933;">-&gt;</span>radius<span style="color: #339933;">*</span>sin<span style="color: #009900;">&#40;</span> mid <span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color:#800080;">4.0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  cairo_set_source_rgba<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color:#800080;">1.0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_select_font_face<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;sans&quot;</span><span style="color: #339933;">,</span> CAIRO_FONT_SLANT_NORMAL<span style="color: #339933;">,</span> CAIRO_FONT_WEIGHT_NORMAL <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_set_font_size<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> <span style="color:#800080;">10.0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_show_text<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> segment<span style="color: #339933;">-&gt;</span>name <span style="color: #339933;">?</span> segment<span style="color: #339933;">-&gt;</span>name <span style="color: #339933;">:</span> <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_restore<span style="color: #009900;">&#40;</span> cr <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span> end <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> gtk_pie_chart_expose<span style="color: #009900;">&#40;</span> GtkWidget <span style="color: #339933;">*</span>widget<span style="color: #339933;">,</span> GdkEventExpose <span style="color: #339933;">*</span>event <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  GtkPieChart <span style="color: #339933;">*</span>pie<span style="color: #339933;">;</span>
  cairo_t <span style="color: #339933;">*</span>cr<span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">//GdkRectangle rect = { 0, 0, 0, 0 };</span>
  GList <span style="color: #339933;">*</span>list<span style="color: #339933;">;</span>
  <span style="color: #993333;">float</span> angle<span style="color: #339933;">;</span>
&nbsp;
  g_return_val_if_fail<span style="color: #009900;">&#40;</span> widget<span style="color: #339933;">,</span> FALSE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  g_return_val_if_fail<span style="color: #009900;">&#40;</span> GTK_IS_PIE_CHART<span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> FALSE <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  pie <span style="color: #339933;">=</span> GTK_PIE_CHART<span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  cr <span style="color: #339933;">=</span> gdk_cairo_create<span style="color: #009900;">&#40;</span> widget<span style="color: #339933;">-&gt;</span>window <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  cairo_save<span style="color: #009900;">&#40;</span> cr <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// expose area</span>
&nbsp;
  cairo_rectangle<span style="color: #009900;">&#40;</span> cr<span style="color: #339933;">,</span> event<span style="color: #339933;">-&gt;</span>area.<span style="color: #202020;">x</span><span style="color: #339933;">,</span> event<span style="color: #339933;">-&gt;</span>area.<span style="color: #202020;">y</span><span style="color: #339933;">,</span> event<span style="color: #339933;">-&gt;</span>area.<span style="color: #202020;">width</span><span style="color: #339933;">,</span> event<span style="color: #339933;">-&gt;</span>area.<span style="color: #202020;">height</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cairo_clip<span style="color: #009900;">&#40;</span> cr <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  angle <span style="color: #339933;">=</span> pie<span style="color: #339933;">-&gt;</span>start_angle<span style="color: #339933;">;</span>
  list <span style="color: #339933;">=</span> pie<span style="color: #339933;">-&gt;</span>segments<span style="color: #339933;">;</span>
  <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span> list <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    GtkPieSegment <span style="color: #339933;">*</span>segment <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>GtkPieSegment <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>list<span style="color: #339933;">-&gt;</span>data<span style="color: #339933;">;</span>
    angle <span style="color: #339933;">=</span> gtk_pie_chart_draw_segment<span style="color: #009900;">&#40;</span> pie<span style="color: #339933;">,</span> cr<span style="color: #339933;">,</span> segment<span style="color: #339933;">,</span> angle <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    list <span style="color: #339933;">=</span> list<span style="color: #339933;">-&gt;</span>next<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  cairo_restore<span style="color: #009900;">&#40;</span> cr <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// expose area</span>
&nbsp;
  cairo_destroy<span style="color: #009900;">&#40;</span> cr <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> FALSE<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://rubinium.org/blog/archives/2008/06/10/gtk-pie-chart-widget/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>DMS to Decimal By Request</title>
		<link>http://rubinium.org/blog/archives/2008/01/17/dms-to-decimal-by-request/</link>
		<comments>http://rubinium.org/blog/archives/2008/01/17/dms-to-decimal-by-request/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 22:41:15 +0000</pubDate>
		<dc:creator>A R Baboon</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[degrees]]></category>
		<category><![CDATA[dms]]></category>
		<category><![CDATA[minutes]]></category>

		<guid isPermaLink="false">http://rubinium.org/blog/archives/2008/01/17/dms-to-decimal-by-request/</guid>
		<description><![CDATA[This is a function from my library that can be used to decode a degrees-minutes-seconds (DMS) string to a decimal degrees. Enjoy. /* ------------------------------ Function: geo_dms_to_deg Parse a degrees-minutes-seconds (DMS) value string into a double floating point in degrees. &#160; Parameters: str - [in] string containing an angle in DMS end_ptr - [out] a pointer [...]]]></description>
			<content:encoded><![CDATA[<p>This is a function from my library that can be used to decode a degrees-minutes-seconds (DMS) string to a decimal degrees.<br />
Enjoy.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* ------------------------------
   Function: geo_dms_to_deg
     Parse a degrees-minutes-seconds (DMS) value string into a double floating
     point in degrees.
&nbsp;
   Parameters:
     str     - [in]  string containing an angle in DMS
     end_ptr - [out] a pointer to the character following the last in the DMS
     packed  - [in]  boolean whether to expect the DMS to lack delimiters
     value   - [out] value in degrees
&nbsp;
   Returns:
     true on success, false on failure
   ------------------------------ */</span>
<span style="color: #993333;">int</span> geo_dms_to_deg<span style="color: #009900;">&#40;</span> <span style="color: #993333;">const</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>str<span style="color: #339933;">,</span> <span style="color: #993333;">const</span> <span style="color: #993333;">char</span> <span style="color: #339933;">**</span>endptr<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> packed<span style="color: #339933;">,</span> <span style="color: #993333;">double</span> <span style="color: #339933;">*</span>value <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #993333;">int</span> d <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> m <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> s <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> pos <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
  <span style="color: #993333;">char</span> ps<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">20</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;&quot;</span><span style="color: #339933;">,</span> <span style="color: #339933;">*</span>ps_ptr<span style="color: #339933;">;</span>
  <span style="color: #993333;">float</span> p <span style="color: #339933;">=</span> <span style="color:#800080;">0.0</span><span style="color: #339933;">,</span> fraction<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> packed <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #993333;">char</span> format<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">64</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    pos <span style="color: #339933;">=</span> strspn<span style="color: #009900;">&#40;</span> str<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;0123456789&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> pos <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">5</span> <span style="color: #339933;">||</span> pos <span style="color: #339933;">&gt;</span> <span style="color: #0000dd;">7</span> <span style="color: #009900;">&#41;</span>
      <span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    snprintf<span style="color: #009900;">&#40;</span> format<span style="color: #339933;">,</span> <span style="color: #0000dd;">64</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;%%%dd%%2d%%2d%%n&quot;</span><span style="color: #339933;">,</span> pos <span style="color: #339933;">-</span> <span style="color: #0000dd;">4</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> sscanf<span style="color: #009900;">&#40;</span> str<span style="color: #339933;">,</span> format<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>d<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>m<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>s<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>pos <span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000dd;">3</span> <span style="color: #009900;">&#41;</span>
      <span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> sscanf<span style="color: #009900;">&#40;</span> str<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;%d:%d:%d.%[0123456789]%n&quot;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>d<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>m<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>s<span style="color: #339933;">,</span> ps<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>pos <span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">4</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    p <span style="color: #339933;">=</span> <span style="color:#800080;">0.0</span><span style="color: #339933;">;</span>
    fraction <span style="color: #339933;">=</span> <span style="color:#800080;">0.1</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span> ps_ptr <span style="color: #339933;">=</span> ps<span style="color: #339933;">;</span> <span style="color: #339933;">*</span>ps_ptr <span style="color: #339933;">!=</span> <span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #339933;">;</span> ps_ptr<span style="color: #339933;">++</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      p <span style="color: #339933;">+=</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>ps_ptr <span style="color: #339933;">-</span> <span style="color: #ff0000;">'0'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span>fraction<span style="color: #339933;">;</span>
      fraction <span style="color: #339933;">*=</span> <span style="color:#800080;">0.1</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> sscanf<span style="color: #009900;">&#40;</span> str<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;%d:%d:%d%n&quot;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>d<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>m<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>s<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>pos <span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">3</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #808080; font-style: italic;">/* empty */</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> sscanf<span style="color: #009900;">&#40;</span> str<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;%d:%d%n&quot;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>d<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>m<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>pos <span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">2</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    s <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> sscanf<span style="color: #009900;">&#40;</span> str<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;%d%n&quot;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>d<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>pos <span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    s <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
    m <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>d <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>m <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">||</span> m <span style="color: #339933;">&gt;=</span> <span style="color: #0000dd;">60</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>s <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">||</span> s <span style="color: #339933;">&gt;=</span> <span style="color: #0000dd;">60</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #339933;">*</span>endptr <span style="color: #339933;">=</span> <span style="color: #339933;">&amp;</span>str<span style="color: #009900;">&#91;</span>pos<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> value <span style="color: #009900;">&#41;</span>
    <span style="color: #339933;">*</span>value <span style="color: #339933;">=</span> d <span style="color: #339933;">+</span> m<span style="color: #339933;">/</span><span style="color:#800080;">60.0</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>p <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">float</span><span style="color: #009900;">&#41;</span>s<span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color:#800080;">3600.0</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span> <span style="color: #0000dd;">1</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://rubinium.org/blog/archives/2008/01/17/dms-to-decimal-by-request/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dos2unix in Emacs, Sometimes Macros Are Nice</title>
		<link>http://rubinium.org/blog/archives/2007/11/30/dos2unix-in-emacs-sometimes-macros-are-nice/</link>
		<comments>http://rubinium.org/blog/archives/2007/11/30/dos2unix-in-emacs-sometimes-macros-are-nice/#comments</comments>
		<pubDate>Fri, 30 Nov 2007 19:35:54 +0000</pubDate>
		<dc:creator>A R Baboon</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Linux and Systems]]></category>
		<category><![CDATA[crlf]]></category>
		<category><![CDATA[dos]]></category>
		<category><![CDATA[dos2unix]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[macro]]></category>
		<category><![CDATA[xemacs]]></category>

		<guid isPermaLink="false">http://rubinium.org/blog/archives/2007/11/30/dos2unix-in-emacs-sometimes-macros-are-nice/</guid>
		<description><![CDATA[This is just a generic search and replace. Really you could make a macro for any search and replace you do on a regular basis. ;;; A interactive function for replacing all dos ;;; carriage returns (^M) with Unix ;;; line feeds in a selected buffer. &#40;defun dos2unix &#40;buffer&#41; &#34;Automate M-% C-q C-m RET C-q [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://rubinium.org/blog/wp-content/uploads/2007/11/no_caret_m.png" alt="No CRLF" /><br />
This is just a generic search and replace. Really you could make a macro for any search and replace you do on a regular basis.</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">;;; A interactive function for replacing all dos</span>
<span style="color: #808080; font-style: italic;">;;; carriage returns (^M) with Unix </span>
<span style="color: #808080; font-style: italic;">;;; line feeds in a selected buffer. </span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> dos2unix <span style="color: #66cc66;">&#40;</span>buffer<span style="color: #66cc66;">&#41;</span>
  <span style="color: #ff0000;">&quot;Automate M-% C-q C-m RET C-q C-j RET&quot;</span>
  <span style="color: #66cc66;">&#40;</span>interactive <span style="color: #ff0000;">&quot;b buffer to convert&quot;</span> <span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>goto-char <span style="color: #66cc66;">&#40;</span>point-<span style="color: #b1b100;">min</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>while <span style="color: #66cc66;">&#40;</span>search-forward <span style="color: #66cc66;">&#40;</span>string ?\C-m<span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">nil</span> t<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>replace-match <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #b1b100;">nil</span> t<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://rubinium.org/blog/archives/2007/11/30/dos2unix-in-emacs-sometimes-macros-are-nice/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

