Friday, June 28, 2013

Graphos: text alignment and other fixes

I finally fixed text alignment in Graphos! It was broken since a long time, perhaps since Graphos 0.1, probably due to the conversion made from GDraw. You had the controls in the editor, but then it didn't draw correctly!





Another long-standing bug was the manipulation of handles of a closed bezier path: the handles inside the path could not be touched. I think this bug existed even in GDraw!


A lot of work then went into restructuring the whole architecture that handles the zooming of the view. previously, everything was recomputed, there was no notion of original size, everything was transformed back and forth on the fly. While quick and easy, this provided serious problems when saving! Furthermore it means that there is data corruption when performing zooms!

Now, the original information is stored inside each object and everything is then calculated for representation. Some zoomed data is pre-calculated, other not. Probably there can be quite some optimization, but first everything needs to be debugged, since this is a quite consistent change. No new format is necessary since previosuly saving with a zooom different from 100% resulted in a broken file anyway.

Thursday, June 27, 2013

Graphos: new path editing

I changed the way selection and editing of paths and objects work in Graphos.

Previously, the program attempted to be smart: the "white" arrow tool would auto-select an object and start editing it. Clicking outside would deselect it.

This behaviour seems smart, but with many objects, with control poitns close together, it could drive you crazy. I thus changed the behaviour, by differentiating the black arrow and the white arrow tools  more:
  • the Black Arrow selects and unselects the whole object
  • the White Arrow selects and modifies control points, but does not change the object selection
  • the White Arrow only selects control points within the current selected object
  • missing a control point with the White Arrow does not deselect the object

This arrangement makes the two tools more orthogonal. It looks perhaps a bit more cumbersome for basic operation, but it ends to be much easier when objects overlap. Especially when using a graphics tabled this makes a huge improvement in my opinion.

And to close, just a drawing to show the current capabilities of Graphos. Making different shades is very easy with the new