Paint.NET v3.20 (Final) is now available!

Please digg this article: Paint.NET v3.20 new version now available!

Alright, you can either get it from the website, http://www.getpaint.net, or via the built-in updater from the Help menu (“Check for Updates”). Thanks are due to everyone for all the alpha and beta testing help. Enjoy! And now I’m hungry so I’m gonna go eat or something.

New in this release since v3.10:

  • Rectangle Select tool can now draw selections based on a Fixed Size or Fixed Ratio
  • The selection combination mode is now accessible from the toolbar (Replace, Add (union), Subtract, Invert (“xor”)).
  • The “flood mode” for the Magic Wand and Paint Bucket tool are now accessible from the toolbar (Continuous, or Global)
  • Reorganized the Effects menu so that all effects are classified under submenus named Artistic, Blurs, Distort, Noise, Photo, Render, and Stylize.
  • Improved rendering quality for the Motion Blur effect.
  • Enhanced the Radial Blur effect so that the center of blurring can be chosen, as well as the quality.
  • Enhanced the Zoom Blur effect so that the center of zooming can be chosen.
  • Enhanced the Bulge distortion effect so that the center of “bulging” can be chosen.
  • Enhanced the Frosted Glass distortion effect in several ways: 1) performance has been improved from between 1,000% to 10,000% depending on image size and property settings, 2) the scatter radius can now be set up to 200 pixels, 3) a “minimum” scatter radius can be chosen, 4) a smoothness setting is now available.
  • Enhanced the Tile Reflection distortion effect by adding a Quality property.
  • Enhanced the Twist distortion effect by 1) allowing counter-clockwise twisting, 2) allowing the size of the twisted area to be configured, 3) allowing the location/center of twisting to be chosen.
  • Enhanced the Add Noise effect by adding a “coverage” property.
  • New Mandelbrot Fractal and Julia Fractal render effects.
  • New IndirectUI system for plugin authors so that they can develop much more sophisticated effect configuration dialogs with a fraction of the amount of work that used to be required.
  • If an effect plugin crashes, it is much more likely that Paint.NET will be able to recover from the error. The option to restart Paint.NET will then be provided as a recommended course of action.
  • If an effect plugin fails to load, or is blocked from loading, then a “View Plugin Load Errors…” item will be added to the File menu which can be clicked on to show the error and/or diagnostic information.
  • Improved the cursors for the Magic Wand and Paint Bucket tools.
  • Ctrl+Alt+0 now works for View->Actual Size (aka, “Zoom to 100%”), which is a shortcut key that other software uses (e.g., Photoshop).
  • Updates are now installed faster by only creating one System Restore point instead of two (it used to implicitly create one for uninstall, then one for the reinstall).
  • Lots of little bug fixes.

Paint.NET v3.20 … soon! And updated licensing details

All the translations are ready to go, and there was only 1 bug that had to be fixed which you can read about on the forum if you really want to. Now I just have to finish updating the help content. I’m hoping to have the final release of 3.20 available tonight or tomorrow.

Well, that and I have to finish drafting this update to the Paint.NET licensing. I had a discussion with Dioni, who manages the translations of Paint.NET, about the licensing of both the regular release and the source code release. I believe we have come to a good decision about how to change the licensing that won’t affect normal users and that will have minimal or insignificant impact on those who are interested in the source code.

There are 4 types of abuses of Paint.NET, or even simple hazards of otherwise legitimate use, that I want to protect against:

  1. Blatant and insulting “Backspaceware”, as detailed in my two previous fuming posts on the matter (first post, second post).
  2. Paint.NET being sold on eBay, or in an otherwise similar fashion. This includes burned on to a CD by itself and sold for shipping costs, or the typical selling of “information” (“Ooh I know where to get this awesome thing, send me $5 and I’ll tell you!”), or even charging for a mirrored download link. Yes, I’ve seen all of these.
  3. Renamed and resold versions of Paint.NET, such as Office ONE Paint. I find this to be inappropriate, but far less offensive than the aforementioned backspaceware, and so I’m calling it out separately. I believe it’s even within the rights of the Paint.NET license, so I have not pursued it. However, I still don’t like it and want to prevent it going forward.
  4. Honest and appropriate derivative works that are still using Paint.NET’s Internet resources accidentally. For example, the Help menu item, “Send feedback” should not have paint.net AT hotmail.com in the source code release. Otherwise I’ll get crash logs from forked projects. Also, the auto-updater will not be functional because I don’t want derivative projects to be pinging my server, nor do I want those users to get new versions of Paint.NET offered to them (which will uninstall their non-Paint.NET software). Derivative works must not be confused with Paint.NET, or vice versa.

Here are some of the things I do not want to hinder or prevent:

  1. Normal installation and use of Paint.NET. I don’t want any of Paint.NET’s licensing to “follow” or “infect” any files that are opened, modified, or saved with Paint.NET.
  2. Legitimate educational study of the source code.
  3. Legitimate and honest adoption of portions of Paint.NET source code in to other software. For example, I’m totally fine with someone using the code for Gaussian Blur.
  4. Translation of Paint.NET to another language, by way of releasing a language pack. Note that I am not opposed to someone charging for a language pack – I personally think that’d be weird, but it’s not really a concern of mine.
  5. Free-of-charge distribution of unmodified Paint.NET through channels such as websites or magazine/book CD-ROM’s. This includes the fact that I don’t want to be required to approve every website that wishes to do this. Just do it.

So, here are the changes to Paint.NET and its licensing:

  1. The source code for the installer will not be released. This also includes the project files for creating the MSI.
  2. The text / string and icon / graphic resources, which is *.resources and *.resx as well as all embedded graphics files within PaintDotNet.Resources.dll, will now be licensed under the Creative Commons Attribution-Noncommercial-No Derivate Works 3.0 United States License. An exception is provided for releasing a non-English translation of the text/string resources. I am having to be careful here so that people don’t think I’m trying to force images loaded or saved with Paint.NET to be “infected” with this license.
  3. The non-English translations will not be included in the released source code. This does not affect normal use of Paint.NET – the compiled translations will still be included there.
  4. Any place where URL’s or e-mails are included in the source code will be erased, along with a compiler-error inducing text such as, “You need to provide a URL or e-mail address here.” (Note: This has been in place for several releases, but I’m including it for completeness)
  5. The auto-update functionality will be disabled somehow in the released source code. Most likely this will be done by using the aforementioned “URL erasing”.
  6. The installer that is released will have text during installation that clearly spells out, “Paint.NET is FREE OF CHARGE. If you paid money for it (other than to donate at the Paint.NET website, of course) then we recommend that you get a refund!” (Note: This was in place for v3.20 from the beginning, I’m just including it for completeness)

I believe these will correctly prevent what I don’t want, while still protecting what I want to allow. There are still loophole opportunities in these provisions, but the goal is that any rhetorical loophole will present a huge barrier in the amount of work required to “jump through it”. For example, even though the RESX files are no longer released you can still generate them from the publicly available RESOURCES files. But the RESOURCES file doesn’t allow derivative works, so you’d have to rewrite all the UI text for Paint.NET anyway. And you wouldn’t be able to re-use any of the icons or graphics. Or, maybe you’d decide that you wanted to release a scam version in another language using the translation excuse. Well, then you’ll only be able to target a fraction of the market anyway. Etc. etc.

Paint.NET v3.20 Release Candidate 1 is now available

You can get it either from the website, http://www.getpaint.net, or from within Paint.NET itself via the auto-updater. Note: Make sure you have “Also check for beta releases” enabled. You can access this option by going to Help -> Check for Updates, and then clicking on the “Options” button.

The number of fixes in this release is very small, and that’s a good indicator that we’re almost ready for the final release. I’m hoping to have that out by Friday, in fact.

Please be sure to report any compatibility problems with plugins.

Changes:

  • Note: New features will be displayed in English through the Alpha and Beta release(s). The final release will include full translations for the other supported languages.
  • Fixed: If a floating tool window (Colors, History, Layers, Tools) was not docked/snapped, and the screen resolution was lowered or a Remote Desktop session was initiated, then the window would stay off screen and be “lost”. It is now moved to keep it on-screen.
  • Fixed: An issue for plugin developers where Effect`1.Render(3) was incorrectly throwing an exception when indirectly called through Effect.Render(6). This was preventing an updated version of the “Film Noir” plugin from working, even though its code was correct.
  • Integrated updated translations for Spanish, French, Japanese, Korean, Portuguese (Brazil), and Chinese (Simplified). An updated German translation will be present in the final release.

Paint.NET v3.20 Beta 2 is now available

You can get it either from the website, http://www.getpaint.net, or from within Paint.NET itself via the auto-updater. Note: Make sure you have “Also check for beta releases” enabled. You can access this option by going to Help -> Check for Updates, and then clicking on the “Options” button.

Please be sure to report any compatibility problems with plugins.

Enjoy! I’m off to go finish Assassin’s Creed on my PS3.

Changes:

  • Note: New features will be displayed in English through the Alpha and Beta release(s). The final release will include full translations for the other supported languages.
  • Fixed: Drawing a “Fixed Size” selection was resulting in a rectangle that was 1 pixel too wide, and 1 pixel too tall
  • Fixed: A small layout glitch in the toolbar that was hiding the “Fixed Size” units selector
  • Fixed: A layout glitch in the Red Eye Removal dialog that caused it to show a scroll bar when it wasn’t necessary
  • Fixed: Header’s etched line control rendering in XP with the Luna visual style
  • Fixed: A few rare crash bugs
  • Fixed: Some corner-case glitches and crashes in the new IndirectUI and property system

Paint.NET v3.20 Beta 1 is now available

You can get it either from the website, http://www.getpaint.net, or from within Paint.NET itself via the auto-updater. Note: Make sure you have “Also check for beta releases” enabled. You can access this option by going to Help -> Check for Updates, and then clicking on the “Options” button.

Please be sure to report any compatibility problems with plugins.

Changes:

  • Note: New features will be displayed in English through the Alpha and Beta release(s). The final release will include full translations for the other supported languages.
  • Improved: Updating performance should now be faster. It used to be the case that two system restore points were created during update (one for uninstall, and one for re-install), but now only one is created to cover the entire transaction.
  • Changed: Ctrl+Alt+0 now works for “View actual size”. This is not listed in the View menu as a shortcut, but should help those used to keyboard commands from Photoshop, etc.
  • Changed: Some plugins that were causing stability problems are now blocked from loading. They will show up in the File->View Plugin Load Errors dialog.
  • Changed: Old effect plugin DLL’s that have since been integrated into Paint.NET (Glow, Portrait, etc.) are now blocked from loading.
  • Fixed: For revamped effect configuration dialogs, the first textbox is now auto-selected instead of the OK button. This makes keyboard usage more convenient.
  • Fixed: Close/Cancel button flickering while downloading an update
  • Fixed: The floating tool windows (Tools, History, Layers, Color) will double-check that they are on-screen when they are toggled on/off
  • Fixed: If two images had the text tool active and both had active text being edited, then Backspace would not always be routed to the correct image
  • Fixed: Open/Save dialogs in Windows Vista with high-DPI would sometimes have garbled thumbnail rendering (fixed by adding “high DPI aware” flag to EXE manifest instead of using SetProcessDPIAware function)
  • Fixed: Some minor high-DPI glitches in new UI features
  • Fixed: For newly revamped effect configuration dialogs, the focus rectangle (“dotted rectangle”) for sliders is drawn only when necessary
  • Fixed: Several rare crashes

Enjoy! I’m off to play video games for once. I still haven’t passed the first level of Halo 3.

Paint.NET v3.20 Alpha 2 is now available

Get it either from the website (http://www.getpaint.net), or from within Paint.NET itself. Note: Make sure you have “Also check for beta releases” enabled. You can access this option by going to Help -> Check for Updates, then clicking on the “Options” button.

Please be sure to report any compatibility problems with plugins! Note: The new plugin system is still subject to change. Plugins written for this alpha are not guaranteed to work with the Beta or Final releases (although I will of course do my best to avoid breaking things).

  • Note: New features will be displayed in English through the Alpha and Beta release(s). The final release will include full translations for the other supported languages.
  • Fixed: Paint.NET would crash if you clicked on the “start cap” or “end cap” buttons for the Line/Curve tool*
  • Fixed: Using Sepia would produce a result identical to Black & White, and would also mess up the undo history
  • Changed: Tolerance slider control is now 25% wider as per request on the forum
  • Changed: Improved the Magic Wand cursor
  • Changed: Improved the Paint Bucket cursor
  • Fixed: OnSetRenderInfo() was being called twice for effects that use the new property system
  • Fixed: Soften Portrait allows “0” for the Softness value again
  • Fixed: Tweaked some of the slider controls in some of the revamped effects
  • Fixed: Compatibility with several plugins

* You would not believe how many e-mails I got about this crash! Good thing it was just an alpha relase!

Paint.NET v3.20 *ALPHA* is now available

Get it either from the website (http://www.getpaint.net), or from within Paint.NET itself. Note: Make sure you have “Also check for beta releases” enabled. You can access this option by going to Help -> Check for Updates, then clicking on the “Options” button.

Please be sure to report any compatibility problems with plugins!

Change log:

  • Note: New features will be displayed in English through the Alpha and Beta release(s). The final release will include full translations for the other supported languages.
  • New: Ability to do ‘Fixed Size’ and ‘Fixed Ratio’ selection drawing with the Rectangle Select tool
  • New: Added selection ‘combine mode’ (replace, add, subtract, xor) to the toolbar. This makes this feature much more discoverable.
  • New: Added magic wand / paint bucket ‘flood mode’ (contiguous, global) to the toolbar. This makes this feature much more discoverable.
  • New: Mandelbrot and Julia fractal render effects.
  • New: Implemented new property and UI systems that makes it much easier to develop effect plugins. Authors may now specify properties with default, min, and max values and the UI for this will be dynamically generated. (instead of the author having to spend hours writing WinForms code)
  • New: Better error handling for plugin effects. They will no longer crash Paint.NET, and will provide easier access to the diagnostic and support information.
  • New: If a plugin fails to load, then a “View Plugin Load Errors” item will be added to the File menu.
  • New: Added ‘Coverage’ property to the Add Noise effect.
  • New: Added ‘Center’ (offset) property to Radial Blur, Zoom Blur, Bulge, and Twist effects. This allows you to set the center of rendering, complete with an image underlay preview.
  • New: Added ability to do counter-clockwise rotation in the Twist effect. Also added ability to change the size of the twisted area in the Twist effect.
  • Changed: In Frosted Glass effect, the performance was highly optimized. Increased max radius to 200 (instead of 10), and added ‘minimum scatter radius’ and ‘smoothness’ properties.
  • Changed: Enhanced all built-in effects and adjustments (except for Layers, Curves, and Rotate/Zoom) to use the new effect UI system.
  • Changed: Reorganized Effects menu into categories: Artistic, Blurs, Distort, Noise, Photo, Render, Stylize.
  • Changed: Command link buttons now look better in Windows Vista.
  • Changed: Moved ‘Median’ from the Blurs menu to the Noise menu.
  • Changed: Rendering for the ‘angle chooser’ control is nicer now.
  • Fixed: Header label flickering in some parts of the UI.
  • Fixed: Some window activation issues with the Save Configuration Dialog if you switched to another program and back while it was open.
  • Fixed: Some buttons and checkboxes were not honoring the theme animations in Windows Vista.
  • New: Added text to installer to remind people that Paint.NET is free of charge, and if they paid for it (other than to donate), then they should ask for a refund (e.g. eBay swindlers).

Note: The new plugin system is still subject to change. Plugins written for this alpha are not guaranteed to work with the Beta or Final releases (although I will of course do my best to avoid breaking things).

Paint.NET finally gets error handling for plugins

For the longest time, any unhandled exception in Paint.NET caused a generic “Oops sorry, go check the crash log on your desktop” error dialog. It’s not really that helpful, and it always points the blame in my direction even when it’s a plugin’s fault.

So, for v3.20 there is a real error dialog for this! If you’re running an effect or adjustment plugin and it doesn’t handle an exception, you’ll get the following dialog instead.

(quick digression: yes, command link buttons in v3.20 now look more like “real” command link buttons in Vista)

Clicking on the Error Details button will show the user details such as the file name of the plugin, its name, and the exception text. If the author implements a [PluginSupportInfo] attribute tag on the effect type and/or assembly, then additional information will be displayed such as author, copyright, and website URL.

If a plugin fails to load, you’ll get this:

Clicking on it reveals the reason why, although this text is really meant to serve as diagnostic information for the plugin author. I don’t expect non-developers to care about most of this except for maybe the file name.

In this case, Ed’s Surface Blur effect was deriving from a class in PaintDotNet.Effects.dll that was really only supposed to be used internally, and that is now using a different base class in v3.20. So his code is all confused and he will need to release an update. The other 10+ effects in his DLL’s still work fine though 🙂

Anyway, hopefully this will relieve my inbox a little and I won’t receive crash reports for plugins anymore.

Fixed Ratio and Fixed Size selections

You asked for it, and now you’re going to get it. This is currently the most passionately requested feature for Paint.NET, and I’ve just finished writing it for the v3.20 release.

This will make it easy, for instance, to select a 4 inch X 6 inch area. Or to do 16×9 ratio cropping to create wallpapers for that awesome widescreen TV you just bought. I have also added a toolbar split-button for selecting the selection combine mode. This does not add new functionality to Paint.NET but does increase the discoverability of this feature, and also ensures some consistency.

The Magic Wand and Paint Bucket tools also get a toolbar button for choosing Contiguous vs. Global flood. Again, this isn’t adding new functionality but falls into the area of making an existing feature more discoverable. I haven’t found a pair of icons that I really like for this yet, so the lightning bolt and globe are currently just stand-ins:

More Paint.NET v3.20 ramblings, and 3 pieces of news

I have some more ramblings about the property system, as well as three bits of news for the v3.20 release.

The more I keep using this new property system and UI generation code, the more I like it. I’ve been able to add a few features to some of the effects, such as the ability to move the center of rendering. This is important for things like radial and zoom blur, as well as many of the distortion effects.

In this screenshot, the “Center” property allows you to click and drag to move where the radial blur is centered on (it is centered on the cat’s right eye – well, your “left” but the cat’s “right”). Adding this to an effect takes as little as one line of code with the way I have set this up (I actually spread mine over 4 lines of code for readability’s sake). I’m really looking forward to extending this system to the Save Configuration dialog (would make it super fast to add 8-bit PNG support yes?), as well as other parts of Paint.NET. The “Layer Properties” dialog could be done very quickly using this code. The Resize dialog would also be a great application for this, and eventually I really want to redo the Colors floating window with all of this. I might redo the “About” dialog as a good starting exercise. See, a lot of UI development is really just an exercise in layout and data binding. And this takes care of it all.

The first news I have is a release date for Paint.NET v3.20: December 15th is the planned date. This means I am hoping to have a beta out by mid-November at the absolute latest. Which means I need to kick it in to high gear and wrap things up really soon!

The second news is that HD Photo support is being dropped from the v3.20 release. The reason is simply that the .NET Framework 3.0 is an enormous download and I’m not ready to require a 1.5 MB image editor to require an extra 50 MB download on 32-bit Windows XP just yet. I wanted to pull in .NET 3.5, but apparently it is 140 MB on 32-bit XP (at least that’s what Beta 2 says) which is just way too much. Maybe after the busy Christmas season I’ll be braver and make the next release require .NET 3.0.

Also, the plugin management that I talked about in previous posts will not
be making it into the v3.20 release. There just isn’t enough time to do it right now while also ensuring the highest quality for the aforementioned property system / UI generation.