On Tuesday 24 October 2006 21:45, Marco Costalba wrote: > Quoting from your last e-mail: > "The new painting code regroups the drawing commands in > multiple switch-statements to prepare for far simpler code > with booleans for different elements, and not one type only." > > Indeed it's not clear to me what the above line means exactly, it just > smells like there is something more cooking. Ah, yes ;-) Currently, the drawing code knows how a full part of the graph should be drawn, with circle, rects, lines. Now, with direct drawing, this "knowledge" can be moved to graph layout time, which can generate info whether a circle or rect should be drawn. Making drawing a little bit faster, and simpler. I am not sure if it is worth it, but this way, the drawing code could be the same e.g. for different graph drawing algorithms (like gitk). > > Now that everything is drawn directly, the question is what to do with > > the new flexibility. E.g. we _could_ implement different > > graph drawing algorithms next to the original qgit one, > > e.g. mimicking gitk. > > One little secret of current algorithm is that it just needs to know > the "state" of previous revision graph to calculate the next one. (see > Git::updateLanes() and lanes.cpp), it's a kind of a "rasterized" graph > drawing, i.e. line by line. > > I didn't studied gitk in deep but it seems a little bit less simpler. > Anyway if you are interested it's for sure worth trying ;-) I will have a look. Current qgit layout gets really extremely wide e.g. with the kernel. Some ideas: * Put lanes to the right if possible * If a branch has no commit for more than e.g. 50 entries, it's better to draw an arrow and get rid of the lane at all. By clicking on an arrow head, we could rearrange the commit ordering a little bit so that commits on the given branch move in a way that we always see the context on this branch. * Collapsing parts of the graph into mega-commits, e.g. - straight commit lines - short topic branches forking from and merging into a branch Josef > > Marco > > - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html