Example #1
0
        public void Process(IPreScriptState state)
        {
            var y = (state.Stack.Pop() as Number).Value;
            var x = (state.Stack.Pop() as Number).Value;

            g.MoveTo(x, y);
        }
Example #2
0
        public void Process(IPreScriptState state)
        {
            int j;

            if (!(state.Stack.Pop() as Number).CheckInteger(out j))
            {
                throw new InvalidOperationException("J parameter should be integer");
            }

            int n;

            if (!(state.Stack.Pop() as Number).CheckInteger(out n))
            {
                throw new InvalidOperationException("N parameter should be integer");
            }

            int top    = state.Stack.Count - 1;
            int bottom = top - n + 1;

            if (j > 0)
            {
                for (int k = 0; k < j; k++)
                {
                    state.Stack.InsertAt(bottom, state.Stack.Pop());
                }
            }
            else
            {
                for (int k = j; k < 0; k++)
                {
                    state.Stack.Push(state.Stack.RemoveAt(bottom));
                }
            }
        }
Example #3
0
        public void Process(IPreScriptState state)
        {
            var b = state.Stack.Pop();
            var a = state.Stack.Pop();

            state.Stack.Push(new Data <bool>(!a.Equals(b)));
        }
Example #4
0
        public void Process(IPreScriptState state)
        {
            var argument = state.Stack.Pop();

            var number = argument as Number;

            if (number != null)
            {
                int n;
                if (!number.CheckInteger(out n))
                {
                    throw new InvalidOperationException("N parameter should be integer");
                }

                int top = state.Stack.Count - 1;
                for (int i = top - n + 1; i <= top; i++)
                {
                    state.Stack.Push(state.Stack[i]);
                }
            }
            else
            {
                throw new NotImplementedException();
            }
        }
Example #5
0
        public void Process(IPreScriptState state)
        {
            var b = (state.Stack.Pop() as Data <bool>).Value;
            var a = (state.Stack.Pop() as Data <bool>).Value;

            state.Stack.Push(new Data <bool>(a || b));
        }
Example #6
0
 public void Process(IPreScriptState state)
 {
     foreach (var operation in Operations.Reverse())
     {
         state.ExecStack.Push(operation);
     }
 }
Example #7
0
        public void Process(IPreScriptState state)
        {
            var b = (state.Stack.Pop() as Number).Value;
            var a = (state.Stack.Pop() as Number).Value;

            state.Stack.Push(new Number(a + b));
        }
Example #8
0
        public void Process(IPreScriptState state)
        {
            var operation  = state.Stack.Pop();
            var identifier = state.Stack.Pop() as Identifier;

            state.DictStack.Peek(0)[identifier.Name] = operation;
        }
Example #9
0
        public void Process(IPreScriptState state)
        {
            var array = new List <IOperation>();

            int deep = 1;

            while (true)
            {
                var item = state.ExecStack.Pop();

                if (item is OpenCodeMarker)
                {
                    deep++;
                }
                else if (item is CloseCodeMarker)
                {
                    if (deep == 1)
                    {
                        state.Stack.Push(new Execute(array));
                        break;
                    }

                    deep--;
                }

                array.Add(item);
            }
        }
Example #10
0
        public void Process(IPreScriptState state)
        {
            var dy = (state.Stack.Pop() as Number).Value;
            var dx = (state.Stack.Pop() as Number).Value;

            g.LineTo(g.CurrentX + dx, g.CurrentY + dy);
        }
Example #11
0
        public void Process(IPreScriptState state)
        {
            var bodyFalse = state.Stack.Pop();
            var bodyTrue  = state.Stack.Pop();
            var condition = state.Stack.Pop() as Data <bool>;

            state.ExecStack.Push(condition.Value ? bodyTrue : bodyFalse);
        }
Example #12
0
        public void Process(IPreScriptState state)
        {
            var gray = (state.Stack.Pop() as Number).Value;

            g.Red   = gray;
            g.Green = gray;
            g.Blue  = gray;
        }
Example #13
0
        public void Process(IPreScriptState state)
        {
            var body      = state.Stack.Pop();
            var condition = state.Stack.Pop() as Data <bool>;

            if (condition.Value)
            {
                state.ExecStack.Push(body);
            }
        }
Example #14
0
        public void Process(IPreScriptState state)
        {
            var blue  = (state.Stack.Pop() as Number).Value;
            var green = (state.Stack.Pop() as Number).Value;
            var red   = (state.Stack.Pop() as Number).Value;

            g.Red   = red;
            g.Green = green;
            g.Blue  = blue;
        }
Example #15
0
        public void Process(IPreScriptState state)
        {
            var execute = state.Stack.Pop() as Execute;

            var bindedOperations = from operation in execute.Operations
                                   let access = operation as Access
                                                select access == null ? operation : access.GetValue(state.DictStack);

            state.Stack.Push(new Execute(bindedOperations.ToList()));
        }
Example #16
0
        public void Process(IPreScriptState state)
        {
            var ang2 = (state.Stack.Pop() as Number).Value;
            var ang1 = (state.Stack.Pop() as Number).Value;
            var r    = (state.Stack.Pop() as Number).Value;
            var y    = (state.Stack.Pop() as Number).Value;
            var x    = (state.Stack.Pop() as Number).Value;

            g.Arc(x, y, r, ang1, ang2);
        }
Example #17
0
        public void Process(IPreScriptState state)
        {
            var y3 = (state.Stack.Pop() as Number).Value;
            var x3 = (state.Stack.Pop() as Number).Value;
            var y2 = (state.Stack.Pop() as Number).Value;
            var x2 = (state.Stack.Pop() as Number).Value;
            var y1 = (state.Stack.Pop() as Number).Value;
            var x1 = (state.Stack.Pop() as Number).Value;

            g.CurveTo(x1, y1, x2, y2, x3, y3);
        }
Example #18
0
            public void Process(IPreScriptState state)
            {
                _counter--;

                if (_counter > 0)
                {
                    state.ExecStack.Push(this);
                }

                state.ExecStack.Push(_operation);
            }
Example #19
0
        public void Process(IPreScriptState state)
        {
            int size;

            if (!(state.Stack.Pop() as Number).CheckInteger(out size))
            {
                throw new InvalidOperationException("Size parameter should be integer");
            }

            state.Stack.Push(new Data <IArray <IOperation> >(new Array <IOperation>(size)));
        }
Example #20
0
        public void Process(IPreScriptState state)
        {
            int index;

            if (!(state.Stack.Pop() as Number).CheckInteger(out index))
            {
                throw new InvalidOperationException("Index parameter should be integer");
            }

            state.Stack.Push(state.Stack.Peek(index));
        }
Example #21
0
        public void Process(IPreScriptState state)
        {
            var arrayOperation = state.Stack.Pop() as Data <IArray <IOperation> >;
            var array          = arrayOperation.Value;

            for (int i = 0; i < array.Length; i++)
            {
                array[i] = state.Stack.Pop();
            }

            state.Stack.Push(arrayOperation);
        }
Example #22
0
        public void Process(IPreScriptState state)
        {
            int n;

            if (!(state.Stack.Pop() as Number).CheckInteger(out n))
            {
                throw new InvalidOperationException("N parameter should be integer");
            }

            var array = (state.Stack.Pop() as Data <IArray <IOperation> >).Value;

            state.Stack.Push(array[n]);
        }
Example #23
0
            public void Process(IPreScriptState state)
            {
                state.Stack.Push(new Number(_counter));

                _counter += _step;

                if (!(_increasing && _counter > _end) && !(!_increasing && _counter < _end))
                {
                    state.ExecStack.Push(this);
                }

                state.ExecStack.Push(_body);
            }
Example #24
0
        public void Process(IPreScriptState state)
        {
            var body = state.Stack.Pop();
            var b    = (state.Stack.Pop() as Number).Value;
            var step = (state.Stack.Pop() as Number).Value;
            var a    = (state.Stack.Pop() as Number).Value;

            if (a == b || step == 0 || (a < b && step < 0) || (a > b && step > 0))
            {
                return;
            }

            state.ExecStack.Push(new ForImpl(a, step, b, body));
        }
Example #25
0
        public void Process(IPreScriptState state)
        {
            var operation = state.Stack.Pop();

            int count;

            if (!(state.Stack.Pop() as Number).CheckInteger(out count))
            {
                throw new InvalidOperationException("Count parameter should be integer");
            }

            if (count > 0)
            {
                state.ExecStack.Push(new RepeatImpl(count, operation));
            }
        }
Example #26
0
        public void Process(IPreScriptState state)
        {
            var array = new LinkedList <IOperation>();

            while (true)
            {
                var item = state.Stack.Pop();

                if (item is Marker)
                {
                    state.Stack.Push(new Data <IArray <IOperation> >(new Array <IOperation>(array.ToArray())));
                    break;
                }

                array.AddFirst(item);
            }
        }
Example #27
0
 public void Process(IPreScriptState state)
 {
     state.Stack.Push(this);
 }
 public void Process(IPreScriptState state)
 {
     g.Restore();
 }
Example #29
0
 public void Process(IPreScriptState state)
 {
     state.Stack.Push(state.Stack.Peek(0));
 }
Example #30
0
 public void Process(IPreScriptState state)
 {
     g.StrokePath();
 }