// Arc.java // Function block for block diagram animation // import java.awt.*; public class Arc implements DrawingObj { int x[], y[]; // Position of Arc int width; // Width of Arc boolean plus, sumPoint; // plus/minus sign towards SummingPoints boolean PaintMove; Color cur_colour; int cnt, max; FunctionBlock fbk; LabelledBox lb; SummingPoint spt; Node start, end; // Start and end of each Arc public Arc( int width, boolean plus, boolean sumPoint,Node start, Node end ) { this.width = width; //w = width; this.plus = plus; this.sumPoint = sumPoint; cur_colour = Color.green; max =4 ; x = new int[ max ]; y = new int[ max ]; cnt = 0; this.start = start; this.end = end; } public void setColour(Color c) { cur_colour = c; } Node getStart() { return start; } void setStart( Node start ) { this.start = start; } Node getEnd() { return end; } void setEnd( Node start ) { this.start = start; } public void addPoint( int x, int y ) { if ( cnt < max ) { this.x[cnt] = x; this.y[cnt] = y; cnt++; } else { // Create a larger array and copy the old points } } public void move (int x, int y) { int i, dx, dy; dx = x - this.x[0]; dy = y - this.y[0]; for ( i = 0; i < cnt; i++ ) { this.x[i] = this.x[i] + dx; this.y[i] = this.y[i] + dy; } } public void moveOffset (int dx, int dy) { int i; for ( i = 0; i < cnt; i++ ) { this.x[i] = this.x[i] + dx ; this.y[i] = this.y[i] + dy ; } } public int getX() { return x[0]; } public int getY() { return y[0]; } public void draw( Graphics g ) { int lx, ly, lx2, ly2, last_dirn, j, i; int arrowx_i, arrowx_j, arrowx_k; int arrowy_i, arrowy_j, arrowy_k; Dimension start_pt; String p_or_m; g.setColor( cur_colour ); g.drawPolyline( x, y, cnt ); lx = x[cnt-1]; ly = y[cnt-1]; lx2 = x[cnt-2]; ly2 = y[cnt-2]; //Draw arrow head // initialized direction to point right last_dirn = -1; i = -10; j = 13; // Refining position of + / - sign arrowx_i = -5; arrowx_j = -5; arrowx_k = 0; arrowy_i = -5; arrowy_j = 5; arrowy_k = 0; //Pointing Left if ((ly == ly2) && (lx2 > lx)) { last_dirn = 1; i = 5; arrowx_i = 5; arrowx_j = 5; arrowx_k = 0; arrowy_i = -5; arrowy_j = 5; arrowy_k = 0; } //Pointing Up else if ((lx == lx2) && (ly2 > ly)) { last_dirn = 2; i = 5; arrowx_i = -5; arrowx_j = 5; arrowx_k = 0; arrowy_i = 5; arrowy_j = 5; arrowy_k = 0; } //Pointing Down else if ((lx == lx2) && (ly2 < ly)) { last_dirn = -2; j = -5; arrowx_i = -5; arrowx_j = 5; arrowx_k = 0; arrowy_i = -5; arrowy_j = -5; arrowy_k = 0; } Object s_pt = end.getObject(); start_pt = ((DrawingObj)s_pt).getLimit( last_dirn ); int[] arrowx = {start_pt.width + arrowx_i, start_pt.width + arrowx_j, start_pt.width + arrowx_k}; int[] arrowy = {start_pt.height + arrowy_i, start_pt.height + arrowy_j, start_pt.height + arrowy_k}; g.fillPolygon(arrowx, arrowy, 3); g.setColor( Color.black ); if (sumPoint) { if ( plus ) { p_or_m = "+"; } else { p_or_m = "-"; } g.drawString( p_or_m, start_pt.width+i, start_pt.height+j ); } } public Dimension getLimit( int dirn ) { return new Dimension( 0, 0 ); } }
最近下载更多
姜广坤 LV14
2022年5月20日
wwykerwin LV1
2022年3月22日
2196316269 LV10
2021年2月25日
safeqd2186 LV3
2020年12月12日
zzhsq2008 LV1
2020年9月10日
来水代码 LV1
2020年7月3日
才阿虎 LV1
2020年4月6日
wsk588 LV26
2020年1月15日
走你個魯 LV21
2020年1月13日
睡谷的传说 LV6
2019年12月30日
最近浏览更多
张言昊 LV9
2022年11月17日
姜广坤 LV14
2022年5月20日
wwykerwin LV1
2022年3月22日
你脚上银铃响了 LV1
2021年10月27日
sfyzjc LV2
2021年10月22日
xiaoluoaaa LV8
2021年10月13日
蔡 LV10
2021年6月12日
2196316269 LV10
2021年2月24日
少年迟暮
2021年1月25日
暂无贡献等级
safeqd2186 LV3
2020年12月12日