private static int[][] getCoordinates(List<ShapeRecord> records) { int[][] coordinates = new int[records.size()][2]; ShapeRecord record; for(int i=0; i<records.size(); i++) { record = records.get(i); if (record instanceof StyleChangeRecord) { StyleChangeRecord scr = (StyleChangeRecord)record; coordinates[i][0] = scr.getMoveDeltaX(); coordinates[i][1] = scr.getMoveDeltaY(); } else if (record instanceof StraightEdgeRecord) { StraightEdgeRecord ser = (StraightEdgeRecord)record; coordinates[i][0] = coordinates[i-1][0] + ser.getDeltaX(); coordinates[i][1] = coordinates[i-1][1] + ser.getDeltaY(); } else if (record instanceof CurvedEdgeRecord) { CurvedEdgeRecord cer = (CurvedEdgeRecord)record; coordinates[i][0] = coordinates[i-1][0] + cer.getControlDeltaX() + cer.getAnchorDeltaX(); coordinates[i][1] = coordinates[i-1][1] + cer.getControlDeltaY() + cer.getAnchorDeltaY(); } } return coordinates; }
private static int[][] getCoordinates(List<ShapeRecord> records) { int[][] coordinates = new int[records.size()][2]; ShapeRecord record; for(int i=0; i<records.size(); i++) { record = records.get(i); if (record instanceof StyleChangeRecord) { StyleChangeRecord scr = (StyleChangeRecord)record; coordinates[i][0] = scr.getMoveDeltaX(); coordinates[i][1] = scr.getMoveDeltaY(); } else if (record instanceof StraightEdgeRecord) { StraightEdgeRecord ser = (StraightEdgeRecord)record; coordinates[i][0] = coordinates[i-1][0] + ser.getDeltaX(); coordinates[i][1] = coordinates[i-1][1] + ser.getDeltaY(); } else if (record instanceof CurvedEdgeRecord) { CurvedEdgeRecord cer = (CurvedEdgeRecord)record; coordinates[i][0] = coordinates[i-1][0] + cer.getControlDeltaX() + cer.getAnchorDeltaX(); coordinates[i][1] = coordinates[i-1][1] + cer.getControlDeltaY() + cer.getAnchorDeltaY(); } } return coordinates; }
out.println("<line dx=\"" + straightEdge.getDeltaX() + "\" dy=\"" + straightEdge.getDeltaY() + "\" />");
out.println("<line dx=\"" + straightEdge.getDeltaX() + "\" dy=\"" + straightEdge.getDeltaY() + "\" />");
/** * @see SWFReader#readStraightEdgeRecord */ private void writeStraightEdgeRecord(StraightEdgeRecord shape) { tagBuffer.writeBit(true); // This is an edge. Always 1. tagBuffer.writeBit(true); // StraightFlag is always true. int numBits = shape.getNumBits(); tagBuffer.writeUB(numBits, 4); switch (shape.getLineType()) { case GENERAL: tagBuffer.writeBit(true); tagBuffer.writeSB(shape.getDeltaX(), numBits + 2); tagBuffer.writeSB(shape.getDeltaY(), numBits + 2); break; case VERTICAL: tagBuffer.writeBit(false); tagBuffer.writeBit(true); tagBuffer.writeSB(shape.getDeltaY(), numBits + 2); break; case HORIZONTAL: tagBuffer.writeBit(false); tagBuffer.writeBit(false); tagBuffer.writeSB(shape.getDeltaX(), numBits + 2); break; } }
/** * @see SWFReader#readStraightEdgeRecord */ private void writeStraightEdgeRecord(StraightEdgeRecord shape) { tagBuffer.writeBit(true); // This is an edge. Always 1. tagBuffer.writeBit(true); // StraightFlag is always true. int numBits = shape.getNumBits(); tagBuffer.writeUB(numBits, 4); switch (shape.getLineType()) { case GENERAL: tagBuffer.writeBit(true); tagBuffer.writeSB(shape.getDeltaX(), numBits + 2); tagBuffer.writeSB(shape.getDeltaY(), numBits + 2); break; case VERTICAL: tagBuffer.writeBit(false); tagBuffer.writeBit(true); tagBuffer.writeSB(shape.getDeltaY(), numBits + 2); break; case HORIZONTAL: tagBuffer.writeBit(false); tagBuffer.writeBit(false); tagBuffer.writeSB(shape.getDeltaX(), numBits + 2); break; } }
private static Point getTangent(ShapeRecord curSegment, boolean start, int x, int y) { Point tangentPoint = new Point(); Point pt0 = new Point(x, y); if (curSegment instanceof StraightEdgeRecord) { Point pt1 = new Point(x+((StraightEdgeRecord)curSegment).getDeltaX(), y+((StraightEdgeRecord)curSegment).getDeltaY()); tangentPoint.x = pt1.x - pt0.x; tangentPoint.y = pt1.y - pt0.y; } else if (curSegment instanceof CurvedEdgeRecord) { Point pt1 = new Point(x+((CurvedEdgeRecord)curSegment).getControlDeltaX(), y+((CurvedEdgeRecord)curSegment).getControlDeltaY()); Point pt2 = new Point(pt1.x+((CurvedEdgeRecord)curSegment).getAnchorDeltaX(), pt1.y+((CurvedEdgeRecord)curSegment).getAnchorDeltaY()); tangentPoint = getQTangent(pt0.x, pt0.y, pt1.x, pt1.y, pt2.x, pt2.y, start); } return tangentPoint; }
private static Point getTangent(ShapeRecord curSegment, boolean start, int x, int y) { Point tangentPoint = new Point(); Point pt0 = new Point(x, y); if (curSegment instanceof StraightEdgeRecord) { Point pt1 = new Point(x+((StraightEdgeRecord)curSegment).getDeltaX(), y+((StraightEdgeRecord)curSegment).getDeltaY()); tangentPoint.x = pt1.x - pt0.x; tangentPoint.y = pt1.y - pt0.y; } else if (curSegment instanceof CurvedEdgeRecord) { Point pt1 = new Point(x+((CurvedEdgeRecord)curSegment).getControlDeltaX(), y+((CurvedEdgeRecord)curSegment).getControlDeltaY()); Point pt2 = new Point(pt1.x+((CurvedEdgeRecord)curSegment).getAnchorDeltaX(), pt1.y+((CurvedEdgeRecord)curSegment).getAnchorDeltaY()); tangentPoint = getQTangent(pt0.x, pt0.y, pt1.x, pt1.y, pt2.x, pt2.y, start); } return tangentPoint; }
x = x + ser.getDeltaX(); y = y + ser.getDeltaY();
x = x + ser.getDeltaX(); y = y + ser.getDeltaY();