Friday, April 27, 2007

Doxygen to html to chm

Windows For those who like to use Doxygen to create some cool html help and who use source control you probably would like to create a unique file to be able to commit the file to your source control. The reason is that every time you will generate Doxygen new files will be generated based on your code change and you don't want to re-post all the html files every time. Doxygen itself can almost directly generate such a file!

The step-by-step howto:> Download the Microsoft HTML Help Workshop here: Microsoft MSDN page (the 'Download Htmlhelp.exe' link)

Install above program.

Edit the doxygen configuration file (located at 'doc\doxygen\html\doxygen.html.cfg') and change the following entries:

GENERATE_HTMLHELP = NO --> GENERATE_HTMLHELP = YES
BINARY_TOC = NO --> BINARY_TOC = YES
TOC_EXPAND = NO --> TOC_EXPAND = YES
HHC_LOCATION = --> HHC_LOCATION = "{path to MS HTML Help Workshop}\hhc.exe">

Follow the steps of generating the HTML version of the documentation: Online documentation page -- Or, if you don't like command line mucking about, ignore the above documentation link and use the Doxygen wizard called doxywizard which comes with the latest win32/linux doxygen version 1.3.9.1 (and maybe with earlier versions).

Run doxywizard>
Load the edited Doxygen configuration file (with the 'Load..' button)
Change the working directory to your project root dir (just strip off the 'doc\doxygen\html\') Click the 'Start' button
Let it munch a while-- And voila!

A nice and snappy myapp.chm file is waiting for you in the documentation directory!
Linux
On Linux such as Ubuntu if you need a solution to convert Doxygen to CHM you will have to use chmcmd
In this case you can't enable the CHM creation inside the doxy file because it won't work, doxygen will fail on executing hhc.exe on your Linux system. You couild use wine to emulate but this is like using a sledgehammer to kill a fly.... So the recommendation is to duplicate the doxyfile and disable all related CHM flag. Run doxygen once using the Windows doxy file to produce index.hhp, index.hhc and, index.hhk then edit the hhp file and remove unsupported options by chmcmd. See sample simple hhp file.
Maintain the hhp, hhc and hhk file in your source repository and each time you build the documentation on windows make sure to update the files to keep them in sync for your Linux CHM build Download fpc-2.6.0.x86_64-linux.tar from http://sourceforge.net/projects/freepascal/files/Linux/2.6.0/

android@U64:~$ cd pascal/
android@U64:~/pascal$ tar xvf fpc-2.6.0.x86_64-linux.tar
android@U64:~/pascal$ ls
fpc-2.6.0.x86_64-linux fpc-2.6.0.x86_64-linux.tar
android@U64:~/pascal$ cd fpc-2.6.0.x86_64-linux
android@U64:~/pascal/fpc-2.6.0.x86_64-linux$ ls
binary.x86_64-linux.tar demo.tar.gz doc-pdf.tar.gz install.sh
android@U64:~/pascal/fpc-2.6.0.x86_64-linux$
Install prefix (/usr or /usr/local) [/usr] : /usr/local
Installing compiler and RTL for x86_64-linux...
Installing utilities...
Install Textmode IDE (Y/n) ? Install FCL (Y/n) ? Y
Installing fcl-async
Installing fcl-base
Installing fcl-db
....
Install packages (Y/n) ? Y
Installing a52
Installing aspell
Installing bfd
Installing bzip2
Installing cairo
...
Installing zorba
Done.


Install documentation (Y/n) ? Y
Installing documentation in /usr/local/share/doc/fpc-2.6.0 ...
Done.

Install demos (Y/n) ? Y
Install demos in [/usr/local/share/doc/fpc-2.6.0/examples] :
Installing demos in /usr/local/share/doc/fpc-2.6.0/examples ...
Done.

Write permission in /etc.
Writing sample configuration file to /etc/fpc.cfg
Writing sample configuration file to /usr/local/lib/fpc/2.6.0/ide/text/fp.cfg
Writing sample configuration file to /usr/local/lib/fpc/2.6.0/ide/text/fp.ini
Writing sample configuration file to /etc/fppkg.cfg
Writing sample configuration file to /etc/fppkg/default

End of installation.

Refer to the documentation for more information.


Examples
This link has information about the TOC and Index files in chms: http://www.nongnu.org/chmspec/latest/Sitemap.html
These formats are based on HTML and use the following doctype:


The tag contains a tag providing information on the program that generated the files and a comment indicating the version of the file, e.g.:


The tag contains an tag that stores properties of the file in tags, followed by a
    tag, whose
  • tags have tags that store the properties of the Contents/Index items in tags. e.g.:


    Note that the Property Names and Property Values and tags are not case-sensitive, but HHW will always write all three in the default capitalization, when appropriate.
    Note that the tags are mostly in uppercase and the
  • tag is not closed; this is in compliance with the doctype.
    Some properties that were seen in HHA.dll that may or may not be used are Background Image, NumberImages, InformationTypeDecl, Secondary, Icon, Display, Keyword, Instruction, Section Title,
    Favorites, QueryType, SendEvent, SendMessage, HHI, Inclusive & Exclusive.
    This the beginning chunk of an autogenerated (the autogenerated TOC stinks) hhc (Table of Contents/TOC) file for the RTL: .hhk are in the same format but are for the Index pane and do not have
    subitems.


    For anybody determined to "roll their own", an absolutely minimal .hhp file reads something like


    chmcmd - creates a Compressed HTML help file (chm) using the hhp file

    android@U64:~/html/chmcmd index.hhp

    Will produce a nice index.chm file on an Android build system and use yoru favorite CHM APK viewer on your Mobile phone!

    Tuesday, March 27, 2007

    MIO 310 pocket PC GPS running Microsoft Pocket PC 4.2 with SIRF

    I love the MIO digiwalker 310 from mio-tech http://www.mio-tech.com/.
    This is such a fantastic device. It is running Microsoft Pocket PC 4.2 and this device shows how great and stable Microsoft OS can be when it is integrated the right way !
    When i say right way it is because the device is running some really good open source library. Also because there is no need to use some fancy overkill c# UI.
    The decision to choose c# or not on embedded device has to be driven by a good balance between scalability and speed. The faster the better....
    Using c# for the beauty of the code is not always good...
    The experience is the key to have a great product and the fact that the code has to be clean enough to maintain and understand is not always a must have... I mean clean is good but balancing managed and unmanaged code is important.

    A bried list of the open source libraries and sdk's

    Firefly embedded application engine www.pdamill.com
    FFUI embeded user interface www.pdamill.com
    Hekkus sound system www.shlzero.com
    Sqlite database Engine www.sqlite.org
    AGG graphics library www.antigrain.com
    Redblack tree
    Freetype font rendering library www.freetype.org
    Tremor OGG library www.Xiph.org

    The human interface is slick ! The device has a touch screen with buttons big enough not to use any stylus. SD/MMC reader, USB adapter, stereo headset plug and a way to lock the device.
    Your finger works fine but be carrefull when you leave an in and out burger place..
    Touched screens are not really fat friendly by nature.... After using the device for 3 days, i love it !
    i didn't see any negative point except maybe that i would have like to be able to pick a female english voice instead of the men english voice choosen by default for US. The french voice is female by defaut which is a nice french touch.

    Pros

    + Zoom is fantastic and realtime.
    + POI are great and intelligent. Based on your location and always sorted by distance.
    + POI can be browsed by categories as well.
    + Fantastic auto completion when you type anything using the keyboard
    + Voice is clear and loud
    + Night vision mode is great and the device switch automatically based on the time.
    + The device engine is smart enough to tell you to take the left lane on a free way
    when your driving segment is long enough
    + Calculation time are fast
    + Screen size is big
    + MP3 player

    Cons

    - no indoor outlet adapter to charge the device. Just a car adapter so if you have a bike
    you will need a USB charger at home.

    After all i think that a portable GPS device with additional audio features is the way to go. Using a phone which require activation seams to have more inconvenient than advantage. I have tons of ideas around GPS now by combining the POI database with mood and also by performing datamining and beeing able to analyse route history to use them as preferred route. I can't wait to see some video player on this device.

    Monday, January 22, 2007

    iPhone Humor

    http://www.youtube.com/watch?v=ScJMBhgb790

    Lots of laugh and laugh and laugh

    http://www.youtube.com/watch?v=hriAMxCinhg

    http://www.pocketpicks.co.uk/latest/index.php/2007/01/22/steve-jobs-sends-tv-audience-wild-with-the-iphone/

    Thursday, January 11, 2007

    CES 2007

    Hot products at CES 2007

    Number 1:

    My first kudos will naturally goes to the OQO model 02
    check out http://www.oqo.com/ this device is a kick ass
    PC with : hold your breath...

    1.5 GHZ VIA C7N ULV processor
    60 GB harddrive
    1GB DDR2 SDRAM
    Microsoft Vista capable
    integrated 3G EV-DO WWAN
    WIFI 802.11bg
    integrated bluetooth 2.0
    VX700 graphics chipset with integrated GPU
    VGA/Ethernet adapter
    3 hours of battery life standard
    6 hours double capacity
    illuminated keyboard with mouse
    USB 2.0
    HDMI output digital video port

    I want this device sssoooo bad

    Number 2:
    Certainly the All in one LG Super Multi Blue
    Blue Ray Disc Rewriter & HD DVD drom Drive
    GGW-H10N

    Number 3:
    Motorola new bluetooth stereo headset. Super thin.
    I want one soooo bad to listen to my music on my Q

    Number 4:
    VIDA BOX Slim High Definition Windows Media Center
    http://www.vidabox.com/

    Number 5:
    Toshiba HDDVD internal burner drives.

    Number 6:
    Those cool USB picture digital frames
    such as http://www.ceiva.com/ as a cool gift for you familly and friends

    Number 7:
    Niveus HDTV box using intel VIIV and those interesting
    Digital Wireless media adapter to stream from one place
    to an other. Not sure if this will let the user stream
    anything or just on demand pay per view content ???

    Number 8:
    The demo of local.live.com for the city of LasVegas.

    Number 9:
    Visteon wireless charger for portable electronics devices
    such as moto Q
    http://www.mobilemag.com/content/100/358/C11152/

    Number 10:
    Yet an other Windows laptop but close to a MacBook Design
    LG Mobile WiMAX/HSDPA laptop


    Why CES is always after christmas ::))

    iPhone talk

    A really great article explaining the pros and cons of the iphone

    http://www.oreillynet.com/xml/blog/2007/01/why_iphone_is_not_for_me.html

    BTW Steve i really like what you do but come on... not to provide the ability to replace battery on those iPod is a bummer for all of us.

    Tuesday, December 05, 2006

    How do I create a C++ application that embeds the Flash Player

    "How do I create a C++ application that embeds the Flash Player, and how can the embedded Flash Player communicate with the C++ application?"

    Mike Chambers wrote a terrific article on the subject (his was written inC#), but the DevNet Resource Kit it was a part of is no longer available.

    The article is still up for legacy purposes though:http://www.adobe.com/devnet/flash/articles/stock_history.html

    Basically, you embed the Flash Player ActiveX control in your application, and then there's an API exposed through the ActiveX control.

    Here's a page that details the methods and events exposed by the Flash Player ActiveX control scripting interface

    http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_12059

    Here's a PDF about
    how to write applications in VB which embed the FlashPlayer:

    http://www.adobe.com/devnet/flash/articles/flash_vb.pdf

    And, for your reference, Mike's blog post, which is result #1 when you Google "Embed Flash Player in C++ app"

    http://weblogs.macromedia.com/mesh/archives/2003/07/embedding_flash.html


    Mike Chambers Flash C# integration

    http://www.adobe.com/devnet/flash/articles/stock_history.html


    Macromedia Flash Slide Show (VB Flash sample application)

    Thursday, November 16, 2006

    HD DLP VIDEO PROJECTOR and NVIDIA GO 7400 with vista RC2

    Recently i upgraded my windows XP SP 2 running on a coreduo laptopto Windows Vista RC1 then RC2. I noticed that the quality of the video driver for 2d rendering and video overlay is not as good as Windows XP driver. Some software impacted are Video Lan (color depth switching), OnAirSolution HTDV creator.
    I have notice in a dual screen mode when plugged to a Video Projector some "horizontal light background bar" interlaced within the video signal moving from "top to bottom". Yuck !!
    I have also noticed some significant quality decrease when using the OnAirSolution HDTV player. The overlay of channel number are not properly rendered and the bilinear filtering is not as good as it was on Windows XP.

    Please NVIDIA update the Vista RC2 driver for the 7400 card on coreduo laptop ASAP...

    Monday, November 13, 2006

    Local.live.com

    The service is up and running now. A serious competitor to google maps. Very impressive so far !

    The usage of 3d is really impressive and very usefull to look for intersection thanks to visual

    http://local.live.com/

    Zune Web Site

    On november 11 the zune software should be available for download...
    Really curious to see how it works and how this product will be integrated with Vista, Media Center and the XBOX 360...

    http://www.zune.net/en-us/meetzune/software.htm

    As far as the device specification is concerned

    http://www.zune.net/en-us/meetzune/device.htm

    Everything courtesy of Microsoft

    Friday, October 27, 2006

    What Macromedia should enhance with Flash

    Disabled back button is not good

    Some Flash designers use meta refreshes or other tricks to disable browser’s Back button. As the famous usability expert Jacob Nielsen says, ‘Back button is the second most important navigation element after hyperlinks’. People not able to use Back button will click the third most important navigation element – that X button in the top right. Besides, if you are going to promote a Flash site via PPC, you should know that Google AdWords doesn’t approve pages with disabled back button.

    Search engines do not like Flash

    And perhaps the most important: not every search engine is able to crawl and index the content of Flash movies. Even those that can often do it with errors. This is in particular the case of a website fully implemented in Flash as a single file. Search engines just wouldn’t be able to direct visitors to the proper page within that file.
    What is Flash really good for? Banners and ads – it provides far more useful features then the traditional gif animation. Online games – remember the ‘Yeti Sports’? Flash technology – the Flash videos - for video blogs.

    Windows Mobile 2005 Smartphone with no touch screen doesn't support Flash Web Site

    can't access web site running flash because there is no way to navigate within a flash object by using the TAB key

    Wednesday, October 18, 2006

    OnAir USB HDTV and WIndows Vista

    I recently installed windows vista rc1 and i use to have few issues with the USB HDTV driver for my USB2HDTV box. so i decided to upgrade to vista RC2.
    The upgrade was successfull without any trouble and i was able to upgrade my vista RC1 to RC2 without losing any previousley installed software.

    I then installed the latest driver from onair solution OnAir USB HDTV Creator Driver v2.0.0.61
    whose download is available at http://www.autumnwave.com/

    At the end of the installation, i use to have some trouble with the installation even if i was runing the installer in compatibility mode.
    Compatinility mode is the nice way to execute a process and target a specific operating system he was supposed to run onto thanks to a build in appcompat into the new explorer.
    I selected Windows XP SP2.

    Vista complained about a problem but an onairsolution folder was present at the root of vista OS drive.

    I then went to the Control panel (in classic icon view) and i selected the system icon. On the top left tab i selected Device Manager then i right clicked on the USB HDTV driver which was marked as a device not beeing installed properly with the famous exclamation mark yellow icon.

    I selected the 'Update Driver Software...' option from the right context menu and specify a path for the driver by pointing to the driver path found in C:\OnAirSolution\ subfolder.

    Later on i choose the install anyway option when a dialog box popup with some red alert message.

    The installation was successfull !

    I then installed version 2.9.9 of the HDTV creator software and i got TVVVVV again but not on a dual screen only the primary screen...

    BTW this is not bad for RC2, vista rocks again for me and the cherry on the cake with vista is that on mouse over ontop of the OnAir USB HDTV icon in the taskbar i can check TV in a popup window thanks to the new build in feature in Vista !!

    Tuesday, October 17, 2006

    Sony DVD JukeBox and RS232

    Recently i had to play with the RS232 protocol and i found a very interesting opensource project
    on sourceforge. Windows program to control your Sony DVP-CX777ES 400-disc DVD player via its RS232 port connected to the serial port of your computer.
    The project includes documentation and all source to be able to control the Sony DVP-CX777ES 400 DVD jukebox using a RS232 controller. This project is quite impressive and i am hoping to be able to control a Sony Jukebox for a custom DVD on demand at home and then be able to link the video output of the jukebox with a USB HDTV OnAirSolution Nvidia Box to perform overlay on the PC.

    I would really love Optoma to provide the RS232 protocol documentation to control optoma video projector as well to have a complete entertainment system from one PC APP control with a unique remote control off course over bluetooth :) So where are the bluetooth TV/Like remote control ??

    http://sourceforge.net/project/showfiles.php?group_id=99672

    The beast :

    http://www.sonystyle.com/is-bin/INTERSHOP.enfinity/eCS/Store/en/-/USD/SY_DisplayProductInformation-Start?ProductSKU=DVPCX777ES/B&CategoryName=hav_DVD_DVDPlayers&DCMP=FROOGLE&HQS=DVPCX777ES/B

    --
    Thomas

    Monday, September 25, 2006

    Rip and Organize Music

    The following screen shot describes a set of Windows applications aimed to demonstrate my audio multimedia skills on the Windows XP Platform.

    The first application is a CDRIP based Windows application based on a famous Open Source Ripping Engine available on Source Forge for which i have added a Skin Engine.

    The second application is a MUSIC multithreaded scanning Windows application which extract metadata from a personnal music collection and organized the music based on genre, artist, album like wise Microsoft, Apple, Real or Media Monkey are doing.

    The third is a basic Application to embed the Media Player Engine.

    I will post soon a screen shot of an application to show an alternate way on Windows (using a Direct X and Active X Control technology) to select a CD in a media library based on 3d albumart image mapping like wise apple did with iTune in the latest version of iTune.



    Stay tuned...

    Thursday, September 21, 2006

    Atlas using Atlas ??

    what a blast !!!

    http://atlas.freshlogicstudios.com/

    Internet Explorer in Kiosk Mode

    Internet Explorer offers the capability to open in Kiosk mode. Kiosk mode forces the webpage or application to occupy the entire viewable area of the screen. To open IE in Kiosk mode you use the following command:

    C:\Program Files\Internet Explorer\iexplore.exe -k http://www.thomasyounsi.com/

    DIME, WSE and INDIGO

    SOAP messages are not the best way to send large binary files. As the Web Services emerge, people look for Web services to have more and more functionality. Result was the introduction of Web Services Enhancement (WSE) 2.0. The Web Services Enhancements for Microsoft .NET (WSE) supports attaching files to SOAP messages outside the SOAP envelope; these files are not serialized as XML. This can be beneficial when sending large text or binary files because XML serialization is a very costly process and can result in files much larger than the originals. Direct Internet Message Encapsulation (DIME) is a lightweight, binary message format that WSE uses to encapsulate SOAP messages and their attachments in a DIME message.

    http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20051027WSE3MF/manifest.xml