public void buildOutlinesFromAWTShape(Shape awtShape){
PathIterator iter = awtShape.getPathIterator(null);
//PathIterator iter = gPath.getPathIterator(null);
SketchOutline sktOutline = new SketchOutline(this.getParentSketch());
float coords[] = new float[6];
// System.out.println("before");
SketchPoint prevVec = null;
while (!iter.isDone()) {
switch (iter.currentSegment(coords)) {
case PathIterator.SEG_MOVETO: // 1 point (2 vars) in coords
this.sketchOutlines.add(sktOutline);
sktOutline = new SketchOutline(this.getParentSketch());
sktOutline.getPath().add(new SketchPoint(coords[0], coords[1]));
//System.out.println("newSketch");
break;
case PathIterator.SEG_LINETO: // 1 point
// System.out.println( "SEG_LINETO " + coords[0]+" "+coords[1]);
sktOutline.getPath().add(new SketchPoint(coords[0], coords[1]));
break;
case PathIterator.SEG_QUADTO: // 2 points
//System.out.println("QUAD");
break;
case PathIterator.SEG_CUBICTO: // 3 points
prevVec = sktOutline.getPath().getLast();
SketchPoint newVec = new SketchPoint(coords[4], coords[5]);
//SketchPoint preVecBez1 = (SketchPoint) sktOutline.path.get(sktOutline.path.size()-2);
//SketchPoint preVecBez2 = (SketchPoint) sktOutline.path.get(sktOutline.path.size()-1);
Vec2D controlNodeBack = new Vec2D(coords[0], coords[1]);
Vec2D controlNodeFoward = new Vec2D(coords[2], coords[3]);
//System.out.println("new back:"+newVec+":" + controlNodeBack + " : foward" + prevVec+":" + controlNodeFoward);
newVec.controlPoint1 = controlNodeFoward;
if (prevVec != null) {
prevVec.controlPoint2 = controlNodeBack;
sktOutline.getPath().set(sktOutline.getPath().size() - 1,
prevVec);
}
sktOutline.getPath().add(newVec);
//#IF JAVA
/*
if(preVecBez1.containsBezier()){
preVecBez1.controlPoint2 = new Vec2D(controlNodeBack.x,controlNodeBack.y);
}else{
bezier = new BezierControlNode(new Vec2D(preVecBez1.x,preVecBez1.y),controlNodeBack);
// sktOutline.path.addBezier(preVecBez1, bezier);
}
if(preVecBez2.containsBezier()){
preVecBez2.controlPoint1 = new Vec2D(controlNodeFoward.x,controlNodeFoward.y);
}else{
bezier = new BezierControlNode(new Vec2D(controlNodeFoward.x,controlNodeFoward.y),controlNodeFoward);
// sktOutline.path.addBezier(preVecBez2, bezier);
}
if(preVecBez2.containsBezier()){
// BezierControlNode prevControleNode = (BezierControlNode) sktOutline.path.bezierPoints.get(preVecBez2);
// prevControleNode.c2.x = controlNodeFoward.x;
// prevControleNode.c2.x = controlNodeFoward.y;
}else{
// BezierControlNode bezierPrev = new BezierControlNode(new Vec2D(preVecBez2.x,preVecBez2.y),controlNodeFoward);
//sktOutline.path.addBezier(preVecBez2, bezierPrev);
}
*/
//#ENDIF JAVA
break;
case PathIterator.SEG_CLOSE:
// System.out.println("CLOSE");
break;
}
iter.next();
}
this.sketchOutlines.add(sktOutline);
//this.sketchOutlines.optimize();