For the last year I have been working on a new version of EP Calipers for Windows and it is finally ready to be released.
This new release is the 3.0 version of EP Calipers for Windows. Technically it is an upgrade of the current 2.x version, but practically it is a complete rewrite from the ground up of the app. As such it is being offerred not as an update to the current version, but rather it is being sold as a separate app named EP Calipers 3, to distinguish it from the 2.x version.
What justifies its being sold separately rather than just providing it as an update?
Well, I could be glib and answer that a year of work justifies selling it as a distinct app, but there’s more to it than that.
To understand my reasoning, it’s necessary to look at the history of the EP Calipers for Windows app, as well as the evolution of Microsoft Windows UI frameworks.
Looking at the GitHub repository for the source code, I see that the initial commit for epcalipers-windows
was 8 years ago. The original version was built using the Windows Forms aka WinForms framework, a very old but reliable Windows user interface platform.
The first versions did not include the transparent window feature that allows you to place a calipers window over another window on the desktop and make measurements. That was because WinForms didn’t support window transparency. There was a programming trick to add transparency to WinForms, which is how I implemented the first version of the transparent window, but it was not a very robust trick and stopped working in subsequent Windows updates.
To fix this, I used another Windows API technology, called Windows Presentation Foundation or WPF. WPF was the state of the art Windows framework up until relatively recently, and it is still a fine UI framework for Windows development.
Ideally I should have written the entire app using the WPF framework, but instead I just wrote the transparent window code using WPF, and made the transparent window as a separate window that could be opened from the main WinForms window.
This worked, but it was not very elegant. Nevertheless, the app ran on current versions of Windows, as well as versions going back as far as Windows Vista!
Meanwhile Windows itself was evolving with the release of Windows 10 and 11, as were the Windows UI frameworks, albeit in a (typically Microsoft) confusing manner.
Microsoft has a habit of developing and then abandoning Windows UI frameworks. Remember the rise and fall of Microsoft Silverlight?
The original desktop apps for Microsoft Windows were based on an API called Win32. However, with Windows 8 and with the introduction of the short-lived Windows Phone, the user interface changed, with the addition of tiles and “Modern” UI apps. In addition Microsoft wanted apps to be “universal,” so they could run even on an Xbox. So a separate UI was developed, called the Universal Windows Platform or UWP. For a while Microsoft encouraged developers to write all new apps using this platform.
However UWP apps look and behave differently from classic Win32 apps. At the same time, Win32 apps looked out of place in Windows 10/11, because of the redesigned UI fo Windows 10/11.
Microsoft launched Project Reunion around 2020 to reunite the best elements of Win32 programming with the Modern UI of UWP apps. The result is called WinUI 3. Confusingly UWP has turned into what’s now called WinUI 2. However WinUI 3 is only for desktop apps, unlike WinUI2.
WinUI 3 allows the development of desktop apps that stylistically match the styles of Windows 10 and 11, as well as providing extra security, in that apps are packaged using another new Microsoft technology, MSIX packaging.
What I have been doing the past year is rewriting EP Calipers using the WinUI 3 framework. Here are some of the advantages of this new version of the app.
- The UI looks better overall. Dark mode is now supported. Look at the screenshots below.
- The main window can be switched from a window containing an image file to the transparent window. There are no longer two separate windows.
- Calibration is improved, with standard calibrations selectable with a button, though custom calibration units are still supported.
- Floating mean interval and QTc windows make measurements easier.
- The app settings are much more clearly presented.
- Behind the scenes the caliper rendering is much more efficient.
Perhaps the only negative is that the new app must be installed via the Microsoft Store. Earlier versions of the app could be installed via a traditional Windows installer. However the cost of distribution recently increased and I no longer will sell the app through a third party storefront. I will continue to support users of the 2.x version of the app, by supplying updates directly from me. In addition, the 2.x version of the app will continue to be available on the Microsoft Store.
Happy calipering!