📄 ganttxfigsaver.java
字号:
boxObject.sub_type = 2; // box boxObject.npoints = 5; } else { boxObject.sub_type = 3; // polygon boxObject.npoints = 7; } boxObject.depth = depthval; if (!isLeaf) boxObject.depth -= 2; // ????? // See BoxObject class for other default values // Construct box corners float boxLen = Math.max(1.0f, (task.getLength()) * scale); float boxLenPct = Math.max(1.0f, boxLen * task.getCompletionPercentage() / 100.0f); float boxHeight = 1200.0f / 8.0f; float pLo = boxHeight * 0.25f; float pHi = boxHeight * 0.75f; float[] pointsPct = { 0, pLo, boxLenPct, pLo, boxLenPct, pHi, 0, pHi, 0, pLo }; if (boxObject.sub_type == 2) { boxObject.points = new float[10]; boxObject.points[0] = 0; boxObject.points[1] = 0; boxObject.points[2] = boxLen; boxObject.points[3] = 0; boxObject.points[4] = boxLen; boxObject.points[5] = boxHeight; boxObject.points[6] = 0; boxObject.points[7] = boxHeight; boxObject.points[8] = 0; boxObject.points[9] = 0; } else { float boxLo = boxHeight / 4; boxObject.points = new float[14]; boxObject.points[0] = 0; boxObject.points[1] = boxHeight; boxObject.points[2] = 0; boxObject.points[3] = 0; boxObject.points[4] = boxLen; boxObject.points[5] = 0; boxObject.points[6] = boxLen; boxObject.points[7] = boxHeight; // top bow boxObject.points[8] = boxLen; boxObject.points[9] = boxLo; boxObject.points[10] = 0; boxObject.points[11] = boxLo; boxObject.points[10] = 0; boxObject.points[13] = boxHeight; } int blen = boxObject.points.length; // shift to this row float xShift = 0; float yShift = 1200.0f * 0.25f * ((float) number + 4) + 1200.0f / 16.0f; /* * boxObject.points(2:2:blen) += yShift; boxObject.points(1:2:blen) += * xShift; */ for (int i = 1; i < blen; i += 2) boxObject.points[i] += yShift; for (int i = 0; i < blen; i += 2) boxObject.points[i] += xShift; // pointsPct(2:2:10) += yShift; // pointsPct(1:2:9) += xShift; // boxObjectPct = boxObject; // percent completed // boxObjectPct.points = pointsPct; // boxObjectPct.npoints = 5; // boxObjectPct.area_fill = 20; // boxObjectPct.fill_color = 0; // shift boxes by start date /* boxObject.points(1:2:blen) += task.start*boxScale; */ for (int i = 0; i < blen; i += 2) boxObject.points[i] += task.getStart().diff(dateShift) * scale; // boxObjectPct.points(1:2:9) += task.start*boxScale; // now shift again by text width (must be calculated and set in // task.boxindent) /* boxObject.points(1:2:blen) += task.boxindent; */ for (int i = 0; i < blen; i += 2) boxObject.points[i] += fTtextwidth + 120; // boxObjectPct.points(1:2:9) += task.boxindent; // boxObjectPct.depth--; // fix angle brackets in polygon object /* * if(boxObject.sub_type == 3) { angwid = min(60,boxLen/2); * boxObject.points([9,11]) += [-angwid,angwid]; } */ if (boxObject.sub_type == 3) { float angwid = Math.min(60, boxLen / 2); boxObject.points[9] += -angwid; boxObject.points[11] += angwid; } return boxObject; } /** Draw the list of tasks. */ public void drawTasks(OutputStreamWriter fout) throws IOException { try { if (debug) System.out.println("drawTasks begin"); // loop on tasks int i = 0; for (Iterator it = lot.iterator(); it.hasNext();) { DefaultMutableTreeNode node = ((DefaultMutableTreeNode) it .next()); // get the task if (!node.isRoot()) { GanttTask task = (GanttTask) (node.getUserObject()); TextObject txtObj = (TextObject) (atl.get(i)); BoxObject boxObject = (BoxObject) (abl.get(i)); // print the text of the task drawtext(fout, txtObj); // print the box of the task drawbox(fout, boxObject); // print the percent complete // print relations // update index i++; } } if (debug) System.out.println("drawTasks end"); } catch (Exception e) { System.out.println(e); } } /** Draw text for the taskObject. */ public void drawtext(OutputStreamWriter fout, TextObject txtObj) throws IOException { if (debug) System.out.println("drawtext begin"); fout.write("4 "); fout.write(txtObj.sub_type + " "); fout.write(txtObj.color + " "); fout.write(txtObj.depth + " "); fout.write(txtObj.pen_style + " "); fout.write(txtObj.font + " "); fout.write(txtObj.font_size + " "); fout.write(txtObj.angle + " "); fout.write(txtObj.font_flags + " "); fout.write(txtObj.height + " " + txtObj.length + " "); fout.write(txtObj.x + " " + txtObj.y + " "); fout.write(txtObj.str + "\\001\n"); if (debug) System.out.println("drawtext end"); } /** draw the box of the task. */ public void drawbox(OutputStreamWriter fout, BoxObject boxObject) throws IOException { if (debug) System.out.println("drawbox begin"); // draw an xfig box object; fout.write("2 "); fout.write(boxObject.sub_type + " "); fout.write(boxObject.line_style + " "); fout.write(boxObject.thickness + " "); fout.write(boxObject.pen_color + " "); fout.write(boxObject.fill_color + " "); fout.write(boxObject.depth + " "); fout.write(boxObject.pen_style + " "); fout.write(boxObject.area_fill + " "); fout.write(" " + boxObject.style_val + " "); fout.write(boxObject.join_style + " "); fout.write(boxObject.cap_style + " "); fout.write(boxObject.radius + " "); fout.write(boxObject.forward_arrow + " "); fout.write(boxObject.backward_arrow + " "); fout.write(boxObject.npoints + "\n\t"); int arrow_type = 1; int arrow_style = 1; float arrow_thickness = 1.00f; float arrow_width = 60.0f; float arrow_height = 60.0f; if (boxObject.sub_type == 3) { if (boxObject.forward_arrow != 0) { System.out.println("forward"); fout.write(" " + (int) arrow_type + " " + (int) arrow_style + " " + (int) arrow_thickness + (int) arrow_width + " " + (int) arrow_height + "\n"); } if (boxObject.backward_arrow != 0) { fout.write(" " + (int) arrow_type + " " + (int) arrow_style + " " + (int) arrow_thickness + (int) arrow_width + " " + (int) arrow_height + "\n"); System.out.println("back"); } } for (int i = 0; i < boxObject.points.length; i++) fout.write((int) (boxObject.points[i]) + " "); fout.write("\n"); if (debug) System.out.println("drawbox end"); } /** Draw the axes. */ public void labelAxes(OutputStreamWriter fout) { // TODO write this method if (debug) System.out.println("labelAxes begin"); if (debug) System.out.println("labelAxes end"); } /** @return a color as a string like #00FF00 for green color. */ private String getHexaColor(Color color) { if (debug) System.out.println("getHexaColor begin"); String sColor = "#"; // result string if (color.getRed() <= 15) sColor += "0"; sColor += Integer.toHexString(color.getRed()); if (color.getGreen() <= 15) sColor += "0"; sColor += Integer.toHexString(color.getGreen()); if (color.getBlue() <= 15) sColor += "0"; sColor += Integer.toHexString(color.getBlue()); if (debug) System.out.println("getHexaColor end"); return sColor; } /** Class to store text informations. */ private class TextObject { int sub_type; int color; int depth; int pen_style; int font; float font_size; float angle; int font_flags; float height; float length; int x; int y; String str = ""; } /** Class to store box informations. */ private class BoxObject { int code = 2; // polyline always int npoints; int sub_type; int fill_color = 1; // blue color by default /* * case ("Black"), boxObject.fill_color = 0; case ("Blue"), * boxObject.fill_color = 1; case ("Green"), boxObject.fill_color = 2; * case ("Cyan"), boxObject.fill_color = 3; case ("Red"), * boxObject.fill_color = 4; case ("Magenta"), boxObject.fill_color = 5; * case ("Yellow"), boxObject.fill_color = 6; case ("White"), * boxObject.fill_color = 7; */ int line_style = 0; int thickness = 1; int pen_color = 0; int depth; int pen_style = 0; int area_fill = 20; int style_val = 0; int join_style = 0; int cap_style = 0; int radius = 0; int forward_arrow = 0; int backward_arrow = 0; float[] points; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -