public static void drawImage(int[][][] pixels, int startX, int startY) { // Key idea: draw a bunch (lots of rectangles) with the appropriate color DrawObject R = new DrawObject(); R.pixels = pixels; R.startX = startX; R.startY = startY; R.sequenceNum = currentSequenceNum; images.add(R); // Rescale if needed. int leftX = startX; int rightX = startX + pixels.length; int lowY = startY; int highY = startY + pixels[0].length; if (minX > leftX) { minX = leftX; } if (maxX < rightX) { maxX = rightX; } if (minY > lowY) { minY = lowY; } if (maxY < highY) { maxY = highY; } drawArea.repaint(); }
static void handleMouseDragged(MouseEvent e) { DrawObject L = new DrawObject(); L.scribbleX = e.getX(); L.scribbleY = e.getY(); L.scribbleNum = currentScribbleNum; scribbles.add(L); drawArea.repaint(); }
public static void drawLabel(double x, double y, String str) { DrawObject L = new DrawObject(); L.color = labelColor; L.x = x; L.y = y; L.str = str; L.sequenceNum = currentSequenceNum; if (animationMode) { synchronized (animLabels) { animLabels.add(L); } } else { synchronized (labels) { labels.add(L); } } drawArea.repaint(); }
public static void drawPoint(double x, double y) { DrawObject p = new DrawObject(); p.color = pointColor; p.x = x; p.y = y; p.diameter = pointDiameter; p.sequenceNum = currentSequenceNum; if (animationMode) { synchronized (animPoints) { animPoints.add(p); } } else { synchronized (points) { points.add(p); } } drawArea.repaint(); }
public static void drawRectangle(double x1, double y1, double width, double height) { DrawObject R = new DrawObject(); R.color = rectangleColor; R.x = x1; R.y = y1; R.width = width; R.height = height; R.sequenceNum = currentSequenceNum; R.drawStroke = drawStroke; if (animationMode) { synchronized (animRectangles) { animRectangles.add(R); } } else { synchronized (rectangles) { rectangles.add(R); } } drawArea.repaint(); }
public static void animationPause(int pauseTime) { if ((pauseTime < 1) || (pauseTime > 1000)) { pauseTime = 100; } try { Thread.sleep(pauseTime); synchronized (animPoints) { animPoints.clear(); } synchronized (animLines) { animLines.clear(); } synchronized (animOvals) { animOvals.clear(); } synchronized (animRectangles) { animRectangles.clear(); } } catch (InterruptedException e) { } }
/** * parses the segment string and initializes this segment properties * * @param segmentString the string representation of a segment */ protected void parseString(String segmentString) { segmentString = segmentString.trim(); // whether the command is a relative one boolean isRelative = isRelativeCommand(segmentString); // getting the list of the points corresponding to the segment string java.util.List<Point2D> pointsList = getPoints(segmentString.substring(1, segmentString.length())); if (pointsList.size() > 0) { point = pointsList.get(0); // if the segment is relative, it is transformed into an absolute one if (isRelative && previousSegment != null) { point = computeAbsolute(point, previousSegment.getEndPoint()); } } }
public static void drawLineFromEquation(double a, double b, double c) { // Draw the equation ax+by+c=0 in the available range. DrawObject L = new DrawObject(); L.color = lineEqnColor; L.a = a; L.b = b; L.c = c; L.sequenceNum = currentSequenceNum; L.drawStroke = drawStroke; synchronized (eqnLines) { eqnLines.add(L); } drawArea.repaint(); }
void drawScribbles(Graphics g) { if ((scribbles == null) || (scribbles.size() == 0)) { return; } DrawObject L = (DrawObject) scribbles.get(0); int scribbleCounter = L.scribbleNum; g.setColor(scribbleColor); ((Graphics2D) g).setStroke(new BasicStroke(2f)); int prevX = L.scribbleX; int prevY = L.scribbleY; for (int i = 1; i < scribbles.size(); i++) { L = (DrawObject) scribbles.get(i); if (L.scribbleNum == scribbleCounter) { // Keep drawing. g.drawLine(prevX, prevY, L.scribbleX, L.scribbleY); prevX = L.scribbleX; prevY = L.scribbleY; } else { scribbleCounter = L.scribbleNum; prevX = L.scribbleX; prevY = L.scribbleY; } } }
public static void drawLine(double x1, double y1, double x2, double y2, boolean isArrow) { DrawObject L = new DrawObject(); L.color = lineColor; L.x = x1; L.y = y1; L.x2 = x2; L.y2 = y2; if (isArrow) { L.color = arrowColor; L.isArrow = true; } L.sequenceNum = currentSequenceNum; L.drawStroke = drawStroke; if (animationMode) { synchronized (animLines) { animLines.add(L); } } else { synchronized (lines) { lines.add(L); } } drawArea.repaint(); }
public void moveKnot(int index, double x, double y) { java.util.List knotlist = getControlPoints(); knotlist.set(index, new Point2D.Double(x, y)); updateLookupTable(); }
public boolean execute() { if (CDState.getCycle() % period != 0) return false; MycoCast mycocast = (MycoCast) Network.get(0).getProtocol(mycocastPid); int bio = mycocast.countBiomass(); int ext = mycocast.countExtending(); int bra = mycocast.countBranching(); int imm = mycocast.countImmobile(); // Update vertices Set<MycoNode> activeNodes = new HashSet<MycoNode>(); for (int i = 0; i < Network.size(); i++) { MycoNode n = (MycoNode) Network.get(i); activeNodes.add(n); HyphaData data = n.getHyphaData(); // if (data.isBiomass()) { continue; } if (graph.containsVertex(n)) { graph.removeVertex(n); } if (!graph.containsVertex(n)) { graph.addVertex(n); } } Set<MycoNode> jungNodes = new HashSet<MycoNode>(graph.getVertices()); jungNodes.removeAll(activeNodes); for (MycoNode n : jungNodes) { graph.removeVertex(n); } // Update edges for (int i = 0; i < Network.size(); i++) { MycoNode n = (MycoNode) Network.get(i); HyphaData data = n.getHyphaData(); HyphaLink link = n.getHyphaLink(); synchronized (graph) { // We now add in all links and tune out display in Visualizer java.util.List<MycoNode> neighbors = (java.util.List<MycoNode>) link.getNeighbors(); //// Adding only links to hypha thins out links to biomass // (java.util.List<MycoNode>) link.getHyphae(); Collection<MycoNode> jungNeighbors = graph.getNeighbors(n); // Remove edges from Jung graph that are not in peersim graph for (MycoNode o : jungNeighbors) { if (!neighbors.contains(o)) { MycoEdge edge = graph.findEdge(n, o); while (edge != null) { graph.removeEdge(edge); edge = graph.findEdge(n, o); } } } // Add missing edges to Jung graph that are in peersim graph for (MycoNode o : neighbors) { if (graph.findEdge(n, o) == null) { MycoEdge edge = new MycoEdge(); graph.addEdge(edge, n, o, EdgeType.DIRECTED); } } } // log.finest("VERTICES: " + graph.getVertices()); // log.finest("EDGES: " + graph.getEdges()); } for (ChangeListener cl : changeListeners) { cl.stateChanged(new ChangeEvent(graph)); } if (walking) { try { Thread.sleep(walkDelay); } catch (InterruptedException e) { } stepBlocked = false; } try { while (stepBlocked && !noBlock) { synchronized (JungGraphObserver.class) { JungGraphObserver.class.wait(); } } } catch (InterruptedException e) { stepBlocked = true; } stepBlocked = true; // System.out.println(graph.toString()); return false; }