コード例 #1
0
ファイル: AndroidPlatform.cs プロジェクト: yard/NGraphics
 public void Transform(Transform transform)
 {
     var t = new Matrix();
       t.SetValues(new[]
       {
     (float) transform.A, (float) transform.C, (float) transform.E,
     (float) transform.B, (float) transform.D, (float) transform.F,
     0, 0, 1
       });
       t.PostConcat(graphics.Matrix);
       graphics.Matrix = t;
 }
コード例 #2
0
ファイル: NullPlatform.cs プロジェクト: yard/NGraphics
 public void Transform(Transform transform)
 {
 }
コード例 #3
0
ファイル: SvgReader.cs プロジェクト: yard/NGraphics
        Transform ReadTransform(string raw)
        {
            if (string.IsNullOrWhiteSpace(raw))
            return Transform.Identity;

            var s = raw.Trim();

            var calls = s.Split(new[] { ')' }, StringSplitOptions.RemoveEmptyEntries);

            var t = Transform.Identity;

            foreach (var c in calls)
            {
            var args = c.Split(new[] { '(', ',', ' ', '\t', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
            var nt = Transform.Identity;
            switch (args[0])
            {
                case "matrix":
                    if (args.Length == 7)
                    {
                        nt = new Transform(
                            _valuesParser.ReadNumber(args[1]),
                            _valuesParser.ReadNumber(args[2]),
                            _valuesParser.ReadNumber(args[3]),
                            _valuesParser.ReadNumber(args[4]),
                           _valuesParser.ReadNumber(args[5]),
                           _valuesParser.ReadNumber(args[6]));
                    }
                    else
                    {
                        throw new NotSupportedException("Matrices are expected to have 6 elements, this one has " + (args.Length - 1));
                    }
                    break;
                case "translate":
                    if (args.Length >= 3)
                    {
                        nt = Transform.Translate(new Size(_valuesParser.ReadNumber(args[1]), _valuesParser.ReadNumber(args[2])));
                    }
                    else if (args.Length >= 2)
                    {
                        nt = Transform.Translate(new Size(_valuesParser.ReadNumber(args[1]), 0));
                    }
                    break;
                case "scale":
                    if (args.Length >= 3)
                    {
                        nt = Transform.Scale(new Size(_valuesParser.ReadNumber(args[1]), _valuesParser.ReadNumber(args[2])));
                    }
                    else if (args.Length >= 2)
                    {
                        var sx = _valuesParser.ReadNumber(args[1]);
                        nt = Transform.Scale(new Size(sx, sx));
                    }
                    break;
                case "rotate":
                    var a = _valuesParser.ReadNumber(args[1]);
                    if (args.Length >= 4)
                    {
                        var x = _valuesParser.ReadNumber(args[2]);
                        var y = _valuesParser.ReadNumber(args[3]);
                        var t1 = Transform.Translate(new Size(x, y));
                        var t2 = Transform.Rotate(a);
                        var t3 = Transform.Translate(new Size(-x, -y));
                        nt = t1 * t2 * t3;
                    }
                    else
                    {
                        nt = Transform.Rotate(a);
                    }
                    break;
                default:
                    throw new NotSupportedException("Can't transform " + args[0]);
            }
            t = t * nt;
            }

            return t;
        }
コード例 #4
0
ファイル: ApplePlatform.cs プロジェクト: yard/NGraphics
 public void Transform(Transform transform)
 {
     context.ConcatCTM (new CGAffineTransform (
         (nfloat)transform.A, (nfloat)transform.B,
         (nfloat)transform.C, (nfloat)transform.D,
         (nfloat)transform.E, (nfloat)transform.F));
 }
コード例 #5
0
ファイル: GraphicCanvas.cs プロジェクト: yard/NGraphics
 public void Transform(Transform transform)
 {
     throw new NotImplementedException();
 }