void finish(BddtHistoryItem hi) { GraphBlock gb = in_blocks.get(hi.getThread()); if (gb != null) { gb.finish(hi.getTime()); in_blocks.remove(hi.getThread()); } }
private void drawBlock(Graphics2D g, double x, GraphBlock gb) { double y0 = getTimeY(gb.getStartTime()); double y1 = getTimeY(gb.getEndTime()); double x0 = x - active_width / 2; Color c = getThreadBlockColor(gb.getThread()); Rectangle2D r = new Rectangle2D.Double(x0, y0, active_width, y1 - y0); g.setColor(c); g.fill(r); }
/** * transform the code to a new form. * * @param type the new form, one of {@link #TYPE_STACK} or {@link #TYPE_QUAD}. * @return true if the graph has been transformed, false if the graph was already in the requested * form. * @throws GraphException if conversion of statements fails. */ public boolean transformTo(int type) throws GraphException { if (type == graphType || type == TYPE_BOTH) { return false; } for (Iterator it = blocks.iterator(); it.hasNext(); ) { GraphBlock block = (GraphBlock) it.next(); block.transformTo(type); } // TODO any feature which survives transformation? (getter from Feature) features.clearFeatures(); graphType = type; return true; }
/** ***************************************************************************** */ private BddtHistoryItem getItemAtPoint(int x, int y) { if (object_width == 0) return null; double t = history_graph.getStartTime() + (y - time_start) / (time_end - time_start) * (history_graph.getEndTime() - history_graph.getStartTime() + 1); if (t < history_graph.getStartTime() || t > history_graph.getEndTime()) return null; GraphObject gobj = getObjectAtPoint(x, y); // correlate with blocks if (gobj != null) { GraphBlock gb0 = null; double dtime = 0; for (GraphBlock gb : gobj.getBlocks()) { double dt = gb.getEndTime() - gb.getStartTime(); if (t >= gb.getStartTime() && t <= gb.getEndTime()) { if (gb0 == null || dt < dtime) { gb0 = gb; dtime = dt; } } } if (gb0 != null) { BddtHistoryItem bi0 = null; dtime = 0; for (BddtHistoryItem bhi : gb0.getItems()) { double dt = t - bhi.getTime(); if (dt >= 0) { if (bi0 == null || dt < dtime) { bi0 = bhi; dtime = dt; } } } if (bi0 != null) return bi0; } } // correlate with links double delta = (history_graph.getEndTime() - history_graph.getStartTime()) / (time_end - time_start) * 3; double dtime = 0; GraphLink gl0 = null; for (int i = 0; i < history_graph.getNumObjects(); ++i) { GraphObject go = history_graph.getObject(i); double x0 = graph_locations.get(go); for (GraphLink gl : go.getLinks()) { double x1 = graph_locations.get(gl.getToObject()); if (x > x0 && x < x1) { double dt = Math.abs(t - gl.getTime()); if (gl0 == null || dt < dtime) { gl0 = gl; dtime = dt; } } } } if (gl0 != null && dtime <= delta) { return gl0.getItem(); } return null; }
void extendBlock(BddtHistoryItem hi) { GraphBlock gb = in_blocks.get(hi.getThread()); if (gb == null) startBlock(hi); else gb.addItem(hi); }