This weekend I'm evaluating several GUI Libraries which have very liberal license such as new BSD or MIT. and found only IUP which is C based. There are some GUI libraries come as part of framework, they use different configuration and often have their own build tool: VCF and U++. Both C++ based and was meant to be work together with the sources instead of available in usual binary distribution such as GTK, considering their license which developer given total freedom to modify the library itself. I tried to package it into distribution friendly way. Let's try U++!
Overall from its examples U++ was intended to compete with Qt or Wx though with current situation Qt is the most advanced. U++ use BLITZ for a fast compilation (SCU), sort of what GHC did which a bit confusing to packaged as they're combined objects. Binary size is reasonably small at minimal setup but as usual mingw build is always significantly larger than VS especially with C++.
U++ has a quirk to make it available as package, while we can choose not using BLITZ and rebuild all *.a (except theIDE related) to monolithic archive there is an exception: files *.icpp which determined and called by "uses" in .upp file that compiled and appended during linking process. This create problem for generic packaging as they are conditional requirement. The (ignorant) easy workaround is to link the whole *.icpp objects (can be done in pkg-config's libs option too). This however create up to 700KB larger binary as some objects aren't actually needed but will works with generic compilation way.
Here is binary as library for both 32bit and 64bit
http://osspack32.googlecode.com/files/upp4193_32_64.7z
http://osspack32.googlecode.com/files/upp4193_mingw32.7z (only for MinGW32 dwarf2)
note: it's MinGW-W64 SJLJ based and if using with vanilla G++ you'll need to append -lpthread during linking and naturally TheIDE still needed for GUI craft. When using postgres/ssl plugin then openssl and postgres client library required.
Currently I had side project related to postgres and need BSD licensed GUI with built-in support, but after some trials I found myself lost... this weird(unique) C++ approach is too high for me to boot :-(
05 September 2012
Windows backward evolution tree
I was born mid '80 that time nature is my playground, mud on hand, dirt all over shirt, everything is fun. I did got my first PC experience, I think that time I use DOS 3.x playing digger, pango and once in a while have a dig at GW-BASIC making
pictures
with CAD-like commands. Isn't DOS a simple experience? it was, although I had to type at least I don't (need to) care about the OS itself. That time when real-world application starved for hardware revolution, it wait until established commodity become sufficiently capable. Developer wrote PC software the way apps for embedded devices written nowadays, because there just no room for bloatness.
I'd consider a decade ago as the time when hardware being on par with software need, complex apps such as 3D become more accessible by PC. Now put that "PC" aside (unlike what MS said in their current campaign), what is a PC? Sorry if I had to call a phone a PC that's just rude. But tablets is the future is it? agreed in some way. The form factor revolution is at least remain in linear line except when the two different product blend in. Maybe PC will become the next mainframe, you know not dead but become niche. Say you won't play the next GTA on tablet anytime soon (using 3d glasses) or doing NLE, 3D modeling on it too. Still users probably could do more things on their tablet sooner (thanks to internet and Windows 8).
Following the hardware (CPU) revolution there is a period when it was no longer speed (MHz) race instead it was an energy-efficient race lately, multi-core race previously. I think the desktop market hasn't shrinking that much, it's just that the internet is so fascinating that it demand a simplistic way to be reached by more non-technical people, a hand-held device. For phone goes to tablet is a revolution but from PC into phone? Are you kidding me? I even call netbook as too restricted computer. When both worlds meet together my a** But hold on, it is still indeed a revolution from majority people point of view! jeez I just realized how minority I am. Soon (if MS succeed) people who used to *work* with computer but not a programmer/developer with also become a minority too ;-)
From a PC user to adopt tablet form-factor device I'd say:
- damn that little dinky screen rape my eyes
- the OSD keyboard is so unreal!
at least...
So what if OS for phone/tablet run on PC? I'd say "A crippled UI for an uncrippled sane device"
Remember that Metro is what an UI would be should developer face device limitation such size constrains, physical peripheral inaccessibility and non-technical minded person. OK the latter is where the money come from so there you go. But that's just interface, the core itself is still the real thing right?
Lets see, hey even OSX is still a desktop OS (although they did incorporate several iOS feature into OSX)! so only MS is gambling their long term future this time? Not really, they have Windows 7 in reserve and is in very good shape for prolonged desktop domination if Windows 8 failed but if they really can bridge and then attract the big mass of non-technical audience into the "new PC" world then big kudos for MS. I do believe that Windows (or whatever OS) should have same interface in all devices. I mean, you know the one we see in the movies, when people talk to PC, a non physical screen, a genius or at lest self-learning OS. Therefor unless PC play catch up with our intelligence and intuition, there will always a way/device which users can properly express/interrupt/assert to achieve what intended to be.
Back to Windows 8, it's not just UI, there is WinRT that chained to AppStore policy. How cool was that? how they seems try to disconnect Win32 API and how this affect open source world is to be revealed by the end of 2012. When MS had enough time for evaluating users input. Damn I must eat my own word for saying I will skip Vista and 7 altogether to jump in 8, yet this is what I will get? Time to visit Linux to see if they finally "become" XP.
Now I wonder what's the "actual" future after tablet era then? back to "PC"? Unlikely
So I ask my sister whom most used device is tablet. What she get most from it (Android). She said, the internet and games, see it's not a revolution at all. Keep in mind that she had never interested in games nor internet (via PC) before buying an Android. So the devices itself is a magnet! it did bridge more people in reachable way just the way I'm interested in DOS games and eventually learn how to "magically" draw pictures via keyboard (not even mouse exists). MS is doing milk money for what they have recognized as and redefine an approachable "PC" definition for the fresh market. For users all of these is just the matter of POV.
I'd consider a decade ago as the time when hardware being on par with software need, complex apps such as 3D become more accessible by PC. Now put that "PC" aside (unlike what MS said in their current campaign), what is a PC? Sorry if I had to call a phone a PC that's just rude. But tablets is the future is it? agreed in some way. The form factor revolution is at least remain in linear line except when the two different product blend in. Maybe PC will become the next mainframe, you know not dead but become niche. Say you won't play the next GTA on tablet anytime soon (using 3d glasses) or doing NLE, 3D modeling on it too. Still users probably could do more things on their tablet sooner (thanks to internet and Windows 8).
Following the hardware (CPU) revolution there is a period when it was no longer speed (MHz) race instead it was an energy-efficient race lately, multi-core race previously. I think the desktop market hasn't shrinking that much, it's just that the internet is so fascinating that it demand a simplistic way to be reached by more non-technical people, a hand-held device. For phone goes to tablet is a revolution but from PC into phone? Are you kidding me? I even call netbook as too restricted computer. When both worlds meet together my a** But hold on, it is still indeed a revolution from majority people point of view! jeez I just realized how minority I am. Soon (if MS succeed) people who used to *work* with computer but not a programmer/developer with also become a minority too ;-)
From a PC user to adopt tablet form-factor device I'd say:
- damn that little dinky screen rape my eyes
- the OSD keyboard is so unreal!
at least...
So what if OS for phone/tablet run on PC? I'd say "A crippled UI for an uncrippled sane device"
Remember that Metro is what an UI would be should developer face device limitation such size constrains, physical peripheral inaccessibility and non-technical minded person. OK the latter is where the money come from so there you go. But that's just interface, the core itself is still the real thing right?
Lets see, hey even OSX is still a desktop OS (although they did incorporate several iOS feature into OSX)! so only MS is gambling their long term future this time? Not really, they have Windows 7 in reserve and is in very good shape for prolonged desktop domination if Windows 8 failed but if they really can bridge and then attract the big mass of non-technical audience into the "new PC" world then big kudos for MS. I do believe that Windows (or whatever OS) should have same interface in all devices. I mean, you know the one we see in the movies, when people talk to PC, a non physical screen, a genius or at lest self-learning OS. Therefor unless PC play catch up with our intelligence and intuition, there will always a way/device which users can properly express/interrupt/assert to achieve what intended to be.
Back to Windows 8, it's not just UI, there is WinRT that chained to AppStore policy. How cool was that? how they seems try to disconnect Win32 API and how this affect open source world is to be revealed by the end of 2012. When MS had enough time for evaluating users input. Damn I must eat my own word for saying I will skip Vista and 7 altogether to jump in 8, yet this is what I will get? Time to visit Linux to see if they finally "become" XP.
Now I wonder what's the "actual" future after tablet era then? back to "PC"? Unlikely
So I ask my sister whom most used device is tablet. What she get most from it (Android). She said, the internet and games, see it's not a revolution at all. Keep in mind that she had never interested in games nor internet (via PC) before buying an Android. So the devices itself is a magnet! it did bridge more people in reachable way just the way I'm interested in DOS games and eventually learn how to "magically" draw pictures via keyboard (not even mouse exists). MS is doing milk money for what they have recognized as and redefine an approachable "PC" definition for the fresh market. For users all of these is just the matter of POV.
29 August 2012
no dropbox left
Phewww.. got another dropbox suspension (nothing left now) though I could just made another clones but...
Apologize for the goners, will try to back it up at googlecode someday.
Apologize for the goners, will try to back it up at googlecode someday.
25 August 2012
Three swiss-army image tool
In the context of mainstream usage, ImageMagick probably held the swiss-army status for automated/mass image processing and we could argue why not GraphicsMagick instead? ImageMagick has the most complete raster image format support (including good read but mediocre write support for vector image) and the most important is they have detailed yet easy to follow tutorial and manual to let users know why it's a swiss-army tool.
The other two have different niche but capable of doing many of mainstream usage: VIPS and the fairly new OpenImageIO (used by Blender). The first was best know as the specialist for processing large image (large = very very high resolution) without choking your RAM, the latter is currently better known as a library, thanks to its permissive BSD license but I see the potential for its interface to replace ImageMagick because OIIO also a bit faster in conversion task. VIPS has extensive mathematical operation which make it also scientific niche, OIIO in other hand have distinguished texturing features which make it a bit 3D graphics niche, at the moment OIIO CLI tool was rather simplistic but I'm looking forward for big evolution in this area. Both has official python binding support which should be more interesting for advanced users than what their CLI tool offer additionally VIPS has GUI interface called nip2 which IMO may hinder its true ace.
Even so I found none of them have support for other specific task such as RAW image processing or decent vector image conversion which I resolve by using several utilities. In the end I guess there is no such of a real swiss army image tool yet... not at FFmpeg level at least or imaging was just too broad to cover entirely.
What I wish for these tool is a kind of loadable and user-friendly inline/offline FX subsystem ala GIMP-fu/PyGIMP where artists can share/reuse/enhance their template.
Binaries (mingw build):
OpenImageIO 1.0.8: oiiotool.exe (1.7 MB) maketx.exe (1.7MB) since I don't build iv here is a small exrdisplay.exe (300 KB)
VIPS 7.30: vips.exe (2.1 MB)
ImageMagick 6.7.8-6: convert.exe (2.1 MB)
Features enabled as much as possible with exception some ImageMagick's vector support which I found not that good. This builds can be considered as update for my previous ImageMagick build.
The other two have different niche but capable of doing many of mainstream usage: VIPS and the fairly new OpenImageIO (used by Blender). The first was best know as the specialist for processing large image (large = very very high resolution) without choking your RAM, the latter is currently better known as a library, thanks to its permissive BSD license but I see the potential for its interface to replace ImageMagick because OIIO also a bit faster in conversion task. VIPS has extensive mathematical operation which make it also scientific niche, OIIO in other hand have distinguished texturing features which make it a bit 3D graphics niche, at the moment OIIO CLI tool was rather simplistic but I'm looking forward for big evolution in this area. Both has official python binding support which should be more interesting for advanced users than what their CLI tool offer additionally VIPS has GUI interface called nip2 which IMO may hinder its true ace.
Even so I found none of them have support for other specific task such as RAW image processing or decent vector image conversion which I resolve by using several utilities. In the end I guess there is no such of a real swiss army image tool yet... not at FFmpeg level at least or imaging was just too broad to cover entirely.
What I wish for these tool is a kind of loadable and user-friendly inline/offline FX subsystem ala GIMP-fu/PyGIMP where artists can share/reuse/enhance their template.
Binaries (mingw build):
OpenImageIO 1.0.8: oiiotool.exe (1.7 MB) maketx.exe (1.7MB) since I don't build iv here is a small exrdisplay.exe (300 KB)
VIPS 7.30: vips.exe (2.1 MB)
ImageMagick 6.7.8-6: convert.exe (2.1 MB)
Features enabled as much as possible with exception some ImageMagick's vector support which I found not that good. This builds can be considered as update for my previous ImageMagick build.
Categories:
custom build,
graphics
Static library attempt for GTK
In my previous post when I had to make rsvg-view a static build, a complete set of static GTK libraries needed. GTK known to refuse being build as static library on Windows. Obviously there is lot good reason (be it Windows or not), GTK is a library with lots of addons (theoretically a GLib based one) so a modular/extensible approach chosen, then if I recall internationalization won't work unless in dll mode, then GTK is known using lot of settings files and modules scattered in etc-lib-share folder, then in version 3 there is DBus stuff which all of these make it almost a deal breaker for static build mode. Although some modules (found in pango, gdk-pixbuf, gtk) can be statically linked to main library, others are not (need modification) such as wimp theme engine.
For this minimalistic use case (rsvg-view) where basically a window with just 2 zoom buttons, a static build would be nice eh?
Oh well let's just get it on...
Firstly this is GTK-3 that I tried which should prompt a serious warning message about stability/maturity. Historically in version 2.x IMO there is only 3 stable, good or sane version for Windows: the last 2.12.x, 2.16.x and 2.24.x. I did try make static GTK-2 (2.24.10) however almost all but three tests mysteriously crashed during startup, here is one of that survived: testtreecolumns (unfortunately not LTO optimized so it's a bit too big)
The main thing that prevented static linking is multiple definition of dllmain. In case you're not aware, GLib starting with 2.30 support static build but broken in 2.32 since glib-init introduced but is trivial to fix. So based on how this static glib work we could also do the same to gdk-pixbuf, pango and lastly to gtk itself:
- override the Windows guard in configure script which prevent static build. hint: "DLL on Windows"
- make sure all possible and desired modules being "bundled" via configure
- initialize hmodule instances as null instead of uninitialized
- prevent dllmain from being compiled by adding #ifndef DLL_EXPORT
- assign declspec instances as nothing when #ifndef DLL_EXPORT (or create your own guard) instead of dllimport/dllexport (seems GTK-3 somehow omit this already)
note: DLL_EXPORT and PIC are common flags used by libtool during compilation, they are off when configured with: --enable-static --disable-shared
This way, path finding and internationalization still works as expected. Here is example of gtk3-demo in static binary: gtk3-demo.7z
It would great to bundling it in my MinGW distro... kinda rare to see C-based GUI library, not that C is good for GUI
For this minimalistic use case (rsvg-view) where basically a window with just 2 zoom buttons, a static build would be nice eh?
Oh well let's just get it on...
Firstly this is GTK-3 that I tried which should prompt a serious warning message about stability/maturity. Historically in version 2.x IMO there is only 3 stable, good or sane version for Windows: the last 2.12.x, 2.16.x and 2.24.x. I did try make static GTK-2 (2.24.10) however almost all but three tests mysteriously crashed during startup, here is one of that survived: testtreecolumns (unfortunately not LTO optimized so it's a bit too big)
The main thing that prevented static linking is multiple definition of dllmain. In case you're not aware, GLib starting with 2.30 support static build but broken in 2.32 since glib-init introduced but is trivial to fix. So based on how this static glib work we could also do the same to gdk-pixbuf, pango and lastly to gtk itself:
- override the Windows guard in configure script which prevent static build. hint: "DLL on Windows"
- make sure all possible and desired modules being "bundled" via configure
- initialize hmodule instances as null instead of uninitialized
- prevent dllmain from being compiled by adding #ifndef DLL_EXPORT
- assign declspec instances as nothing when #ifndef DLL_EXPORT (or create your own guard) instead of dllimport/dllexport (seems GTK-3 somehow omit this already)
note: DLL_EXPORT and PIC are common flags used by libtool during compilation, they are off when configured with: --enable-static --disable-shared
This way, path finding and internationalization still works as expected. Here is example of gtk3-demo in static binary: gtk3-demo.7z
It would great to bundling it in my MinGW distro... kinda rare to see C-based GUI library, not that C is good for GUI
SVG viewer for Windows
I'm looking for a simple svg viewer for which can be invoked from command line and found some candidates:
- SVG Viewer from QT 4.8.2's example (3 MB)
- SVG test from AGG 2.5's demo (178 KB)
- RSVG View from librsvg (2 MB, explicitly need file input, otherwise will silently quit)
It should be static(standalone) as usual, preferably small and must be fast. Both from RSVG and QT are quite capable and compliant (by far compared to AGG). There is a performance issue with QT though when SVG is fairly complex, where panning and zooming become very slow despite snappy once switched to OpenGL mode. RSVG didn't have this issue and load faster but since it use static build (an unsupported mode in Windows) of GTK-3.4.4 which still not stable for Windows, is unfortunately quite a crasher, also didn't resize its window automatically.
There is one more (better) candidate from Batik's Squiggle but probably too big when compiled and too GUI-ish for a simple viewer. Finally every "sane" modern browser also SVG viewer capable :-)
- SVG Viewer from QT 4.8.2's example (3 MB)
- SVG test from AGG 2.5's demo (178 KB)
- RSVG View from librsvg (2 MB, explicitly need file input, otherwise will silently quit)
It should be static(standalone) as usual, preferably small and must be fast. Both from RSVG and QT are quite capable and compliant (by far compared to AGG). There is a performance issue with QT though when SVG is fairly complex, where panning and zooming become very slow despite snappy once switched to OpenGL mode. RSVG didn't have this issue and load faster but since it use static build (an unsupported mode in Windows) of GTK-3.4.4 which still not stable for Windows
There is one more (better) candidate from Batik's Squiggle but probably too big when compiled and too GUI-ish for a simple viewer. Finally every "sane" modern browser also SVG viewer capable :-)
Categories:
custom build,
graphics,
GTK
11 August 2012
Holiday
Been a while since the last post, I'm looking forward for upcoming holiday :). Hopefully there would be a lot of free time (if not spent too much for vacation) for lot of new material/updates to this blog. At the moment I've (more or less) managed to reach my main goal for tuma mingw, this could mean much less attention after version 0.6b and more focus to others such as mypaint, gtk3 and graphics stuff or maybe some delayed chm book releases.
07 July 2012
How to clean invalid clipboard data
Sometime for unknown reason suddenly I'm not able to do paste operation. It happening anywhere, in explorer (file content) or in editor (image/text content). It seems clipboard contained invalid data or sort of. Now I have to find a way to clear this data, naturally by copy (overwrite) new data into, but it doesn't work! Copy and cut operation also failed.
If I recall Windows have a clipboard viewer program which filename was abbreviated and I can't find that one either (probably available in Windows 98 only). Eventually found "clip.exe" which control clipboard content via command line.
Then invoke this command (from CMD):
Yay clipboard content cleaned up :). So while GUI applications failed to cure it, clip.exe come to save... weird eh?
If I recall Windows have a clipboard viewer program which filename was abbreviated and I can't find that one either (probably available in Windows 98 only). Eventually found "clip.exe" which control clipboard content via command line.
Then invoke this command (from CMD):
echo off|clipYay clipboard content cleaned up :). So while GUI applications failed to cure it, clip.exe come to save... weird eh?
10 June 2012
RSVG-Convert SVG image conversion tool
LibRSVG is probably one of well known svg library (other is Batik), the library use libcairo for pdf,ps and svg backend. This is a convenient static build of RSVG-Convert (part of librsvg 2.34.2) compiled with MinGW. I made this since originally the executable would dragged many dependencies.
The command line also used by ImageMagick through delegates although being deprecated (the rsvg wrapper), currently rsvg-convert.exe support png, ps, pdf and xml output but not jpg.
use "rsvg-convert --help" to see its command options, notice that the default output is stdout so be sure to specify file output.
Download:
rsvg-convert-2.40.20.7z (30-12-2017) with fontconfig support ( use with environment variable PANGOCAIRO_BACKEND=fc )
note: embedded images now displayed (broken in previous builds), now support jpg, gif, png, svg, tiff, wmf, emf, ico, images mime type aliases also added.
The command line also used by ImageMagick through delegates although being deprecated (the rsvg wrapper), currently rsvg-convert.exe support png, ps, pdf and xml output but not jpg.
use "rsvg-convert --help" to see its command options, notice that the default output is stdout so be sure to specify file output.
Download:
rsvg-convert-2.40.20.7z (30-12-2017) with fontconfig support ( use with environment variable PANGOCAIRO_BACKEND=fc )
note: embedded images now displayed (broken in previous builds), now support jpg, gif, png, svg, tiff, wmf, emf, ico, images mime type aliases also added.
Categories:
custom build,
graphics
18 May 2012
Will be missed! Casey Stoner the fastest motoracer of modern time
If you ever wondering why politician scumbags keep getting votes, you know how foolish the world is. When honest people are to be denied and the tricksters win. This is totally off-topic post, but damn I've been watching GP since I was 6 and still stunned until now. Even the only game that I still occasionally play is MotoGP.
Casey Stoner, how should I put it: to be the victim of ignorance, stupidity and fanaticism because he always ride the bike 110% like no others. Yes, he riding skill is on a different level, and no it is not just me who saying this, there are several MotoGP riders who agree with that.
An honest personality always have ton of foes including in MotoGP, just because you tell truth doesn't meant people/media will trust/agree with you. In most case fanaticism prevent delusional person to be realistic and logical in their judgment. This is where Stoner is special (at least to me), he is very underrated by the crowd (even by top managements in the show) yet he still winning when most crowd keep (by all means) to ridicule him. Even Stoner paid lower than other champions.
Personally I'd briefly put some blame at the half brained #46 yellow brigades whom responsible for most of incorrect mockery. Yes, they are half brained because the logical part has been stolen by extreme fanaticism. Casey is no way a celebrity minded person with full of tricks, this partly explained why he never gained huge supporters. Hell, even local MotoGP commentator here is inclined not to give the credit appropriately.
Well, whatever... I actually think that if he keep winning more championships people will eventually gain some sanity. But that retirement is your decision mate, after all you're now a family men too. Best wish for your family and your future (where you'll hopefully gained proper respect)! You'll be missed more than you'll ever think :-)
Very sad day, Casey is about the same age as me, guess in 2013 I will support Lorenzo then (the factually next best).
EDIT:
Forgot to mention the interview: http://motomatters.com/interview/2012/05/17/casey_stoner_explains_his_decision_to_re.html
The interview has moral value of course :-) as usual honesty is rarity
Casey Stoner, how should I put it: to be the victim of ignorance, stupidity and fanaticism because he always ride the bike 110% like no others. Yes, he riding skill is on a different level, and no it is not just me who saying this, there are several MotoGP riders who agree with that.
An honest personality always have ton of foes including in MotoGP, just because you tell truth doesn't meant people/media will trust/agree with you. In most case fanaticism prevent delusional person to be realistic and logical in their judgment. This is where Stoner is special (at least to me), he is very underrated by the crowd (even by top managements in the show) yet he still winning when most crowd keep (by all means) to ridicule him. Even Stoner paid lower than other champions.
Personally I'd briefly put some blame at the half brained #46 yellow brigades whom responsible for most of incorrect mockery. Yes, they are half brained because the logical part has been stolen by extreme fanaticism. Casey is no way a celebrity minded person with full of tricks, this partly explained why he never gained huge supporters. Hell, even local MotoGP commentator here is inclined not to give the credit appropriately.
Well, whatever... I actually think that if he keep winning more championships people will eventually gain some sanity. But that retirement is your decision mate, after all you're now a family men too. Best wish for your family and your future (where you'll hopefully gained proper respect)! You'll be missed more than you'll ever think :-)
Very sad day, Casey is about the same age as me, guess in 2013 I will support Lorenzo then (the factually next best).
EDIT:
Forgot to mention the interview: http://motomatters.com/interview/2012/05/17/casey_stoner_explains_his_decision_to_re.html
The interview has moral value of course :-) as usual honesty is rarity
Categories:
personal
Subscribe to:
Posts (Atom)