<?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>Pelle la tarte. &#187; Gimp</title>
	<atom:link href="http://pellelatarte.fr/category/gimp/feed/" rel="self" type="application/rss+xml" />
	<link>http://pellelatarte.fr</link>
	<description>Des gars qui creusent encore.</description>
	<lastBuildDate>Wed, 07 Nov 2012 17:14:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Gimp warp tool: Midterm report</title>
		<link>http://pellelatarte.fr/en/2011/07/gimp-warp-tool-cest-la-mi-parcours/</link>
		<comments>http://pellelatarte.fr/en/2011/07/gimp-warp-tool-cest-la-mi-parcours/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 23:35:23 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Gimp]]></category>
		<category><![CDATA[Summer of Code]]></category>

		<guid isPermaLink="false">http://pellelatarte.fr/?p=576</guid>
		<description><![CDATA[Already the midterm of the Google Summer of Code, and I didn&#8217;t post updates like I wanted. I guess thinking and hacking is still more easy and fun for me than writing. However, let&#8217;s correct that. The least I can say is that the warp tool is in better shape than the cage tool the [...]]]></description>
				<content:encoded><![CDATA[<p>Already the midterm of the Google Summer of Code, and I didn&#8217;t post updates like I wanted. I guess thinking and hacking is still more easy and fun for me than writing. However, let&#8217;s correct that.</p>
<p>The least I can say is that the warp tool is in better shape than the cage tool the same time last year. The reason is simple, I learned a lot last year, and the warp tool need similar skills, and even reuse some part of the code.</p>
<p>That said, here is the report:</p>
<ul>
<li>All the tool&#8217;s infrastructure is here and functional.</li>
<li>We can apply stroke and deform the canvas.</li>
<li>7 behaviors are supported for now:
<ul>
<li>moving pixels</li>
<li>growing an area</li>
<li>shrinking an area</li>
<li>swirl clockwise</li>
<li>swirl counter-clockwise</li>
<li>erasing a transformation</li>
<li>local smooth of a transformation</li>
</ul>
</li>
<li>Actions on the canvas are done with a round brush, with a gaussian like influence curve.</li>
<li>Tool&#8217;s options are strength, size and hardness.</li>
</ul>
<p>A quick screencast:</p>
<p style="text-align: center;"><object width="480" height="390"><param name="movie" value="http://www.youtube.com/v/RakpVMxl2Hc?version=3&amp;hl=fr_FR" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/RakpVMxl2Hc?version=3&amp;hl=fr_FR" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Each actions on the canvas are implemented as a Gegl operation that produce a relative coordinate buffer, that is inserted in the render graph. The final image is computed with a map-relative render operation.<br />
<a href="http://pellelatarte.fr/wp-content/uploads/2011/07/node.png"><img class="aligncenter size-full wp-image-579" title="node" src="http://pellelatarte.fr/wp-content/uploads/2011/07/node.png" alt="" width="613" height="967" /></a></p>
<p>This is what still need to be handled:</p>
<ul>
<li>Performances need enhancement. For now, for each stroke on the canvas, each operation already computed are re-rendered (cache does not work correctly), and this for the complete surface of the selection (the legagy code wasn&#8217;t designed for that). Other areas for improvement exist, such as the implementation of copy on write (COW) for GeglBuffer. The ultimate goal is to perform actions interactively.</li>
<li>A good tweaking is needed. For now, behaviors are not consistent.</li>
<li>UI implementation, as specified by Peter Sikking and his team.</li>
<li>Undo implementation.</li>
</ul>
<p>As I&#8217;m more confident this year, I&#8217;m going a bit deeper and I work on related things, especially in Gegl. An interresting thing is that the warp tool is structurally close than a paint core, and is therefore a step closer to a paint core based on Gegl in Gimp.</p>
]]></content:encoded>
			<wfw:commentRss>http://pellelatarte.fr/en/2011/07/gimp-warp-tool-cest-la-mi-parcours/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>On da road again !</title>
		<link>http://pellelatarte.fr/en/2011/04/on-da-road-again/</link>
		<comments>http://pellelatarte.fr/en/2011/04/on-da-road-again/#comments</comments>
		<pubDate>Sat, 30 Apr 2011 14:08:26 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Gimp]]></category>
		<category><![CDATA[Summer of Code]]></category>

		<guid isPermaLink="false">http://pellelatarte.fr/?p=538</guid>
		<description><![CDATA[That&#8217;s it ! This summer again, i will participate to the Summer of Code program ! My last year&#8217;s contribution was for me a huge challenge, a way to learn a LOT of things, to meet and work with some very interesting people, and a big source of pride (even for my family, here we can see [...]]]></description>
				<content:encoded><![CDATA[<div>
<p style="text-align: center;"><a href="http://pellelatarte.fr/wp-content/uploads/2011/04/iwarp.png"><img class="aligncenter" title="iwarp" src="http://pellelatarte.fr/wp-content/uploads/2011/04/iwarp.png" alt="" width="700" height="170" /></a></p>
<p>That&#8217;s it ! This summer again, i will participate to the Summer of Code program !</p>
<p>My last year&#8217;s contribution was for me a huge challenge, a way to learn a LOT of things, to meet and work with some very interesting people, and a big source of pride (even for my family, here we can see how much Google&#8217;s name mean something for the society nowadays).</p>
<p>This year, I&#8217;ll use the  knowledge I learned last year to rewrite the old plugin iWarp as a real internal Gimp tool. His pretty name will be the Gimp Warp Tool). That&#8217;s a feature that has been asked and waited for long. Here again, this tool will fit in the &#8216;big picture&#8217;, the future of Gimp (Gegl, live on-canvas preview, ..).</p>
<p>On a more personal note, it&#8217;s clear that my task this year is less challenging than last year (another deformation tool, structure relatively close..), and it&#8217;s kind of too bad. Nevertheless, it&#8217;s always great to work on a big project like Gimp, and users return it well most of the time. And hey, it&#8217;s cool to have his brain working during the summer =)</p>
<p>This time, I should be able to do the job right the first time (as opposition to the cage tool, that was kind of a prototype at the end of the summer), and avoid the 3 or 4 partial rewrite that was needed after the deadline. With a bit of luck, this tool can be included in Gimp 2.8. The start of the coding period is in fact not so far !</p>
<p>Expect news !</p>
<p>&nbsp;</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://pellelatarte.fr/en/2011/04/on-da-road-again/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Some cage tool&#8217;s update</title>
		<link>http://pellelatarte.fr/en/2011/03/quelques-new-de-loutil-cage/</link>
		<comments>http://pellelatarte.fr/en/2011/03/quelques-new-de-loutil-cage/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 22:17:35 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Gimp]]></category>
		<category><![CDATA[Summer of Code]]></category>

		<guid isPermaLink="false">http://pellelatarte.fr/?p=505</guid>
		<description><![CDATA[It&#8217;s been a while since i didn&#8217;t post update here. There even was months without any change, especially when I got the idea to write a small ERP suitable to a Junior-Enterprise. I spend somes hours on it today, and I feeled like it was time for a small changelog: as stated before, a rewrite [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://pellelatarte.fr/wp-content/uploads/2011/03/cage-lizard.png"><img class="aligncenter size-full wp-image-506" title="cage-lizard" src="http://pellelatarte.fr/wp-content/uploads/2011/03/cage-lizard.png" alt="" width="454" height="298" /></a></p>
<p>It&#8217;s been a while since i didn&#8217;t post update here. There even was months without any change, especially when I got the idea to write a <a href="http://pellelatarte.fr/2011/03/un-erp-simple-pour-les-juniors-entreprise-ordo/">small ERP suitable to a Junior-Enterprise</a>. I spend somes hours on it today, and I feeled like it was time for a small changelog:</p>
<ul>
<li>as stated before, a rewrite of the UI management as a state machine, with a lot of cleaning (and some regression, I have to say ..)</li>
<li>use of a custom data structure, that allow &#8230;</li>
<li>the multi-selection of the cage&#8217;s handle, with a rubber band, to allow quicker editing of the cage, or simply moving the whole cage at once</li>
<li>the possibility to go back to the edit mode, to tweak the source cage</li>
<li>some optimisation in the Gegl operator that run the transformation</li>
</ul>
<ul></ul>
<p>There is still some bugs to catch, the more obvious is that the  image shift from the cage after a return in edit mode. But promess is made, it will be ready for the Gimp 2.8 release ! By the way, further work in the cage tool will be done in the master branch of Gimp, ne need to checkout a particilar branch.</p>
<p>To celebrate all this, I made a quick screencast with a lizard as the victim. Enjoy =)</p>
<p style="text-align: center;"><object width="480" height="390"><param name="movie" value="http://www.youtube.com/v/Rbqy2oWNpZg?fs=1&amp;hl=fr_FR" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/Rbqy2oWNpZg?fs=1&amp;hl=fr_FR" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://pellelatarte.fr/en/2011/03/quelques-new-de-loutil-cage/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>14 years of Gimp hacking</title>
		<link>http://pellelatarte.fr/en/2011/01/14-annees-de-developpement-de-gimp/</link>
		<comments>http://pellelatarte.fr/en/2011/01/14-annees-de-developpement-de-gimp/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 19:29:16 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Gimp]]></category>

		<guid isPermaLink="false">http://pellelatarte.fr/?p=402</guid>
		<description><![CDATA[The development of a software like Gimp is done during long years, and by many peoples. To let you see this work, I made a video of the modification done on the code repository for 14 years. A quick note however, the first 2 years of hacking is not on the video since the related [...]]]></description>
				<content:encoded><![CDATA[<p>The development of a software like Gimp is done during long years, and by many peoples. To let you see this work, I made a video of the modification done on the code repository for 14 years.</p>
<p>A quick note however, the first 2 years of hacking is not on the video since the related logs are not available on git.</p>
<p>This video was made using <a href="http://code.google.com/p/gource/">Gource</a>, pretty cool software =)</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/CcW0-mIc04o?fs=1&amp;hl=fr_FR&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/CcW0-mIc04o?fs=1&amp;hl=fr_FR&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://pellelatarte.fr/en/2011/01/14-annees-de-developpement-de-gimp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compiling Gimp with LLVM/Clang and static analyse</title>
		<link>http://pellelatarte.fr/en/2011/01/compiler-gimp-avec-llvmclang-et-analyse-statique/</link>
		<comments>http://pellelatarte.fr/en/2011/01/compiler-gimp-avec-llvmclang-et-analyse-statique/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 00:22:24 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Gimp]]></category>
		<category><![CDATA[Technique]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[Clang]]></category>
		<category><![CDATA[LLVM]]></category>
		<category><![CDATA[static analyse]]></category>
		<category><![CDATA[static anlyser]]></category>
		<category><![CDATA[technique]]></category>

		<guid isPermaLink="false">http://pellelatarte.fr/?p=375</guid>
		<description><![CDATA[Clang, which use LLVM infrastructure, is a compiler for the C language family. His goal is to offer a moder alternative to GCC. With Clang come a pretty cool static analyser. Here is how to use it for Gimp. A small disclaimer before, I shamefully copied and adapted the procedure given by Campbell Barton, form [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://pellelatarte.fr/wp-content/uploads/2011/01/gimp-clang2.png"><img class="aligncenter" title="gimp-clang" src="http://pellelatarte.fr/wp-content/uploads/2011/01/gimp-clang2.png" alt="" width="611" height="128" /></a></p>
<p>Clang, which use LLVM infrastructure, is a compiler for the C language family. His goal is to offer a moder alternative to GCC. With Clang come a pretty cool <a href="http://clang-analyzer.llvm.org/">static analyser</a>. Here is how to use it for Gimp.</p>
<p>A small disclaimer before, I shamefully copied and adapted the procedure given by Campbell Barton, form the Blender team. (<a href="http://wiki.blender.org/index.php/User:Ideasman42/BlenderClang">http://wiki.blender.org/index.php/User:Ideasman42/BlenderClang</a>).</p>
<h2>Step 1: compile LLVM/Clang</h2>
<p>I first tried the LLVM provided by ArchLinux, but the compilation ended with a fatal error. It goes flawlessly with the development version. To fetch it, <a href="http://wiki.blender.org/index.php/User:Ideasman42/BlenderClang#Installing_LLVM_.26_Clang_from_svn_.28tested_on_linux.29_inst_llvm.sh">Campbell Barton&#8217;s script</a> works well.</p>
<h2>Step 2: configure Gimp&#8217;s compilation</h2>
<p>First, we need to add  LLVM&#8217;s binary to the PATH:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PATH</span>=<span style="color: #007800;">$PATH</span>:<span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>llvm<span style="color: #000000; font-weight: bold;">/</span>bin</div></div>
<p>The only difference with a classic GCC compilation, is that we explicitly ask to use Clang&#8217;s compiler:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #007800;">CC</span>=ccc-analyzer .<span style="color: #000000; font-weight: bold;">/</span>autogen.sh <span style="color: #660033;">--prefix</span>=<span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>gimp<span style="color: #000000; font-weight: bold;">/</span></div></div>
<h2>Step 3: compile</h2>
<p>If you just want to compile, the procedure doesn&#8217;t change.</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #660033;">-j3</span></div></div>
<p>If you want to run a static analyse, you have to use scan-build:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">scan-build <span style="color: #660033;">-o</span> clang <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #660033;">-j3</span></div></div>
<p>Just be aware that a static analyse will take a lot of time (3h40 with my Core 2 Duo E4500).</p>
<h2>Etape 4: profit !</h2>
<p>The static analyzer of Clang will probably find a lot of bug in the code. Yes, there is false positive, but it&#8217;s globally remarkably well done ! You can find here the result of the analyse of master i did today: <a href="http://pellelatarte.fr/dawa/gimp-llvm/">http://pellelatarte.fr/dawa/gimp-llvm/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pellelatarte.fr/en/2011/01/compiler-gimp-avec-llvmclang-et-analyse-statique/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Refactoring and evolution of the Cage tool</title>
		<link>http://pellelatarte.fr/en/2011/01/refactorisation-et-evolution-de-loutil-cage/</link>
		<comments>http://pellelatarte.fr/en/2011/01/refactorisation-et-evolution-de-loutil-cage/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 01:47:56 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Gimp]]></category>
		<category><![CDATA[Summer of Code]]></category>
		<category><![CDATA[diagramme d'etat]]></category>
		<category><![CDATA[State chart]]></category>
		<category><![CDATA[StateChart]]></category>
		<category><![CDATA[summer of code]]></category>

		<guid isPermaLink="false">http://pellelatarte.fr/?p=363</guid>
		<description><![CDATA[Hi, A quick post to let you know that i started a refactoring of the Gimp cage tool. It&#8217;s a mandatory step to achieve a good quality and a solid basis to implement new things. It happens here by rewriting the frontend code as a state machine (as described here a few days ago), change [...]]]></description>
				<content:encoded><![CDATA[<p><p><a href="../wp-content/uploads/2011/01/statemachine_commit.png"><img title="statemachine_commit" src="../wp-content/uploads/2011/01/statemachine_commit.png" alt="" width="878" height="128" /></a></p>
<p>Hi,</p>
<p>A quick post to let you know that i started a refactoring of the Gimp cage tool. It&#8217;s a mandatory step to achieve a good quality and a solid basis to implement new things. It happens here by rewriting the frontend code as a state machine (as described <a href="http://pellelatarte.fr/2010/12/implementer-une-machine-a-etat/">here</a> a few days ago), change on the data structure, documentation, and a lot of small fixes and simplifications.</p>
<p>In the future, a multi-points selection should come in a few days in the soc-2010-cage-2 branch. This editing mode will work in a similar way as in the path tool.</p>
<p>A proportional editing mode, similar to what you can find in Blender should come too.</p>
<p>Maybe i&#8217;ll start to getting satisfied of my work someday&#8230; =)</p></p>
]]></content:encoded>
			<wfw:commentRss>http://pellelatarte.fr/en/2011/01/refactorisation-et-evolution-de-loutil-cage/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Cage tool is on Master !</title>
		<link>http://pellelatarte.fr/en/2010/11/loutil-cage-est-dans-la-branche-principale/</link>
		<comments>http://pellelatarte.fr/en/2010/11/loutil-cage-est-dans-la-branche-principale/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 10:35:12 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Gimp]]></category>
		<category><![CDATA[Summer of Code]]></category>
		<category><![CDATA[summer of code]]></category>

		<guid isPermaLink="false">http://pellelatarte.fr/?p=320</guid>
		<description><![CDATA[That&#8217;s it ! For now 48h, the new Cage tool in on master branch of Gimp ! It will be, unless big surprise, in the next release, the 2.8 ! A big thanks to my mentor, Alexia Death, and Michael Natterer (Mitch) to take care of this merge, and for the cleaning step that come [...]]]></description>
				<content:encoded><![CDATA[<div>
<p style="text-align: center;"><img title="Gimp Cage Tool Splash" src="http://pellelatarte.fr/wp-content/uploads/2010/11/splash.jpg" alt="Gimp Cage Tool Splash" width="280" height="396" /></p>
<p>That&#8217;s it ! For now 48h, the new Cage tool in on master branch of Gimp ! It will be, unless big surprise, in the next release, the 2.8 !</p>
<p>A big thanks to my mentor, Alexia Death, and Michael Natterer (Mitch) to take care of this merge, and for the cleaning step that come with.</p>
</div>
<div><span style="color: #0000ee; -webkit-text-decorations-in-effect: underline;"><br />
</span></div>
]]></content:encoded>
			<wfw:commentRss>http://pellelatarte.fr/en/2010/11/loutil-cage-est-dans-la-branche-principale/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Video showing the Gimp cage tool</title>
		<link>http://pellelatarte.fr/en/2010/11/video-de-loutil-de-deformation-par-cage/</link>
		<comments>http://pellelatarte.fr/en/2010/11/video-de-loutil-de-deformation-par-cage/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 10:33:09 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Gimp]]></category>
		<category><![CDATA[Summer of Code]]></category>

		<guid isPermaLink="false">http://pellelatarte.fr/?p=299</guid>
		<description><![CDATA[Hello, Somebody did a quick review of my cage-based deformation tool for The Gimp and published it in a Gimp community website. It&#8217;s on GimpUser.com ! A video of the tool in action is included ! It&#8217;s so cool to see that peoples like my work and find it usefull =) Also, Devv, big thanks [...]]]></description>
				<content:encoded><![CDATA[<p>Hello,</p>
<p>Somebody did a quick review of my cage-based deformation tool for The Gimp and published it in a Gimp community website. It&#8217;s on <a href="http://www.gimpusers.com/news/00333-first-look-at-the-cage-based-transform-tool">GimpUser.com</a> !</p>
<p>A video of the tool in action is included !</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/YLt3Uo5cMbA?fs=1&amp;hl=fr_FR" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/YLt3Uo5cMbA?fs=1&amp;hl=fr_FR" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>It&#8217;s so cool to see that peoples like my work and find it usefull =)</p>
<p>Also, Devv, big thanks for the review and the video !</p>
<p>I really need to find some times to fine tune and clean all this (UI and optimization, mainly) &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://pellelatarte.fr/en/2010/11/video-de-loutil-de-deformation-par-cage/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Trick list</title>
		<link>http://pellelatarte.fr/en/2010/08/trick-list/</link>
		<comments>http://pellelatarte.fr/en/2010/08/trick-list/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 09:48:05 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Gimp]]></category>
		<category><![CDATA[Summer of Code]]></category>

		<guid isPermaLink="false">http://pellelatarte.fr/?p=211</guid>
		<description><![CDATA[Here is a list of trick, technic, tips, that I learned during my Summer of Code. It&#8217;s published here as it is, and my or may not interrest you. Memory allocation with Glib: memory allocation for objects: - g_new (struct_type, number) - g_renew (struct_type, old_allocation, number) - g_unref_object (object) simple allocation: - g_malloc (byte_number) - [...]]]></description>
				<content:encoded><![CDATA[<p><div id="_mcePaste">Here is a list of trick, technic, tips, that I learned during my Summer of Code. It&#8217;s published here as it is, and my or may not interrest you.</div>
<h1>Memory allocation with Glib:</h1>
<h2>memory allocation for objects:</h2>
<div id="_mcePaste">- g_new (struct_type, number)</div>
<div id="_mcePaste">- g_renew (struct_type, old_allocation, number)</div>
<div id="_mcePaste">- g_unref_object (object)</div>
<h2>simple allocation:</h2>
<div id="_mcePaste">- g_malloc (byte_number)</div>
<div id="_mcePaste">- g_realloc (old_allocation, byte_number)</div>
<div id="_mcePaste">- g_free (allocation)</div>
<div id="_mcePaste">Allocation with g_malloc are expensive, use gslice instead if the memory needed is length fixed.</div>
<h1>Hacking Gimp</h1>
<h2>gobject and glib debug</h2>
<div id="_mcePaste">Run Gimp with &#8211;g-fatal-warnings</div>
<h2>GTK event debug</h2>
<div id="_mcePaste">When GTK send an event  (key press, mouse clic, ..), Gimp grabs the event manager. If you set a breackpoint in an event handler, this manager isn&#8217;t given back to GTK when the debugger freeze Gimp. Result, you cannot use your keyboard or mouse anymore. Not especially handy. Solution is to compile you own GTK with &#8211;enable-debug=yes, compile Gimp with this GTK, and run Gimp with &#8211;gtk-no-grabs.</div>
<h2>autogen.sh</h2>
<div id="_mcePaste">Compilation options are available with ./configure &#8211;help</div>
<h2>compilation without optimisation</h2>
<div id="_mcePaste">CFLAGS=-O0 ./autogen.sh &#8211;prefix=&#8230;.</div>
<h2>quick install of binaries only</h2>
<div id="_mcePaste">cd app/ &amp;&amp; sudo make install-binPROGRAMS</div>
<h1>Gobject</h1>
<h2>gobject is evil.</h2>
<h2>if you have a warning relative to glib or gobject, try make install</h2>
<h2>something wrong ? Try make install</h2>
<h1>Babl</h1>
<div id="_mcePaste">Babl is a library used to abstract different pixel formal and color space (RVB, CMJN, &#8230;)</div>
<h2>setup a format</h2>
<div id="_mcePaste">babl_type (&#8220;float&#8221;)</div>
<div id="_mcePaste">babl_type (&#8220;u8&#8243;)</div>
<div id="_mcePaste">babl_format_n (babl_type (&#8220;float&#8221;), nombre_element)</div>
<div id="_mcePaste">Look in the doc <a href="http://www.gegl.org/babl/#Vocabulary">http://www.gegl.org/babl/#Vocabulary</a> to see format available. A small precision:</div>
<div id="_mcePaste">- R&#8217;: gamma adjusted</div>
<div id="_mcePaste">- Ra: pre-multiplied alpha</div>
<div id="_mcePaste">&lt;http://www.gimp.org/docs/plugin_in/appendix-alpha.html&gt;</div>
<h2>convert buffer with a <a href="http://en.wikipedia.org/wiki/Babel_fish_(leech-like)#Babel_fish">Babl fish</a></h2>
<div id="_mcePaste">babl_process (babl_fish, buffer_source, buffer_destination, nombre_d&#8217;element)</div>
<h1>Gegl</h1>
<h2>create a buffer</h2>
<div id="_mcePaste">GeglBuffer *bfr = gegl_buffer_new (gegl_rectangle, babl_format)</div>
<h2>buffer leak</h2>
<div id="_mcePaste">In gegl/buffer/gegl_buffer.c, uncomment #define GEGL_BUFFER_DEBUG_ALLOCATION. When closing Gimp, you will have an allocation trace. You can convert adress in the binary in position in the source code with addr2line -e app/.libs/gimp-2.7 adress.</div>
<h1>Git</h1>
<h2>push in a remote branch</h2>
<div id="_mcePaste">git push origin soc-2010-cage</div>
<h2>keep branch up-to-date</h2>
<div id="_mcePaste">git fetch origin &amp;&amp; git rebase origin</div></p>
]]></content:encoded>
			<wfw:commentRss>http://pellelatarte.fr/en/2010/08/trick-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Official end</title>
		<link>http://pellelatarte.fr/en/2010/08/fin-officielle/</link>
		<comments>http://pellelatarte.fr/en/2010/08/fin-officielle/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 09:30:48 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Gimp]]></category>
		<category><![CDATA[Summer of Code]]></category>

		<guid isPermaLink="false">http://pellelatarte.fr/?p=201</guid>
		<description><![CDATA[That&#8217;s it, Summer of Code is over, at least officially. I finally updated this blog less than I expected. I have to say that after 2 month banging my head to the code, motivation is less than before. So, here is the news: As announced in my last entry, I worked on a process to [...]]]></description>
				<content:encoded><![CDATA[<div id="_mcePaste">That&#8217;s it, Summer of Code is over, at least officially.</div>
<div id="_mcePaste">I finally updated this blog less than I expected. I have to say that after 2 month banging my head to the code, motivation is less than before. So, here is the news:</div>
<div id="_mcePaste">As announced in my last entry, I worked on a process to invert the computing of the transformation (ie know from where come pixels instead of where they go), to have a good image quality and avoiding aliasing. Here is how it works:</div>
<div id="_mcePaste">
<ul>
<li>we set on the image a cage-sized grid</li>
<li>we apply the deformation to the grid</li>
<li>we split each grid case to two triangle</li>
<li>for each pixel inside these triangle, we compute the source coordinates</li>
<li>finally, we have for each pixel of the final, the coordinate from where to fetch color (sampling)</li>
</ul>
</div>
<div id="_mcePaste">My first approach for iterating in a triangle was first, re-order it (find the top-high vertice, then left and right vertices), and then iterate it with straight equation. That&#8217;s not a great idea. There is a lot of special case, it&#8217;s complex and inefficient. Finally, a friend suggested me to proceed recursively, by splitting the triangle in 4, until it include only one pixel. Then, interpolation is done with a barycentric system. Tadaaa, it works every time, and that&#8217;s even efficient ! Thanks Théophile (yes, you now have contributed in free software with more than a libcaca patch =) ).</div>
<div id="_mcePaste">In fact, it&#8217;s so efficient that i will probably replace the &#8220;forward&#8221; method which is currently used for interactive preview (which is also quite ugly).</div>
<div id="_mcePaste"><a href="http://pellelatarte.fr/wp-content/uploads/2010/08/gegl_archi.png"><img class="aligncenter size-full wp-image-203" title="gegl_archi" src="http://pellelatarte.fr/wp-content/uploads/2010/08/gegl_archi.png" alt="" width="640" height="480" /></a></div>
<div id="_mcePaste">These is how the tool core looks like. Each circle is a Gegl operation.</div>
<div id="_mcePaste">
<ul>
<li>Cage_coef_calc compute, for each pixel that need to be transformed, the coefficient series that the transform algorithm need.</li>
<li>Cage_transform compute and inverse the transformation</li>
<li>Render_mapping render the final image.</li>
</ul>
</div>
<div id="_mcePaste">This architecture allow, with Gegl, easy reussing of this operation. In that case, my tool&#8217;s code can be easily reused and adapted to create an iWarp like tool.</div>
<p>To stay in the present, here is the state of things. My tool is in majority done. I mean that the core works well, and it&#8217;s usable for a classic utilisation. There is still some <span style="font-family: Arial; line-height: normal; font-size: 11px;"><span style="cursor: pointer; font-size: 14px;"><span id="IDA3C0VC" style="cursor: pointer;">teething problem</span></span></span> to correct (for instance, it doesn&#8217;t works on mask), love to give to UI, and it will be ready for code review and inclusion in master branch of Gimp. At least I hope =)</p>
<div id="_mcePaste">Here is some deform example:</div>
<div><a href="http://pellelatarte.fr/wp-content/uploads/2010/08/ex1.png"><img class="aligncenter size-full wp-image-204" title="ex1" src="http://pellelatarte.fr/wp-content/uploads/2010/08/ex1.png" alt="" width="610" height="377" /></a><a href="http://pellelatarte.fr/wp-content/uploads/2010/08/ex2.png"><img class="aligncenter size-full wp-image-205" title="ex2" src="http://pellelatarte.fr/wp-content/uploads/2010/08/ex2.png" alt="" width="640" height="400" /></a></div>
<div id="_mcePaste">It ain&#8217;t over, but it never was so close to be.</div>
]]></content:encoded>
			<wfw:commentRss>http://pellelatarte.fr/en/2010/08/fin-officielle/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
