<?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>toxicsoftware.com &#187; Flying Meat</title>
	<atom:link href="http://toxicsoftware.com/tag/flying-meat/feed/" rel="self" type="application/rss+xml" />
	<link>http://toxicsoftware.com</link>
	<description>RANDOMIZE USR 0</description>
	<lastBuildDate>Sun, 01 Aug 2010 17:49:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>AcornImage</title>
		<link>http://toxicsoftware.com/acornimage/</link>
		<comments>http://toxicsoftware.com/acornimage/#comments</comments>
		<pubDate>Tue, 19 Feb 2008 15:05:58 +0000</pubDate>
		<dc:creator>schwa</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[Acorn]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Flying Meat]]></category>
		<category><![CDATA[gus mueller has a posse]]></category>
		<category><![CDATA[Source Code]]></category>

		<guid isPermaLink="false">http://toxicsoftware.com/acornimage/</guid>
		<description><![CDATA[It was just your typical InterfaceBuilder 3 window&#8230; with your vanilla NSImageView&#8230; referring to an image file within an Xcode project&#8230; Holy Cow! An Acorn file? Does that mean I can use Acorn files directly in Interface Builder 3? Does &#8230; <a href="http://toxicsoftware.com/acornimage/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It was just your typical InterfaceBuilder 3 window&#8230;</p>

<p><a href="/uploads/acornimageib3.png&quot;"><img src="/uploads/acornimageib3.thumbnail.png" alt="AcornImageIB3.png" /></a></p>

<p>with your vanilla NSImageView&#8230;</p>

<p><a href="/uploads/acornimageview.png"><img src="/uploads/acornimageview.thumbnail.png" alt="AcornImageView.png" /></a></p>

<p>referring to an image file within an Xcode project&#8230;</p>

<p><a href="/uploads/acorninxcode.png"><img src="/uploads/acorninxcode.thumbnail.png" alt="AcornInXcode.png" /></a></p>

<p><a href="http://www.hospitalgowns.com/Buy_Bouffant_Pages/A0822b.htm">Holy Cow!</a> An <a href="http://www.flyingmeat.com/acorn/">Acorn</a> file? Does that mean I can use Acorn files directly in Interface Builder 3? Does that mean you&#8217;ve written an NSCustomImageRep that understands the Acorn file format? Does that mean I can use Acorn files directly in my Cocoa projects? And that means I no longer have to keep exporting these bloody files as pngs so I can use them in Cocoa, right? Will this give rixstep some ammunition to go apeshit insane about?</p>

<p>Yes! Yes!! Yes!!! Yes!!!! Yes!!!!! Almost certainly.</p>

<p>Not only does Gus Mueller generously provide details about the <a href="http://flyingmeat.com/wikka/AcornFileFormat">Acorn file format</a>, he has even released the source code to his Acorn Quicklook plugin. This gives me everything I need to convince NSImage to load Acorn files.</p>

<p>You might well be asking yourself why. I was getting annoyed with having to constantly keep exporting original Acorn images as pngs or TIFFs so I could use them in Xcode. I&#8217;m prototyping a new application that uses a lot of custom UI elements. These elements are made up of one or more pngs, some of which needed a lot of tweaking and attention to detail to get right. Acorn is perfect for UI work (although it needs more than 2000% zoom! <em>cough</em>) but having to export as png (or another format that Cocoa understands natively) and manage two sets of images (original Acorn, exported png) was turning into a pain.</p>

<p>I&#8217;ve taken Gus&#8217; QuickLook code and wrapped a small <a href="http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSCustomImageRep_Class/Reference/Reference.html">NSCustomImageRep</a> around it. Very small. I&#8217;ve repackaged it up as a Framework so you can refer to it from an Interface Builder 3 plugin. This gives you the ability to do this:</p>

<pre><code>[NSImage imageNamed:@"IAmAnAcornFile"];
</code></pre>

<p>You should be able to use Acorn files anywhere an NSImage is used. Just embed your Acorn files in your XCode project resources and refer to them by name in your NIBs or in code.</p>

<p>I&#8217;ve put the code on my public googlecode.com subversion <a href="http://toxic-public.googlecode.com/svn/tags/BlogTag_20080219_785/Projects/Acorn/AcornImageFramework">repository</a>.</p>

<p>I&#8217;m currently on the fence about whether it is a good idea or not to ship your application with Acorn images. It certainly makes sense to me to use them during the interface design stage of application development. Once the user interface churn settles down I should be able to finalize the images and convert them to pngs or whatever (keeping the originals of course).</p>

<p>A best of both worlds solution might be to make a little command line tool that can convert Acorn files:</p>

<pre><code>#!/usr/bin/python
from AcornImage import *
# Everything else is an exercise for the reader.
</code></pre>

<p>And then automatically convert from Acorn to whatever during the Xcode build process. I might investigate this technique at a later date. But for now &#8211; have at it.</p>
]]></content:encoded>
			<wfw:commentRss>http://toxicsoftware.com/acornimage/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>The Intersection of Cool and Awesome</title>
		<link>http://toxicsoftware.com/the-intersection-of-cool-and-awesome/</link>
		<comments>http://toxicsoftware.com/the-intersection-of-cool-and-awesome/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 17:37:24 +0000</pubDate>
		<dc:creator>schwa</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[3Dconnexion]]></category>
		<category><![CDATA[Acorn]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Flying Meat]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[SpaceNavigator]]></category>

		<guid isPermaLink="false">http://toxicsoftware.com/the-intersection-of-cool-and-awesome/</guid>
		<description><![CDATA[3Dconnexion (a division of Logitech) produces the coolest named device ever: The 3Dconnexion SpaceNavigator . This is a 3D input device with 6 degrees of freedom, meaning you can move and rotate it through the X, Y and Z planes. &#8230; <a href="http://toxicsoftware.com/the-intersection-of-cool-and-awesome/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.3dconnexion.com/">3Dconnexion</a> (a division of <a href="http://logitech.com/">Logitech</a>) produces the coolest named device ever: The <a href="http://www.amazon.com/gp/product/B000LB41BM?ie=UTF8&amp;tag=toxicsoftware-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B000LB41BM">3Dconnexion SpaceNavigator</a>
. This is a 3D input device with <a href="http://en.wikipedia.org/wiki/6_Degrees_Of_Freedom">6 degrees of freedom</a>, meaning you can move and rotate it through the X, Y and Z planes. I bought it originally on a whim (hey only 50 bucks!) for use with <a href="http://sketchup.google.com/">Google Sketchup</a> and <a href="http://earth.google.com/">Google Earth</a>. It took about twenty minutes to get competent with the device and I was soon whizzing around Manhattan inside Google Earth. The device is designed to use in your off hand with a mouse in your primary hand. This gives you a fantastic level of control in 3D applications.</p>

<p><img src="http://toxicsoftware.com/wordpress/uploads/3dx-spacenavigator.jpg" alt="3dx_spacenavigator.jpg" border="0" width="207" height="208" /></p>

<p>The software that comes with the SpaceNavigator is functional, but like a lot of hardware related software is rough around the edges. You can provide customised settings for specific applications or use global settings. You can set up macros to fire when either of the SpaceNavigator&#8217;s two buttons are pressed. Understandibly the SpaceNavigator will not appear to applications as a standard input device, so 3Dconnexion provide an <a href="http://www.3dconnexion.com/docs/3DxMacWareSDK.dmg">API</a> to allow 3rd party developers to use the device. This opens up a host of opportunities for 3rd party developers. The Space Navigator could be used in third-party applications as a jog wheel, kind of like the <a href="http://www.griffintechnology.com/products/powermate/">Griffin Powermate</a> and also as a 2D scroll wheel at the same time.</p>

<p>This leads me onto <a href="http://flyingmeat.com/acorn/">Acorn</a>, Acorn is <a href="http://gusmueller.com/">Gus Mueller&#8217;s</a> newest application. It is an awesome 2D image editor, with a healthy list of features. I consider it to be a &#8220;Photoshop for the rest of us&#8221;, and has quickly become my image editor of choice. Like Gus&#8217; <a href="http://www.flyingmeat.com/voodoopad/">VoodooPad</a>, Acorn also supports a <a href="http://flyingmeat.com/acorn/plugin.shtml">plug-in architecture</a>. This allow developers to extend the applications in ways Gus wouldn&#8217;t have dreamt of (although considering Gus wrote FlyGesture I&#8217;m sure he has some pretty funky dreams). I&#8217;ve created a plug-in for Acorn that uses the SpaceNavigator API to zoom and scroll around the image you&#8217;re editing. Rotating the SpaceNavigator causes the image to rotate (using the CoreImage affine transformation filter). This just touches the surface of the cool things you can do with the SpaceNavigator and an application that supports plug-ins.</p>

<p>Now for the money shots, two movies of the plug-in in action:</p>

<p><a href="http://s3.amazonaws.com/uploads.toxicsoftware.com/SpaceNavigatorAcorn.mp4"><img src="http://toxicsoftware.com/wordpress//uploads/spacenabvigatoracornpreview.png" alt="SpaceNabvigatorAcornPreview.png" border="0" width="293" height="248" /></a></p>

<p><a href="http://s3.amazonaws.com/uploads.toxicsoftware.com/SpaceNavigatorAcorn2.mp4"><img src="http://toxicsoftware.com/wordpress//uploads/spacenabvigatoracorn2preview.png" alt="SpaceNabvigatorAcorn2Preview.png" border="0" width="277" height="248" /></a></p>

<p>Source code for the plug-in is on my Google public repository <a href="http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_743/Projects/Acorn/AcornSpaceNavigator/">link</a>, I&#8217;ve also written a Cocoa wrapper for the 3Dconnextion API (required by the Acorn plug-in): <a href="http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_743/Projects/SpaceControllerTest/">link</a>. My Cocoa wrapper provides a much simpler interface to the device, and also provides more functionality (such as emulating a scroll wheel). I&#8217;ll be working on the wrapper more in the future.</p>

<p>All this code is a work in progress and you will probably need to massage the Xcode project to get it to compile. You&#8217;ll also need the 3Dconnexion API (and of course a SpaceController).</p>

<p>And hey look &#8211; I&#8217;m blogging again!</p>

<hr />

<p>Update: I got daringfireballed, so I&#8217;ve moved the movies onto youtube &#8211; quality sucks, but now the server seems responsive again. Links to source code fixed.</p>

<hr />

<p>Update: Movies now on Amazon S3. Youtube quality sucks so much. (videos still on Youtube <a href="http://www.youtube.com/watch?v=mad0UJOlo9Y">here</a> and <a href="http://www.youtube.com/watch?v=SQKb4qM3D5U">here</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://toxicsoftware.com/the-intersection-of-cool-and-awesome/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
<enclosure url="http://toxicsoftware.com/wordpress/uploads/SpaceNavigatorAcorn.mp4" length="2489441" type="video/mp4" />
<enclosure url="http://toxicsoftware.com/wordpress/uploads/SpaceNavigatorAcorn2.mp4" length="870846" type="video/mp4" />
<enclosure url="http://s3.amazonaws.com/uploads.toxicsoftware.com/SpaceNavigatorAcorn.mp4" length="2489441" type="audio/mp4" />
<enclosure url="http://s3.amazonaws.com/uploads.toxicsoftware.com/SpaceNavigatorAcorn2.mp4" length="870846" type="audio/mp4" />
		</item>
	</channel>
</rss>
