/// <summary> /// Execute the operand /// </summary> public override void Execute(EpsInterpreter interpreter) { var operandStack = interpreter.OperandStack; interpreter.LeaveProcedureCreation(); if (interpreter.ProcedureCreationLevel == 0) { ArrayOperand array = new ArrayOperand(); array.IsExecutable = true; array.LineNumber = LineNumber; var op = operandStack.Pop(); var beginProcedureOperand = op as BeginProcedureOperand; while (beginProcedureOperand == null || beginProcedureOperand != null && beginProcedureOperand.Level > 1) { var proxy = new OperandProxy(op); array.Values.Add(proxy); op = operandStack.Pop(); beginProcedureOperand = op as BeginProcedureOperand; } array.Values.Reverse(); operandStack.Push(array); } else { operandStack.Push(this); } }
public override void Execute(EpsInterpreter interpreter) { ArrayOperand array = new ArrayOperand(); array.IsExecutable = true; interpreter.OperandStack.Push(array); }
public override void Execute(EpsInterpreter interpreter) { var operandStack = interpreter.OperandStack; var count = operandStack.PopIntegerValue(); var index = operandStack.PopIntegerValue(); var operand = operandStack.Pop(); switch (operand) { case ArrayOperand arrayOperand: { var subArray = new ArrayOperand(); for (int i = index; i < index + count; i++) { subArray.Values.Add(arrayOperand.Values[i]); } operandStack.Push(subArray); break; } case StringOperand stringOperand: { var str = new StringOperand(stringOperand, index, count); operandStack.Push(str); break; } } }
/// <summary> /// Create a colos space description /// </summary> public static ArrayOperand CreateColorSpaceDescription(string colorSpaceName) { var array = new ArrayOperand(); var name = colorSpaceName; var proxy = new OperandProxy(new NameOperand(name)); array.Values.Add(proxy); return(array); }
/// <summary> /// Get a matrix out of a sequence fof operands /// </summary> public static Matrix GetMatrix(ArrayOperand array) { var matrix = new Matrix(GetRealValue(array.Values[0].Operand), GetRealValue(array.Values[1].Operand), GetRealValue(array.Values[2].Operand), GetRealValue(array.Values[3].Operand), GetRealValue(array.Values[4].Operand), GetRealValue(array.Values[5].Operand)); return(matrix); }
/// <summary> /// Convert an array operand to a list of doubles /// </summary> /// <param name="array"></param> /// <returns></returns> public static List <double> GetRealValues(ArrayOperand array) { int num = array.Values.Count; List <double> values = new List <double>(); for (int i = 0; i < num; i++) { values.Add(GetRealValue(array.Values[i].Operand)); } return(values); }
public override void Execute(EpsInterpreter interpreter) { var array = new ArrayOperand(); array.Values.Add(new OperandProxy(new RealOperand(1.0))); array.Values.Add(new OperandProxy(new RealOperand(0.0))); array.Values.Add(new OperandProxy(new RealOperand(0.0))); array.Values.Add(new OperandProxy(new RealOperand(1.0))); array.Values.Add(new OperandProxy(new RealOperand(0.0))); array.Values.Add(new OperandProxy(new RealOperand(0.0))); interpreter.OperandStack.Push(array); }
public override void Execute(EpsInterpreter interpreter) { var operandStack = interpreter.OperandStack; var count = operandStack.PopIntegerValue(); ArrayOperand array = new ArrayOperand(); for (int i = 0; i < count; i++) { var proxy = new OperandProxy(new NullOperand()); array.Values.Add(proxy); } operandStack.Push(array); }
public override void Execute(EpsInterpreter interpreter) { var operandStack = interpreter.OperandStack; var op = operandStack.PopArray(); var matrix = interpreter.GraphicState.TransformationMatrix; var array = new ArrayOperand(); array.Values.Add(new OperandProxy(new RealOperand(matrix.M11))); array.Values.Add(new OperandProxy(new RealOperand(matrix.M12))); array.Values.Add(new OperandProxy(new RealOperand(matrix.M21))); array.Values.Add(new OperandProxy(new RealOperand(matrix.M22))); array.Values.Add(new OperandProxy(new RealOperand(matrix.OffsetX))); array.Values.Add(new OperandProxy(new RealOperand(matrix.OffsetY))); operandStack.Push(array); }
/// <summary> /// Execute the operand /// </summary> public override void Execute(EpsInterpreter interpreter) { var operandStack = interpreter.OperandStack; ArrayOperand array = new ArrayOperand(); array.LineNumber = LineNumber; var op = operandStack.Pop(); while (!(op is MarkOperand)) { var proxy = new OperandProxy(op); array.Values.Add(proxy); op = operandStack.Pop(); } array.Values.Reverse(); operandStack.Push(array); }
/// <summary> /// Sets the dash pattern /// </summary> private void SetDashPattern(GraphicsState graphicState, double dashPhase, ArrayOperand dashArray) { if (dashArray.Values.Count == 0) { graphicState.Dashes = null; graphicState.DashOffset = 0; return; } var dashes = new List <double>(); foreach (var val in dashArray.Values) { var dbl = MatrixUtilities.TransformScale(OperandHelper.GetRealValue(val.Operand), graphicState.CurrentTransformationMatrix); dashes.Add(dbl); } graphicState.Dashes = dashes; graphicState.DashOffset = dashPhase; }
public override void Execute(EpsInterpreter interpreter) { var operandStack = interpreter.OperandStack; var op = operandStack.Pop(); if (op is ArrayOperand arrayOperand) { var matrix = OperandHelper.GetMatrix(arrayOperand); var scaleY = operandStack.PopRealValue(); var scaleX = operandStack.PopRealValue(); matrix.Scale(scaleX, scaleY); var array = new ArrayOperand(); array.Values.Add(new OperandProxy(new RealOperand(matrix.M11))); array.Values.Add(new OperandProxy(new RealOperand(matrix.M12))); array.Values.Add(new OperandProxy(new RealOperand(matrix.M21))); array.Values.Add(new OperandProxy(new RealOperand(matrix.M22))); array.Values.Add(new OperandProxy(new RealOperand(matrix.OffsetX))); array.Values.Add(new OperandProxy(new RealOperand(matrix.OffsetY))); operandStack.Push(array); } else { var scaleY = OperandHelper.GetRealValue(op); var scaleX = operandStack.PopRealValue(); GraphicsState graphicState = interpreter.GraphicState; var ctm = graphicState.TransformationMatrix; ctm.Scale(scaleX, scaleY); graphicState.TransformationMatrix = ctm; } }