Nick Hodges

What happened to the TPNGImage project?

13 Aug

A while back, some folks noticed that the TPNGImage project was taken down from SourceForge and they wondered what happened. 

Well, I’ll tell you what happened — we here at CodeGear/Embarcadero acquired the code and it is now officially part of the VCL.  As a result, the open source project that was created and run by Gustavo Daud no longer exists.  Gustavo held the copyright on the code, and he released it as open source under a proprietary license.  We purchased the code from Gustavo, and as a result, the project on SourceForge no longer exists (The license under which  Gustavo orginally released the code didn’t require that it remain available under that license).  We are very grateful to Gustavo for this — as it really enhances the capabilities of the VCL.

First and probably most obviously, is that TImage now supports the PNG format. PNG is a lossless compression format that was designed to replace the GIF format.  You can assign a PNG image to any TImage and display it on your form.  But we took it farther than that.  David Lock of our R&D team did some really nice work on TImageList, and as a result, it supports holding lists of images of any type that TImage itself supports  That means that you get PNG support (and BMP, JPG, and GIF support as well) in your TImageLists, giving you a lot more flexibility in your user interfaces and in the images you can choose for buttons, tool bars, menus, etc.

Delphi 2009 includes full source code for the TPNGImage and of course for its integration into the VCL proper. 

(Added) If you are currently using TPNGImage under the license from Gustavo, you can continue to do so.  But please note that you aren’t authorized to post that code anywhere. 

And if you didn’t know, there is also a nice set of PNG images for your use in:

C:\Program Files\Common Files\CodeGear Shared\Images\GlyFX\Icons\PNG

58 Responses to “What happened to the TPNGImage project?”

  1. 1
    David Heffernan Says:

    That sounds great Nick. What about those of us who don’t have Delphi 2009 yet (i.e. everyone) and are still wanting to release code?

  2. 2
    Nick Hodges Says:

    David –

    Good question — I’ve updated the article to reflect the answer.

    Nick

  3. 3
    Craig Peterson Says:

    We’re using a copy of TPNGImage from SourceForge and have a PNG that it faults on. We aren’t on the Tiberon field test. Can I send it somewhere for you to test, or should I just hang on to it and report it in QC if the issue still exists in the official release?

  4. 4
    Stéphane Wierzbicki Says:

    Ye

  5. 5
    Stéphane Wierzbicki Says:

    Yeah ! That’s really a great news !

  6. 6
    Nick Hodges Says:

    Craig –

    You can post a bug to QC with the Image attached.

    Nick

  7. 7
    mouser Says:

    very nice — these are the kind of core functionality improvements that i think are great to focus on.

  8. 8
    me Says:

    http://www.codeplex.com/PNGImage

    Quote:
    This is a spin off from the original TPNGImage component from Gustavo Daud.

  9. 9
    me Says:

    http://www.codeplex.com/PNGImage

    Quote: "This is a spin off from the original TPNGImage component from Gustavo Daud"

  10. 10
    Thierry Says:

    good,

    That is exactly evolutions like this i’am waiting for. (with language evolution)
    TImageList evolutions are great too and yes, offers more flexibility.

  11. 11
    Daniel Lehmann Says:

    Really REALLY good to hear this. Is there full support for 8 bit transparency as well? E.g. can we paint "transparent" pixels on a Canvas and can we use 8bit transparent images in menus?

  12. 12
    Michael Says:

    Nick,

    this is really great news! PNG support was long overdue in Delphi. Currently I’m using the PNG library PngComponents coded by Martijn Saly which adds also great value to Delphi.

    Thanks Nick for notifying us!

  13. 13
    Craig Peterson Says:

    QC#65643

  14. 14
    Clinton Johnson Says:

    Because of TImageList’s insistance that every image it contains, I suspect that it will continue to only hold tiny menu images where compression size doesn’t really matter. Compression gains are usually balanced by housekeeping data overhead in tiny images. Fortunately small images also decompress quickly, so that time hit at run time should be minor.

    Now if it could store different sized images, that would really be something.

  15. 15
    El Salvador Says:

    Finally, I can use TPNGImage in a GPL project. :)

    P.S.:
    "As a result, the open source project that was created and run by Gustavo Daud no longer exists."
    TPNGImage was closed source project (closed source=proprietary license=proprietary software), incompatible with GPL license.

  16. 16
    CR Says:

    Craig Peterson - basically, the line

    ImageData[i] := pRGBQuad(@ImageSource[i2 * 3])^

    needs to be replaced with

    pRGBTriple(@ImageData[i])^ := pRGBTriple(@ImageSource[i2 * 3])^

    (I’ve added this as a comment to your QC report too)

  17. 17
    Jan Derk Says:

    Your license information is incorrect. The TPNGImage license literately says that distribution is allowed.

    This component may be distributed freely over the internet only when containing the exact same files from the original packaging.

  18. 18
    Jan Derk Says:

    That last paragraph is a quote from the license. Your blog software deleted the quote tags I put around it.

  19. 19
    Erik Says:

    Yay! This is great news! As mentioned before, long overdue. :)

  20. 20
    Erik Says:

    Yay! This is great news! As mentioned before, long overdue. :)

  21. 21
    Nick Hodges Says:

    Craig –

    QC#65643 is fixed.

    Nick

  22. 22
    Kyle Cordes Says:

    I am happy to see that Delphi will support PNG out-of-the-box.

    I am less happy to see that it will take until late 2008 (!) for that to happen. PNG has been in wide use since the late 1990s.

  23. 23
    Clinton Johnson Says:

    @El -> If I understand Nick, I believe you’ll find that TPngImage is now covered by CodeGear’s propritary license, which makes it worse not better for GPL.

    @Jan -> I have v 1.4 floating about on my machine, and reading its license, I can’t find any grounds for cancelling that license unless you violate the terms, so I suspect you are right - that said, I’m no lawyer, and personally don’t feel like paying one to find out for sure/the hard way. That alone will probably keep most people from trying.

  24. 24
    Nick Hodges Says:

    Clinton –

    Just to be clear — if you previously had TPNGImage under the license that Gustavo gave you, you can use it as such.

    As of our purchasing of the code, no one can enter into the old license anymore.

    Nick

  25. 25
    fx Says:

    This is great!

    By the way, is there support for 32-bit XP-style icons in Tiburon?

  26. 26
    Jan Derk Says:

    Nick,

    It is not a big issue, but you can’t unilaterally nullify an old license. It specifically allows redistribution as long you don’t sell it or change the code.

    Think of it in Interbase terms. You guys released Interbase for a short period under a open source license, which resulted in the Firebird project. You can not revert the license in a later stage. TNT Controls tried to revert their license too and failed.

    It is a good thing too if you ask me, because if you were right every Delphi project using TPNGImage would be affected, as no one would be allowed to give the PNG part to even a colleague.

    To let everyone else decide for themselves here is the full text of the old TPNGImage license:

    ===================
    PNG Delphi
    Gustavo Daud

    Component license

    The previous versions from this component were unclear about the license to use this component. Here it is:

    1. This component may be distributed freely over the internet only when containing the exact same files from the original packaging.

    2. Modified files may not be distributed. If you want to contribute with PNG Delphi, send the enhancements to the author and if he implements your changes, you will be given the proper credit.

    3. The component may be used in commercial projects but may NEVER be sold as source code without author agreement.

    4. Commercial visual graphics libraries are not allowed to use this component WITHOUT AUTHOR PRIOR AGREEMENT.

    5. Credit for the author is required somewhere in the product documentation/or about box/etc.

    6. Source code may be changed if it’s not redistributed.

    If are about to use the component in a major project which is going to be distributed over the internet, I’d love to know, so please send me an email telling me about.
    =================

  27. 27
    Luigi D. Sandon Says:

    @Clinton Johnson: because GPL explicitly allows to use standard libraries that come with the compiler, even if they are not open source (or noone would be able to use VS for open source development, for example), as long as TPNGImage is a standard Delphi library it can be used to develop GPL applications.

  28. 28
    Clinton Johnson Says:

    Luigi -> As delphi is not major component of the OS, nor is it commonly distributed, I think you might find yourself an undesirable gray area of arguing the wording vs the intent. I would urge you to consider one of the more sane open source licensing options out there. One that isn’t quite such a poison pill that claims to purport free rights while doing nothing but limiting what you really can do. (What the copy left giveth, the gnu or death takes away….)

    However, that leads to a deep dark murky pit of opinion wars. If you disagree, let’s leave it at that. If you don’t, then the OSI is a great starting point.

    Nick -> Since the old source can still be distributed, and anyone can claim they were grandfathered in, it seems pretty unenforcable. I’m not sure why CodeGear went this way. For public opinion reasons alone, I would have thought leaving it as an open source project would have been the wisest course.

    Normally I would applaude the concept of bringing something inhouse to ensure its long life, I am not sure I agree with my own long held view in that area. Maybe its a case of damned if you do, damned if you don’t.

  29. 29
    Anders E. Andersen Says:

    What I really want to know is.. What happened to the IBExpress docs in D2007. Willfix?/Wontfix?

  30. 30
    Steve Says:

    Dear Nick,

    I’m going to be a little "off-topic" here but I don’t know how to contact you directly.

    There is another component that is very famous among Delphi developers:
    The Virtual Treeview component (TVirtualStringTree) by Mike Lischke (www.soft-gems.net)

    I’ve read that this component is even being used in the Delphi 2006 IDE. (dunno about 2007 and 2009 though)

    Do you have any plans for acquiring this component? It’s a very powerful one indeed, having much better capabilities than the standard TListView. (I haven’t seen a commercial alternative with such speed and features!) Unfortunately, the developer has abondoned the project!

    My other question is:

    Has anyone tested whether Virtual Treeview compiles under Delphi2009? (due to String/AnsiString changes) Just asking in case some of the team members or the Delphi IDE is using the component…

    Thanks for the info!
    -Steve

  31. 31
    Steve Says:

    Dear Nick,

    I’m going to be a little "off-topic" here but I don’t know how to contact you directly.

    There is another component that is very famous among Delphi developers:
    The Virtual Treeview component (TVirtualStringTree) by Mike Lischke (www.soft-gems.net)

    I’ve read that this component is even being used in the Delphi 2006 IDE. (dunno about 2007 and 2009 though)

    Do you have any plans for acquiring this component? It’s a very powerful one indeed, having much better capabilities than the standard TListView. (I haven’t seen a commercial alternative with such speed and features!) Unfortunately, the developer has abondoned the project!

    My other question is:

    Has anyone tested whether Virtual Treeview compiles under Delphi2009? (due to String/AnsiString changes) Just asking in case some of the team members or the Delphi IDE is using the component…

    Thanks for the info!
    -Steve
    ____________________

    PS: Got an internal server error for the first time, sorry if my comment appears two times!

  32. 32
    Luigi D. Sandon Says:

    Clinton, I am not advocating the GPL - I just pointed out that whoever want to develop GPL applications with Delphi can now use TPNGImage while before he could find it difficult.

  33. 33
    Mike R. Says:

    Hi!

    Will zlib also be updated with the next release? TPNGImage relies on these libs and the one Delphi2007 has are quite old. There are some fixes AFAIK including a memory leak and an AV.

  34. 34
    Nick Hodges Says:

    Jan–

    Once again, let me say — again — that we aren’t nullifying the license.

    Nick

  35. 35
    Nick Hodges Says:

    Steve –

    What components we plan or don’t plan to acquire isn’t really something I can talk about. And you shouldn’t read anything into that statement about Virtual TreeView.

    I believe that Virtual TreeView is already Ready for Tiburon.

    Nick

  36. 36
    John H. Says:

    Nice!

    Just another reason for buying Tiburon.

    OFF TOPIC:
    Will there be a search/filtering feature in code explorer in D2009?

    As a library coder it is so difficult to manage without this feature in Delphi.

  37. 37
    Sergey Says:

    > 6. Source code may be changed if it’s not redistributed.

    Not sources… Patches to sources ?

  38. 38
    Fethi Says:

    But why the PNG format is supported under the Delphi .NET TImage component .

    PNG Format is a very important image format, I’m happy that we’ll find a solution in the new delphi VCL.

  39. 39
    Nick Hodges Says:

    Fethi –

    PNG is supported on the .Net side because .Net supports PNG.

    Nick

  40. 40
    Rick Carter Says:

    Steve -

    If you ever do need to contact Nick Hodges
    directly, he’s often stated publicly that
    his email is:
    Nick dot Hodges at CodeGear dot com

    Heck, do a little Googling, and you should
    even be able to find his office phone
    number.

  41. 41
    JasonDiplomat Says:

    Is there going to be a Delphi port of the *very useful* PNGNQ utility?

  42. 42
    Sergio Says:

    Another good project that falls in wrong hand. Now, no one will fix the possible bugs and add new improvements to PngImage.
    I really doubt that now, someone will improve or add for example, Animated Png support (something that in open-sources communities, will comes eventually).
    It’s too bad to see the way that Delphi is going, closing all sources, killing the bug-fixing on open source communities.
    Rest-In-Peace Delphi…

  43. 43
    Shannon Says:

    I don’t suppose there is any chance TPngImage will be made available for older delphi versions. It’s a bit frustrating as a 2007 user to have to go searching for PNG support to begin with but then find that the said component is now no longer available.

    I don’t think CodeGear/Embarcadero should support older versions of Delphi, but actively denying access to existing and working code seems a bit … wrong. More so because PNG support is long overdue anyway (IMO).

    This move improves 2009 but weakens all older versions of Delphi at the same time.

  44. 44
    Sebastian Says:

    The license included with the version I have (1.56, July 2006) says ‘This component may be distributed freely over the internet only when containing the exact same files from the original packaging.’
    You say:
    ‘If you are currently using TPNGImage under the license from Gustavo, you can continue to do so. But please note that you aren’t authorized to post that code anywhere.’
    ‘Once again, let me say — again — that we aren’t nullifying the license.’

    Well the license allows me to redistribute the component, you say we are not authorized to post that code anywhere. So how does this match up?

  45. 45
    Joao Kho Says:

    Great to hear that Delphi officially support PNG using TPNGImage.

    Hope codegear could do optimize on color reduction on PNG like TGifImage that optimize to produce 256 color image.

  46. 46
    Frank Schmitt Says:

    Dear Nick,

    honestly, I’m quite disappointed with CodeGear/Embarcadero - not for buying TPNGImage and integrating it into Delphi2009, which IMHO is a good thing; but for not only letting the Open source community and users of older Delphi versions down, but for actively bullying and threatening them with the DMCA (see http://www.codeplex.com/PNGImage for an example)

    @Shannon you can download an old version from http://web.archive.org/web/20040210203804/http://pngdelphi.sourceforge.net/pngimage143.zip - the latest publicly available was 1.564, but I couldn’t find a link for this one, sorry.

  47. 47
    Angry Coder Says:

    Ummm, great. So what about those of us who do not have the original TPNGImage and do not have Delphi 2009 and do not have the ability to get Delphi 2009 in our workplace? You have completely left us without an option because you want to monetize this formerly free functionality. I cannot agree with what you’ve done. No, you weren’t legally required to keep the code available - but why didn’t you? Money. Our office is currently on BDS 2006, so obviously we are in desperate need of a different IDE. Strangely, approval has not come to upgrade to a new version of Delphi. I wonder why? We are probably going .Net after 12 years as a Delphi shop, all because first Borland and now Embarcadero acted in the interests of their wallets rather than their customers. Enough.

  48. 48
    Another Angry Coder Says:

    Is really is a great way to lose support for Delphi. RIP Delphi. It’s been good but it’s time to go.

  49. 49
    A Couple of Lies on Licensing Law Says:

    LIE 1) ‘But please note that you aren’t authorized to post that code anywhere.’

    The license clearly says: ‘This component may be distributed freely over the internet only when containing the exact same files from the original packaging.’

    That means, you can post that code, but only in its entirety, and only without any modification. Embarcadero was able to take the sourcforge and codeplex sites down, because they were not doing that.

    Yes, you can make the ZIPped file available for download, you can un- and repackage the files.

    LIE 2) As of our purchasing of the code, no one can enter into the old license anymore.

    There is no ‘but only if I decide otherwise at a later point in time’ here. If you have the code, and the accompanying license, that license does apply to that code. Period. There is no way to "undo" that license. Embarcadero’s acquisition has nothing to do with it. You can enter above mentioned license after they acquired the code, because the right to do so *comes with that code*. The point in time when you’re accepting the original license does not have any effect.

    Please rectify initial post.

    If you don’t, either Embarcadero does not understand how licensing works (which is a silly assumption) or they are intentionally misleading their customers (which would be even worse).

  50. 50
    Vladimir Says:

    OMG, CodeGear. I am so pissed off at what you did.

    I used this code a LOT. This component and the way it integrated with the Graphics VCL classes was the only reason I still used Delphi (I’ve long switched to other languages for other tasks). I even submitted a patch for it once, my name is in the changelog. But as if it wan’t enough to kill off any further open-source development of this component, you also killed off the entire project! What kind of hypocrisy is this - you claim that we can still use old versions of our component, yet everywhere on the Internet (SourceForge, CodePlex) I see that you’ve forced people to remove those old versions - because you want people to BUY it in new versions of your ever-degrading software!

    Ugh. I curse the day I decided Delphi would be a good programming language to learn for a beginner…

  51. 51
    one more Angry Coder Says:

    I’m completely agree with Vladimir.

    Crying shame…

  52. 52
    wijaya Says:

    yes, i couldn’t find the code anymore

  53. 53
    David Heffernan Says:

    @wijaya: I’ve got the code and could certainly e-mail it to you

  54. 54
    wijaya Says:

    thanks David Heffernan,
    can you email it to c0kr0wijaya@gmail.com

  55. 55
    Ansgar Says:

    PNG support works great in HeidiSQL, where it used the PNGComponents in earlier days. Both display nearly exactly the same, apart from one difference: When running a compiled .exe on Linux/Wine, the icons have a black background, where they had white with PNGComponents. Well, the background should be transparent, don’t know what’s easier to fix, but black is 3 times uglier than white I guess :) Any ideas if this is a Wine or VCL issue or even how to fix or work around that?

  56. 56
    voir le site Says:

    voir le site…

    Nick Hodges » Blog Archive » What happened to the TPNGImage project?…

  57. 57
    Ketoneraspberrytips.com Says:

    Ketoneraspberrytips.com…

    Nick Hodges » Blog Archive » What happened to the TPNGImage project?…

  58. 58
    Delphi TImage zeigt keine PNG Bilder an - Seite 2 - Delphi-PRAXiS Says:

    [...] Es scheinen auch die selben Implementierungen zu sein. Emba hat sie ja vor Jahren gekauft (http://blogs.embarcadero.com/nickhod…08/08/13/39100) Zitat von himitsu: Ein IFDEF wird da leider nicht viel bringen, denn da die beiden Units [...]

© 2014 Nick Hodges | Entries (RSS) and Comments (RSS)

Your Index Web Directorywordpress logo
Close