After months of hemming and hawing about what to do with the GDI+ library, I've finally settled on something that should make REALbasic users very happy. I'm proud to announce that Advanced Graphics for Windows is now available for download. What's better than that, you say? Why, the fact that it's free, of course!
Months of labor and toil, long nights, and dirty looks from Lis have brought you over 40 project items spanning the entire GDI+ set of functionality, all packaged up in a great, object-oriented set of REALbasic classes. So the same power and utility C++ and .NET programmers enjoy can now be accessed from your own projects too.
For those of you with a more Mac-centric background, GDI+ is to GDI (which is what REALbasic's Graphics object is based on) like CoreGraphics is to QuickDraw. It's the next-gen version of OS graphics functionality which supports things like transparency, anti-aliasing, and hardware accelerated rendering. It's available on almost all versions of Windows via a redistributable, but has come native on Windows for the last five years (Windows XP and up).
Enjoy!
(PS -- some of you paid me in advance for a copy of this functionality when I was considering selling it instead of giving it away for free. Contact me via email so we can discuss returning your funds to you.)
Now if only I had a use. Networking apps don't use too many graphics. I'll check it out latter, though! And as always, I'm sure it is awesome.
So, when can we expect to see this wonderful functionality become part of RB? Hmmmmmmm? :)
Anthony. He just gave away all that for free when he could have just dropped it alltogether. I don't know if you realize what it takes to give hours and hours of work away like that. I believe that it will eventually make its way into RB but why hammer at Aaron? Besides, there are more important fish to fry than GDI+ concerning the RB runtime :-)
Chris, I was merely pointing out that I think such a valuable compilation should be within the RB Framework. I'm not 'Hammering' away at anyone or anything. Maybe I'm alone in feeling that it should be an integral of RB drawing for Win32, if so, then I humbly apologize for mentioning it and I will now set my clothes ablaze and run in circles until the life-force exits my body.
Sure there are more important fish to fry...but IMHO, drawing on Win32 looks terrible, and it's a real pain in the arse to get some effects to come out of that woodwork. What we've got here is an advancement toward making our apps really look great, custom controls would draw more quickly, etc. But I digress, and will not withdraw back to my code-mongering ways(by the way, I give away stuff all the time...right now I'm giving away a free license of one of my products, as well as some of my source code that is ALWAYS available on my blog).
@Anthony -- I agree that it should be part of RB some day. However, it's only supported on XP and above without help, so until REALbasic supports XP and up only, or something a lot closer to that, then it's a whole TON of work with very little gains (aside from those on XP and up, obviously). Having to weak link every single API is a very hard problem (trust me, I know) and not one I'd like to do again. That's not to say it won't happen -- it needs to happen someday. But in the mean time, there's a solution.
Aaron, I understand the obstacles, but couldn't those of us who wish to take advantage of it opt for our Win32 users to install the redistributable, is we wish to take advantage of the GDI+ classes on a platform that doesn't support it? Much the way installers for applications built on .NET have to look for, and optionally install, the .NET runtimes. It's easy to accomplish with most all installation creation software, so IF it did make it in sooner, I don't see much of a problem for most devs. Much like "If you want to use the print functionality, you need to have a printer", would be the "If you want to use the advanced GDI+ drawing, you need to have/install support for it."
@Anthony -- nope, because it would still be an unacceptable alternative. If GDI+ isn't installed, and we didn't weak link, your app wouldn't launch. In order to do what you're asking, we'd have to weak link every GDI+ API.
We already do so for minor functionality where it makes sense (such as image loading and saving). But for full-fledged Graphics support, we'd have to weak link hundreds of functions, which is very expensive and much more error-prone.
Or you could do "test-once" method. Test for the functionality on-load...( I'd of course leave the technicalities someone with more experience in the stuff ) and if it's not there, we politely close the application.
Just a thought.
I think you're misunderstanding -- there are two choices. Choice #1 is to dynamically load each and every GDI+ API we want to use, and use the flat GDI functions. Choice #2 is to just use GDI+, using the nice OO classes, etc.
With choice #1, if GDI+ isn't available, we can fall back on GDI and just do the old way. However, this also requires us to use the flat APIs and spend a ton of man-hours trying to maintain the code. With choice #2, anyone who has GDI+ installed will see all the new pretty stuff. Anyone who does not have GDI+ installed will have their app crash on launch. Even if they don't use any Graphics calls whatsoever.
This is an OS loader issue, not some lack of programming skill one. We either dynamically load the APIs or we crash on old systems. And dynamically loading the APIs is not impossible -- just costly.
Sorry for my ignorance. Just thought it might be possible, and acceptable, that way.
Nice!
Friendly reminder to officially title your readme.txt license portion, or license the code under a well known OSI license.
@DeanG -- while I've not uploaded a new version of the zip file, how does my Legal Mumbo Jumbo link look to you (you can find it in the links section of this page, and the legal link at the footer on my main site)?
I plan to include a link to that page from my software projects as I update them.
@Aaron - Looks like the MIT license.
http://www.opensource.org/licenses/mit-license.php
Which leaves the "do what you want" with it explicit and like most other OSI licenses gets annoying in exactly what your supposed to redistribute with your application per notice of the embedded codes (c) or license text.
I found a decent overview here.
http://www.flexwiki.com/default.aspx/FlexWiki/LicenseResearch.html
Correct, it is the MIT license. I picked that one because it's very open-ended in terms of what you can do with it (as a user). Basically, do whatever you want with it, so long as you display the license for whatever works you've used of mine (heck, you don't even have to attribute to me). So if you use Advanced Graphics for Windows, you have to have (in your license area) something that includes the license file for it. If you also use the WFS, the same license covers both works (so you don't need to duplicate it).