Hello, For the past month I have been thinking over an idea I would really like to see made in an opensource vector program. Inkscape is my favorite so I'm posting this here. I think this would be a really great tool but would also take quit a bit of work (or at least I think it would, feel free to prove me wrong.)
What I want:
The tool is somewhat of a line tool. Similar to the freehand tool in that it creates a vector line, but enhanced. The differences would rest on the that is drawn. Instead of the curves that the freehand tool draws, the line would be composed of joints evenly spaced apart (the spacing would in general be small, but be user customizable). Each joint should have their x,y cords as well as a width property (it may be better to organize that different, but each joint needs to have this property, which would be a variable number set by a stylus used to display the line, I'll get to this in a moment).
In addition a joint must be able to reside in multiple lines. The reason being so that two lines can "connect" to each other. Each line would simple be a stroke; the button clicks, the mouse moves, the button lets up - a line. So say you draw a line in the shape of a big C. Then you want to join the open end and have tails sticking out on ether end. You would start above the C shape on the rightmost side and draw your line down. As you draw you can hold down on CTRL to connect the line to any other you pass over (Or maybe have it so after you draw the line you can press a hotkey and it connects itself to any other lines it intersects with). That's all for the user drawing the lines, now for how it would display it.
I'm not totally sure about how to do this (as if I am on any of this) but I was thinking it should draw out to look like a pen or pencil stroke (maybe have the general width be user defined so it could look big and fat to like a brush stroke). This is what I was wanting the width attr in the joint for. Maybe for displaying it create a line (or rather a complex polygon shaped like a line) that moves through all the points with the width (distance between the two edges on the sides of the line) changing with the width attr in the joints. Did any of that make sense?
Ok, two more things. Coloring and editing. For editing I want something cool :) What I was thinking was that you can press down on CTRL or right click or something near a line and start drawing. As you go it moves and morphs the line to how you are drawing. It would have to automatically add and remove joints to keep evenly spaced. Is that at all clear?
Lastly the coloring. I don't know how this could be made into inkscape easily (not that any of this would be easy) but I would want the ability to be able to fill in enclosures in the lines (also be able to change the color of a line but that wouldn't be difficult.) I could only really think of one way to do this. It would find all the joints of the lines that it needs to fill in and create a polygon from them (the joints). Perhaps have them be the actual joint objects (is this very feasible in C/C++?) so that when a line is moved after it is filled in the fill would update with it.
Anyway, that is what I would really like to see in a vector editor like inkscape (I would love to see it in inkscape.) There are probably still several design holes that I overlooked but I think I conveyed what is in my mind. This would take a lot of work but I think it would be a very valuable tool to have. I tired playing around with it myself using cairo and PyGTK but wasn't able to get very far (I need to learn to stay as far away from the DrawingArea and Pixbuf/Pixmap as possible... ether that or get it figured out once and forall).
If anyone thinks this would be cool and might want to implement it that would be awesome! At the moment I couldn't really fund anyone to do this and I'm not even sure this is something that would be wanted in inkscape. Please let me know anyone if you're interested or I'm unclear about something or what ever!
Thanks for listening! Joey