private void ProcessModifyWorldTransform(byte[] recordData) { MemoryStream _ms = null; BinaryReader _br = null; try { _ms = new MemoryStream(recordData); _br = new BinaryReader(_ms); var eM11 = _br.ReadSingle(); var eM12 = _br.ReadSingle(); var eM21 = _br.ReadSingle(); var eM22 = _br.ReadSingle(); var eDx = _br.ReadSingle(); var eDy = _br.ReadSingle(); var iMode = (EmfTransformMode)_br.ReadInt32(); using (var matrix = new SVG.Gaps.Matrix(eM11, eM12, eM21, eM22, eDx, eDy)) { switch (iMode) { case EmfTransformMode.MWT_IDENTITY: _transform = new SVG.Gaps.Matrix(); break; case EmfTransformMode.MWT_LEFTMULTIPLY: _transform.Multiply(matrix, MatrixOrder.Append /* TODO: is it the correct order? */); break; case EmfTransformMode.MWT_RIGHTMULTIPLY: _transform.Multiply(matrix, MatrixOrder.Prepend /* TODO: is it the correct order? */); break; default: throw new NotImplementedException(); } } System.Diagnostics.Debug.Assert(_ms.Position == _ms.Length); } finally { _br?.Close(); _ms?.Dispose(); } }
public void EnumerateMetafile(Stream emf, float unitSize, PointF destination, DrawLineDelegate drawLine, FillPolygonDelegate fillPolygon) { _transform = new SVG.Gaps.Matrix(); _drawLine = drawLine; _fillPolygon = fillPolygon; _zero = destination; _lineBuffer = new LineBuffer(unitSize); _objects = new Dictionary <uint, ObjectHandle>(); _brush = null; using (var reader = new EmfTools.EmfReader(emf)) { while (!reader.IsEndOfFile) { if (reader.Read() is EmfTools.EmfUnknownRecord record) { Enumerate(record); } } } CommitLine(); }
public SvgTransformList(SVG.Gaps.Matrix m) { var tr = new SvgTransform(m); _t.Add(tr); }