Immaculate detail

Today I added support for OS X HiDPI resolutions. It turned out to be relatively straightforward, with Qt 5 already doing most of the work for us. Doomsday’s default UI style package was easy to adapt for HiDPI, with a couple of extra factors applied to UI metrics and font sizes. It helped that we had already prepared suitably high-resolution versions of the icons and other graphics used in the revised UI.

I’m very happy about how crisp everything looks on a retina display.


Xcode is growing on me. Especially Xcode 6 on Yosemite is looking fantastic. Qt Creator is a very capable editor, however I plan to make another effort to write a generator script for a “native” Doomsday Xcode project. A sensible goal would be to produce a Snowberry-free build using Qt 5.3.

Detour into scripting and log history

It has been a busy week without much time for Doomsday. Sometimes after a break it is easier to return to the project by looking at a completely different topic than what I was working on before. This allows one to ease into the code again in a more comfortable way.

The log history widget was among the first that I wrote on the new UI framework. Since then, I’ve added a handy utility class called TextDrawable for drawing and laying out UI text. It has nice features like automatic background threading if there is a large amount of text. However, LogWidget being quite old, I had implemented a separate multithreaded text rendering mechanism there. I decided to replace this with TextDrawable so there wouldn’t be unnecessary redundancy in the code base.

Continue reading Detour into scripting and log history

A tale of model definition bug hunting

After updating all code that deals with DED Model definitions to use the new Record based storage, I was slightly disappointed — although not surprised — to see that loading up a resource pack and trying to use it would result in a crash.

This is a pattern that I’ve come to accept as the norm: after working on a set of significant changes, my initial design and plan are shown to be valid, but I have to spend a couple of hours tracking down bugs that, in the end, prove to be trivial. In other words, one can’t expect to write bug free code.

Continue reading A tale of model definition bug hunting