Hi again! In this post I will make a short presentation of my progress in my Google Summer of Code project.
So, after two weeks from the official and much awaited coding period start I am glad to say that I have entirely respected the previously designed timeline, even though this start has occurred simultaneously with the beginning of my exam period.
Even before the official start, I proceeded with resurrecting the annotate plugin with focus on adapting the Ground Overlays editing mode implemented during the previous GSoC edition (and which has not been branched to master). It came straight forward to me to do this, since I had already talked to the guy who worked on it last year, so I was pretty knowledgeable about the implementation (here is his blog). However, there were a couple of adjustments to be made (some unavoidable segmentation faults as well as few unpleasant UI aspects), but finally it reached its desired shape.
Next, my mentors and me decided that the work on the User Interface for the Ground Overlays/Polygons editing mode should be postponed until we find a way of keeping it as a plugin but also offer a friendly user interaction.
The first thing I implemented (and which is directly related to my project) is the polygon moving feature, which added more dynamism. Next, I started working on per-node properties and node interaction in general, since only adding and moving were available until then. I added the possibility of selecting (marking as selected) nodes as well as deleting nodes.
Having available these two options on each node seemed pretty good so far, but we also need options on the entire polygon and this is what I continued working on. The following options are available so far when right-clicking a polygon: Deselect All Nodes which provides a faster way of deselecting the nodes than clicking on each of them, Delete All Selected Nodes which streamlines the restructuring of an already drawn polygon and Remove Polygon.
The last feature I implemented is the possibility of drawing holes within an already drawn polygon, or, in other words, adding inner boundaries to a polygon. This was the most time consuming feature since the existing implementation did not take at all into consideration a polygon’s inner boundaries. However, I managed after a couple of days to have it fully working. These images will show it better:
In the last screenshot you can see that I also handled the situation in which after the deletion of a node from the polygon’s outer boundary, the polygon would not be valid anymore, since one of its inner boundaries would cross its outer boundary, so a warning will pop-up.
To sum up, these have been two great weeks of coding, although I could not work on the project as much as I wanted due to my end of semester exams. However, I only have two more exams and afterwards I will be much more active. I hope that this post put some light into what I am actually doing for my GSoC project and I am very excited of what is following.