James Moger
2013-09-18 6de953137ce26e380f88b77876394d3c6fbdd766
Improve non-visible parent lane rendering for BranchGraphServlet
1 files modified
32 ■■■■ changed files
src/main/java/com/gitblit/BranchGraphServlet.java 32 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/BranchGraphServlet.java
@@ -32,6 +32,8 @@
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
@@ -153,11 +155,31 @@
            // determine the appropriate width for the image
            int numLanes = 0;
            int numCommits = Math.min(requestedCommits, commitList.size());
            for (int i = 0; i < numCommits; i++) {
            int numCommits = Math.min(requestedCommits, commitList.size());
            Set<String> parents = new TreeSet<String>();
            for (int i = 0; i < commitList.size(); i++) {
                PlotCommit<Lane> commit = commitList.get(i);
                int pos = commit.getLane().getPosition();
                numLanes = Math.max(numLanes, pos + 1);
                boolean checkLane = false;
                if (i < numCommits) {
                    // commit in visible list
                    checkLane = true;
                    // remember parents
                    for (RevCommit p : commit.getParents()) {
                        parents.add(p.getName());
                    }
                } else if (parents.contains(commit.getName())) {
                    // commit outside visible list, but it is a parent of a
                    // commit in the visible list so we need to know it's lane
                    // assignment
                    checkLane = true;
                }
                if (checkLane) {
                    int pos = commit.getLane().getPosition();
                    numLanes = Math.max(numLanes, pos + 1);
                }
            }
            int graphWidth = numLanes * LANE_WIDTH + RIGHT_PAD;
@@ -170,7 +192,7 @@
                g = image.createGraphics();
                g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                LanesRenderer renderer = new LanesRenderer();
                for (int i = 0; i < numCommits; i++) {
                for (int i = 0; i < commitList.size(); i++) {
                    PlotCommit<Lane> commit = commitList.get(i);
                    Graphics row = g.create(0, i*rowHeight, graphWidth, rowHeight);
                    try {