Esempio n. 1
0
            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();
                }
            }
Esempio n. 2
0
            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();
            }
Esempio n. 3
0
        public SvgTransformList(SVG.Gaps.Matrix m)
        {
            var tr = new SvgTransform(m);

            _t.Add(tr);
        }