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); }
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)); } } }
public void Process(IPreScriptState state) { var b = state.Stack.Pop(); var a = state.Stack.Pop(); state.Stack.Push(new Data <bool>(!a.Equals(b))); }
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(); } }
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)); }
public void Process(IPreScriptState state) { foreach (var operation in Operations.Reverse()) { state.ExecStack.Push(operation); } }
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)); }
public void Process(IPreScriptState state) { var operation = state.Stack.Pop(); var identifier = state.Stack.Pop() as Identifier; state.DictStack.Peek(0)[identifier.Name] = operation; }
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); } }
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); }
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); }
public void Process(IPreScriptState state) { var gray = (state.Stack.Pop() as Number).Value; g.Red = gray; g.Green = gray; g.Blue = gray; }
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); } }
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; }
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())); }
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); }
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); }
public void Process(IPreScriptState state) { _counter--; if (_counter > 0) { state.ExecStack.Push(this); } state.ExecStack.Push(_operation); }
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))); }
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)); }
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); }
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]); }
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); }
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)); }
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)); } }
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); } }
public void Process(IPreScriptState state) { state.Stack.Push(this); }
public void Process(IPreScriptState state) { g.Restore(); }
public void Process(IPreScriptState state) { state.Stack.Push(state.Stack.Peek(0)); }
public void Process(IPreScriptState state) { g.StrokePath(); }