Almost a progress update

It’s Saturday already and guess what: I haven’t finished the overview of the VectorRenderer class I promised (only a rough draft of it).

As a note to self, I’ll have to stop promising stuff until I stop sucking at meeting deadlines. Oh well, at least I didn’t spend the whole week procrastinating. Apart from exams, which always keep me busy, I spent the week working on yet another class for the new GUI, the InterfaceManager.

The InterfaceManager class isn’t really a replacement class, because its funcionality isn’t present in the current implementation of the graphical user interface. Right now, the ScummVM interface for the main menu is hooked in its startup function as a new LauncherDialog object which is created and ran as a modal inside the same function.

This approach, however, is not valid with the added complexity of the new GUI, and that’s where the InterfaceManager class comes into play. This class is the core of the extendability of the new interface, since it manages key features such as renderer initialization based on the current platform and settings, generation of dynamic drawing lists (when using dynamic drawing) or of precached shapes for the widgets, and the management of drawing updates for the widgets themselves.

Oh, and to complement this new class, I extended the functionality of the Vector Renderer. See? I told you it wouldn’t take long to change the current implementation, plus I’ve also noticed that it’s missing a key drawing feature to imitate the looks of the actual GUI, beleved borders in square shapes. That’ll be coming next week – the feature which I added this week are Drawing Steps, which allow to discretize the drawing of a complex vectorial shape in individual steps. Quite convinient for specifying such steps in an external configuration file.

Together with beveled corners, next week I’ll be busy with a lawsuit for sexual harrassment, some modifications to the current INI file parser (maybe a rehaul?), a programming exam, a numerical computation exam (yes, I also wonder what the fuck does numerical computation mean) and writing more progress updates on this blog.

Notice the stupid level of self-reference in stating an update of your TODO list as an item of your TODO list. I find this fact as amusing as Indy 4.

Good news ladies: I’m still on track

That’s right. Just because I can’t be arsed to update this development blog it doesn’t mean I have stopped development. Quite the opposite: I have good news for all the ladies who get aroused by reading my code (there must be thousands of these) and for the standard geeks who enjoy reading progress updates.

The vector renderer is rendering -which is a nice thing for a renderer to do-, and it’s doing so a few days before the proposed deadline. The first Coding Period begins in about one week, and so does my exams period. Fortunately, with this “small” head-start I will be able to focus on my exams and still meet all the other deadlines; the vector renderer is one of the key pillars of my project (and quite a bit of work), so having it finished before the actual coding begins is a good thing.

So, what’s exactly done in the Vector Renderer? Well, pretty much everything important. The API is designed and in place, and pixels are being drawn on the overlay. Obviously, next week I’ll notice the renderer is missing some key features and a rehaul will be in order, but meanwhile I plan to write a blog post explaining the design and extendability of the class, which hopefully will also serve as a strong base for the API documentation that will go on the ScummVM wiki when the design is finished. I don’t really need to say that the whole class design gives me a raging hardon; you’ll find that out soon enough.

Until then, I’ll leave you with the moment you all have been waiting for: TEH PICTARS!!

…Actually, there’s just one picture comparing the standard Vector Renderer implementation and the AA renderer for fast platforms. See it after the jump, and click it to enlarge it. Or just draw your eyes closer to the screen.

(Editor’s notice: unfortunately, the image that was included here is lost and not available on archive.org)

“Today I got shafted” and other stuff you are certainly interested about.

I’ve always wanted to have a blog just to post crap like this: This morning I got charged 4 euros (yes, that’s right, four) for sending my Tax Documentation to Google. Four pieces of paper. That’s one euro per page.

Jeezus Christ, seriously. Four euros. It would have been fucking cheaper to buy a plane ticket and give the damn stuff in hand to Leslie Hawthorn myself.

Anyways, here’s some actually interesting info: I’ve just noticed you may be reading this blog without even knowing what’s it all about. Yes, apart from the fact that it is a development blog about my Summer of Code for ScummVM (something which you can infer from the, once again, awesome pun in the title), you might be interested in knowing exactly what I’ll be doing during this summer, and I didn’t explain that on my first post because I was plain too lazy.

Let’s get right into it now: My task consists in the development of a new Graphical User Interface (GUI) for the program. And yes, I know that ScummVM already has a GUI. In fact, I won’t be developing a new one from scratch. I will be rewriting and refactoring a lot of code to fix all the shortcommings of the current implementation, and while I’m at it I’ll add some new features.

I know that the task may not seem that fun, because the result for the average end user will probably be the same GUI he had before (and that’s if the Gods of Timelines don’t bless us with any regressions), but the fact is that there’s gonna be a load of cool code going on the background (we are adding a lot of awesome new features and fixing a lot of the old ones) and all this code will certainly have a big impact on many ports and on the project as a whole. You could say I’m happy like some castanyoles if you knew what the fuck are castanyoles.

Oh, and I almost forgot: I won’t be doing this on my own. Apart from the extremely supportive development team, I have my very own mentor: Johannes Schickel (LordHoto) has the daunting task of replying my random rantings and inconsistent mumblings with valuable advice, and so far he’s been doing an awesome job at it: My first SVN commits are in place and we have an API which is starting to take shape. Expect a few posts on this topic soon (TM), almost certainly before the weekly progress update.

Meanwhile, as I am pretty confident that right now you can’t wait to know even more about my project, here’s enough information to fill your sickest needs -at least until I come back spamming some more.

Detailed project description (HTML)

My GSoC Application, as sent to Google (PDF)

ScummVM project site in Google Code – GSoC

The ScummVM Homepage

My branch in ScummVM’s SVN server

Happy reading.

*Update* According to my Student dashboard, Google did receive my documentation properly. This is indeed nice because I would have to sell half of my liver in the Black Market to fax another 4 pieces of paper to them.