<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-315920831118778783</atom:id><lastBuildDate>Tue, 31 Jan 2012 07:05:24 +0000</lastBuildDate><category>linux</category><category>technology</category><category>iphone</category><category>olpc</category><category>clutter</category><category>opengl</category><category>tips</category><category>howto</category><category>marketing</category><category>linaro</category><category>beagleboard</category><category>barcampsaigon</category><category>globalcybersoft</category><category>management</category><title>while (true) { ; }</title><description>Only a life lived for others is a life worth while</description><link>http://changetheworldwithyourpassion.blogspot.com/</link><managingEditor>noreply@blogger.com (Hieu Le Trung)</managingEditor><generator>Blogger</generator><openSearch:totalResults>92</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ChangeTheWorldWithYourPassion" /><feedburner:info uri="changetheworldwithyourpassion" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>ChangeTheWorldWithYourPassion</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-8560816899949280887</guid><pubDate>Mon, 30 Jan 2012 11:07:00 +0000</pubDate><atom:updated>2012-01-30T18:07:59.908+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">globalcybersoft</category><category domain="http://www.blogger.com/atom/ns#">management</category><title>What motivate me?</title><description>Working in GCS for many years, I found some facts about GCSers at the moment. When you first join GCS&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;You don't know what should you do, still being with the university mindset or previous company.&lt;/li&gt;
&lt;li&gt;Be assigned into a project and keep working daily.&lt;/li&gt;
&lt;li&gt;You found that when you need to submit leave form go to QMS and only for leave form.&lt;/li&gt;
&lt;li&gt;You don't know the requirement for your current role (i.e. Engineer). - If you know that it's still very ambiguous because it's not example specific and there's no mapping into your daily work.&lt;/li&gt;
&lt;li&gt;CP4 is something really interested but HOW can you do that?&lt;/li&gt;
&lt;li&gt;What motivate you to do good job? Salary?&lt;/li&gt;
&lt;li&gt;Yes, everything is very confuse and you'll need a good leader to guide you :)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;I think to solve this:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;When a person first join GCS, we should have someone describe on their current role, the requirement for that role, who is his/her mentor, who will he/she report to, list of tools/resources that available to his/her job (Wiki?).&lt;/li&gt;
&lt;li&gt;If he/she joins a project, the project should have a Getting Start Wiki so that everyone can know where to go and what should they do in project.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;There's an issue with current EMB hiring model, that the new hired resource might not join a project but for a resource pool. For this we might think about R&amp;amp;D project, I think we should create an "Open Source department" so that,&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;we improve open-source project which is mostly used by us i.e. Android, Beagleboard, or some other open-source libraries...&lt;/li&gt;
&lt;li&gt;the employee join this model can gain knowledge on specific library which can help him in his future work&lt;/li&gt;
&lt;/ul&gt;
For senior engineer, with current development environment inside GCS, we currently don't have a correct model/workflow yet so&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;if we developed on, we should collect all senior and teach them that new workflow so that they can follow up like orientation for new employee.&lt;/li&gt;
&lt;li&gt;they've long lived so mindset might different from new one, motivation might be missing already :)&lt;/li&gt;
&lt;li&gt;ask them HOW!&lt;/li&gt;
&lt;li&gt;re-evaluate their skill so that we can match them with new model.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Is it true for you and your current work?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-8560816899949280887?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/Mg_byx8IDVo/what-motivate-me.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2012/01/what-motivate-me.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-1795016024583092281</guid><pubDate>Wed, 25 Jan 2012 11:41:00 +0000</pubDate><atom:updated>2012-01-25T18:41:36.444+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">olpc</category><category domain="http://www.blogger.com/atom/ns#">linux</category><title>OLPC on QEMU</title><description>Follow this guideline http://wiki.sugarlabs.org/go/QEMU&lt;br /&gt;
&lt;br /&gt;
If it's not clear, here is it.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Install qemu: yum install qemu&lt;/li&gt;
&lt;li&gt;Create a disk image: qemu-image create olpc.img&lt;/li&gt;
&lt;li&gt;Download School Server (XS) iso: wget http://xs-dev.laptop.org/xs/OLPC_XS_LATEST.iso&lt;/li&gt;
&lt;li&gt;Start qemu and install XS: qemu -hda olpc.img -cdrom OLPC_XS_LATEST.iso -m 512
&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-1795016024583092281?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/sibXyXg5QqQ/olpc-on-qemu.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2012/01/olpc-on-qemu.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-3316106747829319222</guid><pubDate>Wed, 25 Jan 2012 09:58:00 +0000</pubDate><atom:updated>2012-01-25T17:57:18.588+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linaro</category><category domain="http://www.blogger.com/atom/ns#">linux</category><title>Linaro development on Fedora</title><description>Linaro currently mostly works on Ubuntu as its guideline. Here is some tips, not so much, for working on Fedora with Linaro&lt;br /&gt;
&lt;br /&gt;
Follow this &lt;a href="https://wiki.linaro.org/Platform/Android/Toolchain"&gt;https://wiki.linaro.org/Platform/Android/Toolchain&lt;/a&gt; if you're working with Android&lt;br /&gt;
&lt;br /&gt;
or a build from scratch &lt;a href="https://wiki.linaro.org/WorkingGroups/ToolChain/Using/GCCNative"&gt;https://wiki.linaro.org/WorkingGroups/ToolChain/Using/GCCNative&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Or this &lt;a href="https://wiki.linaro.org/WorkingGroups/ToolChain/Using/CrosstoolNg"&gt;https://wiki.linaro.org/WorkingGroups/ToolChain/Using/CrosstoolNg&lt;/a&gt; if you want a stand-alone toolchain that can be worked on other platform&lt;br /&gt;
&lt;br /&gt;
Then you can use the toolchain to build the kernel, rootfs i.e. &lt;a href="http://www.linaro.org/linaro-blog/2011/09/15/building-a-linaro-android-build-from-source/"&gt;http://www.linaro.org/linaro-blog/2011/09/15/building-a-linaro-android-build-from-source/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Why don't we integrate it into Yocto or buildroot? Hmmm...&lt;br /&gt;
&lt;br /&gt;
BTW, the linaro-image-tools didn't work with Python 2.5 ;-(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-3316106747829319222?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/y8k100TnxWs/linaro-development-on-fedora.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2012/01/linaro-development-on-fedora.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-5849512995166459820</guid><pubDate>Mon, 23 Jan 2012 19:06:00 +0000</pubDate><atom:updated>2012-01-25T16:53:49.053+07:00</atom:updated><title>NULL vs. 0</title><description>&lt;pre&gt; char * p = 0; /* IS WRONG! DAMMIT! */
 int i = NULL; /* THIS IS WRONG TOO! */
&lt;/pre&gt;
and anybody who writes code like the above either needs to get out of the 
kernel, or needs to get transported to the 21st century.&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;NULL&lt;/tt&gt; is a pointer, while &lt;tt&gt;0&lt;/tt&gt; can never be.&lt;br /&gt;
&lt;br /&gt;
LOL :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-5849512995166459820?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/kA3QUDxZB5A/null-vs-0.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2012/01/null-vs-0.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-2936592510542001545</guid><pubDate>Wed, 18 Jan 2012 14:09:00 +0000</pubDate><atom:updated>2012-01-18T21:09:49.861+07:00</atom:updated><title>Tet 2012</title><description>Tet holiday is coming here, what should I do?&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Read a book&lt;/li&gt;
&lt;li&gt;Find a project to contribute: OLPC, clutter, openkinect, glib, gtk, ...&lt;/li&gt;
&lt;li&gt;Continue with beagleboard&lt;/li&gt;
&lt;li&gt;Continue with CUDA&lt;/li&gt;
&lt;li&gt;Doing work for GCS &lt;/li&gt;
&lt;li&gt;xxx&lt;/li&gt;
&lt;/ol&gt;
Hmmmmmmmmm...let see&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-2936592510542001545?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/5KSZOqGgj00/tet-2012.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2012/01/tet-2012.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-6367299439940232500</guid><pubDate>Tue, 10 Jan 2012 06:48:00 +0000</pubDate><atom:updated>2012-01-10T13:55:35.071+07:00</atom:updated><title>Valgrind XYZ</title><description>&lt;pre&gt;To understand how things work, this is how valgrind starts up:

  - The valgrind launcher (/usr/bin/valgrind) is run.
  - The launcher decides which tool you want execs it to
    replace the launcher.
  - The tool binary loads at a high address then acts as
    an ELF loader and loads the target program into the
    same process, using LD_PRELOAD to try and inject a
    small amount of code into it.

&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;Run "ld --verbose" to see the default linker script, and note the line
   . = 0x08048000 + SIZEOF_HEADERS;
This is the problem.  ld estimates SIZEOF_HEADERS, and sometimes guesses
low by 1 Elf32_Phdr (or by 2 in extremely rare cases).  A workaround is
to capture the default linker script "ld --verbose &amp;gt;script.lds", delete
the header and trailer lines [delimited by '====='], change the initial
address to ". = 0x08048000 + 52 + 8*32;" where 52 is sizeof(Elf32_Ehdr)
and 32 is sizeof(Elf32_Phdr), then use the resulting script to replace 
the default: "ld -T script.lds ..."
&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;http://plash.beasts.org/wiki/Story16Notes&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;Here are some things to do:
o Study the info pages that come with ld.
  See ld.info, Node: Builtin Functions, SIZEOF_HEADERS. 
o Compare the elf linker scripts (probably in
  /usr/i486-suse-linux/lib/ldscripts/ on your system) against standard
  ones.  eg. from ftp.varesearch.com/pub/support/hjl/binutils/  If they
  are different, try the standard scripts.
o Delete SIZEOF_HEADERS from your linker script, and replace with a fixed
  number.  Try 1024.
o If all this fails, post a bug report to binutils@sourceware.cygnus.com
&amp;nbsp;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-6367299439940232500?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/amD8hSu0dU0/valgrind-xyz.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2012/01/valgrind-xyz.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-2827756861055141993</guid><pubDate>Mon, 02 Jan 2012 12:26:00 +0000</pubDate><atom:updated>2012-01-02T19:26:08.937+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">globalcybersoft</category><category domain="http://www.blogger.com/atom/ns#">management</category><title>Strength of a workplace</title><description>Is it true when the "First, Break all the rules" said that, a strength of a workplace can be inside 12 following questions&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Do I know what is expected of me at work?&lt;/li&gt;
&lt;li&gt;Do I have the materials and equipment I need to do my work right?&lt;/li&gt;
&lt;li&gt;At work, do I have opportunity to do what I do best every day?&lt;/li&gt;
&lt;li&gt;In the last seven days, have I received recognition or praise for doing good work?&lt;/li&gt;
&lt;li&gt;Does my supervisor, or someone at work, seem to care about me as a person?&lt;/li&gt;
&lt;li&gt; Is there someone at work who encourages my development?&lt;/li&gt;
&lt;li&gt;At work, do my opinions seem to count?&lt;/li&gt;
&lt;li&gt;Does the mission/purpose of my company make me feel my job is important?&lt;/li&gt;
&lt;li&gt;Are my co-workers committed to doing quality work?&lt;/li&gt;
&lt;li&gt;Do I have a best friend at work?&lt;/li&gt;
&lt;li&gt;In the last six months, has someone at work talked to me about my progress?&lt;/li&gt;
&lt;li&gt;This last year, have I had opportunities at work to learn and grow?&lt;/li&gt;
&lt;/ol&gt;
Hmm, nothing about benefits or salary...is it true for my current company, GCS? Maybe there's something to think about...&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-2827756861055141993?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/OjQi3O3G8_o/strength-of-workplace.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><georss:featurename>Lê Quang Định, phường 12, Ho Chi Minh City, Prey Nokor, Vietnam</georss:featurename><georss:point>10.808393994414805 106.69501304626465</georss:point><georss:box>10.804494494414806 106.69007754626465 10.812293494414805 106.69994854626465</georss:box><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2012/01/strength-of-workplace.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-9114885209771439586</guid><pubDate>Tue, 12 Apr 2011 16:46:00 +0000</pubDate><atom:updated>2011-04-12T23:47:47.934+07:00</atom:updated><title>C++ code style checking</title><description>&lt;a href="http://www.inspirel.com/vera/"&gt;http://www.inspirel.com/vera/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://sourceforge.net/projects/gcgreatcode/"&gt;http://sourceforge.net/projects/gcgreatcode/&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://code.google.com/p/cppanalyse/"&gt;https://code.google.com/p/cppanalyse/&lt;/a&gt; Nothing yet :|&lt;br /&gt;
&lt;a href="http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml"&gt;http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Check it out...&lt;br /&gt;
&lt;br /&gt;
Bonus: &lt;a href="http://bbyidx.com/"&gt;http://bbyidx.com/&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.yourkit.com/features/index.jsp"&gt;http://www.yourkit.com/features/index.jsp&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-9114885209771439586?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/uCs9B6EVxCo/c-code-style-checking.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2011/04/c-code-style-checking.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-3189080803834968993</guid><pubDate>Mon, 11 Apr 2011 06:10:00 +0000</pubDate><atom:updated>2011-04-11T13:10:31.562+07:00</atom:updated><title>Debugging Software Crashes in C and C++ - II</title><description>&lt;a href="http://www.eventhelix.com/realtimemantra/basics/debugging_software_crashes_2.htm"&gt;Debugging Software Crashes in C and C++ - II&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-3189080803834968993?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/EjzCERUtGQs/debugging-software-crashes-in-c-and-c.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2011/04/debugging-software-crashes-in-c-and-c.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-8763940243164725834</guid><pubDate>Mon, 28 Mar 2011 05:04:00 +0000</pubDate><atom:updated>2011-03-28T12:04:46.542+07:00</atom:updated><title>C++ Info: STL in c++</title><description>&lt;a href="http://cppcoffe.blogspot.com/2010/09/stl-in-c.html?spref=bl"&gt;C++ Info: STL in c++&lt;/a&gt;: "STL specific C++ basics.  Learning STL Notes   For learning STL  I have mentioned some url in home page which are best in STL world :) ..."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-8763940243164725834?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/GMOGaZ0zYPo/c-info-stl-in-c.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2011/03/c-info-stl-in-c.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-2078445153479621002</guid><pubDate>Sat, 26 Mar 2011 04:52:00 +0000</pubDate><atom:updated>2011-04-17T21:34:01.257+07:00</atom:updated><title>To be investigated later</title><description>http://votazz.com/&lt;br /&gt;
http://blogs.atlassian.com/developer/2006/01/how_we_use_jira_and_confluence.html&lt;br /&gt;
&lt;br /&gt;
http://msmvps.com/blogs/vstsblog/archive/2009/01/09/workflows-of-msf-agile-and-cmmi-process-templates-for-tfs.aspx&lt;br /&gt;
http://forums.atlassian.com/thread.jspa?threadID=13443&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ideatorrent.org/&lt;br /&gt;
http://www.osqa.net/gallery/&lt;br /&gt;
http://code.google.com/p/stacked/downloads/list&lt;br /&gt;
http://alternativeto.net/software/google-moderator/&lt;br /&gt;
http://www.google.com/moderator/#0&lt;br /&gt;
http://archive.gamedev.net/reference/articles/article1698.asp&lt;br /&gt;
http://mtshome.sw3solutions.com/cppComputerGraphics.html#2D%20Transformations&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-2078445153479621002?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/JdNcZTosJT0/to-be-investigated-later.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2011/03/to-be-investigated-later.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-6008190437992746283</guid><pubDate>Mon, 21 Mar 2011 17:14:00 +0000</pubDate><atom:updated>2011-03-22T00:14:54.869+07:00</atom:updated><title>Project Development Lifecycle (details)</title><description>&lt;ol&gt;&lt;li&gt;Initial functional requirements and design are done.&lt;/li&gt;
&lt;li&gt;&lt;span class="IL_AD" id="IL_AD5"&gt;Programmer&lt;/span&gt; produces code he believes is bug-free.   &lt;/li&gt;
&lt;li&gt;Product is tested. 20 bugs are found.   &lt;/li&gt;
&lt;li&gt;Programmer fixes 10 of the bugs and explains to the testing department that the other 10 aren't really bugs.   &lt;/li&gt;
&lt;li&gt;Testing department finds that five of the fixes didn't work and discovers 15 new bugs.   &lt;/li&gt;
&lt;li&gt;See 3.   &lt;/li&gt;
&lt;li&gt;See 4.   &lt;/li&gt;
&lt;li&gt;See 5.   &lt;/li&gt;
&lt;li&gt;See 6.   &lt;/li&gt;
&lt;li&gt;See 7.   &lt;/li&gt;
&lt;li&gt;See 8.   &lt;/li&gt;
&lt;li&gt;Due to &lt;span class="IL_AD" id="IL_AD1"&gt;marketing&lt;/span&gt;  pressure and an extremely pre-mature product announcement based on  overly-optimistic programming schedule, the product is released.&lt;/li&gt;
&lt;li&gt;Users find 137 new bugs.   &lt;/li&gt;
&lt;li&gt;Original programmer, having cashed his royalty check, is nowhere to be found.&lt;/li&gt;
&lt;li&gt;Newly-assembled programming team fixes almost all of the 137 bugs, but introduces 456 new ones.&lt;/li&gt;
&lt;li&gt;Original programmer sends underpaid testing department a postcard from Fiji. Entire testing department quits.&lt;/li&gt;
&lt;li&gt;Company is bought in a hostile takeover by competitor using profits from their latest release, which had 783 bugs.&lt;/li&gt;
&lt;li&gt;New CEO is brought in by board of directors. He hires programmer to redo program from scratch.&lt;/li&gt;
&lt;li&gt;Programmer produces code he believes is bug-free....&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-6008190437992746283?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/3j1R5gi2hKI/project-development-lifecycle-details.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2011/03/project-development-lifecycle-details.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-5514443530548890816</guid><pubDate>Mon, 07 Feb 2011 10:49:00 +0000</pubDate><atom:updated>2012-01-31T14:05:24.884+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">clutter</category><title>How to build Clutter for Beagleboard (2)</title><description>Follow up with &lt;a href="http://www.blogger.com/goog_1648297162"&gt;h&lt;/a&gt;&lt;a href="ttp://changetheworldwithyourpassion.blogspot.com/2009/09/how-to-build-clutter-for-beagleboard.html"&gt;ttp://changetheworldwithyourpassion.blogspot.com/2009/09/how-to-build-clutter-for-beagleboard.html&lt;/a&gt; but with detail how to compile dependencies also&lt;br /&gt;
&lt;h2 class="twikinetRoundedAttachments"&gt;
&lt;span class="twikinetHeader"&gt; &lt;/span&gt;&lt;/h2&gt;
&lt;h3&gt;
&lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="GLib"&gt;&lt;/a&gt; &lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="ClutterPortingApproachforHR21platform-GLib"&gt;&lt;/a&gt;GLib &lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt; set PATH for the toolchain so that the configure can find the ARM  gcc&lt;/li&gt;
&lt;li&gt; Create a directory to store bin, lib, include of the builded-packages:  &lt;ul&gt;
&lt;li&gt; mkdir /data/opt &lt;/li&gt;
&lt;li&gt; export MYPATH=/data/opt &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Download and Extract glib-2.20.5, go to the extracted folder: &lt;blockquote&gt;
./configure  --prefix=$MYPATH/glib --host=arm-angstrom-linux-gnueabi  ac_cv_func_posix_getpwuid_r=yes  ac_cv_func_posix_getgrgid_r=yes glib_cv_stack_grows=no  glib_cv_uscore=no&lt;br /&gt;
make&lt;br /&gt;
make install&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
&lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="Pixman"&gt;&lt;/a&gt; &lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="ClutterPortingApproachforHR21platform-Pixman"&gt;&lt;/a&gt;Pixman &lt;/h3&gt;
Download and extract pixman-0.17.8 into a folder. &lt;br /&gt;
&lt;blockquote&gt;
./configure --prefix=$MYPATH/pixman --host=arm-angstrom-linux-gnueabi  --enable-gtk=no&lt;br /&gt;
make&lt;br /&gt;
make install &lt;/blockquote&gt;
&lt;h3&gt;
&lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="Freetype"&gt;&lt;/a&gt; &lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="ClutterPortingApproachforHR21platform-Freetype"&gt;&lt;/a&gt;Freetype &lt;/h3&gt;
Download and extract freetype-2.3.12 into a folder &lt;br /&gt;
&lt;blockquote&gt;
./configure --prefix=$MYPATH/freetype --host=arm-angstrom-linux-gnueabi &lt;br /&gt;
make&lt;br /&gt;
make install &lt;/blockquote&gt;
&lt;h3&gt;
&lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="Fontconfig"&gt;&lt;/a&gt; &lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="ClutterPortingApproachforHR21platform-Fontconfig"&gt;&lt;/a&gt;Fontconfig &lt;/h3&gt;
Download and extract fontconfig-2.8.0 into a folder &lt;br /&gt;
&lt;blockquote&gt;
./configure --prefix=$MYPATH/fontconfig --host=arm-angstrom-linux-gnueabi   --with-arch=arm  --with-freetype-config=$MYPATH/freetype/bin/freetype-config  PKG_CONFIG_PATH=$MYPATH/freetype/lib/pkgconfig/&lt;br /&gt;
make&lt;br /&gt;
make install &lt;/blockquote&gt;
&lt;h3&gt;
&lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="Cairo"&gt;&lt;/a&gt; &lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="ClutterPortingApproachforHR21platform-Cairo"&gt;&lt;/a&gt;Cairo &lt;/h3&gt;
Download and extract Cairo-1.8.10 into a folder &lt;br /&gt;
&lt;blockquote&gt;
./configure --prefix=/$MYPATH/cairo --host=arm-angstrom-linux-gnueabi   PKG_CONFIG_PATH=$MYPATH/freetype/lib/pkgconfig/:$MYPATH/fontconfig/lib/pkgconfig/:$MYPATH/pixman/lib/pkgconfig/  --enable-xlib=no --enable-directfb=no&lt;br /&gt;
make&lt;br /&gt;
make install &lt;/blockquote&gt;
&lt;h3&gt;
&lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="Pango"&gt;&lt;/a&gt; &lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="ClutterPortingApproachforHR21platform-Pango"&gt;&lt;/a&gt;Pango &lt;/h3&gt;
Build Pango-1.26.2: &lt;br /&gt;
&lt;blockquote&gt;
./configure --prefix=$MYPATH/pango --host=arm-angstrom-linux-gnueabi   PKG_CONFIG_PATH=$MYPATH/freetype/lib/pkgconfig:$MYPATH/fontconfig/lib/pkgconfig:$MYPATH/glib/lib/pkgconfig/:$MYPATH/cairo/lib/pkgconfig:$MYPATH/pixman/lib/pkgconfig/  CXX=mips-linux-c++ --with-x=no&lt;br /&gt;
make&lt;br /&gt;
make install &lt;/blockquote&gt;
&lt;h2 class="twikinetRoundedAttachments"&gt;
&lt;span class="twikinetHeader"&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="Clutter"&gt;&lt;/a&gt; &lt;a href="http://www.blogger.com/post-create.g?blogID=315920831118778783" name="ClutterPortingApproachforHR21platform-Clutter"&gt;&lt;/a&gt;Clutter &lt;/span&gt;&lt;/h2&gt;
Follow the &lt;a href="http://changetheworldwithyourpassion.blogspot.com/2009/09/how-to-build-clutter-for-beagleboard.html"&gt;http://changetheworldwithyourpassion.blogspot.com/2009/09/how-to-build-clutter-for-beagleboard.html&lt;/a&gt; then copy all to NFS and run the Clutter by yourself.&lt;br /&gt;
&lt;br /&gt;
Have fun :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-5514443530548890816?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/K0ae1D5d1qw/how-to-build-clutter-for-beagleboard-2.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2011/02/how-to-build-clutter-for-beagleboard-2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-2963706887893243254</guid><pubDate>Mon, 07 Feb 2011 05:54:00 +0000</pubDate><atom:updated>2011-02-07T13:05:18.360+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">clutter</category><title>ClutterTexture</title><description>&lt;p&gt;The ClutterTexture is a high level texture wrapper, it is a  ClutterActor and can be added directly into a ClutterStage.  ClutterTexture is defined with following member&lt;br /&gt;&lt;/p&gt; &lt;div class="wysiwyg-macro"&gt;&lt;div class="code panel" style="border-width: 1px;"&gt;&lt;div class="codeContent panelContent"&gt;&lt;pre class="code-java"&gt;&lt;br /&gt;struct _ClutterTexturePrivate {&lt;br /&gt; gint                         width;&lt;br /&gt; gint                         height;&lt;br /&gt; gint                         max_tile_waste;&lt;br /&gt; ClutterTextureQuality        filter_quality;&lt;br /&gt; CoglHandle                   texture;&lt;br /&gt; gboolean                     no_slice;&lt;br /&gt;&lt;br /&gt; ClutterActor                *fbo_source;&lt;br /&gt; CoglHandle                   fbo_handle;&lt;br /&gt;  /* Non video memory copy of image data */&lt;br /&gt; guint                        local_data_width, local_data_height;&lt;br /&gt; guint                        local_data_rowstride;&lt;br /&gt; guint                        local_data_has_alpha;&lt;br /&gt; guchar                      *local_data;&lt;br /&gt;&lt;br /&gt; guint                        sync_actor_size : 1;&lt;br /&gt; guint                        repeat_x : 1;&lt;br /&gt; guint                        repeat_y : 1;&lt;br /&gt; guint                        in_dispose : 1;&lt;br /&gt; guint                        keep_aspect_ratio : 1;&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;with:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;width&lt;/b&gt;: the width of the actor.&lt;/li&gt;&lt;li&gt;&lt;b&gt;height&lt;/b&gt;: the height of the actor.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;max_tile_waste&lt;/b&gt;&lt;/span&gt;: the number of byte that the slice texture is allowed to have wasted. It is used when no_slice is set to false.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;filter_quality&lt;/b&gt;: the filter quality to apply into the texture actor.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;texture&lt;/b&gt;&lt;/span&gt;: the internal CoglTexture handle.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;no_slice&lt;/b&gt;&lt;/span&gt;:  value indicate that the created texture is not using slicing method to  prevent wasting in texture uploading. It means that the big texture will  be sliced into multiple sub-texture if no_slice is set to true. When  no_slice is set to true, the max_tile_waste is used to determine the  number of byte that allow to be wasted for each sub-texture.&lt;/li&gt;&lt;li&gt;&lt;b&gt;fbo_source&lt;/b&gt;: the FBO source if using FBO&lt;/li&gt;&lt;li&gt;&lt;b&gt;fbo_handle&lt;/b&gt;: the FBO texture handle if using FBO&lt;/li&gt;&lt;li&gt;&lt;b&gt;local_data_width, local_data_height&lt;/b&gt;: width and height of the local data buffer when saving the actor into local.&lt;/li&gt;&lt;li&gt;&lt;b&gt;local_data_rowstride&lt;/b&gt;: rowstride of the local data buffer&lt;/li&gt;&lt;li&gt;local_data_has_alpha&lt;/li&gt;&lt;li&gt;&lt;b&gt;local_data&lt;/b&gt;: the actual local data buffer&lt;/li&gt;&lt;li&gt;sync_actor_size:&lt;br /&gt;&lt;/li&gt;&lt;li&gt;repeat_x&lt;/li&gt;&lt;li&gt;repeat_y&lt;/li&gt;&lt;li&gt;&lt;b&gt;in_dispose&lt;/b&gt;: flag used to check if the texture is in dispose state or not&lt;br /&gt;&lt;/li&gt;&lt;li&gt;keep_aspect_ratio&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To create the texture we have following functions&lt;/p&gt;&lt;ul&gt;&lt;li&gt;ClutterActor * clutter_texture_new (void);&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Create a new blank texture object&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;ClutterActor * clutter_texture_new_from_file (const gchar *filename, GError  **error);&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Create a new texture object from specified file name. The function use clutter_texture_new to create the texture object and then use clutter_texture_set_from_file to set data for the texture.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;ClutterActor * clutter_texture_new_from_actor (ClutterActor *actor);&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Create a new texture object from specified actor. The function is  to clone the ClutterActor object into a ClutterTexture object to use as  an offscreen buffer. It need the offscreen feature available in the EGL  otherwise the function return NULL.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;And some following functions to change the texture data&lt;/p&gt; &lt;ul&gt;&lt;li&gt;clutter_texture_set_from_file: set the internal texture data of the texture object from specified file&lt;/li&gt;&lt;li&gt;clutter_texture_set_from_rgb_data: set using RGB data&lt;/li&gt;&lt;li&gt;clutter_texture_set_from_yuv_data: set using YUV data&lt;/li&gt;&lt;li&gt;clutter_texture_set_area_from_rgb_data: set a sub-region using RGB data&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Some notes when working with ClutterTexture&lt;/p&gt; &lt;ul&gt;&lt;li&gt;The no_slice property must be set before the texture attempt to  load its data buffer. If we don't want to using slicing of the  ClutterTexture, we SHOULD NOT use the clutter_texture_new_from_file as  default ClutterTexture use slicing method to save memory. We SHOULD use  clutter_texture_new, then set the disable-slice property to false then  call clutter_texture_set_from_file to setup data buffer for the texture.&lt;/li&gt;&lt;li&gt;For OpenGL system that allow read/write pixel, we can have the  texture memory automatically saved into system memory when the texture  is not using via realize/unrealize function. And in that case, the  local_data_* variable is used.&lt;/li&gt;&lt;li&gt;The FBO is much useful when we want to do transition effect  without costing the GL to draw the buffer again and again, in that case  the texture object is re-used to draw to onscreen.&lt;/li&gt;&lt;li&gt;ClutterTexture class know nothing about its internal texture loading/uploading, all are control under Cogl layer.&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-2963706887893243254?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/SYPIKseG2kw/cluttertexture.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2011/02/cluttertexture.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-1147707672711056655</guid><pubDate>Tue, 16 Feb 2010 13:50:00 +0000</pubDate><atom:updated>2010-02-17T22:05:43.678+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">beagleboard</category><title>Add network over USB for beagleboard</title><description>Go to menuconfig, and select following things to enable network over USB for beagleboard. You won't need a wireless adapter or USB to ethernet adapter more. All will be over USB cable.&lt;br /&gt;
&lt;br /&gt;
Device Driver&lt;br /&gt;
&amp;nbsp; -&amp;gt; USB Support [y]&lt;br /&gt;
&amp;nbsp; &amp;nbsp; -&amp;gt; Inventra Highspeed Dual Role Controller (TI, ADI, ...) [y]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; Driver Mode (Both host and peripheral: USB OTG (On The Go) Device&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; USB Gadget Support [y]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; USB Gadget Drivers (Ethernet Gadget (with CDC Ethernet support) [y]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; RNDIS support [y]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-1147707672711056655?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/HIcguC6Twl4/add-network-over-usb-for-beagleboard.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>42</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2010/02/add-network-over-usb-for-beagleboard.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-5310623259313330089</guid><pubDate>Sat, 06 Feb 2010 15:28:00 +0000</pubDate><atom:updated>2010-02-06T22:28:25.962+07:00</atom:updated><title>Pango Note</title><description>Pango&lt;br /&gt;
Text layout library &lt;br /&gt;
Supports different font technologies:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * Classic X fonts&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * TrueType fonts (using FreeType)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * OpenType fonts (using Xft/XRender/FreeType)&lt;br /&gt;
• Win32 fonts &lt;br /&gt;
&lt;br /&gt;
Pango architecture&lt;br /&gt;
http://fishsoup.net/bib/PangoGuadec2001/slide009.html&lt;br /&gt;
&lt;br /&gt;
Supported Language&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * European languages&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * Asian languages (Chinese, Japanese, Korean, ...)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * Middle Eastern languages (Arabic, Hebrew, Farsi,...)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * Indic languages (Devanagari, Bengali, Gujarati, Gurmukhi, Burmese) &lt;br /&gt;
&lt;br /&gt;
Pango has markup language !!!&lt;br /&gt;
&lt;br /&gt;
Pango GL patch http://www.mail-archive.com/pysoy-svn@pysoy.org/msg00761.html&lt;br /&gt;
PangoOpenGLRenderer A tale of &lt;br /&gt;
http://mail.gnome.org/archives/gtk-i18n-list/2006-July/msg00002.html&lt;br /&gt;
&lt;br /&gt;
http://behdad.org/text/&lt;br /&gt;
http://software.schmorp.de/pkg/deliantra/Deliantra-Client.html&lt;br /&gt;
&lt;br /&gt;
Thebes: alternative to Pango used in Mozilla&lt;br /&gt;
http://mxr.mozilla.org/seamonkey/source/gfx/src/thebes/&lt;br /&gt;
https://developer.mozilla.org/devnews/index.php/2007/12/17/aboutmozilla-beta-2-shipping-firefox-3-icon-preview-add-ons-compatibility-gfx-architecture-and-more/#gfx&lt;br /&gt;
http://blog.vlad1.com/2007/12/11/graphics-in-mozilla/&lt;br /&gt;
&lt;br /&gt;
http://people.redhat.com/otaylor/gtk/guadec2-i18n/&lt;br /&gt;
&lt;br /&gt;
Cairo vs. Qt&lt;br /&gt;
https://www.kitware.com/InfovisWiki/index.php/Cairo_rendering&lt;br /&gt;
&lt;br /&gt;
http://kcchao.wikidot.com/gtk&lt;br /&gt;
&lt;br /&gt;
Some text layouting link&lt;br /&gt;
• http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;amp;item_id=CmplxRndExamples&lt;br /&gt;
The main characteristics of CTL language complexity are:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * Bi-directional text, where characters may be written from either right-to-left or left-to-right direction.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * Context-sensitive shaping (ligatures), where a character may change its shape, dependent on its location and/or the surrounding characters. For example, a character in Arabic script can have at least four different shape forms, depending on context.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * Ordering, the displayed order of the characters is not the same as the logical order. For example, in Devanagari, which is written from left to right, the grapheme for "short i" appears to the left of ("before") the preceding consonant: in कि ki, the ि -i should render on the left, its bow reaching until above the क k- to the right.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FreeType &lt;br /&gt;
Performs font rasterization. Given font data (file or data in memory), it does simple (non-complex) mapping of Unicode characters to glyph indices and rendering glyphs to images. &lt;br /&gt;
Fontconfig &lt;br /&gt;
Performs font selection based on a pattern of desired font characteristics. These characteristics typically include a family name, style, weight, slant, size, as well as language. Font configuration happens by way of a set of very expressive XML rules. Fontconfig uses FreeType to inspect fonts and caches the results in an mmap()able architecture-specific binary cache. &lt;br /&gt;
FriBidi &lt;br /&gt;
GNU FriBidi is an implementation of the Unicode Bidirectional Algorithm. Pango uses FriBidi and has an internal copy of it. AbiWord is the other major user of FriBidi. Many other projects use FriBidi as the simplest route to add support for Hebrew and Arabic scripts without adding support for a full complex text rendering engine. &lt;br /&gt;
HarfBuzz &lt;br /&gt;
HarfBuzz is the meat of the modern GNU/Linux text rendering stack. With OpenType emerging as the universal font format supporting complex text rendering, HarfBuzz, as an OpenType Layout engine, is where all the magic happens. In fact it is of such importance to the stack that it deserves an entire section of its own in this document. &lt;br /&gt;
Pango &lt;br /&gt;
Pango is, for the most part, the roof of the text rendering stack. Components sitting on top of Pango (eg. GTK+) need not know about complexities of i18n text and are expected to simply use these opaque objects called PangoLayout's. Pango has been designed to satisfy GTK+'s needs for i18n text. However, Pango still provides a low-level API on which one can build their own layout engine. This is what Firefox, Webkit-GTK, etc do, but it has proved to be a cumbersome practice. We will expand on that later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A good link on software stack - http://maemo.org/maemo_release_documentation/maemo4.1.x/node6.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-5310623259313330089?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/FheCXxWdmsQ/pango-note.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>1</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2010/02/pango-note.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-6044789160294208592</guid><pubDate>Sun, 03 Jan 2010 08:41:00 +0000</pubDate><atom:updated>2010-01-03T15:46:58.328+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">beagleboard</category><title>Setup Buildroot for Beagleboard Development</title><description>Currently, when development with Beagleboard we often use OE distribution. The OE is hard to maintain for&lt;br /&gt;
me, and it requires to open everything so that I use buildroot to develop on Beagleboard.&lt;br /&gt;
&lt;br /&gt;
Here is how to setup one.&lt;br /&gt;
1) Download the buildroot from http://www.buildroot.org/&lt;br /&gt;
2) You might want to use external toolchain by downloading the ARM toolchain from CodeSourcery (http://www.codesourcery.com/) or build using crosstool-ng&lt;br /&gt;
3) You might also want to use the omap linux kernel by downloading it using git (git clone git://git.&lt;i&gt;kernel&lt;/i&gt;.org/pub/scm/linux/&lt;i&gt;kernel&lt;/i&gt;/git/tmlind/&lt;i&gt;linux&lt;/i&gt;-&lt;i&gt;omap&lt;/i&gt;-2.6.git)&lt;br /&gt;
4) Extract the buildroot into a folder and type `make menuconfig` to configure it.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; * Target Architecture: arm&lt;br /&gt;
&amp;nbsp;&amp;nbsp; * Target Architecture Variant: generic_arm&lt;br /&gt;
&amp;nbsp;&amp;nbsp; * Target ABI: EABI&lt;br /&gt;
&amp;nbsp;&amp;nbsp; * For my Beagleboard, I need to configure the Target Options &amp;gt; Generic serial port config (y) &amp;gt; and change Serial port to run a getty on to (ttyS2) instead of (ttyS0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - If using ttyS0, the my board cannot boot and stuck at `ip: RTNETLINK answers: File exists` (http://forums.xilinx.com/xlnx/board/message?board.id=ELINUX&amp;amp;thread.id=1677)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; * Go to &lt;b&gt;Toolchain &lt;/b&gt;settings&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - If you are using &lt;i&gt;External Toolchain&lt;/i&gt;, select &lt;b&gt;Toolchain type &lt;/b&gt;to &lt;b&gt;External binary toolchain &lt;/b&gt;and set the &lt;b&gt;External toolchain path &lt;/b&gt;to correct path of your toolchain (i.e. /usr/local/xtools/armunknownlinuxuclibcgnueabi. This is my crosstool-ng installed location)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; - If you are using &lt;i&gt;Internal Toolchain&lt;/i&gt; (the toolchain built by buildroot), select&amp;nbsp; &lt;b&gt;Toolchain type &lt;/b&gt;to &lt;b&gt;Buildroot toolchain&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * Go to &lt;b&gt;Target filesystem options &lt;/b&gt;and select the target fs to build.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - If you are building the u-boot, you need to enter the Das U-Boot Monitor and select&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + board name: omap3_beagle&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * Go to &lt;b&gt;kernel &lt;/b&gt;settings&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - If you are using Internal Kernel, select &lt;b&gt;Kernel type &lt;/b&gt;to &lt;b&gt;linux (Advanced Configuration) &lt;/b&gt;and select the kernel version as well as the configuration file to use (in the Linux Kernel Configuration), I copied the omap3_beagle_defconfig from arch/arm/configs to a specified location and customized it.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - If you are using External Kernel, select &lt;b&gt;Kernel type &lt;/b&gt;to &lt;b&gt;none&lt;/b&gt;.&lt;br /&gt;
5) Save the configuration and type `make` to build the system. After finished, the image is located at &lt;i&gt;binaries/[project_name]/&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
NOTE:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; + If using external kernel, you will need to copy the kernel module into the root filesystem at project_build_arm/[project_name]/root or into the NFS root folder. (in kernel folder: make ... INSTALL_MOD_PATH=...)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; + The crosstool-ng cannot compile the uboot because of some bugs (http://old.nabble.com/-U-Boot---PATCH-2-2--ARM:-fix-build-error-with-gcc-4.4.2-about-inline-function-declared-weak-p26188857.html) &lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; + The internal kernel is getting from kernel.org and doesn't contain the patches for omap platform. Need to sync with omap git repository to create the patch and put it under the target/.../ folder inside the buildroot&lt;br /&gt;
&amp;nbsp;&amp;nbsp; + The internal toolchain is generic arm, and does not have omap specified optimization, need to sync with OE repository to create the patch and put it under the toolchain/.../ folder inside the buildroot&lt;br /&gt;
&amp;nbsp;&amp;nbsp; + The internal kernel cannot have USB Gadget Driver, maybe missing some patch for omap&lt;br /&gt;
&amp;nbsp;&amp;nbsp; + Add _defconfig (or board specific into the buildroot)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-6044789160294208592?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/u_dCMgrfd6U/setup-buildroot-for-beagleboard.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2010/01/setup-buildroot-for-beagleboard.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-8595000074574265516</guid><pubDate>Fri, 18 Dec 2009 00:49:00 +0000</pubDate><atom:updated>2010-01-03T04:08:12.070+07:00</atom:updated><title>[Job] Junior and Senior Developer</title><description>&lt;span style="font-family: Arial,Helvetica,'Nimbus Sans L',sans-serif; font-size: 13px; line-height: 15px; white-space: pre-wrap;"&gt;My company Global CyberSoft (http://www.globalcybersoft.com) is looking for lot of both Junior and Senior developers which have knowledge of Java or C/C++ &amp;amp; Linux.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,'Nimbus Sans L',sans-serif; font-size: 13px; line-height: 15px; white-space: pre-wrap;"&gt;Experience in Graphics and one of following technique OpenGL, DirectX, Clutter, Webkit, Flash, Driver Development.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,'Nimbus Sans L',sans-serif; font-size: 13px; line-height: 15px; white-space: pre-wrap;"&gt;Wishlist:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,'Nimbus Sans L',sans-serif; font-size: 13px; line-height: 15px; white-space: pre-wrap;"&gt;- Experience in Consumer Electronics, with Set Top Box experience being a plus&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,'Nimbus Sans L',sans-serif; font-size: 13px; line-height: 15px; white-space: pre-wrap;"&gt;- Employment history: Graphics/UI Game Development, Apple, etc&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,'Nimbus Sans L',sans-serif; font-size: 13px; line-height: 15px; white-space: pre-wrap;"&gt;Contact hieult@globalcybersoft.com for more information.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-8595000074574265516?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/il-1h3MYU90/job-junior-and-senior-developer.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2009/12/job-junior-and-senior-developer.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-4824602383399635642</guid><pubDate>Tue, 08 Sep 2009 16:18:00 +0000</pubDate><atom:updated>2009-09-10T23:11:18.607+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">beagleboard</category><title>How to build Valgrind for Beagleboard</title><description>&lt;div&gt;1) Get Valgrind source code from SVN using revision 9648 and 1888 for VEX&lt;/div&gt;&lt;div&gt;svn co -r 9648 svn://svn.valgrind.org/valgrind/trunk&lt;/div&gt;&lt;div&gt;cd VEX&lt;/div&gt;&lt;div&gt;svn update -r 1888&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) Download the patch here &lt;a href="http://bugsfiles.kde.org/attachment.cgi?id=32348"&gt;http://bugsfiles.kde.org/attachment.cgi?id=32348&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3) Apply the patch into the source code&lt;/div&gt;&lt;div&gt;cd valgrind&lt;/div&gt;&lt;div&gt;patch -p1 &lt; [path to the patch]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4) Run autogen.sh to run autotools&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5) Configure the source code&lt;/div&gt;&lt;div&gt;./configure --host=arm-angstrom-linux-gnueabi&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The patch still has some bugs such as CPU instruction alignment you can 'cat /proc/cpu/alignment' to find out if the kernel is configured to fix unaligned accesses, and you can enable it by executing 'echo 2 &gt; /proc/cpu/alignment' but it's enough to use for simple application.&lt;/div&gt;&lt;div&gt;Have fun with Valgrind :-)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-4824602383399635642?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/qiq34fxU-gs/how-to-build-valgrind-for-beagleboard.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>1</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2009/09/how-to-build-valgrind-for-beagleboard.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-4783624162878886241</guid><pubDate>Fri, 04 Sep 2009 06:23:00 +0000</pubDate><atom:updated>2011-02-07T17:41:01.941+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">tips</category><category domain="http://www.blogger.com/atom/ns#">beagleboard</category><category domain="http://www.blogger.com/atom/ns#">clutter</category><title>How to build Clutter for Beagleboard</title><description>The Clutter need to be configured with =flavour=eglnative= so that it can work with SGX driver&lt;br /&gt;
The following is the configure command&lt;br /&gt;
&lt;blockquote&gt;./configure --with-flavour=eglnative --host=arm-angstrom-linux-gnueabi PKG_CONFIG=/data/workspace/OE/tmp/staging/i686-linux/usr/bin/pkg-config PKG_CONFIG_PATH=/data/workspace/OE/tmp/staging/armv7a-angstrom-linux-gnueabi/usr/lib/pkgconfig CFLAGS="--sysroot=/data/workspace/OE/tmp/staging/armv7a-angstrom-linux-gnueabi/ -I/data/workspace/OE/tmp/staging/armv7a-angstrom-linux-gnueabi/usr/include" --with-x=no --with-gles=1.1 --with-imagebackend=internal&lt;/blockquote&gt;&lt;br /&gt;
with&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;            --host: set the target for the build, need to be arm-angstrom-linux-gnueabi&lt;/li&gt;
&lt;li&gt;    PKG_CONFIG: use the pgk-config command from OE distribution&lt;/li&gt;
&lt;li&gt;            PKG_CONFIG_PATH: the path to search for *.pc file, need to be pointed to OE distribution&lt;/li&gt;
&lt;li&gt;            --with-x: not using X&lt;/li&gt;
&lt;li&gt;             --with-imagebackend: specific the image backend to use&lt;/li&gt;
&lt;li&gt;            --with-gles: specific the GLES version to use (1.1 or 2.0)&lt;/li&gt;
&lt;li&gt;            CFLAGS: override some C compiler flags&lt;/li&gt;
&lt;li&gt;      --sysroot: the root directory to search for library and header files&lt;/li&gt;
&lt;li&gt;      -I[include_dir]: some optional include directories to search for&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-4783624162878886241?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/SEIu7SOyrO8/how-to-build-clutter-for-beagleboard.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>8</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2009/09/how-to-build-clutter-for-beagleboard.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-8505255637521790814</guid><pubDate>Fri, 04 Sep 2009 06:07:00 +0000</pubDate><atom:updated>2009-09-04T13:09:56.188+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>Fix undefined rpl_malloc on autoconf tool in cross compile mode</title><description>When using autoconf tool in cross compile environment, sometime there is error like this `&lt;span class="fixed_width"  style="font-family:Courier,Monospaced;"&gt;undefined reference to `rpl_malloc'`&lt;br /&gt;&lt;/span&gt;&lt;p&gt;It is the bug of autoconf tool in the test function &lt;tt&gt;AC_FUNC_MALLOC&lt;/tt&gt;. To fix it we need define an environment variable that forces the test to pass.  Define it in the environment prior to calling ./configure and the script will act as if the &lt;tt&gt;AC_FUNC_MALLOC&lt;/tt&gt; check has passed. &lt;/p&gt; &lt;pre&gt;export ac_cv_func_malloc_0_nonnull=yes&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-8505255637521790814?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/eYw_6-mgmzs/fix-undefined-rplmalloc-on-autoconf.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2009/09/fix-undefined-rplmalloc-on-autoconf.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-3423866130762393503</guid><pubDate>Sun, 16 Aug 2009 16:00:00 +0000</pubDate><atom:updated>2009-08-17T08:08:07.931+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">opengl</category><title>Draw Text with OpenGL and Cairo</title><description>The OpenGL just supports capability to draw primitive, not text. In order to draw text on screen we need support of other package such as Cairo or Pango. The following topic describe how to use Cairo with OpenGL.&lt;br /&gt; 1 First we need to create a Cairo surface for drawing (text)&lt;br /&gt; 2 Then we will load the surface into GL texture using glTextureXXX function&lt;br /&gt; 3 After all, we will apply texture mapping into our primitive (for example a rectangle for displaying text)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Create Cairo Context&lt;/span&gt;&lt;br /&gt;inline cairo_t*&lt;br /&gt;create_cairo_context (int               width,&lt;br /&gt;                    int               height,&lt;br /&gt;                    int               channels,&lt;br /&gt;                    cairo_surface_t** surf,&lt;br /&gt;                    unsigned char**   buffer)&lt;br /&gt;{&lt;br /&gt;cairo_t* cr;&lt;br /&gt;&lt;br /&gt;/* create cairo-surface/context to act as OpenGL-texture source */&lt;br /&gt;*buffer = (unsigned char*)calloc (channels * width * height, sizeof (unsigned char));&lt;br /&gt;if (!*buffer)&lt;br /&gt;  {&lt;br /&gt;  printf ("create_cairo_context() - Couldn't allocate surface-buffer\n");&lt;br /&gt;  return NULL;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;*surf = cairo_image_surface_create_for_data (*buffer,&lt;br /&gt;                                             CAIRO_FORMAT_ARGB32,&lt;br /&gt;                                             width,&lt;br /&gt;                                             height,&lt;br /&gt;                                             channels * width);&lt;br /&gt;if (cairo_surface_status (*surf) != CAIRO_STATUS_SUCCESS)&lt;br /&gt;  {&lt;br /&gt;  free (*buffer);&lt;br /&gt;  printf ("create_cairo_context() - Couldn't create surface\n");&lt;br /&gt;  return NULL;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;cr = cairo_create (*surf);&lt;br /&gt;if (cairo_status (cr) != CAIRO_STATUS_SUCCESS)&lt;br /&gt;  {&lt;br /&gt;  free (*buffer);&lt;br /&gt;  printf ("create_cairo_context() - Couldn't create context\n");&lt;br /&gt;  return NULL;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;return cr;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Draw text into the Cairo surface and then load it into GL Texture&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;inline int DrawText(int x, int y, int width, int height, char *string, COLOR &amp;amp;textColor, COLOR &amp;amp;background)&lt;br /&gt;{&lt;br /&gt;cairo_surface_t* surface = NULL;&lt;br /&gt;cairo_t*         cr;&lt;br /&gt;unsigned char*   surfData;&lt;br /&gt;GLuint textureId;&lt;br /&gt;&lt;br /&gt;/* create cairo-surface/context to act as OpenGL-texture source */&lt;br /&gt;cr = create_cairo_context (256,&lt;br /&gt;        256,&lt;br /&gt;                          4,&lt;br /&gt;                          &amp;amp;surface,&lt;br /&gt;                          &amp;amp;surfData);&lt;br /&gt;&lt;br /&gt;/* clear background */&lt;br /&gt;cairo_set_operator(cr, CAIRO_OPERATOR_OVER);&lt;br /&gt;cairo_set_source_rgb(cr, background.red, background.green, background.blue);&lt;br /&gt;cairo_paint (cr);&lt;br /&gt;&lt;br /&gt;cairo_move_to(cr, 256/10, 256/2);&lt;br /&gt;cairo_set_font_size(cr, 30);&lt;br /&gt;cairo_select_font_face(cr, "sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);&lt;br /&gt;cairo_set_source_rgb(cr, textColor.red, textColor.green, textColor.blue);&lt;br /&gt;cairo_show_text(cr, string);&lt;br /&gt;&lt;br /&gt;glGenTextures(1, &amp;amp;textureId);&lt;br /&gt;glBindTexture(GL_TEXTURE_2D, textureId);&lt;br /&gt;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);&lt;br /&gt;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);&lt;br /&gt;glTexImage2D(GL_TEXTURE_2D,&lt;br /&gt;   0,&lt;br /&gt;   GL_RGBA,&lt;br /&gt;   256,&lt;br /&gt;   256,&lt;br /&gt;               0,&lt;br /&gt;               GL_RGBA,&lt;br /&gt;               GL_UNSIGNED_BYTE,&lt;br /&gt;               surfData);&lt;br /&gt;TestEGLError("glTexImage2D");&lt;br /&gt;&lt;br /&gt;free (surfData);&lt;br /&gt;cairo_destroy (cr);&lt;br /&gt;&lt;br /&gt;return textureId;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Texture Mapping&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The texture mapping is so simple, we need to provide them the UV coordinate. The UV coordinate is range from 0 to 1 which 0 is the start point, and 1 is the end point. The following is an example usage&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;GLfloat textureCoord[] = {&lt;br /&gt; f2vt(0.0f), f2vt(0.35f),&lt;br /&gt; f2vt(1.0f), f2vt(0.35f),&lt;br /&gt; f2vt(0.0f), f2vt(0.55f),&lt;br /&gt; f2vt(1.0f), f2vt(0.55f)&lt;br /&gt;};&lt;br /&gt;COLOR clrText = {255,255,255};&lt;br /&gt;glEnable(GL_TEXTURE_2D);&lt;br /&gt;glEnableClientState(GL_VERTEX_ARRAY);&lt;br /&gt;glEnableClientState(GL_TEXTURE_COORD_ARRAY);&lt;br /&gt;GLuint textureId = DrawText(clipRect[0], clipRect[1], clipRect[2], clipRect[3], data, clrText, this-&gt;m_clrBackground);&lt;br /&gt;&lt;br /&gt;glVertexPointer(2, VERTTYPEENUM, 0, rect);&lt;br /&gt;glTexCoordPointer(2, VERTTYPEENUM, 0, textureCoord);&lt;br /&gt;&lt;br /&gt;glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);&lt;br /&gt;&lt;br /&gt;glDisableClientState(GL_VERTEX_ARRAY);&lt;br /&gt;glDisableClientState(GL_TEXTURE_COORD_ARRAY);&lt;br /&gt;&lt;br /&gt;glDeleteTextures(1, &amp;amp;textureId);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-3423866130762393503?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/UCvQ1Q-_Cr0/draw-text-with-opengl-and-cairo.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2009/08/draw-text-with-opengl-and-cairo.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-1953509296473868597</guid><pubDate>Sat, 15 Aug 2009 11:24:00 +0000</pubDate><atom:updated>2009-08-15T18:36:22.089+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">opengl</category><title>Enable 2D Over OpenGL</title><description>In OpenGL, if we want to 2D only, we can use the Ortho matrix to set ignore the z-list. The following code snippet demo how to do that&lt;br /&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;void&lt;/span&gt; glEnable2D()&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt; vPort[&lt;span style="color:purple;"&gt;4&lt;/span&gt;];&lt;br /&gt;&lt;br /&gt;glGetIntegerv(GL_VIEWPORT, vPort);&lt;br /&gt;&lt;br /&gt;glMatrixMode(GL_PROJECTION);&lt;br /&gt;glPushMatrix();&lt;br /&gt;glLoadIdentity();&lt;br /&gt;&lt;br /&gt;glOrtho(0, vPort[&lt;span style="color:purple;"&gt;2&lt;/span&gt;], 0, vPort[&lt;span style="color:purple;"&gt;3&lt;/span&gt;], -1, 1);&lt;br /&gt;glMatrixMode(GL_MODELVIEW);&lt;br /&gt;glPushMatrix();&lt;br /&gt;glLoadIdentity();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt; glDisable2D()&lt;br /&gt;{&lt;br /&gt;glMatrixMode(GL_PROJECTION);&lt;br /&gt;glPopMatrix();&lt;br /&gt;glMatrixMode(GL_MODELVIEW);&lt;br /&gt;glPopMatrix();&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-1953509296473868597?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/2RfozaugvNo/enable-2d-over-opengl.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2009/08/enable-2d-over-opengl.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-6689974399557393318</guid><pubDate>Mon, 10 Aug 2009 08:50:00 +0000</pubDate><atom:updated>2009-08-10T15:52:33.857+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">beagleboard</category><title>Boot beagleboard with S-Video output</title><description>Boot beagleboard with S-Video output&lt;br /&gt;&lt;br /&gt;setenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait omapfb.mode=tv:1024x768-16@60 omapdss.def_disp=tv&lt;br /&gt;mmcinit&lt;br /&gt;fatload mmc 0:1 0x80300000&lt;br /&gt;uImage-2.6.29 bootm 0x80300000&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-6689974399557393318?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/ilTlF8R7jEU/boot-beagleboard-with-s-video-output.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2009/08/boot-beagleboard-with-s-video-output.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-315920831118778783.post-8972387037543041288</guid><pubDate>Sat, 08 Aug 2009 11:24:00 +0000</pubDate><atom:updated>2009-08-08T18:28:40.542+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">beagleboard</category><title>How To Share Network with Beagleboard through USB</title><description>1) Follow &lt;a href="http://changetheworldwithyourpassion.blogspot.com/2009/08/how-to-setup-beagleboard-network.html"&gt;this link&lt;/a&gt; to setup network connection between Beagleboard and Host&lt;br /&gt;2) Setup ip forwarding in the Host (linux)&lt;br /&gt;echo "Remove any previous NAT setup"&lt;br /&gt;iptables --flush&lt;br /&gt;iptables --table nat --flush&lt;br /&gt;iptables --delete-chain&lt;br /&gt;iptables --table nat --delete-chain&lt;br /&gt;&lt;br /&gt;echo "Setup NAT to forward packets from usb0 &lt;---&gt; eth0"&lt;br /&gt;iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;&lt;br /&gt;echo "Enable packet forwarding in the kernel"&lt;br /&gt;echo 1 &gt;&gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;&lt;br /&gt;3) In the board add route to the host&lt;br /&gt;route add default gw 192.168.99.100&lt;br /&gt;&lt;br /&gt;4) In the board set the DNS search to be same as the host so that it can resolve host to name&lt;br /&gt;cat /etc/resolve.conf&lt;br /&gt;nameserver 192.168.1.1&lt;br /&gt;&lt;br /&gt;That's all :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/315920831118778783-8972387037543041288?l=changetheworldwithyourpassion.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ChangeTheWorldWithYourPassion/~3/hWB7s26nT0I/how-to-share-network-with-beagleboard.html</link><author>noreply@blogger.com (Hieu Le Trung)</author><thr:total>0</thr:total><feedburner:origLink>http://changetheworldwithyourpassion.blogspot.com/2009/08/how-to-share-network-with-beagleboard.html</feedburner:origLink></item></channel></rss>

