<?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"
	>

<channel>
	<title>Blinky's Blog</title>
	<atom:link href="http://www.barefootmobile.com/blogs/blinky/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.barefootmobile.com/blogs/blinky</link>
	<description>Blinky experiments with life and gadgets</description>
	<pubDate>Mon, 07 Jul 2008 21:35:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Object Oriented Programming and concepts in eyeGT</title>
		<link>http://www.barefootmobile.com/blogs/blinky/?p=12</link>
		<comments>http://www.barefootmobile.com/blogs/blinky/?p=12#comments</comments>
		<pubDate>Mon, 07 Jul 2008 21:35:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[eyeGT]]></category>

		<guid isPermaLink="false">http://www.barefootmobile.com/blogs/blinky/?p=12</guid>
		<description><![CDATA[Part Two
eyeGT is written in C++ thus its logic and operations are heavily based on the Object Oriented (OO) paradigm. Unlike most other graphic libraries, eyeGT provides a monolithic access to the whole library, the application doesn&#8217;t have to deal with objects allocation and freeing, saving pointers etc. as eyeGT itself will perform these operations [...]]]></description>
			<content:encoded><![CDATA[<p>Part Two</p>
<p><strong>eyeGT</strong> is written in C++ thus its logic and operations are heavily based on the Object Oriented (OO) paradigm. Unlike most other graphic libraries, <strong>eyeGT</strong> provides a monolithic access to the whole library, the application doesn&#8217;t have to deal with objects allocation and freeing, saving pointers etc. as <strong>eyeGT</strong> itself will perform these operations when needed. The advantages of such architecture are multifold:</p>
<ul type="disc">
<li>Reduced memory fragmentation: <strong>eyeGT</strong> allocates a chunk of memory and uses it as a pool to allocate objects in it, performing housekeeping (garbage collection) when required. This alone guarantees that your application will never experience memory leakages owing to unreleased objects.</li>
<li>Better control over memory allocation: objects are instantiated only when required and released when no longer needed. The application doesn&#8217;t have to worry about when to release memory, <strong>eyeGT</strong> will do it when most appropriate, without degrading the performance of the application.</li>
<li>Reduce time to develop: programmer doesn&#8217;t need to debug the graphic library, Barefoot Software using the latest technologies in problem tracking and solving did the job already, so you can concentrate on the architecture of your application instead of solving other libraries&#8217; problems.</li>
<li>Portability: whatever the platform, processor and quantity of memory are, <strong>eyeGT</strong> can be ported to it; a C++ compiler is the only needed tool. <strong>eyeGT</strong> doesn&#8217;t uses RTTI and exceptions, as most embedded systems C++ compilers do not support them; extensive error description is returned by each API to allow for problems easy pinpointing. In case of any error, the application will never crash owing to <strong>eyeGT</strong> inability to handle an error; this is a very stringent and at the same time basic requirement for any technology that is mean to use in a production environment that can put life at risk like: airplanes displays, life maintenance machines or nuclear facilities.</li>
</ul>
<p><span id="more-12"></span></p>
<p>The OO paradigm of <strong>eyeGT</strong> is not only used internally by the code but it is extended to all the operations and services that an application may require from it. In most of the other graphical libraries or toolkits, the application has to have total control over the drawing process: it has to call the appropriate method in the correct order with the right timing and has to respond to a series of messages coming from the hosting operating system to correctly display graphical elements. There is no way of storing graphical objects in a OO manner within the library itself and just instructing them to repaint themselves when they need to be updated. With such a scheme even simple effects like making a blinking object will turn quickly into a daunting task. Even if lately some libraries have appeared on the market (like GDI+ and others) they require an enormous quantity of resources to run and cannot be ported to embedded systems.</p>
<p><strong>eyeGT</strong> takes a completely different approach:</p>
<p>The application no longer has access the drawing surface directly, in order to visualize something on the screen the application needs to create a visual object (like an <strong>eyeGT</strong> shape), place some drawing commands on it and finally place the shape on the screen. <strong>eyeGT</strong> uses a dictionary based system (<strong>Particle Dictionary</strong>) to keep track of every particle (shape, sound, container, button etc) created by the user application.</p>
<p>When a method to place a particle is invoked (i.e. <strong>egtPlaceParticleInstance</strong>), <strong>eyeGT</strong> put an instance of the selected particle in the canvas; actually, the instance is placed in the <strong>Display List</strong> and when the latter is processed using the <strong>egtProcessDisplayList</strong> method the resulting shape is drawn on the canvas.</p>
<p>Think about the <strong>Particle Dictionary</strong> as a list of class templates and when a particle is placed on the canvas <strong>eyeGT</strong> creates an instance of that template as in the diagram below:</p>
<p align="center"><img src="http://www.barefootmobile.com/blogs/blinky/wp-content/uploads/2008/07/eyegt_particledictionary_1.jpg" alt="eyeGT_ParticleDictionary" /></p>
<p>Of course it is possible to place many instances of a particle on the canvas, as below:</p>
<table border="0" cellPadding="0">
<tr>
<td>
<p align="center"><img src="http://www.barefootmobile.com/blogs/blinky/wp-content/uploads/2008/07/eyegt_canvas_1.jpg" alt="eyeGT_Canvas_1" /><br />
A shape particle consisting of a red filled circle with yellow border has been created and an instance of it has been placed on the canvas.</p>
</td>
<td>
<p align="center"><img src="http://www.barefootmobile.com/blogs/blinky/wp-content/uploads/2008/07/eyegt_canvas_2.jpg" alt="eyeGT_Canvas_2" /><br />
Another instance of the same particle has been placed on the canvas and colorized using the <strong>egtTintInstance</strong> method.</p>
</td>
</tr>
</table>
<h2>Particle Dictionary</h2>
<h3>Concept of particle</h3>
<p><strong>eyeGT</strong> uses <strong>Particles</strong> and <strong>Instances of particles</strong> to perform its operation. A particle is a visible (or in certain cases not visible) ‘template&#8217; that defines a certain object; all the particles are stored in a list known as the <strong>Particle Dictionary</strong> handled transparently by <strong>eyeGT</strong> itself. For example: a shape particle is an object template that contains drawing instruction like <strong>egtLineTo</strong> or <strong>egtQuadricCurveTo</strong> issued in a fashion  that represents, always for example, a square. Creating a particle does not mean making something visible on the screen, but merely defining its ‘template&#8217;, ‘model&#8217; or in <strong>eyeGT</strong> parlor a ‘particle&#8217;.  To show the defined particle in the canvas, it is necessary to call the <strong>egtPlaceParticleInstance</strong> function; to give some C++ parallelism: as it is possible to create many instances (objects) of a given C++ class and change values of its members (properties), in <strong>eyeGT</strong> it is possible to call the <strong>egtPlaceParticleInstance</strong> function several times for the same particle and then modify the visual appearance (properties) of any of the instances independently from each other.</p>
<p>To each particle in the <strong>Particle Dictionary</strong> is assigned a unique ID. The ID is a non-signed two bytes numerical value that ranges from1 to 65,535; the value 0 is reserved by <strong>eyeGT</strong> to hold a special particle, the root particle, as discussed in the next chapter. The application may choose the ID assigned to each particle as it wishes; note that the ID is a mere identifier for the particle, so particlea that have a lesser ID number (i.e.: 10) have no special attributes (like display priority for example) when compared to other particle that have bigger ID values (i.e.: 100).</p>
<p>Being unique, two particles cannot have the same ID, if for some reason the application need to have a particle with an ID already being using by another particle (even of a different type), it needs to free the other particle by calling the <strong>egtReleaseParticle</strong> method and then create the new particle with the same ID. Given the limitation above, an application may define up to 65,535 different particles, but the number of instances is actually unlimited. Note that the maximum number of particle is dictated by the limitations of the system hosting the application, like memory availability, more than the range limit of the ID itself.</p>
<h2>Particle memory allocation</h2>
<p>When creating a particle, the system automatically reserve memory to contain it; sometime, particles require defining data to be passed as creation time, like the binary definition of a shape loaded from a disk file, as in the code below:</p>
<p><strong>egtLoadShape(eyeGTCanvas, pidREDRECTANGLE, lpData, Data, true);</strong></p>
<p>when this line gets executed, <strong>eyeGT</strong> will attempt to create a shape particle, assign to it the ID represented by the enum <strong>pidREDRECTANGLE</strong> (i.e.: 100) and copy the data contained in the buffer pointed by <strong>lpData</strong> into its own internal buffer. This way of operating may create some problems when dealing with devices with limited memory, as at one time there are two copies of the same data in memory. To override this situation, <strong>eyeGT</strong> provides the <strong>CopyData</strong> parameters on all the data loading functions like <strong>egtLoadShape</strong>, <strong>egtLoadFont</strong> etc. If <strong>false</strong> is specified for <strong>CopyData</strong>, <strong>eyeGT</strong> will NOT copy the data in the <strong>lpData</strong> buffer, but will save a pointer to the data itself, so the application has the responsibility of allocating and preserving the block of memory until <strong>eyeGT</strong> will need it. The memory block can be released when the particle is not being currently used (i.e.: a shape particle displayed or a sound particle being played) and has been removed from the <strong>Particle Dictionary</strong> using the <strong>egtReleaseParticle</strong> method. If <strong>true</strong> will be specified for <strong>CopyData</strong>, the application may free the buffer pointed by <strong>lpData</strong> as soon after the data loading functions have been executed.</p>
<h2></h2>
]]></content:encoded>
			<wfw:commentRss>http://www.barefootmobile.com/blogs/blinky/?feed=rss2&amp;p=12</wfw:commentRss>
		</item>
		<item>
		<title>What is this b.Tween and eyeGT all about then?</title>
		<link>http://www.barefootmobile.com/blogs/blinky/?p=10</link>
		<comments>http://www.barefootmobile.com/blogs/blinky/?p=10#comments</comments>
		<pubDate>Tue, 01 Jul 2008 14:27:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[b.Tween]]></category>

		<category><![CDATA[eyeGT]]></category>

		<guid isPermaLink="false">http://www.barefootmobile.com/blogs/blinky/?p=10</guid>
		<description><![CDATA[
Ok, so if I tell you that eyeGT + b.Tween will make it possible to port Flash and FlashLite content to the iPhone/iPod Touch as native applications, you don’t need any more explanation right?
Maybe not, judging from the huge number of emails I’m getting and the posts I read on the various blogs.
The lack of [...]]]></description>
			<content:encoded><![CDATA[<p align="center" style="text-align: center"><img src="http://www.barefootmobile.com/blogs/blinky/wp-content/uploads/2008/07/btweenlogo.png" alt="b.Tween Logo" /></p>
<p>Ok, so if I tell you that eyeGT + b.Tween will make it possible to port Flash and FlashLite content to the iPhone/iPod Touch as native applications, you don’t need any more explanation right?</p>
<p>Maybe not, judging from the huge number of emails I’m getting and the posts I read on the various blogs.</p>
<p>The lack of information is completely our fault however&#8230;.. until today Barefoot Software has been dealing almost exclusively with telecoms and handset manufacturers to deploy custom applications on mobile platforms. We have never had to explain too much detail on our website as executives generally don’t know how to use a web browser right?…. Just kidding of course!!!</p>
<p>Everything started with a very cool application made by <a target="_blank" href="http://www.thomasjoos.be/">Thomas Joos </a>of <a target="_blank" href="http://www.boulevart.be">Boulevart</a>, a mobile guide to the <a target="_blank" href="http://www.rockwerchter.be/RW2008/site/index.asp">Rock Wechter</a> concert that will take place in Belgium from the 3rd to the 6th of July. Thomas designed and created the original Flash Lite version running on Nokia phones. Using b.Tween it has quickly been adapted and compiled by Barefoot - directly from the Flash Lite version into an iPhone/iPod Touch native application&#8230;. we were supposed to just briefly touch on the b.Tween process in this blog as for the moment our main web site is not yet ready to be assaulted by flash and iPhone enthusiasts but Thomas could not resist [bless his soul] and things are now moving very quickly&#8230;.</p>
<p align="center"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/iJhGCQ888Os&hl=en&color1=0x5d1719&color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/iJhGCQ888Os&hl=en&color1=0x5d1719&color2=0xcd311b" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>What is eyeGT? (short for &#8220;Enhance Your Experience - Graphical Toolkit&#8221;) - this is explained in <a target="_blank" href="http://www.barefootmobile.com/blogs/blinky/?p=4">the post</a> below but as a short summary: &#8220;eyeGT is a highly efficient graphic renderer, capable of handling vector graphics and bitmaps. Beside the basic services of rendering, eyeGT provides a very extensive API that allow to define: buttons, animations, hierarchical containers, color and special effects, static text, editable fields and much more; think about it as a Windows GDI+ or Mac OSX Quartz2D on steroids, heavily optimized and designed from the ground up &#8230; for mobile.&#8221;</p>
<p>You may have heard a lot about of other toolkits available that perform similar sorts of things on desktop PCs (my favourite is AntiGrain) but eyeGT is very different and not only in terms of speed.</p>
<p><span id="more-10"></span></p>
<p>eyeGT is completely self contained. It does not use 3rd party code like FreeType for fonts (like AntiGrain) and offers a “flat” interface to developers: it never returns pointer to objects, requires you to setup complex classes or intricate design scheme. It is impossible to create applications with eyeGT that have memory leaks or crashes (this is a big claim&#8230;&#8230; I know, but let’s just say that you really have to apply yourself to crash an eyeGT based app).</p>
<ul>
<li>eyeGT comes in the form of a single DLL, Shared Object or FrameWork depending on the platform. [by the way we support many other platforms - not just iPhone/iPod Touch</li>
<li>Nokia 2nd Edition (6600, 6680, 6630 etc)</li>
<li>Nokia 3rd Edition (whole range including Feature Pack 1 &amp; 2 models)</li>
<li>Sony Ericsson UIQ2.x e UIQ3.x (including P800, P900, P910i, P990, W850, W950, W960, P1 and others)</li>
<li>Motorola Z8 e Z10</li>
<li>Microsoft Windows Mobile (every smartphone and PDA based on Windows Mobile 5, 6, 6.1 e 6.1 Pro)</li>
<li>Apple iPhone e iPod Touch</li>
<li>Nintendo DS (original and Lite)</li>
<li>Sony PlayStation Portable</li>
<li>GamePark’s GP2X F100</li>
<li>Many phone models based on MontaVista Linux and is available to be ported on other embedded platforms as the base requirements are very minimal.</li>
</ul>
<p><strong>What eyeGT is NOT..</strong></p>
<p>NOTE:: eyeGT is <strong>NOT</strong> a Flash compatible player or Virtual Machine. It doesn’t pickup a SWF file and “play” it.</p>
<p>Not making it as a “player” was a design decision we took over 8 years ago when we first produced our graphical engine designed to display vector nautical chart with quite stringent constraints: 256 KB ram and 33 MHz processor (I can hear somebody laughing..).<br />
Over the years eyeGT has evolved and scaled considerably without compromising speed and quality and although we had more than a few request in the past to implement a sort of integrated scripting engine, and although we generally liked the idea, we resisted doing it. The reason is simple: when an application is written for a player or VM, it is effectively “trapped” inside the environment and has no possibility of accessing the outer world. Sure it is possible to expand the player with new capabilities to provide those services from within the player - but only VM producers can do it. This solution is also very painful to maintain across all supported devices and unless you can invest in making a JIT compiler, the scripting language can be very slow. Further more, the player already needs to be present on the hosting platform before your app can be deployed and be able to be executed can be problematic to have different versions of the same runtime installed in the same device. That’s exactly what we wanted to avoid at all cost.<br />
Given our long experience in the mobile field, we have noticed that the vast majority of code that makes up an application is GUI related code and that code is NOT portable. So, as you may guess, our intuition was: what if we have something that can leverage and abstract GUI code, making it portable across various embedded systems and we can produce fully native and fast applications without compromising with the typical problem of “closed” player solutions? eyeGT was born!</p>
<p>Does Flash play any role into our application design/making process? Absolutely! We generally start by sketching up the app following customer requirements using Flash, we then produce a quick mockup right on the handset showing the look &amp; feel and some basic interactivity. The application is then refined, tested and the the Flash content is translated into resources that eyeGT can use; finally the logic of the application is coded in C++. Simply put - by following some simple rules we are able to keep the application “platform independent” - so while we don’t enjoy the only theoretical “Write Once Run Anywhere”, we properly enjoy a model of “write once - compile many and deploy everywhere”!</p>
<p>The final application is then packaged, eventually signed and released with no dependency whatsoever. EyeGT is so small that it can be deployed along with the application and the user is unaware of its presence. We put your brand forward not ours…</p>
<p>The first real test was in 2006 when Nokia was looking for an application capable of downloading and displaying so called "e-zines" or "mobile magazines" for their platform; I wont list here their requirements but trust me when I say they were VERY stringent. Together with PocketNET of Taiwan, a cross project between major magazine publishers likes Condé Nast, Financial Times, Vogue, GQ [and many others] and Nokia itself, the PocketBook Store saw the light only a few weeks after its design. The application has been released pre-installed not only on the original phone model it was designed for (Nokia N73) but also every Symbian 3rd and 2nd Edition phone that Nokia has released since then in Taiwan, with very minimal changes only dictated by the ever changing Symbian Signed criteria [more on this later]. For the official presentation over 200 journalists from all over China were invited to the press conference organized by Nokia itself; it was a very exciting time for us and a final verification that eyeGT is a very really solid and sound concept.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/mn1hnnZX6tQ&hl=en&color1=0x5d1719&color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/mn1hnnZX6tQ&hl=en&color1=0x5d1719&color2=0xcd311b" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p><strong>So what b.Tween has to do with all?</strong></p>
<p>Even if eyeGT relieves a lot of the pain of coding the GUI by hand and then porting it across many devices, we felt that something was still missing. Quite a few developers that worked with us and eyeGT agreed that while it was great, there was not enough abstraction between GUI related code and the underlying “business logic” code. We then took the chance of designing a framework on top of eyeGT that could further enhance it. By this time Flash 9 was announced with support for ActionScript 3. This new version of AS was much closer to a full OO language and the underlying framework of classes was more or less what we were looking to do on our own. In the mean time Flash developers habits were changing also. Flash Developers were less and less relying on the &#8216;classic&#8217; Flash timeline to make animations and applications using the infamous quantity of GotoAndPlay() and Stop() statements plastered throughout the movie and moved more to the scripting language to manipulate the appearance and GUI. So the idea was to recreate more or less the underling framework of AS3 in C++ and use eyeGT as the final renderer for the application. This model immediately provided several notable advantages:</p>
<ul>
<li>The code that uses the framework is compiled to machine code, this means performance several orders of magnitude faster than the ActionScript equivalent. (AS3 in Flash 9 is JIT compiled but we are talking about mobile platforms here where there is NO AS3 and no JIT compilation.. certainly for the moment at least)</li>
<li>Parts of the code that are unused are left out of the final compiled application so size and time to transmit/load are reduced to a minimum</li>
<li>Native code can access ANY feature of the hosting platform: need Bluetooth? Want to process received SMS? Want to read the phone book? This is all possible from native applications BUT not so from a player based version.</li>
</ul>
<p>Simply put - b.Tween sits between eyeGT and the application’s business logic and provided for the rapid converting of AS3 based applications into native applications with minimal changes.</p>
<p>There is a lot more to document - and in future posts later this week I will explain how the process actually works. i.e. how we move from a Flash/FlashLite application to a native iPhone application.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barefootmobile.com/blogs/blinky/?feed=rss2&amp;p=10</wfw:commentRss>
		</item>
		<item>
		<title>Falling in love with Sony PSP</title>
		<link>http://www.barefootmobile.com/blogs/blinky/?p=7</link>
		<comments>http://www.barefootmobile.com/blogs/blinky/?p=7#comments</comments>
		<pubDate>Mon, 24 Mar 2008 10:34:35 +0000</pubDate>
		<dc:creator>emanuele</dc:creator>
		
		<category><![CDATA[Handheld]]></category>

		<category><![CDATA[eyeGT]]></category>

		<guid isPermaLink="false">http://www.barefootmobile.com/blogs/blinky/?p=7</guid>
		<description><![CDATA[Honestly I don’t remember having such a good fun with a device since the very first Nokia 7650 was introduced or for those of you heading the forties, since the Commodore 64. On a tangent, the Nokia 7650 was the first mass market embedded platform we have ported eyeGT to. It truly amazes me the [...]]]></description>
			<content:encoded><![CDATA[<p>Honestly I don’t remember having such a good fun with a device since the very first Nokia 7650 was introduced or for those of you heading the forties, since the Commodore 64. On a tangent, the Nokia 7650 was the first mass market embedded platform we have ported <strong>eyeGT</strong> to. It truly amazes me the fact that in such a compact format it has been possible to cram all that technology. As per my job, I regularly traverse (to use another more business-wise word, instead of browse!) the net to search for new embedded systems or devices with interesting market prospective and seek to port our graphical platform technology to them.</p>
<p>When I started to look at the gaming handheld field, the first device I came across has been the Nintendo DS. From a games prospective I’m not an expert, actually not even a player so I can’t comment on the quality of the gaming software, what I was looking for was the ability of producing software that could transform this device in something more than “just” hardware to run games; in fact even Nintendo packs it by default with a wireless chat program called Pictochat. Unfortunately while I found the touch screen a neat addition to the system, the lack of any storage media (without external add-ons at least), incompatible WiFi with actual standards quickly pointed out that I could not achieve many of the things we generally look for in an embedded system. In many other blogs and forums with focus on the current trends in handheld devices, I quite often come across discussions on which of the two is longer, faster and better but I should say the programmability of the Sony PSP is quite superior not to mention the fact that is totally open to expandability whether this is memory or a GPS sensor, keyboard and other.<br />
 </p>
<div align="center"><img src="http://www.barefootmobile.com/blogs/blinky/wp-content/uploads/2008/03/psp_shot.jpg" alt="Sony PSP"/><br />
The Sony Play Station Portable (PSP)</div>
<p>Beside this, the processor of the PSP is very fast as well as the graphics and audio subsystems which are working very harmoniously together to spit out very nice performance. Of course without a license from Sony there is no way you can produce software for it, the so called &#8220;homebrew&#8221;. That hold true until some very cleaver guys started to hack and patch the GGC to produce code for the Allegrex MIPS processor that power the PSP and some other (or probably the same people) actually build a PSP SDK from scratch by reverse engineering the system. I believe that some similarities between the PSP and the PS2 actually helped the creation of the SDK. You can find everything on the PS2 Developer Forums at [Just a little note: don't go there if you are looking for cracks, hacks, copied games and so on, they do not really tolerate those kind of things.....]</p>
<p>The only real limitation is that in order to be able to run homebrew software you need to have a PSP with firmware version 1.0 or 1.5 which have some security holes that make possible to run unsigned code on the system, something that is not possible with later firmware revisions (like 1.51, 1.52 or the latest one 2.0).</p>
<p>So after downloading and installing the SDK (which runs under Linux or Cygwin) I was able to port the entire <strong>eyeGT</strong> platform is less than 1 week (including running the over 200 regression tests that come with the suite) and the first demo was ready in about half hour.</p>
<p>Very impressive, I never saw <strong>eyeGT</strong> running so fast in any other embedded system, especially considering that the port doesn’t currently include any specific PSP optimization either at system levels or processor level.</p>
<p>A few demos will come in the next few days.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barefootmobile.com/blogs/blinky/?feed=rss2&amp;p=7</wfw:commentRss>
		</item>
		<item>
		<title>So what is eyeGT?</title>
		<link>http://www.barefootmobile.com/blogs/blinky/?p=4</link>
		<comments>http://www.barefootmobile.com/blogs/blinky/?p=4#comments</comments>
		<pubDate>Mon, 24 Mar 2008 10:01:35 +0000</pubDate>
		<dc:creator>emanuele</dc:creator>
		
		<category><![CDATA[eyeGT]]></category>

		<guid isPermaLink="false">http://www.barefootmobile.com/blogs/blinky/?p=4</guid>
		<description><![CDATA[Part One
You probably want to know what eyeGT is all about as it is going to be mentioned quite often in this blog; I have to deal with eyeGT on a daily basis and I can tell you one thing: it is fun!
eyeGT is the first display and rendering system and application platform for embedded [...]]]></description>
			<content:encoded><![CDATA[<p align="left"><strong>Part One</strong></p>
<p>You probably want to know what <strong>eyeGT</strong> is all about as it is going to be mentioned quite often in this blog; I have to deal with <strong>eyeGT</strong> on a daily basis and I can tell you one thing: it is fun!</p>
<p><strong>eyeGT</strong> is the first display and rendering system and application platform for embedded hardware that has been designed from the ground up to deliver superior display quality and interaction. It provides a high level and intuitive API to control and customize all aspects of the final rendering as well as being totally independent from the underlying hardware and software layer. Finally, it is very, very small and very, very fast.</p>
<p><strong>eyeGT</strong>’s revolutionary approach to graphics for embedded systems allows engineers to treat the display as an advanced and sophisticated canvas where graphical data is arranged in independent and/or correlated shapes and organized into prioritized layers. eyeGT allows total control over the way shapes and layers are transformed (rotation, translation, skewing and scaling) and displayed (normal, translucent, alpha channels etc).</p>
<p><strong><span id="more-4"></span>IntelliShape™</strong> technology allows shapes to decide for themselves how they are to be displayed on the canvas depending on user defined parameters like zoom factor, position, user selection etc. It is possible to create, delete and rearrange the contents of a particular layer, its properties, display priority and even the ability to temporary hide layers at any time are also definable thus providing full control of how the application is presented.</p>
<p>A three fold super sampling aliasing reduction algorithm finally allows for the highest display quality achievable. This all comes with the smallest memory footprint knowingly achieved to date - only184KB for the basic modules compiled for a 32 bit processor and just 280KB for the full library including all multimedia support.</p>
<p><strong>eyeGT</strong>’s modular design provides the ability to decide which components have to be included i.e. sound (raw and ADCMP compression), editable text, bitmaps, multiple scalable fonts, stroked fonts, automatic animation sequence and much more.</p>
<p align="center">&nbsp;</p>
<div align="center"><img src="http://www.barefootmobile.com/blogs/blinky/wp-content/uploads/2008/03/eyegt_blocks2.jpg" alt="eyeGT Functional Block Diagram"/> <br />
A functional diagram of <strong>eyeGT</strong></div>
<p><strong> </strong></p>
<p align="left"><strong>eyeGT</strong> was originally conceived to run on very small embedded hardware like the ones that power in-car navigation systems or boat’s chart plotters, so the hardware capabilities were basic: a 56 MHz processor, 256 KB (kilobytes…) of ram and a 8 bit paletizzed screen of 160 x 120 pixels. It is easy to imagine that when ported to currently available hardware the performances of <strong>eyeGT</strong> literally skyrocketed.</p>
<p><strong>eyeGT</strong> uses the concept of a canvas (a rectangular zone of the screen of a given width, height and color depth) in a similar way to some CAD programs: the canvas is basically a container where shapes, containers and other objects, called ‘Particles’ in <strong>eyeGT</strong>, are positioned and displayed. The application has no direct access to the canvas which is the first big difference with the bitmapped mode of other graphical toolkits. The application places visual particles on the canvas and <strong>eyeGT</strong> renders them; the application can’t draw directly on the canvas.</p>
<p>In order to visualize something on the screen the application needs to create a shape, place some drawing commands on it and finally place the shape on the screen. <strong>eyeGT</strong> uses a dictionary based system (<strong>Particle Dictionary</strong>) to keep track of every particle (shape, sound, container, button etc) created by the user application. When a method to place a particle is invoked (i.e. <strong>egtPlaceParticleInstance</strong>), <strong>eyeGT</strong> puts an instance of the selected particle in the <strong>Display List</strong>. The <strong>Display List</strong> then gets executed when the user application invokes the <strong>egtProcessDisplayList</strong> method. At this point <strong>eyeGT</strong> will process all the particles and render to the canvas the anything that has been modified since the last invocation. It is best to think about the dictionary as a storage place for the particles templates and the <strong>Display List</strong> as a list of particles templates instances. The application can place the same particle multiple times by invoking multiple egtPlaceParticleInstance and give to each instance of the particle its own specific properties.</p>
<div align="center"><img src="http://www.barefootmobile.com/blogs/blinky/wp-content/uploads/2008/03/eyegt_displaylist2.jpg" alt="eyeGT Display List"/> <br />
<strong>eyeGT Particle Dictionary</strong> and <strong>Display List</strong></div>
<p align="left">&nbsp;</p>
<p align="left"><strong>eyeGT</strong> allows the user to modify the <strong>Display List</strong> at any time as well as altering the particle’s appearance (position, rotation, shear, scale) and properties (alpha, colorization, brightness, visibility) at any time.</p>
<p align="left"><strong>End of part one</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.barefootmobile.com/blogs/blinky/?feed=rss2&amp;p=4</wfw:commentRss>
		</item>
		<item>
		<title>Hello!</title>
		<link>http://www.barefootmobile.com/blogs/blinky/?p=3</link>
		<comments>http://www.barefootmobile.com/blogs/blinky/?p=3#comments</comments>
		<pubDate>Mon, 24 Mar 2008 09:50:43 +0000</pubDate>
		<dc:creator>emanuele</dc:creator>
		
		<category><![CDATA[Generic]]></category>

		<guid isPermaLink="false">http://www.barefootmobile.com/blogs/blinky/?p=3</guid>
		<description><![CDATA[Hello everybody,
welcome to my blog. Until a few months ago I never thought about putting up a web log on my own. The reason was that while I can surely define myself as sort of gadget freak, there were (and actually are) far too many blogs concerning the latest and greatest and fastest gadgets on [...]]]></description>
			<content:encoded><![CDATA[<p>Hello everybody,<br />
welcome to my blog. Until a few months ago I never thought about putting up a web log on my own. The reason was that while I can surely define myself as sort of gadget freak, there were (and actually are) far too many blogs concerning the latest and greatest and fastest gadgets on earth so why starting another one? And why getting trapped in the spiral of rush to publish the latest pix obtained by selling &#8216;your soul&#8217; to somebody, eventually get upset because somebody else stole or linked directly to them sucking bandwidth and so on?</p>
<p>I want to be more relaxed about my blog, I hope I can post things that can be nice, cool and why not sometimes useful too. My background is programming, I&#8217;ve been doing this since I was 14yo and many moons have passed since then. I spend most of my time maintaining a graphical application platform called eyeGT and licensed by my company.<br />
This platform allows us to create some unusually easy to use, pervasive and sophisticate looking interface for any kind of computing device that has some memory, a decently sized CPU (56 Mhz&#8230;.. yes megahertz) and an LCD screen with a bunch of colored pixels.</p>
<p>We actually use it to power our application and port them to a variety of hardware and embedded platforms, irrespective of the OS and graphical capabilities they have.</p>
<p>This blog will concern about applications, demos, libraries and so on written using eyeGT and running in possibly all platforms we currently support. Don&#8217;t worry; it is going to be fun&#8230;..</p>
<p>Since all work and no play makes Jack a dull boy, I will feel free to post anything else beside programming as well, whether this include special achievements (like homebrew beer) or the new high percentage caffeine chocolate block just launched on the market.</p>
<p>Hope you will like it and never mind to post your comments to anything you see here.</p>
<p>Cheers,<br />
Emanuele Cipolloni aka Blinky</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barefootmobile.com/blogs/blinky/?feed=rss2&amp;p=3</wfw:commentRss>
		</item>
	</channel>
</rss>
