<?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>BlackHC's Adventures in the Dev World &#187; PowerPoint</title>
	<atom:link href="http://blog.blackhc.net/tag/powerpoint/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.blackhc.net</link>
	<description>Just another weblog</description>
	<lastBuildDate>Wed, 16 Nov 2011 23:12:15 +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>PowerPoint LaTeX</title>
		<link>http://blog.blackhc.net/2010/05/powerpoint-latex/</link>
		<comments>http://blog.blackhc.net/2010/05/powerpoint-latex/#comments</comments>
		<pubDate>Sun, 30 May 2010 09:58:04 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Google Code]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[MiKTeX]]></category>
		<category><![CDATA[PowerPoint]]></category>
		<category><![CDATA[PowerPoint LaTeX]]></category>

		<guid isPermaLink="false">http://blog.blackhc.net/2010/05/powerpoint-latex/</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2010/05/powerpoint-latex/" title="PowerPoint LaTeX"></a>Hey everybody I only wanted to point out that I've uploaded a new and improved version of PowerPoint LaTeX at http://code.google.com/p/powerpointtools/ - it now supports MiKTeX \o/ I've also finally added a project page for it to this blog. More &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2010/05/powerpoint-latex/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2010/05/powerpoint-latex/" title="PowerPoint LaTeX"></a><p>Hey everybody <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
I only wanted to point out that I've uploaded a new and improved version of PowerPoint LaTeX at <a href="http://code.google.com/p/powerpointtools/">http://code.google.com/p/powerpointtools/</a> - it now supports MiKTeX \o/</p>
<p>I've also finally added a project page for it to this blog.<br />
More updates might follow soon if I find enough spare time <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Cheers,<br />
 Andreas</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2010/05/powerpoint-latex/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PowerPointLaTeX Update</title>
		<link>http://blog.blackhc.net/2009/08/powerpointlatex-update/</link>
		<comments>http://blog.blackhc.net/2009/08/powerpointlatex-update/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 00:48:34 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[University]]></category>
		<category><![CDATA[Formula Object]]></category>
		<category><![CDATA[Invoke]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[PowerPoint]]></category>

		<guid isPermaLink="false">http://blog.blackhc.net/?p=623</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2009/08/powerpointlatex-update/" title="PowerPointLaTeX Update"></a>Because people complained to me about the formula feature in my PowerPointLaTeX add-in, which used a somewhat experimental approach to editing formula objects by adding an editing text shape that contained the formula code and that would be merged back &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2009/08/powerpointlatex-update/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2009/08/powerpointlatex-update/" title="PowerPointLaTeX Update"></a><p>Because people complained to me about the formula feature in my PowerPointLaTeX add-in, which used a somewhat experimental approach to editing formula objects by adding an editing text shape that contained the formula code and that would be merged back into the formula as soon as you deselect it, I decided to rewrite it to use a standard modal dialog to edit formula objects:</p>
<div id="attachment_624" class="wp-caption aligncenter" style="width: 497px"><a href="http://blog.blackhc.net/wp-content/uploads/2009/08/PPTLaTeX_eqeditor.JPG"><img class="size-full wp-image-624" title="PPTLaTeX_eqeditor" src="http://blog.blackhc.net/wp-content/uploads/2009/08/PPTLaTeX_eqeditor.JPG" alt="PPTLaTeX_eqeditor" width="487" height="400" /></a><p class="wp-caption-text">Updated Ribbon (above) and Formula Editor Dialog (below)</p></div>
<p>The editor isn't perfect (yet), but it certainly shouldn't add any bugs to the add-in and solve some natural issues the old approach created.</p>
<h3>Implementation Note</h3>
<p>The idea was pretty straight-forward but the actual UI design was a PITA due me not knowning the panel/flow/table layout concepts very well and the code still has some annoying quirks with auto-scroll, so I need to fix that later.</p>
<p>I almost rewrote the whole cache system, because I'm using a background thread for updating the preview (if the text is changed, a 500 msec timer is started which triggers an update) and the update accesses the cache system, which in turn accesses PowerPoint to return some data, which in turn is busy because of the modal dialog -&gt; <strong>dead-lock</strong>.</p>
<p>The solution to this is very simple but was not obvious to me at first (I actually began to rewrite the cache system with a feeling that there should be an easier solution):<br />
The background thread needs an Invoke call to update the preview picture because the control has been created by a different thread (the main thread) and the code to get an updated picture can simply be moved into Invoke delegate function.</p>
<p>This solved all my problems and made 4 hours of previous work and thinking about a new cache system obsolete <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley' /> </p>
<p>Download the new build at: <a href="http://code.google.com/p/powerpointtools/downloads/list" target="_blank">http://code.google.com/p/powerpointtools/downloads/list</a></p>
<p>Cheers,<br />
Andreas</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2009/08/powerpointlatex-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Semi-Conductor Optimization (Uni Project)</title>
		<link>http://blog.blackhc.net/2009/08/semi-conductor-optimization-uni-project/</link>
		<comments>http://blog.blackhc.net/2009/08/semi-conductor-optimization-uni-project/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 12:29:55 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Maths]]></category>
		<category><![CDATA[University]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[MatLAB]]></category>
		<category><![CDATA[PowerPoint]]></category>
		<category><![CDATA[Semi-Conductor Optimization]]></category>

		<guid isPermaLink="false">http://blog.blackhc.net/?p=611</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2009/08/semi-conductor-optimization-uni-project/" title="Semi-Conductor Optimization (Uni Project)"></a>I've written my last exam yesterday (except for two oral exams in September), so now I have got some spare time before I start working on my Bachelor Thesis tomorrow and I want to use it to wrap up a &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2009/08/semi-conductor-optimization-uni-project/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2009/08/semi-conductor-optimization-uni-project/" title="Semi-Conductor Optimization (Uni Project)"></a><p>I've written my last exam yesterday (except for two oral exams in September), so now I have got some spare time before I start working on my Bachelor Thesis tomorrow and I want to use it to wrap up a few things.</p>
<p>During this term I took part in a course that was both a (research) project/presentation/lecture thing, which was fun but also a lot of work.<br />
I've already written about one mathematical aspect of it in my post about <a href="http://blog.blackhc.net/2009/05/analysis-cauchy-schwarz-and-reciprocal-sums/" target="_blank">Analysis, Cauchy-Schwarz and Reciprocal Sums</a>.</p>
<p>The project was about optimizing semi-conductor wiring placement. We wrote a small paper about our findings and the work it was based one - you can look download it <a href="http://blog.blackhc.net/wp-content/uploads/2009/08/SemiConductorPaper.pdf">here</a>.</p>
<p>We also created a self-running presentation that doesn't contain any Maths at all but makes heavy use of Flash animations (which were exported to .gif manually, which was a huge pain in the ass, which I will never do again if possible) to visualize all the concepts and algorithms.</p>
<p>You can download a PowerPoint 2007 (.pptx) version <a href="http://blog.blackhc.net/wp-content/uploads/2009/07/Aufbereitung.pptx" target="_blank">here</a> or one that works with PowerPoint 2003 <a href="http://blog.blackhc.net/wp-content/uploads/2009/07/Aufbereitung.ppt" target="_blank">here</a>.</p>
<p>For the Student's I sat down and wrote a small Flash application to show the algorithms at work. It's not obvious how it works, so let me explain the major points:</p>
<ul>
<li>On the right you have a number of panels that you can enlarge by clicking on the small button in the upper right of each panel.</li>
<li>The upper three panels show different views of the same dataset. They will all be updated as you run the algorithm step by step.</li>
<li>The fourth panel lets you change the number of wires and/or their activity.</li>
<li>The last panel shows the electrical field that is created by one active wire in the center. It was created using MatLAB. I've also uploaded the script <a href="http://blog.blackhc.net/wp-content/uploads/2009/08/leiter.m" target="_blank">here</a>.</li>
</ul>
<p><object id="Abitag" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="250" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="allowFullScreen" value="true" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="src" value="http://blog.blackhc.net/wp-content/uploads/2009/08/Abitag.swf" /><param name="name" value="Abitag" /><param name="allowfullscreen" value="true" /><embed id="Abitag" type="application/x-shockwave-flash" width="400" height="250" src="http://blog.blackhc.net/wp-content/uploads/2009/08/Abitag.swf" name="Abitag" bgcolor="#ffffff" quality="high" allowfullscreen="true" align="middle"></embed></object></p>
<p><a href="http://blog.blackhc.net/wp-content/uploads/2009/08/Abitag.swf">Abitag</a></p>
<p>Last but not least I've also uploaded the current version of all my .fla and .as files. You can download it <a href="http://blog.blackhc.net/wp-content/uploads/2009/08/FlashSources.zip" target="_blank">here</a>.</p>
<p>ActionScript is a nice language and you can quickly learn it using the <a href="http://help.adobe.com/en_US/Flash/10.0_Welcome/WS091A3800-D889-4425-B647-C44097B73F34.html" target="_blank">available resources from Adobe</a>.<br />
While ActionScript 2.0 is arguably weird, ActionScript 3.0 is quite logical and it's syntax is straight-forward and consistent, too. You can't say that about the IDE (Flash CS4), which is braindead, but if you're only interested in writing ActionScript code, <a href="http://www.flashdevelop.org/" target="_blank">FlashDevelop</a> is an excellent and free alternative.</p>
<p>This is it for now, maybe I'll play around with Flash some more another time.<br />
Cheers,<br />
Andreas</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2009/08/semi-conductor-optimization-uni-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PowerPoint Tools</title>
		<link>http://blog.blackhc.net/2009/04/powerpoint-tools/</link>
		<comments>http://blog.blackhc.net/2009/04/powerpoint-tools/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 09:47:10 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[AddIn]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[MiKTeX]]></category>
		<category><![CDATA[PowerPoint]]></category>
		<category><![CDATA[TexPoint]]></category>

		<guid isPermaLink="false">http://blog.blackhc.net/?p=376</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2009/04/powerpoint-tools/" title="PowerPoint Tools"></a>I've finally managed to upload a version of my PowerPoint LaTeX add-in for PowerPoint 2007. I'm just going to post a short Vimeo video here that shows how inline formulas work (the main feature): I've tried to work on the &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2009/04/powerpoint-tools/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2009/04/powerpoint-tools/" title="PowerPoint Tools"></a><p>I've finally managed to upload a version of my PowerPoint LaTeX add-in for <a href="http://office.microsoft.com/en-gb/powerpoint/default.aspx" target="_blank">PowerPoint</a> 2007.</p>
<p>I'm just going to post a short Vimeo video here that shows how inline formulas work (the main feature):</p>
<p><a href="http://blog.blackhc.net/2009/04/powerpoint-tools/"><em>Click here to view the embedded video.</em></a></p>
<p>I've tried to work on the add-in during my spring vacation but somehow I have instead spent all my time watching four seasons of House M.D. (which was totally worth it though <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ).</p>
<p>There are still some features like support for MikeTeX, code clean-ups, small bugfixes and a preference window that I should work on, but I don't plan on selling it, so I don't really care if it's still somewhat work in progress.<br />
I'm going to continue working on it when I have to use PowerPoint again.</p>
<p>You can check it out (and another add-in dubbed Language Painter that I wrote to fix some annoyances when writing presentations in languages different from your keyboard layout) at <a href="http://code.google.com/p/powerpointtools/" target="_blank">http://code.google.com/p/powerpointtools/</a>.</p>
<p><object width="400" height="267" data="http://picasaweb.google.de/s/c/bin/slideshow.swf" type="application/x-shockwave-flash"><param name="flashvars" value="host=picasaweb.google.de&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.de%2Fdata%2Ffeed%2Fapi%2Fuser%2Fblackhc%2Falbumid%2F5327258296103265841%3Fkind%3Dphoto%26alt%3Drss" /><param name="src" value="http://picasaweb.google.de/s/c/bin/slideshow.swf" /></object><br />
<span id="more-376"></span></p>
<h3>"Inter-Mortem"</h3>
<p>I'm not really done with the project but I think it's time nonetheless to talk about the project itself. Initially I looked into using <a href="http://texpoint.necula.org/" target="_blank">TexPoint</a> for a presentation I had to prepare, but it wasn't very user-friendly in my opinion and I also didn't really want to install <a href="http://miktex.org/" target="_blank">MiKTeX</a> again, so the idea was born to use a web service (from codecogs.com or wordpress.com) to render the equations and embed the formulas as pictures. A few tests later I knew that it was feasible, so I started to work on the project.</p>
<p>The bulk of the code was written in 4 days during my winter vacation (so that was 4 months ago) - I've only added minor things since then.</p>
<p>This warrants the question what took me so long to upload it and/or write about it. The main reason why it was delayed by such a long time is that I wanted to polish it some more and make sure it really has a well-rounded feature set. In retrospect I shouldn't have added support for non-inline equations because people will hardly use them and the way you edit them is kind of crazy (I create a text shape in the current slide to let the user change the equation) and I reverted lots of the later changes because I wasn't sure which direction to take UI-wise.</p>
<p>The user interface is mostly okay in my opinion but the ribbon might need a redesign to streamline it some more and also maybe come up with new things users would want to do. For that I'll probably wait until I have to use it again (probably in a few weeks' time) and then take notes about what to improve.</p>
<p>The design of the code is somewhat messy when you look at it, but that's because it grew out of a experimental project to see if it was possible to embed LaTeX code the way I wanted, and most of the functionality ended up in one big file/class (LaTeXTool.cs)  because everything is centered around inline formulas.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2009/04/powerpoint-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seminar about Motion Retargeting</title>
		<link>http://blog.blackhc.net/2009/01/seminar-about-motion-retargeting/</link>
		<comments>http://blog.blackhc.net/2009/01/seminar-about-motion-retargeting/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 23:32:20 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Maths]]></category>
		<category><![CDATA[University]]></category>
		<category><![CDATA[CCD]]></category>
		<category><![CDATA[Inverse Kinematics]]></category>
		<category><![CDATA[Macros]]></category>
		<category><![CDATA[Motion Retargeting]]></category>
		<category><![CDATA[Particle IK]]></category>
		<category><![CDATA[PowerPoint]]></category>
		<category><![CDATA[Spore]]></category>
		<category><![CDATA[VBA]]></category>

		<guid isPermaLink="false">http://blog.blackhc.net/?p=290</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2009/01/seminar-about-motion-retargeting/" title="Seminar about Motion Retargeting"></a>Two weeks ago I had to give a presentation about Motion Retargeting, which I want to share with you now. I created it due to me attending a seminar about the latest developments in Computer Graphics at university and my &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2009/01/seminar-about-motion-retargeting/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2009/01/seminar-about-motion-retargeting/" title="Seminar about Motion Retargeting"></a><p><a href="http://blog.blackhc.net/wp-content/uploads/2009/01/creatureanimationwb.gif"><img class="alignright size-full wp-image-300" title="creatureanimationwb" src="http://blog.blackhc.net/wp-content/uploads/2009/01/creatureanimationwb.gif" alt="creatureanimationwb" width="147" height="110" /></a>Two weeks ago I had to give a presentation about Motion Retargeting, which I want to share with you now.<br />
I created it due to me attending a seminar about the latest developments in Computer Graphics at university and my presentation was about the Siggraph '08 paper "<a href="http://www.chrishecker.com/images/c/cb/Sporeanim-siggraph08.pdf" target="_blank">Real-time Motion Retargeting to Highly Varied User-Created Morphologies</a>" from Chris Hecker et al.<br />
You can check it out on <a href="http://www.chrishecker.com/Real-time_Motion_Retargeting_to_Highly_Varied_User-Created_Morphologies" target="_blank">Chris Hecker's homepage</a> - his website also contains a bunch of other really cool articles and presentations from various conferences, so it certainly is worth taking a look at it.</p>
<p>I've also sifted through quite a lot of IK papers and lectures for my presentation to understand the later part about the IK solver in Spore and I've found a few links that are a nice read:</p>
<ul>
<li><a href="http://www.chrishecker.com/Inverse_Kinematics" target="_blank">Chris Hecker's talk</a> about IK is a nice introduction (you also get an audiostream which is nice, too).</li>
<li><a href="http://ir.lib.sfu.ca/handle/1892/7119" target="_blank">Chris Welman's Master Thesis</a> is nice for reading about some of the common methods to solve IK problems.</li>
<li><a href="http://graphics.ucsd.edu/courses/cse169_w05/index.html" target="_blank">Steve Rotenberg's Computer Animation</a> course is awesome - the slides about IK are nice, but the ones about locomotion are just awesome<a class="annotation" title="they really really are!" href="javascript:;"><strong>&#180;</strong></a>!</li>
<li>Particle IK and particle physics in games are related a lot (the constraint solver is pretty much the same) and for a nice read I can recommend <span lang="EN-US"><a href="http://www.teknikus.dk/tj/gdc2001.htm" target="_blank">Thomas Jakobsen's Advanced Character Physics</a>.</span></li>
<li><span lang="EN-US"><a href="http://www.pixar.com/companyinfo/research/pbm2001/" target="_blank">Pixar's Physically Based Modelling</a> course from 2001 is also nice to get going with physics again - it also explains everything you need to understand the idea behind ODE solvers in rigid body simulations  and also has a very nice explanation of stiffness in ODEs.</span></li>
<li><span lang="EN-US"><a href="http://books.google.com/books?id=2anZacrFaxoC&amp;printsec=frontcover" target="_blank">Principles of Animal Locomotion</a> is a very neat book that is about, well, the principles of animal locomotion, which I have read a bit thanks to Google books and it certainly is quite interesting.</span></li>
<li><span lang="EN-US"><a href="http://www.robotom.de/robi.htm" target="_blank">Numerical Robot Kinematics Based on Stochastic and Molecular Simulation Methods</a> is interesting, too, just to see what's possible with particle IK</span></li>
</ul>
<p>Ive created a huge PowerPoint presentation for my seminar  <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  It includes a few videos (thanks again to Chris Hecker for uploading them and replying to my emails incredibly fast <a class="annotation" title="he replied to each and every one of them within 20 minutes, which is crazy fast, if you're used to university communication ;-)" href="javascript:;"><strong>&#180;</strong></a>) and two <strong>awesome</strong> IK solvers that I've implemented with VBA macros<a class="annotation" title="VBA is horrible BTW" href="javascript:;"><strong>&#180;</strong></a> to show how CCD and Particle IK solvers work.</p>
<p>You can find a zip with all the videos and high resolution images <a href="http://blog.blackhc.net/wp-content/uploads/2009/01/MotionRetargeting.zip">here </a>(includes both a PPT 2003 file and a 2007 file). I've also uploaded a small version without videos, macros as PPT 2003 file <a href="http://blog.blackhc.net/wp-content/uploads/2009/01/motionretargetingcompat.ppt">here</a>, if you don't feel like downloading the 23 MB .zip file.</p>
<p>Here's a YouTube video of the two IK solvers:</p>
<p><a href="http://blog.blackhc.net/2009/01/seminar-about-motion-retargeting/"><em>Click here to view the embedded video.</em></a></p>
<div class="expandable"><a class="expandable_link" href="javascript:blackhc_replacements_togglediv('blackhc_expandable_1');">Click to expand &#187;</a>
<div class="expandable_text" name="blackhc_expandable_1" id="blackhc_expandable_1" style="display:none">The CCD solver usually works by solving one bone per inner iteration - I only added a max delta angle to create smooth animations (same for the max delta length in the Particle IK solver).</p>
<p>It seems as if the CCD solver could converge faster if it randomly chose the first joint instead of starting with the end effector joint in every outer iteration.</p></div>
<p></div>
<p>I've exported the code into an additional IK Playground presentation which contains just one slide and the two IK solvers with the setup you see in the video above. You can find the PPT 2003 version of it <a href="http://blog.blackhc.net/wp-content/uploads/2009/01/ikplayground.ppt">here</a> and the 2007 one <a href="http://blog.blackhc.net/wp-content/uploads/2009/01/ikplayground.pptm">here</a>.</p>
<p>I've zipped up the macros <a href="http://blog.blackhc.net/wp-content/uploads/2009/01/mr-pptmacros.zip">here</a> if you want to use them in your own slides. I've also written a handy VBA form that allows one to edit everything more easily (the macros are hardly documented though, but if anyone really wants to use them and runs into problems - you can always drop me a line or two in a comment <img src='http://blog.blackhc.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p style="text-align: center;">
<div id="attachment_302" class="wp-caption aligncenter" style="width: 501px"><a href="http://blog.blackhc.net/wp-content/uploads/2009/01/iksolvertool1.jpg"><img class="size-large wp-image-302" title="iksolvertool1" src="http://blog.blackhc.net/wp-content/uploads/2009/01/iksolvertool1-1024x622.jpg" alt="The IK Solver Tool Form" width="491" height="298" /></a><p class="wp-caption-text">The IK Solver Tool Form</p></div>
<p>BTW I'm not sure you know about it<a class="annotation" title="I only learned of it by chance" href="javascript:;"><strong>&#180;</strong></a>, but <a href="http://www.blender.org/">Blender</a> contains an awesome video editor - the UI needs some time to get used to, but the online documentation has improved a lot and with it, it works like a charm. Blender also supports some <a href="http://wiki.blender.org/index.php/Manual/Sequence_Plugins">pretty professional filters</a>, so it's going to be my video editing tool of choice from now on.</p>
<p>Cheers,<br />
Andreas</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2009/01/seminar-about-motion-retargeting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Microsoft PowerPoint Rant</title>
		<link>http://blog.blackhc.net/2008/12/microsoft-powerpoint-rant/</link>
		<comments>http://blog.blackhc.net/2008/12/microsoft-powerpoint-rant/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 22:52:04 +0000</pubDate>
		<dc:creator>BlackHC</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Personal Rantings]]></category>
		<category><![CDATA[Macro]]></category>
		<category><![CDATA[PowerPoint]]></category>
		<category><![CDATA[Table of Contents]]></category>
		<category><![CDATA[VBA]]></category>

		<guid isPermaLink="false">http://blog.blackhc.net/?p=163</guid>
		<description><![CDATA[<a href="http://blog.blackhc.net/2008/12/microsoft-powerpoint-rant/" title="Microsoft PowerPoint Rant"></a>I have to do a presentation at university and it needs to be done in PowerPoint - OpenOffice and LaTeX are explicity not allowed. Usually I'm all for Microsoft, but PowerPoint really lacks quite a few things that one would &#8230;<p class="read-more"><a href="http://blog.blackhc.net/2008/12/microsoft-powerpoint-rant/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://blog.blackhc.net/2008/12/microsoft-powerpoint-rant/" title="Microsoft PowerPoint Rant"></a><p>I have to do a presentation at university and it needs to be done in PowerPoint - OpenOffice and LaTeX are explicity not allowed.<br />
Usually I'm all for Microsoft, but PowerPoint really lacks quite a few things that one would expect to be common in modern presentation software:</p>
<ul>
<li>ability to insert document properties</li>
<li>working document properties - somehow I get an error message every time I try to open the document property viewer...</li>
<li>changing the language of a presentation (for all slides, etc.) - it's just a huge W-T-F that you have to use macros or add-ins to do that</li>
<li>table of contents slides - it's incredible that there is no way to automate this in PowerPoint.</li>
</ul>
<p>LaTeX is a 1000x more user-friendly in that regard to be honest. You can download some packages for free that automate everything that is worth automating and you won't be bothered with updating all possible things manually everytime. It also usually supports more powerful slides with advanced navigation, etc.</p>
<p>Nonetheless if PowerPoint sucks, then<strong> Visual Basic for Applications for PowerPoint</strong> is one big <strong>brainfuck</strong>. The level of stupidity and general suckiness of VBA as language and the fact that you somehow don't find up-to-date documentation about it online (no language specs?) and some braindead decisions in the PowerPoint macro API make it a real PITA to work with..</p>
<p>Anyway, I've written a macro to create a Table of Contents slide automatically for a PowerPoint presentation - it also allows for updating it later on and for customizing its title without overwriting it on update:</p>
<pre>
<pre class="brush: vb; title: ; notranslate">
' create a Table of Contents slide as second slide (but you can move it around afterwards)
' you can use the macro to update an already generated one without it resetting the title or the slide's position
Const TOCTag = &quot;TOC?Level&quot;
Const TOCSlideName = &quot;TOC?Slide&quot;

Sub CreateTOCSlide()
    Dim contentSlide As Slide
    On Error Resume Next
    Set contentSlide = ActivePresentation.Slides(TOCSlideName)

    If contentSlide Is Nothing Then
        Set contentSlide = ActivePresentation.Slides.AddSlide(2, ActivePresentation.Slides(1).CustomLayout)
        contentSlide.Name = TOCSlideName
        contentSlide.Layout = ppLayoutText
        contentSlide.Shapes.title.TextFrame.TextRange.Text = &quot;Table of Contents&quot;
    End If

    UpdateTOCSlide
End Sub

Private Function FindTOCSlideWithTitle(title As String) As Slide
    Dim cSlide As Slide
    For Each cSlide In ActivePresentation.Slides
        If cSlide.Tags(TOCTag) &lt;&gt; &quot;&quot; Then
            If cSlide.Shapes.title.TextFrame.TextRange.Text = title Then
                Set FindTOCSlideWithTitle = cSlide
                Exit Function
            End If
        End If
    Next cSlide
    Set FindTOCSlideWithTitle = Nothing
End Function

Sub UpdateIndentationFromTOC()
    Dim contentSlide As Slide
    On Error Resume Next
    Set contentSlide = ActivePresentation.Slides(TOCSlideName)

    If contentSlide Is Nothing Then
        Exit Sub
    End If

    Dim contentTextRange As TextRange2
    Set contentTextRange = contentSlide.Shapes.Placeholders(2).TextFrame2.TextRange

    Dim p As TextRange2
    For Each p In contentTextRange.Paragraphs()
        Dim cSlide As Slide
        Set cSlide = FindTOCSlideWithTitle(Left(p.Text, Len(p.Text) - 1))
        If Not cSlide Is Nothing Then
            cSlide.Tags.Add TOCTag, p.ParagraphFormat.indentLevel
        End If
    Next p
End Sub

Private Sub UpdateTOCSlide()
    Dim contentSlide As Slide
    On Error Resume Next
    Set contentSlide = ActivePresentation.Slides(TOCSlideName)

    If contentSlide Is Nothing Then
        Exit Sub
    End If

    Dim contentTextRange As TextRange2
    Set contentTextRange = contentSlide.Shapes.Placeholders(2).TextFrame2.TextRange

    contentSlide.Shapes.Placeholders(2).TextFrame2.DeleteText
    contentTextRange.ParagraphFormat.Bullet.Type = ppBulletNumbered

    Dim index As Integer
    index = 1

    For Each pSlide In ActivePresentation.Slides
        Dim tagValue As Integer
        tagValue = Val(pSlide.Tags(TOCTag))
        If tagValue &gt; 0 Then
            contentTextRange.InsertAfter pSlide.Shapes.title.TextFrame.TextRange.Text &amp;amp; vbCrLf
            contentTextRange.Lines(index, 1).ParagraphFormat.indentLevel = tagValue
            contentTextRange.Lines(index, 1).ParagraphFormat.LeftIndent = 40 * tagValue
            'contentTextRange.Lines(index).ParagraphFormat.Bullet.Type = ppBulletNumbered
            index = index + 1
        End If
    Next pSlide

End Sub

Sub ToggleTOCEntrySlide()
    Dim currentSlide As Slide
    Set currentSlide = ActiveWindow.View.Slide

    Dim newValue As String
    If currentSlide.Tags(TOCTag) &lt;&gt; &quot;&quot; Then
        newValue = &quot;&quot;
    Else
        newValue = &quot;1&quot;
    End If
    currentSlide.Tags.Add TOCTag, newValue

    UpdateTOCSlide
End Sub

Private Function ClampIndentLevel(level As Integer) As Integer
    If level &lt; 1 Then
        ClampIndentLevel = 1
    ElseIf level &gt; 5 Then
        ClampIndentLevel = 5
    Else
        ClampIndentLevel = level
    End If
End Function

Sub IndentTOCEntrySlide()
    Dim currentSlide As Slide
    Set currentSlide = ActiveWindow.View.Slide

    currentSlide.Tags.Add TOCTag, ClampIndentLevel(1 + Val(currentSlide.Tags(TOCTag)))

    UpdateTOCSlide
End Sub

Sub UnindentTOCEntrySlide()
    Dim currentSlide As Slide
    Set currentSlide = ActiveWindow.View.Slide

    currentSlide.Tags.Add TOCTag, ClampIndentLevel(Val(currentSlide.Tags(TOCTag)) - 1)
    UpdateTOCSlide
End Sub
</pre>
</pre>
<div class="expandable"><a class="expandable_link" href="javascript:blackhc_replacements_togglediv('blackhc_expandable_3');">Old Version &#187;</a>
<div class="expandable_text" name="blackhc_expandable_3" id="blackhc_expandable_3" style="display:none">
<pre>
<pre class="brush: vb; title: ; notranslate">
' create a Table of Contents slide as second slide (but you can move it around afterwards)
' you can use the macro to update an already generated one without it resetting the title or the slide's position
Sub CreateContentTableSlide()
    Const contentSlideName = &quot;ContentTable&quot;

    Dim contentSlide As Slide
    On Error Resume Next
    Set contentSlide = Nothing
    Set contentSlide = ActivePresentation.Slides(contentSlideName)

    On Error GoTo 0
    If contentSlide Is Nothing Then
        Set contentSlide = ActivePresentation.Slides.AddSlide(2, ActivePresentation.Slides(1).CustomLayout)
        contentSlide.Name = contentSlideName
        contentSlide.Layout = ppLayoutText
        contentSlide.Shapes.Title.TextFrame.TextRange.Text = &quot;Table of Contents&quot;
    End If

    Dim contentTextRange As TextRange
    Set contentTextRange = contentSlide.Shapes.Placeholders(2).TextFrame.TextRange

    With contentTextRange
        .ParagraphFormat.Bullet.Type = ppBulletNumbered
        .Text = &quot;&quot;
    End With

    For Each pSlide In ActivePresentation.Slides
        If (pSlide.Layout = ppLayoutTitle) Or (pSlide.Layout = ppLayoutTitleOnly) Then
        ElseIf pSlide.Name = contentSlideName Then
        Else
            contentTextRange.InsertAfter pSlide.Shapes.Title.TextFrame.TextRange.Text &amp;amp;amp;amp;amp; vbNewLine
        End If
    Next pSlide
End Sub
</pre>
</p></div>
<p></div>
<p>The most recent version can be found in <a href="http://blog.blackhc.net/wp-content/uploads/2009/01/mr-pptmacros.zip">this .zip file here</a> (TOC.bas).</pre>
<p>Some remarks:</p>
<ul>
<li>"On Error Resume Next" - it's crazy that VBA uses this to control its error handler (this construct dates back to QuickBasic..)</li>
<li>VBA doesn't support normal exception handling it seems</li>
<li>what does the set statement do and why is it necessary to use it when dealing with object references - I've experienced strange error messages before I started using it</li>
<li>VBA doesn't seem to support a Continue statement (continue as the counterpart to break)</li>
<li>The VBA documentation is inside the Access documentation (in case you look for it)</li>
</ul>
<p>Hopefully this is useful for other poor souls who have to or try to work with PowerPoint's macro facilities.</p>
<p>Cheers,<br />
Andreas</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blackhc.net/2008/12/microsoft-powerpoint-rant/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

