SFML community forums

Bindings - other languages => D => Topic started by: Jebbs on October 07, 2013, 07:52:23 am

Title: New version of DSFML!
Post by: Jebbs on October 07, 2013, 07:52:23 am
Hey everyone!

I wanted to announce that I just made one hell of an update to the DSFML binding. I've been experimenting with several things for a few months and finally decided to make it the new master branch.

What's new:
Essentially, I made two really huge changes.
Possibly the biggest thing that was changed is that I wrote a whole new C/C++ back end for the binding. I didn't write it from scratch as it is essentially a heavily modified version of CSFML, but it is tailored specifically for the binding and for working with D.

Another huge change was that instead of modules being included in a single file, I was able to split everything in to separate files with things still making sense thanks to the new back end.

Some other interesting new things include:
Everything that could be written in D code was written in D code. This means that things like Sprite, VertexArray, Text, *Shape, most of the audio classes, etc. were written in D instead of done with wrapper code around a sfXXX C struct. This of course requires more upkeep as a binding, but it was fun to do, so I did.

Hierarchies are now correct. RenderWindow inherits from Window and RenderTarget, the right classes in the Graphics module inherit from both Drawable and Transformable, and (I'm pretty sure) all of the Audio hierarchies are the same as with SFML. That sort of thing.

The SFML err ostream is now mapped into a D File struct, also named err. This means that one can now redirect SFML error output in D and write to the same location through DSFML's err.


There are also several other changes that were made, so I encourage everyone that is interested in this binding to check it out and leave me some feedback. It isn't 100% complete yet; I'm currently working on writing unit tests, code can definitely be cleaned up and made more consistent, and I still have a couple of issues to work on, but I feel like it is already very large improvement over the previous version. I also took some time and wrote a(probably terrible) tutorial (https://github.com/Jebbs/DSFML/wiki/Building-The-Library-And-Your-First-DSFML-Program) for getting started.

Check it out here (https://github.com/Jebbs/DSFML) and let me know what you think!