public virtual void encodeShape(Shape s, SwfEncoder w, int shape, int nFillStyles, int nLineStyles) { int[] numFillBits = new int[]{SwfEncoder.minBits(nFillStyles, 0)}; int[] numLineBits = new int[]{SwfEncoder.minBits(nLineStyles, 0)}; w.writeUBits(numFillBits[0], 4); w.writeUBits(numLineBits[0], 4); System.Collections.IEnumerator it = s.shapeRecords.GetEnumerator(); //UPGRADE_TODO: Method 'java.util.Iterator.hasNext' was converted to 'System.Collections.IEnumerator.MoveNext' which has a different behavior. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1073_javautilIteratorhasNext'" while (it.MoveNext()) { //UPGRADE_TODO: Method 'java.util.Iterator.next' was converted to 'System.Collections.IEnumerator.Current' which has a different behavior. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1073_javautilIteratornext'" ShapeRecord record = (ShapeRecord) it.Current; if (record is StyleChangeRecord) { // style change w.writeBit(false); StyleChangeRecord change = (StyleChangeRecord) record; encodeStyleChangeRecord(w, change, numFillBits, numLineBits, shape); } else { // edge w.writeBit(true); EdgeRecord e = (EdgeRecord) record; bool straight = e is StraightEdgeRecord; w.writeBit(straight); int nbits = straight?calcBits((StraightEdgeRecord) e):calcBits((CurvedEdgeRecord) e); if (nbits < 2) nbits = 2; w.writeUBits(nbits - 2, 4); if (straight) { // line StraightEdgeRecord line = (StraightEdgeRecord) e; encodeStraightEdgeRecord(line, w, nbits); } else { // curve CurvedEdgeRecord curve = (CurvedEdgeRecord) e; w.writeSBits(curve.controlDeltaX, nbits); w.writeSBits(curve.controlDeltaY, nbits); w.writeSBits(curve.anchorDeltaX, nbits); w.writeSBits(curve.anchorDeltaY, nbits); } } } // endshaperecord w.writeUBits(0, 6); w.flushBits(); }
private void encodeStyleChangeRecord(SwfEncoder w, StyleChangeRecord s, int[] numFillBits, int[] numLineBits, int shape) { w.writeBit(s.stateNewStyles); w.writeBit(s.stateLineStyle); w.writeBit(s.stateFillStyle1); w.writeBit(s.stateFillStyle0); w.writeBit(s.stateMoveTo); if (s.stateMoveTo) { int moveBits = s.nMoveBits(); w.writeUBits(moveBits, 5); w.writeSBits(s.moveDeltaX, moveBits); w.writeSBits(s.moveDeltaY, moveBits); } if (s.stateFillStyle0) { w.writeUBits(s.fillstyle0, numFillBits[0]); } if (s.stateFillStyle1) { w.writeUBits(s.fillstyle1, numFillBits[0]); } if (s.stateLineStyle) { w.writeUBits(s.linestyle, numLineBits[0]); } if (s.stateNewStyles) { w.flushBits(); encodeFillstyles(s.fillstyles, w, shape); encodeLinestyles(s.linestyles, w, shape); numFillBits[0] = SwfEncoder.minBits(s.fillstyles.Count, 0); numLineBits[0] = SwfEncoder.minBits(s.linestyles.Count, 0); w.writeUBits(numFillBits[0], 4); w.writeUBits(numLineBits[0], 4); } }
private void encodeCxform(CXForm cxform, SwfEncoder w) { w.writeBit(cxform.hasAdd); w.writeBit(cxform.hasMult); int nbits = cxform.nbits(); w.writeUBits(nbits, 4); if (cxform.hasMult) { w.writeSBits(cxform.redMultTerm, nbits); w.writeSBits(cxform.greenMultTerm, nbits); w.writeSBits(cxform.blueMultTerm, nbits); } if (cxform.hasAdd) { w.writeSBits(cxform.redAddTerm, nbits); w.writeSBits(cxform.greenAddTerm, nbits); w.writeSBits(cxform.blueAddTerm, nbits); } w.flushBits(); }
private void encodeMatrix(Matrix matrix, SwfEncoder w) { w.writeBit(matrix.hasScale); if (matrix.hasScale) { int nScaleBits = matrix.nScaleBits(); w.writeUBits(nScaleBits, 5); w.writeSBits(matrix.scaleX, nScaleBits); w.writeSBits(matrix.scaleY, nScaleBits); } w.writeBit(matrix.hasRotate); if (matrix.hasRotate) { int nRotateBits = matrix.nRotateBits(); w.writeUBits(nRotateBits, 5); w.writeSBits(matrix.rotateSkew0, nRotateBits); w.writeSBits(matrix.rotateSkew1, nRotateBits); } int nTranslateBits = matrix.nTranslateBits(); w.writeUBits(nTranslateBits, 5); w.writeSBits(matrix.translateX, nTranslateBits); w.writeSBits(matrix.translateY, nTranslateBits); w.flushBits(); }
private void encodeCxforma(CXFormWithAlpha cxforma, SwfEncoder w) { w.writeBit(cxforma.hasAdd); w.writeBit(cxforma.hasMult); int nbits = cxforma.nbits(); w.writeUBits(nbits, 4); if (cxforma.hasMult) { w.writeSBits(cxforma.redMultTerm, nbits); w.writeSBits(cxforma.greenMultTerm, nbits); w.writeSBits(cxforma.blueMultTerm, nbits); w.writeSBits(cxforma.alphaMultTerm, nbits); } if (cxforma.hasAdd) { w.writeSBits(cxforma.redAddTerm, nbits); w.writeSBits(cxforma.greenAddTerm, nbits); w.writeSBits(cxforma.blueAddTerm, nbits); w.writeSBits(cxforma.alphaAddTerm, nbits); } w.flushBits(); }
public virtual void encodeRect(Rect r, SwfEncoder w) { int nBits = r.nbits(); w.writeUBits(nBits, 5); w.writeSBits(r.xMin, nBits); w.writeSBits(r.xMax, nBits); w.writeSBits(r.yMin, nBits); w.writeSBits(r.yMax, nBits); w.flushBits(); }
private void encodeTextRecord(TextRecord record, SwfEncoder w, int type, int glyphBits, int advanceBits) { w.writeUI8(record.flags); if (record.hasFont()) { w.writeUI16(dict.getId(record.font)); } if (record.hasColor()) { if (type == flash.swf.TagValues_Fields.stagDefineText2) encodeRGBA(record.color, w); else encodeRGB(record.color, w); } if (record.hasX()) { w.writeSI16(record.xOffset); } if (record.hasY()) { w.writeSI16(record.yOffset); } if (record.hasHeight()) { w.writeUI16(record.height); } w.writeUI8(record.entries.Length); for (int i = 0; i < record.entries.Length; i++) { w.writeUBits(record.entries[i].Index, glyphBits); w.writeSBits(record.entries[i].advance, advanceBits); } w.flushBits(); }