/// <summary> /// Run the interpreter and dispose everything /// </summary> private bool Run(StreamReader stream, List <IDisposable> disposables, int postscriptVersion, out GraphicGroup graph) { bool success = true; graph = null; try { var interpreter = new EpsInterpreter(); graph = interpreter.Run(stream, postscriptVersion); } catch { success = false; } finally { foreach (var disposable in disposables) { disposable.Dispose(); } } return(success); }
/// <summary> /// Run the given formula with the given parameters /// </summary> /// <param name="script"></param> public List <double> RunFormula(string script, List <double> parameters) { List <double> results = null; byte[] bytes = System.Text.Encoding.ASCII.GetBytes(script); var ms = new MemoryStream(bytes); var scriptStream = new StreamReader(ms); try { var interpreter = new EpsInterpreter(); var operandStack = interpreter.OperandStack; foreach (var parameter in parameters) { operandStack.Push(new RealOperand(parameter)); } interpreter.Run(scriptStream, 3); results = new List <double>(); while (operandStack.Count > 0) { results.Add(operandStack.PopRealValue()); } results.Reverse(); } catch { } scriptStream.Dispose(); ms.Dispose(); return(results); }