Revert "Bug 12212 fixed: Export a polyline in 2D broke it into several segments"
[scilab.git] / scilab / modules / scirenderer / src / org / scilab / forge / scirenderer / implementation / g2d / motor / PolyLine.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2012 - Scilab Enterprises - Calixte Denizet
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10  */
11
12 package org.scilab.forge.scirenderer.implementation.g2d.motor;
13
14 import java.awt.*;
15 import java.awt.Color;
16 import java.awt.Graphics2D;
17 import java.util.ArrayList;
18 import java.util.List;
19 import org.scilab.forge.scirenderer.implementation.g2d.*;
20
21 import org.scilab.forge.scirenderer.tranformations.Vector3d;
22
23 /**
24  * @author Calixte DENIZET
25  */
26 public class PolyLine {
27     /* extends AbstractDrawable3DObject {
28
29     private boolean monochromatic;
30     private Stroke stroke;
31     private Shape clip;
32
33     public PolyLine(Vector3d[] vertices, Color[] colors, Stroke stroke, Shape clip) throws InvalidPolygonException {
34     super(vertices, colors);
35     this.monochromatic = isMonochromatic(colors);
36     this.stroke = stroke;
37     this.clip = clip;
38     }
39
40     @Override
41     protected Path2D getProjectedPolyLine() {
42     int i;
43     Path2D.Double path = new Path2D.Double();
44
45     // Trim on the left
46     for (i = 0; i < vertices.length; i++) {
47     if (!AbstractDrawable3DObject.isNanOrInf(vertices[i])) {
48     break;
49     }
50     }
51
52     if (i < vertices.length) {
53     path.moveTo(vertices[i].getX(), vertices[i].getY());
54     i++;
55     boolean broken = false;
56     for (; i < vertices.length; i++) {
57     if (AbstractDrawable3DObject.isNanOrInf(vertices[i])) {
58     if (!broken) {
59     broken = true;
60     }
61     } else {
62     if (broken) {
63     broken = false;
64     path.moveTo(vertices[i].getX(), vertices[i].getY());
65     } else {
66     path.lineTo(vertices[i].getX(), vertices[i].getY());
67     }
68     }
69     }
70     }
71
72     return path;
73     }
74
75     public void draw(Graphics2D g2d) {
76     Shape oldClip = g2d.getClip();
77     Stroke oldStroke = g2d.getStroke();
78
79     g2d.clip(clip);
80
81     if (monochromatic) {
82     g2d.setColor(colors[0]);
83     g2d.setStroke(stroke);
84     g2d.draw(getProjectedPolyLine());
85     } else {
86     Vector3D start = null;
87     Color color = null;
88     double cumLen = 0;
89     float[] dashArray = stroke.getDashArray();
90     float lwidth = stroke.getLineWidth();
91     for (int i = 0; i < vertices.length; i++) {
92     if (AbstractDrawable3DObject.isNanOrInf(vertices[i])) {
93     start = null;
94     } else {
95     if (start == null) {
96     start = vertices[i];
97     color = colors[i];
98     } else {
99     Stroke nstroke = new G2DStroke(lwidth, dashArray, cumLen);
100     g2d.setStroke(nstroke);
101     g2d.setColor(color);
102     g2d.draw(new Line2D.Double(start.getX(), start.getY(), vertices[i].getX(), vertices[i].getY()));
103     cumLen += Math.hypot(start.getX() - vertices[i].getX(), start.getY() - vertices[i].getY());
104     }
105     }
106     }
107     }
108
109     g2d.setClip(oldClip);
110     g2d.setStroke(oldStroke);
111     }*/
112 }