/// <summary> /// Init /// </summary> public void Init(EpsInterpreter interpreter, ArrayOperand colorSpaceDetails) { this.interpreter = interpreter; this.colorSpaceDetails = colorSpaceDetails; switch (colorSpaceDetails.Values[1].Operand) { case StringOperand stringOperand: case NameOperand nameOperand: numberOfValuesPerColor = 1; break; case ArrayOperand namesArray: numberOfValuesPerColor = namesArray.Values.Count; break; default: throw new Exception("illegal type"); } // we only operate on the alternative color space var colorSpaceOp = colorSpaceDetails.Values[2].Operand; alternativeColorSpace = ColorSpaceActivator.CreateColorSpace(interpreter, colorSpaceOp); tintTransformationProcedure = (ArrayOperand)colorSpaceDetails.Values[3].Operand; }
/// <summary> /// Initialize all about graphic /// </summary> private void InitGraphic() { ReturnGraphicGroup = new GraphicGroup(); GraphicGroup = ReturnGraphicGroup; graphicsStateStack = new Stack <GraphicsState>(); GraphicState = new GraphicsState(); GraphicState.TransformationMatrix = Matrix.Identity; GraphicState.ColorSpace = ColorSpaceActivator.CreateColorSpace(this, EpsKeys.DeviceGray); var values = new List <Operand> { new RealOperand(0) }; // black GraphicState.FillBrush = GraphicState.ColorSpace.GetBrushDescriptor(values, GraphicState.CurrentTransformationMatrix); }
/// <summary> /// Init /// </summary> public void Init(EpsInterpreter interpreter, ArrayOperand colorSpaceDetails) { this.interpreter = interpreter; this.colorSpaceDetails = colorSpaceDetails; var colorSpaceOp = colorSpaceDetails.Values[1].Operand; baseColorSpace = ColorSpaceActivator.CreateColorSpace(interpreter, colorSpaceOp); hival = ((IntegerOperand)colorSpaceDetails.Values[2].Operand).Value; switch (colorSpaceDetails.Values[3].Operand) { case StringOperand stringOperand: useProcedure = false; hexString = stringOperand.Value; break; case ArrayOperand arrayOperand: useProcedure = true; tintTransformationProcedure = arrayOperand; break; } }