Paint.NET v3.5.6 is now available!

As usual, you can either use the built-in updater from the Utilities menu, or you can download and install directly from the website: http://www.getpaint.net/ . There’s no need to worry about removing the old version; that is all handled automatically.

This update fixes several issues related to copy-paste, improves performance and quality for a few adjustments, and fixes a data loss bug.

  • When pasting an image, Paint.NET will be smarter about ensuring it is placed within the area that has been scrolled/zoomed to.
  • Improved the performance and quality of the Curves and Hue/Saturation adjustments.
  • Some minor improvements to memory usage, which should help out a few scenarios on 32-bit systems.
  • Fixed: If a JPEG was loaded that had an embedded ICC profile, and was then saved as an 8-bit or 24-bit PNG, then the resulting file would be corrupt (32-bit PNG worked fine though).
  • Fixed: 16-bit TGAs no longer load with the red and blue channels swapped.
  • Fixed: Copy-paste from a Remote Desktop session will no longer be ‘shifted’ by 3 pixels.
  • Fixed: Copy-paste from Internet Explorer, Firefox, or Chrome should preserve alpha/transparency.
  • Fixed: Copying from Paint.NET and pasting into Windows Live Writer should now work.
  • Fixed: Taking a full-screen screenshot with Print Screen on a multimonitor system, where those monitors don’t form a simple rectangle, will now fill the ‘gap area’ with transparent instead of black. (Example: two monitors of the same size, one of which is rotated by 90 degrees)
  • Fixed: If Paint.NET is opened without specifying an image to open, and then the default image is modified and saved, then Paint.NET will no longer close it upon opening another one. This was causing data loss if that default image had layers, and was then saved in a format that did not support layers (anything other than .PDN).
  • Fixed: Some systems were showing ‘red X’ thumbnails for .PDN files in Windows Explorer, instead of the real thumbnail.
  • Fixed: The EXIF “Creation Software” saved along with images is no longer localized. This prevents certain languages from seeing “Paint.NET ????? v3.5.6” in the image properties (metadata).

Hopefully these fixes should make the wait for 4.0 easier to bare Smile

Also, as a bonus feature which is a corollary to how I’m now handling copy-paste from Internet Explorer: if you “copy” an image from Windows Explorer, you can paste it straight into Paint.NET. For example, right click on some stray image you’ve left on your desktop (c’mon we all have a cluttered desktop). Next, paste into Paint.NET. Pretty cool, maybe even useful.

Paint.NET v3.5.6 Beta (Build 3970) now available

This release fixes several issues related to copy-paste, improves performance and quality for a few adjustments, and fixes a data loss bug. You can download this using the built-in updater (make sure "Also check for betas" is enabled), or just download it directly from the website: http://www.getpaint.net/ (by the way, please do not directly link to the ZIP files)

I should be able to put out a final (non-beta) release within a week or two.

Here’s what’s changed since v3.5.5:

  • Improved: When pasting an image, Paint.NET will be smarter about ensuring it is placed within the area that has been scrolled/zoomed to.
  • Improved: Performance and quality of the Curves and Hue/Saturation adjustments.
  • Improved: Some minor improvements to memory usage, which should help out a few scenarios on 32-bit systems.
  • Fixed: Copy-paste from a Remote Desktop session will no longer be ‘shifted’ by 3 pixels.
  • Fixed: Copy-paste from Internet Explorer, Firefox, or Chrome should preserve alpha/transparency.
  • Fixed: Copying from Paint.NET and pasting into Windows Live Writer should now work.
  • Fixed: Taking a full-screen screenshot with Print Screen on a multimonitor system, where those monitors don’t form a simple rectangle, will now fill the ‘gap area’ with transparent instead of black. (Example: two monitors of the same size, one of which is rotated by 90 degrees)
  • Fixed: If Paint.NET is opened without specifying an image to open, and then the default image is modified and saved, then Paint.NET will no longer close that image upon opening another one. This was causing data loss if that default image had layers, and was then saved in a format that did not support layers (anything other than .PDN).
  • Fixed: Some systems were showing ‘red X’ thumbnails for .PDN files in Windows Explorer, instead of the real thumbnail.
  • Fixed: The EXIF "Creation Software" saved along with images is no longer localized. This prevents certain languages from seeing "Paint.NET ????? v3.5.6" in the image properties (metadata).

Paint.NET v3.5.6 … let’s fix a few more bugs

Contrary to what I said last week or so, I’ve decided to fix more than just 1 bug in the upcoming Paint.NET v3.5.6, and also to port a few other minor improvements from the v4.0 code base. Right now this is in private testing, and hopefully I’ll have another beta soon.

Here’s what I’m planning on:

  • The dreaded “red X” thumbnail bug. As it turns out, if you install the DirectX SDK, it stomps on Paint.NET’s thumbnail handler (it’s a shell extension for Windows Explorer). This has been plaguing me for over a year, and I’ve finally fixed it. Thanks go out to luck, guessing, and Sysinternals’ Process Monitor.
  • When saving an image (such as a JPEG), the EXIF metadata for “Creation Software” is no longer localized. This prevents some languages seeing “Paint.NET ?????? 3.5.5” in a saved image’s metadata.
  • Some performance and quality improvements to the Curves and Hue/Saturation adjustments, courtesy of Ed Harvey.
  • Copy and Paste! There are many scenarios that I’m fixing or improving…
    • It’ll be smarter about positioning the pasted image into the viewport (the portion of the image that is scrolled and zoomed to), instead of always jamming everything to the top-left of the image, which was forcing you to madly scroll around when pasting a bunch of stuff together.
    • When copy-pasting from Remote Desktop, the pasted image will no longer be shifted to the right by 3 pixels. This is a bug in WinForms that I’m working around, and was a bit crazy to fix.
    • Pasting from Internet Explorer or Firefox will preserve alpha. For IE9, it actually gives me a link to the file in its download cache, so I can just load that directly. For Firefox, it places a bitmap with the pixel format set to 32-bpp RGB (“no alpha”). However, it lies … so I detect when I should interpret it as 32-bit ARGB instead.
    • If you have a multi-monitor setup, and those monitors don’t form a simple rectangle, then the “gap area” will be pasted as transparent instead of black. As an example, I have two 24″ monitors. The left-hand one is 1920×1200, while the right-hand one is rotated so it is 1200×1920. If you take the bounding box, you have a rectangle where neither monitor has any representation, and this is the “gap area” (or maybe there’s a more precise term, but oh well).
  • I’m also planning to fix the issue where a JPEG is loaded that has an embedded thumbnail, then the image is modified, and then the image is saved again … but with an out-of-date thumbnail. This happens because Paint.NET “blindly” carries along all the EXIF metadata in an image (normally a good policy).
  • Some minor performance and memory usage improvements. It should improve reliability on 32-bit systems, especially when using the magic wand with complex selections.

Paint.NET v3.5.6 Beta

Every so often an update is necessary to fix 1 bug. This is one of those. Before I describe it, you should head over to the forum and download the beta. I am not making it available via the built-in updater.

The bug in question was reported only recently over on the forum, although I’m pretty sure it’s been in the product since the v3.0 release in early 2007!

It’s classified as a data loss bug, although thankfully it’s a relatively minor one. When Paint.NET starts up, it creates an initial/default image (blank and 800×600) if it wasn’t told to open a specific file. Then, when you eventually/probably open another image it will close that initial/default image as long as it wasn’t modified. The idea is that if you didn’t modify that initial image then you probably don’t care about it, and closing it doesn’t result in any data loss (it’s pretty easy to recreate a blank 800×600 image).

Well, I messed up a little on the implementation of determining whether the image was one that could be automatically discarded. I was only checking the “dirty” bit, which powers the little yellow asterisk you see in the thumbnail list when an image has been modified but not saved. The problem comes with when you modify that initial image, then save it, and then open another image. Paint.NET will incorrectly close that initial image (because the “dirty” bit is set to false) even though you still have items in the history list.

This is especially problematic when you work with a bunch of layers, then save in a format that does not support them (e.g. anything but .PDN). You may want to go back and undo the flatten operation that was performed while saving that image, then make further changes, etc. Inadvertent data loss is the unfortunate result.

And before everyone asks: nothing else is being changed in this release! No new features or tweaks or anything. Those are all being saved for the v4.0 release.

Now, go have a happy Halloween. Please don’t drink too much. I’m personally going out in an astronaut costume, which is pretty awesome.

September 2010 usage statistics – XP no longer on top

The last time I published stats was back in May, and now it’s time for the September edition. The numbers are pretty simple, and the positive trends I reported earlier continue.

Since May, Windows 7’s demographic has increased by 47% (wow!) and now comprises 38% of the user base. 64-bit has shot up by 41% and is now 22.5% of the user base, something that makes me very happy since it was dawdling at <1% for several years. Windows XP is finally below the 50% mark, having dropped to 43%. If you add up Vista and Win7, you get 56.4%, which is very good news. For the first time this means that the majority of Paint.NET users are not on Windows XP! My decision to drop support for XP in the forthcoming v4.0 release (“late 2011,” remember) appears to be a solid business decision, and will let me focus on using newer technologies like Direct2D. Anyone who says “you are dropping support for the majority of your users!!!1” is, well, wrong.


Yay pie charts

  May 2010 September 2010  
Total  hits to update manifest 4,243,221 3,598,716 alt
Hits per day 136,878 116,087 alt
       
32-bit 84.12% 77.53%  
64-bit 15.88% 22.47% alt
       
Windows XP 51.20% 43.42%  
Windows 2003 0.21% 0.18%  
Windows Vista / 2008 22.64% 18.14%  
Windows 7 / 2008 R2 25.95% 38.25% alt
       
English 39.43% 40.33%  
non-English 60.57% 59.67%  
German 15.52% 15.78%  
French 7.99% 7.68%  
Portuguese 5.43% 4.91%  
Spanish 5.78% 5.77%  
Japanese 2.33% 2.46%  
Italian 3.78% 3.77%  
Polish 1.53% 1.39%  
Netherlands (Dutch) 1.37% 1.43%  
Russian 10.31% 10.63%  
Chinese (Simplified) 0.79% 0.66%  
Chinese (Traditional) 0.58% 0.48%  
Turkish 0.95% 0.70%  
Korean 0.32% 0.27%  
All other languages 0.86% 1.02%  
       
Have translations 81.38% 81.62%  
Don’t have translations 18.62% 18.38%  

Paint.NET shows up on Steam’s hardware and software survey

The good folks over at Valve collect and publish statistics about the hardware that their users have installed. For their latest July 2010 stats, they’ve started including installed software.

Some interesting highlights:

  • 56.82% have a dual-core CPU, 26.57% have quad-core, and 0.00% have 24 cores.
  • 100% have Steam installed. (derr)
  • Over 40% are using Windows 7, more than XP or Vista.
  • 5.81% have Paint.NET installed, vs. The GIMP at 6.26%. Not bad for an app that’s 8 years younger with fewer contributors than you can count on 3 fingers.

I’m looking forward to the next update!

Microsoft Ribbon for WPF

I don’t often make “publicity posts” but I know a lot of people have been waiting for this. Microsoft just released the official Ribbon control for WPF (download link). It’s 100% WPF – it isn’t sitting on top of the Windows 7 or MFC Ribbon control, in other words.

This is not the same as what was released about 2 years ago in CTP form. This is brand new, released today. Samples and source code are included!

2474.Office-Word-like-UI-using-WPF-Ribbon[1]
Office Word style UI using Microsoft Ribbon for WPF

Question I know people will ask: “Will you be using this in Paint.NET!?!?!?!”

Pre-emptive answer: Probably not. Paint.NET is based on WinForms, not WPF, and will likely remain that way. Plus, I have other ideas for what to do with the UI in v4. I’m not convinced the Ribbon is what I want to use. If I did use the Microsoft WPF Ribbon (and I’m not saying that I will, remember), I’d have to be very careful since correctly mixing WinForms and WPF can be a bit delicate. Stay tuned of course.

GPU Blur Effects pack for Paint.NET

Bruce Bowyer-Smith has gone to the extraordinary effort to write a pack of GPU-accelerated effects for Paint.NET. It started out with a preview discussion in Plugin Developer’s Central that eventually led to a recent “public” release over in the normal Plugin publishing section.

The pack contains GPU accelerated versions of Gaussian Blur, Motion Blur, Radial Blur, Zoom Blur, as well as a new Channel Blur.

A GPU that supports DirectCompute is required along with Windows 7, or Windows Vista SP2 with the Platform Update (it needs DirectX 11, in other words). Most recent NVIDIA and ATI/AMD cards support this, although Intel’s do not. The latter is a big reason why I have not properly pursued this for Paint.NET yet – there is no high-performance software fallback for DirectCompute. (The “reference driver” does work, but is very slow because it’s intended to render “perfectly” without any regard to performance, and is mostly useful for GPU and driver engineers to make sure they are on the right track.)

It’s interesting to watch these effects execute, because they aren’t any faster on smaller images (and often slower). However, as the size of the image increases, the performance delta becomes very dramatic. The GPU versions just don’t seem to run any slower, while the CPU-based effects quickly lag far behind. These effects are probably hindered by Paint.NETs CPU-centric rendering model, so I wouldn’t be surprised if further performance jumps are possible.

The only downside I’m seeing is that, so far, it is limited to handling images that fit within the maximum texture size that your GPU supports. On a high end video card, that means 8,192 x 8,192 pixels (IIRC).

Paint.NET v4 gets a Settings dialog

I’ve said for a long time that I didn’t want a “Settings” dialog in Paint.NET. I honestly felt that providing as few settings as possible, as well as reasonable defaults for the ones that did exist, was the best way to go.

However, it’s finally to the point where it actually makes sense to consolidate the few settings that Paint.NET has into a proper Settings dialog. This also opens up the ability to easily add new settings where it makes sense.

Here’s a preview:

The “Choose Tool Defaults” dialog will also be folded into this.

I’m using IndirectUI to auto-generate and auto-databind most of this. This is the same system that is used for most of the effect and file type configuration UI as well. It’s a versatile system and is saving me a lot of time. Getting the new application settings system (the data and storage model) up and running has taken a bit of time, but adding any new setting or settings section only takes a few minutes. The dialog here didn’t take much time at all, either.

Effect plugins will be able to query the “Default Quality Level” setting and apply it as they see fit, along with any other settings that end up being pertinent.

Oh, and I’m using DirectWrite to render all of the text now. It works really well, looks great, and is configurable (if you prefer the “GDI Classic” mode, well then just change the setting). Even the buttons are no longer using GDI+, and also have the animations that “real” buttons in the rest of Windows have (this is a change throughout Paint.NET, not just in the Settings dialog).

As usual, the icons are from the excellent Fugue Icon set.

Rotate/Zoom and IndirectUI in Paint.NET v4.0

In my last post I briefly mentioned that Rotate/Zoom had been converted to use IndirectUI. In the current release (v3.5.5) it is implemented with a custom WinForms dialog along with manual data binding, etc. It works fine and simply wasn’t a priority to convert in the v3.5 timeframe.

Well, here’s how it looks now:

It certainly fits in better with the rest of the UI now. The “roll ball 3D” control will also be available for plugins to use. In addition, thanks to some polite prodding by a prominent plugin author (pyrochild), I’ve added the ability to use the regular angle chooser control with a constrained range. Currently, only angle ranges of [-180, +180] and [0, +360] are permitted.

The greyed area shows the angle range that is not permitted.

I’m also planning to add the ability for IndirectUI-based effects and file type UI to use tab pages. This will be useful for having Basic/Advanced pages for file types, and to have more configurable effect properties without resorting to a “tall” UI dialog.

Anyway, that’s all for now!